🍺Jakarta EE & Spring

JavaEE 体系结构

2022-11-10  本文已影响0人  en_young

秉徇【先有问题,才有方案】


1. J2EE1.2

1.1. 问题

90 年代末,当时在做企业级应用时,主要有着 B/S 和 C/S 两种架构,前端分别是浏览器和应用程序;但是当时技术界已经意识到 B/S 架构在未来将成为主流。所以,Java EE 的设计主要针对的是 B/S 架构。

当时的 B/S 架构中,浏览器只负责接收后端返回的 HTML 静态文件,然后将其渲染成页面展示出来即可。后端则需要动态生成 HTML 文件,这意味着后端需要同时兼顾业务逻辑处理和生成 HTML 文件,即根据业务逻辑处理结果生成相应的 HTML 文件返回给浏览器。

图1 - J2EE 1.2 体系结构(1999.12)

1.2. 方案

针对这一问题,Sun 公司基于 MVC 的分层架构提出了最初的 J2EE 体系结构。如图 1 所示,Java EE 提出用两个容器即 Web ContainerEJB Container 分别来管理这两个操作。

Web 容器负责生成 HTML 文件,EJB 容器则负责业务逻辑处理。Web 容器对应着 V,EJB 容器对应着 M。这两个容器支持的规范部分是相同的,容器通过支持规范为其中的组件提供相应的服务。

1.3. 补充

传统 C/S 架构中的前端应用就是基于 Java SE 开发的,而大多数 Java EE 中的规范都可以在 Java SE 中使用。所以我们可以看到,C/S 架构中的前端应用、Web 容器和 EJB 容器都可以通过 JDBC 规范直接访问数据库。
不同之处在于,前端应用没有容器的概念,所以对于如 JDBC 的规范需要自己亲自去使用,例如需要自己去加载驱动;而后端容器就是帮你做了这件事了,由容器来管理这些规范,不需要自己去加载驱动。

也正是支持 Java EE 的规范,前端应用可以直接访问 EJB 容器,同时也可以直接访问数据库,这时候是个单体应用

Applet 解决方案就是为了满足 HTML 动态要求。当时 JavaScript 还没有产生,而 HTML 起初是不支持任何逻辑处理的,就是个死页面。其就是在 HTML 文件中插入一段 Applet 代码,然后引入了 Applet 插件的浏览器能运行 Java 程序,从而可以向后端请求服务。后来 JS 将其干死了,因为 JS 是浏览器原生支持的,效率当然比它高得多


2. J2EE1.3

图2 - J2EE 1.3 体系结构(2001.3)

这个版本最大的改进就是对 RMI-IIOP 规范(用于服务器之间通信的二进制协议)进行了修改,全部改成了基于 XML 进行通讯,所以也衍生了 XML 的一系列的规范,比如如何读写 XML。

JAXP,Java API for XML Processing。

JAAS,Java Authentication Authorization Service,是安全框架。JAAS 提供了一种灵活的、说明性机制,用于对用户进行身份验证和服务访问的授权。


3. J2EE1.4

图3 - J2EE 1.4 体系结构(2003.11)

Java EE 1.4 版本首次提出 Web Service 的概念。


4. J2EE5

学习 Spring 好的东西。

Java SE5 引入了注解配置,Java EE5 相应地也引入了注解配置。

5. J2EE6(2009.12)

学习了 Spring 的 AOP 和 IOC,定义了两个规范 CDI 和 DI,其实和 Spring 的是一回事。DI 是 Dependency Injection依赖注入,是 Java EE 定义的,其实就对应是 Spring 的 IOC控制反转,只不过不能明面上直接抄袭。

同时,在 Web Service 模块还加入了 Restful 风格的 API,也是基于 JSON 的 Restful API。在面向 Web 服务这块,Java EE 始终走在 Spring 前面,而在内源性方面如 AOP/IOC,Spring 始终走在 Java EE前面。

6. J2EE7(2013.6)

7. J2EE8(2017.8)

JavaEE 的版本号永远地停留在了 8,因为这个时候 Sun 公司被 Oracle 公司收购了,而 Oracle 公司认为 JavaEE 只是个规范而不是产品,不赚钱,从而将其转给了 Apache 维护,但是没有将 JavaEE 的商标转给 Apache。

于是 Apache 只能将其改名,改名为 Jakarta EE,所以 Jakarta EE8 就是 JavaEE8。

上一篇 下一篇

猜你喜欢

热点阅读