JavaEE-使用JavaEE开发Web项目
java web 发展
1999年,推出了 J2EE 1.2 版本,到 2005 年名称变为 Java EE 5,Java EE is currently maintained by Oracle under the Java Community Process。到 2017-9-12 Oracle 宣布将 JavaEE 提交给 Eclipse Foundation。Eclipse 将 Java EE 改名为 EE4J(Eclipse Enterprise for Java),并成为其一个顶级项目。
Java Web 是什么呢?其实就是由 JCP 组织制定的各种规范(JSR),Java EE包含哪些规范呢?参考 Java™ EE 8 Technologies
所以 JavaEE 平台,其实就是大量的接口,抽象类,注解等。其最终形成一个 jar 包 javaee-api.jar, 目前 JavaEE 8, 这个包的大小约为 1.9M , 里面将 JavaEE 所有的规范集合到一起。
自然开发JavaEE web 应用,就需要一个实现了 javaee-api 中的所有功能,glassfish 就是一个参考实现,其实现了 JavaEE 所有的功能。
常见的 JavaEE 容器,JBoss, WebLogic, GlassFish, TomEE
在 JavaEE 中大约有 30 多个规范。tomcat 实现了 Servlet,JSP,EL, JSTL, WebSocket 这5个规范。所以 tomcat 只能称为 Servlet 容器,而不能称为 JavaEE 容器。
同样地,Jetty 也是实现了JavaEE部分的规范。
Spring 和 JavaEE
Spring 出现自 2003 年,此时 J2EE 1.4 已经出现,但是使用 J2EE 进行编程比较复杂,所以 Spring 的出现是为了简化 Java Web 编程,但是 Spring 的各种组件也实现了部分 JSR 。
Over time, the role of Java EE in application development has evolved. In the early days of Java EE and Spring, applications were created to be deployed to an application server. Today, with the help of Spring Boot, applications are created in a devops- and cloud-friendly way, with the Servlet container embedded and trivial to change. As of Spring Framework 5, a WebFlux application does not even use the Servlet API directly and can run on servers (such as Netty) that are not Servlet containers.
常用的轻量级容器
三个容器的比较 Comparison between Guice, PicoContainer and Spring , Benchmark Analysis: Guice vs Spring
TomEE
1 | ## 启动,停止 glassfis |
现代的 JAVAEE 应用服务器:WildFly, Payara, WebSphere Liberty, Profile and TomEE
domain 和 多实例
tomcat 可以使用 CATALINA_BASE 来实现多实例,而在 GlassFish 这类 JAVA EE 服务器中通常都有一个 domain 的概念,但是这个 domain 比多实例要复杂的多,但是有一点类似的是部署在同一个 domain 和 同一个 tomcat 实例中的不用应用,通常是共享同样的资源配置。
参考
- Apache TomEE
- Spring to Java EE Migration
- Java(TM) EE 8 Specification APIs
- Java EE Specifications
- Java EE 8 First Cup
- Java EE 8 Tutorial
- Java Platform, Enterprise Edition (Java EE) 7
- Oracle WebLogic Server 12.2.1.3.0
- Java™ EE 8 Technologies
- Java EE Specifications
- Spring Framework 实现的规范
- Java Platform, Enterprise Edition wiki
- The Eclipse Enterprise for Java Project
- Jetty and Java EE Web Profile
- Inversion of Control Containers and the Dependency Injection pattern
- Why Use the Spring Framework?
- How to use Tomcat 8.5.x and TomEE 7.x with Eclipse?
- Apache Tomcat Versions
- Java EE SDK Downloads
- Java EE—the Most Lightweight Enterprise Framework?
- Stop saying “heavyweight”
- Unit Testing for Java EE
- Tomcat 多实例