实际上,您几乎不会在纯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实现相比,几乎没有任何好处。