有几个原因
Java EE应用服务器是分布式组件的事务监视器。它提供了一些抽象(例如命名,池化,组件生命周期,持久性,消息等)来帮助完成这一点。
许多这些服务是Windows操作系统的一部分。 Java EE需要抽象,因为它独立于操作系统。
还应该说,完整的Java EE规范对于开发Web应用程序不是必需的。 JDBC是处理关系数据库的Java的一部分,是Java SE的一部分。 Java EE添加了作为HTTP侦听器的servlet和用于生成servlet的标记语言的Java Server Pages。您可以使用这些技术和Java SE开发功能齐全的Web应用程序。 Tomcat和Jetty是两个servlet / JSP引擎,可以支持完整的Java EE应用程序服务器。
如果你注意到.NET有一个内置在System.Net模块中的HTTP侦听器,你会发现它就像.NET从Java中获取一个页面,并将javax.servlet函数折叠到框架中。
如果添加Spring和ActiveMQ或RabbitMQ等消息传递功能,您可以编写完整的应用程序,而无需使用WebLogic,WebSphere,JBoss或Glassfish。您不需要EJB或完整的Java EE规范。
更新:
Spring Boot提供了开发和运行全功能Java应用程序作为可执行JAR文件的可能性。不需要任何Java EE应用服务器,只需要JDK 8或更高版本。