Java EE和桌面应用程序

M-D*_*M-D 8 java java-ee

我是Java的新手,刚刚开始使用一些简单的代码.

我在Linux机器上,使用vim编辑器,使用javac进行编译,使用'java'运行程序.

基本上,暂时,我正在寻找使用Java构建桌面应用程序.我听说过Java(EE/SE/ME),我对它们的假设是:

  • "核心Java"是"基本"Java语言(包含有关变量,循环,方法类等的所有规则).
  • Java SE适用于桌面应用程序.
  • Java EE适用于Web应用程序(使用HTTP协议).
  • Java ME适用于移动应用程序.

但是,我开始知道它们之间的区别在于"规范",来自Java SE和Java EE之间的区别

所以我的问题是,我是否可以使用Java EE创建桌面应用程序?或者它们仅用于创建Web应用程序?

Arj*_*jms 7

Java EE是一大堆技术,它们共同构成了构建企业应用程序的或多或少的一致框架.

现在,在企业中,服务器应用程序被大量使用,因此许多技术专注于服务器功能和/或多用户.服务Web请求只是其中的一部分,还有处理消息(JMS)和服务器远程方法调用(远程EJB)的功能.

像GlassFish或JBoss AS这样的完整Java EE实现并不常用于桌面应用程序(除非它是用于个人桌面的应用程序,但这是基于浏览器的).

然而...

几乎所有构成Java EE的技术都可以在Java SE之上独立使用,并与图形用户界面结合使用.

例如,Java EE中有一个名为JPA的ORM框架,它使得在数据库中存储对象变得相当容易.数据库(可能是嵌入式数据库)当然可以与桌面应用程序一起使用,这通常是有意义的.例如,电子邮件应用程序可能将邮件存储在此类数据库中.JPA明确地在其规范中有一节关于在Java SE中可用的部分.

在Java EE中还有一个用于依赖注入的框架,称为CDI.除此之外,还可以轻松隔离依赖关系并掌握它们.它非常适合MVC图形应用程序,例如在控制器中获取模型.与JPA一样,CDI明确支持Java SE.

作为最后一个示例,Java EE默认情况下需要存在JMS,但在这种情况下,JMS甚至不是特定的Java EE子规范.Java EE只需要存在JMS提供程序,因此Java SE自然可以使用JMS(在JMS中甚至只有合法的API才能在Java SE中使用).一种方式的消息传递可以是架构模式的一部分,这种架构模式在桌面应用程序中与在服务器应用程序中一样可用(例如,桌面工具包Cocoa使用它集中).

桌面应用程序中有更多可用的Java EE技术,但我希望上面给出了一些想法.


Dav*_*ton 5

Java EE是一系列技术,包括 Web应用程序.

但大多数情况并非如此 - 像JMS和JPA这样的东西是Java EE的一部分,并且是应用程序类型中立的.


M-D*_*M-D 3

好吧,伙计们,我是 Java 的新手,现在我已经变得有点“老”了。所以我能弄清楚。

就是这个 :

Java 开发唯一需要的东西是 Java 编译器,如果我们安装 JDK,我们就会得到它,而运行 Java 实用程序所需的东西是 JVM。因此,这些是我们进行任何类型的 Java 开发(无论是桌面、Web 还是移动)所需的唯一东西。

那么什么是 Java SE、Java EE 和 Java ME 呢?

这些是上面提到的两个东西(Java编译器+ JVM)加上一组库(SE用于桌面,EE用于Web,ME用于移动)。因此,如果我们中的任何一个人有足够的时间并且拥有 Java 编译器 + JVM,我们就可以为所有这些功能构建我们自己的库。

但遵循“不要重新发明轮子”的概念,并且因为使用多年来一直平稳运行的库/工具会更好,所以我们都使用 SE、EE 和 ME 提供的工具/库。

所以答案是,我可以只用 Java 编译器(Linux 机器上的 /usr/bin/javac)开发任何类型的应用程序。唯一的问题是,将会有很多“重新发明轮子”的事情。所有 Java 应用程序都在同一个 JVM 上运行(无论哪种类型),对于 linux(/usr/bin/java)。