Java EE和Java SE哪些应用程序更适合使用?

4

如果以下问题有些模糊或幼稚,请原谅。这是受到另一个主题中的一些讨论的启发,重新激起了我对Java EE的兴趣。

多年来,我听到了一些关于它的小片段,甚至上过覆盖一些EJB的软件工程课程。然而,我意识到我仍然几乎不知道它是什么以及它的用途。

所以,我真正的问题是:首先,如果我正在设计一个Web应用程序服务器,哪些要求会导致我选择Java EE而不是Java SE?它主要取决于我想部署的应用程序,还是Java EE有基本的方面使其更适合任何应用程序服务器?

我的第二个问题:有哪些已经部署的著名的Java EE应用程序?有没有开源的?

非常感谢。

3个回答

8
如果你的应用程序只需要使用servlets、JSP和JDBC来实现,那么你不需要完整的Java EE堆栈。这三个组成了完整堆栈的一个子集。
除了servlets、JSP和JDBC之外,完整的Java EE堆栈还包括EJB(分布式、事务性、生命周期管理组件)、持久化的JPA、消息传递的JMS、命名和目录服务的JNDI等。如果你需要这些内容,那么请使用Java EE和一个完整的应用服务器。
应用服务器规范是Sun公司采取的方向,因为他们想要创建一个市场,其中有几个竞争对手,包括自己。他们做得相当不错:我们现在有WebLogic、WebSphere、JBOSS、Glassfish、OpenEJB、Geronimo和其他应用服务器可供选择。
但这并非必需品。例如,Microsoft的.NET仅具备IIS Web服务器和基础操作系统,他们假设你正在运行Windows和.NET,因此他们不会尝试像Java EE一样抽象相同的东西。
如果你更喜欢Spring而不是Java EE,那么你可以编写企业应用程序,而不需要使用除Spring加Tomcat或其他servlet/JSP引擎之外的任何其他内容。在这种情况下,不需要一个完整的Java EE应用服务器。

1
如果你更喜欢Spring而不是Java EE,你可以编写企业应用程序,而无需使用除Tomcat之外的任何东西。需要澄清的是,Tomcat默认情况下不带有Spring。如果你更喜欢Spring,你可以使用Spring加Tomcat编写企业应用程序,而不是“仅使用Tomcat”。同样地,如果你更喜欢Java EE而不是Spring,你也可以使用Java EE部件加Tomcat编写企业应用程序,而无需使用除此之外的任何东西 ;) - Arjan Tijms

2
实际上,您几乎不会在纯Java SE基础之上开发Web应用程序。 Java SE本身适用于图形桌面应用程序或基于文本的命令行实用程序。
如果您想开发像使用PHP或RoR一样的Web应用程序,则最少需要使用所谓的Servlet容器。这些均运行在Java SE之上,并为您提供来自Java EE的Servlet和JSP页面。著名的例子是Tomcat和Jetty。
然而,大多数Web应用程序都需要比这些Servlet容器提供的更多。几乎总是需要一些Web框架(例如JSF,Struts,Wicket,Tapestry,Spring MVC),一些ORM框架(通常是Hibernate,但也有一些替代品,例如EclipseLink)和事务管理器(JoTM,JBossTS,Atomikos)。最后,大多数人还喜欢使用一个依赖注入容器和更高级别的事务管理器(例如核心Spring容器,OpenEJB,Weld)。
然而,所有这些都需要开发人员构建和维护自己的软件堆栈。所有我提到的不同事物都必须单独下载,并且由于不同版本中的共享依赖关系,它们可能与彼此兼容,也可能不兼容。
这就是Java EE发挥作用的地方。
Java EE为您提供了一个一站式框架,以单个包的形式提供所有内容。您可以在一个包中下载它,并在一个包中升级它。通常,与构建自己的堆栈相比,各部分之间的工作更协调。
您可以将其与下载完整的Linux发行版(如Ubuntu)进行比较,或者从仅使用内核开始从头构建自己的Linux系统。
在早期,Java EE(当时称为J2EE)是重量级,昂贵,封闭源和象牙塔和供应商驱动的。现在的Java EE非常轻量级,免费,开源,并主要基于在实践中证明有效的方法。
虽然对于许多Java EE实现来说,您不必为不使用的内容付出代价(例如内存或启动时间),但当前的Java EE规范定义了一个更小的“配置文件”,其中删除了典型Web应用程序不需要的内容。这称为web配置文件。对于最终用户来说,没有真正引人注目的理由明确选择Web配置文件,但对于创建Java EE实现的人来说,这是一个巨大的胜利,因为它更容易实现。
最后,几乎所有Java EE的部分都可单独使用,因此您也可以完全由Java EE元素组成自己的堆栈。但是,这并不常见,因为与仅采用现有的Java EE实现相比,几乎没有任何好处。

1

Java EE实际上只是在SE的基础上构建,因此当您需要一个存在于EE中的库或功能的Web应用程序时,您会选择EE。如果您需要额外的功能,则EE更好。(EE就像一把带箱子的吉他,而SE只是一把吉他。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接