Java EE和桌面应用程序

时间:2012-01-04 16:58:37

标签: java java-ee

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

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

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

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

然而,我开始知道他们之间的区别在于“规范”,来自Difference between Java SE & Java EE

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

5 个答案:

答案 0 :(得分:7)

Java EE是一大堆技术,它们共同形成了一个或多或少的连贯框架,用于构建企业应用程序。

现在,在企业中,服务器应用程序被大量使用,许多技术都专注于服务器功能和/或多用户。服务网络请求只是其中的一部分,例如,还有一些功能。处理消息(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技术,但我希望上面给出了一些想法。

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

Java EE是Java SE +企业技术。所以,是的,您可以使用java EE构建桌面应用程序。

答案 3 :(得分:3)

Java EE只是一组规范。它的大部分实现需要的不仅仅是用于JSE的Java Runtime Environment。

Java的不同部分需要不同类型的容器。

enter image description here

Java EE 6的一部分您可以在JRE上运行:

Parts of Java EE 6 You can run on JRE

请注意Weld website中的JSR 299:

  

但是规范并没有限制CDI对Java EE的使用   环境。在Java SE环境中,服务可能是   由像Weld这样的独立CDI实现提供(参见章节   18.4.1,“CDI SE模块”),甚至是一个容器,它也实现了EJB 3.1为嵌入式使用定义的EJB子集   说明书

GlassFish还可以在与{+ {3}}相同的JVM中运行Java SE应用程序,因此您可以使用本地接口访问Java EE的EJB。

Embedded Enterprise Bean Container

答案 4 :(得分:3)

好的伙计们,我是Java的新手,现在我变得有点“老”了。所以我可以搞清楚。

就是这样:

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

那么什么是Java SE,Java EE和Java ME?

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

但遵循“不要重新发明轮子”的概念,因为我们最好使用一直运行多年的库/工具,我们都使用SE,EE和ME提供的工具/库。

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