j2ee 历史

ddatsh

dev #java

Timeline

演进

1.2

第一个 J2EE 版本,随 Java 2 Standard Edition(J2SE) 发布

针对企业应用程序所需的常用的 Web 层、业务逻辑、表示层和消息传递服务

简单的 J2EE 程序,都需要大量的配置文件,非常不便使用

10 个主要规范和 API

1.3

通过 JSR 58 发布,改进了半数 1.2 规范并引入 XML API、连接器架构和安全框架

1.4

改进了13 种技术中的 9 种,引入新的 Web service和安全支持

复杂程度达到了顶点,尤其是EJB 2.0,开发/调试难度非常大

Java EE 5

Java EE 5 主基调:简化开发,引入注释、EJB 3.0 的业务组件,重心转移到提高开发人员的生产力上

Java EE 6

​ 针对轻量级 Web 应用程序开发的子集配置。如 Servlet、JSP、EL、JSTL、JSF、JPA 和 CDI

​ ref : spring :)

Java EE 7

HTML5 支持、批处理、并行处理等方面

Java EE 8

Java EE 9

Java EE 10

Recent

Java EE 是官方出的一套规范,Java Web 是使用 Java 进行 Web 开发的行为

Java Web 开发中,有些部分推荐使用 EE 的规范,例如 Servlet(不使用这套规范,硬要自己用 netty,nio 甚至 bio 监听 80 端口,手动解析 HTTP 报文也不是不可以)

有些部分必须使用 EE 有关的规范,例如连接数据库(自己手撸数据库驱动并且还无视 JDBC 规范?)

有些部分开源社区的类库做了对官方的兼容,例如 @Resource 和 @Component,@Inject 和 @Autowired。Spring 扫描注解的时候,前一对注解功能类似(采用不同的 BeanProcesor 注入,并且默认是按类型 / 名称注入),后一对则完全一致

有些部分嫌弃官方做得不够好,自己实现规范(RMI 规定使用序列化接口传输对象,而现在比较流行的远程服务调用框架是自己实现对象传输的编码协议的;JSP 是官方的模板语言,但是实际上应用较多的是 Thymeleaf freemarker 等 HTML 模板引擎)

有些地方官方发现不够好,反过来使用开源社区流行的设计,但是还是成了小众(EJB 3.0 以后的版本和 Spring 都有 IOC 和 DI 的功能)

有些东西应该是消失在了历史长河里(新开发的应用还有人用 JNDI 来定位资源,用 XML 来传输数据吗?)

官方制定的规范,和开源社区的产物从远古开始纠缠,相互借鉴、依赖、淘汰,即使是用 Spring Boot 开发 Web 应用,本质上也得注册 Servlet 作为整个容器的启动器(Spring Web Flux 异步编程那一套可以不依赖 Servlet API 了,这个比较小众所以先论外)