聊聊什么是Java EE?

休闲2025-11-05 10:54:06785

本文转载自微信公众号「BAT的聊聊乌托邦」,作者YourBatman。聊聊转载本文请联系BAT的聊聊乌托邦公众号。

正文

本专栏第一篇文章就介绍了从Java EE到Jakarta EE的聊聊发展史,对它有了宏观的聊聊认识。现在就以现在最常用的聊聊Java EE 8为例,详细掰扯掰扯它到底是聊聊什么,在开发中扮演什么角色。聊聊

什么是聊聊Java EE?

有了对JSR标准规范的认识,再来看Java EE就简单得多得多得多得多了。聊聊

JSR、聊聊JCP的聊聊详解参见:- 阿里巴巴入选的JCP最高执行委员会,何方神圣?聊聊

Java EE是由一系列抽象的标准规范所组成,是聊聊针对企业级软件开发中普遍面临问题的一套解决方案。简而言之:Java EE = N个JSR正式规范 + 一个运行环境。聊聊Java EE是代码的形式展现出来,而JSR只是文档。IT技术网

下定义从来都不是理工科同学的长项,但理解性分析是的。这是我根据自己的理解画的一张图,用来尝试解释Java EE是什么这个问题,如若对你有用你可保存、分享此图。

上面的框框就代表着Java EE平台,开发人员书写的所有Java代码都在此容器内运行(Client端除外),所以也经常能听到Java EE容器这样的术语。容器是个非常抽象的概念,不要背诵概念而应理解其作用。

既然是容器,那么就有能力拦截程序代码之间的调用,实现AOP的效果。另外我们还可以随时的向容器里加入新组件,如安全Security、云南idc服务商消息系统JMS、分布式事务JTA...

值得关注的是,B/S模式只能通过协议与Java EE平台交互,而Java Client(也就是C/S模式)有更强的能力:

可“绕过Web容器”直接调用Bean 可直接操作DB数据库

怎么理解?举个例子就明白了:Eclipse/IDEA都是使用Java语言写的客户端,它们也基于Java EE平台构建,因为Client和Server同在一个JVM进程内,所以直接调用Bean、数据库是完全可以做到的。

Java EE的参考实现

Java EE包含有一组JSR规范 + 运行环境,每个JSR是有一个参考实现的,单个的程序并不能跑起来,需要有一个Java EE的实现进行支撑,那么它是否有官方参考实现呢?

答案是:有的!Java EE的参考实现叫做Application Server,翻译为应用服务器,它是Java EE的服务器托管完整实现(注意:是完整实现),可以将任意程序部署在此。Java EE的参考实现是:Glassfish Application Server。除此之外,流行的还有TomEE、WebSphere、WebLogic、JBoss等等。

Java EE企业版供应商

所谓的供应商,就是自己实现了Java EE规范,**并且得到官方认证(也就是JCP)**的Application Server。

我在Oracle官网找来一张图,显示了支持Java EE 8的供应商产品(完整实现,并非只有web profile):图片

GlassFish WebSphere Wildfly JBoss Weblogic InforSuite AS(东方通,国产) TongWeb(中创软件,国产) BES(宝兰德,国产)

共8个,这个数字在Java EE 7时更多,为10个(国产的只占1个)。

定义为JCP的整个过程好处是:多家公司能够依赖符合规范的技术。这样就能够保证如果某个供应商开始提供不良服务或破产,公司可以保证转移到其他供应商不会造成太多麻烦,比较平滑的迁移。

再回到上面那张Java EE的图,从图中可以看到Java EE自己其实就有两个容器:Web容器和EJB容器。

Web容器

Web容器是Java EE环境的一部分,专用于运行那些Web组件,如:pages网页、JSP、Servlet、JSTL及其他Java EE Web组件。Web容器可通过标准Web连接到Java EE应用程序的客户端进行交互协议,当然更可以使用Http、WebSocket等公开协议。

在Java EE中,纯Web容器一般只有三种:Tomcat、Jetty、Undertow。其它的如Glassfish、Weblogic等属于应用服务器,包含了Web的功能。

Web容器/服务器有着比应用服务器更加轻量级的特点,随着Spring成为主流技术也让轻量级的Web容器更加受到青睐,最具代表性的当属Tomcat。

Tomcat是Apache软件基金会的Jakarta 项目中的一个核心项目。由Apache、Sun 和其他一些公司及个人共同开发而成,由于有了Sun的参与(现在Oracle)和支持,Tomcat总是能最及时的支持到最新版的Servlet/JSP技术规范。

EJB容器

EJB容器是Java EE环境的一部分,专用于运行Java EE应用程序的应用程序逻辑部分。EJB是包含和操纵Java EE应用程序的核心数据结构的Java类。

发现没,Spring容器的功能跟它很类似。然后EJB容易由于它过重的设计,现在已经败下阵来,成为了Spring的天下。

值得强调的是:Tomcat是不包含EJB容器的(无Java EE运行环境),不过他“哥哥”Tom EE有,是个完整的应用服务器。

小插曲:TomEE和Tomcat的区别

它俩是兄弟,技术上同宗。

Tomcat有且仅是一个Web服务器,并且也没有对Java EE中web技术全部实现,而是只有Servlet、JSP等实现,所以非常的轻量级,对标Jetty、Undertow等。因为现在是Spring技术栈大行其道,所以采用Tomcat + Spring的开发、部署方式成为了现在的主流。

TomEE扩展了Apache Tomcat,经过Apache Jakartaee9.1认证的应用服务器。不过值得注意的是:它不是一个Full全功能的应用服务器,而是个Web Profile的

TomEE官网:https://openejb.apache.org

Tomcat官网:https://tomcat.apache.org

曾经以为Tomcat不包含EJB运行环境是不足走不远,没想反倒轻便成了最大发展优势。

Java EE三层技术结构

首先,我们知道Java EE应用程序是由组件构成的,它是基于组件开发的。每个组件都代表着一个独立的功能单元,它们通过相关类、容器组织在一起,和其它组件进行交互。组件与组件之间是相互独立的、可插拔的,互不影响。它们分工协作,在各自的JSR规范指导下并行开发,这就很容易实施分层结构。

我们一般在设计一个系统时会将其设计为三层:

表示层(Web层):用户界面 中间层(Service层):业务逻辑 数据层(Dao层):数据存储、访问获取

Java EE包含一系列组件(规范),在不同的层级中均有一个/多个组件应用于此。

1、表示层

Java EE表示层使用的JSP技术,通过Html + JavaScript + Java脚本方式展示页面。相关的组件还有EL表达式、JSTL等。

2、中间层

Java EE中间层主要是Servlet技术,用于接收客户端(比如页面)请求并且给与响应。相关的组件还有EJB、JSF框架等。

3、数据层

Java EE数据层有JDBC、JNDI、JPA,用于对关系型数据库进行访问。其中JDBC属于传统的数据库连接方式,也是最为底层的技术。而JNDI、JPA等只是基于它做了扩展、API对使用者更加友好。

除了三层涉及到的技术组件外,还有服务相关、系统集成、远程通信相关的,如:Web Service、JAX-WS技术等等。

附:Java EE 8新特性

Java EE 8在Java EE 7的基础上继续改进应用程序所需的API和编程模型,并添加了社区中反馈很多的特性。此版本持续简化API,新增的功能主要有:

支持HTTP/2的Java Servlet 4.0:与时俱进支持到了http/2协议 API增强的JSON支持:增加了类似Jackson那样的自动绑定功能 新的REST反应式客户端API:jersey-rx-client-rxjava2提供实现 SSE事件支持 支持Java 8的新特性:函数式编程、Stream流式编程、JSR 310日期时间等

you know,Java EE 8之后就没有以后了,交给Eclipse基金会打理,改名为Jakarta EE。参考文章:从Java EE到Jakarta EE,企业版Java的发展历程

接手过来的Jakarta EE发了三个版本(Jakarta EE 8、9、9.1),不过一直在炒冷饭,可认为没有增加任何新功能。

总结

Java EE作为“曾经”的王者,设计上有非常多的可取之处,毕竟是那么多大师的智慧所得。

本文我尝试为你介绍什么是Java EE这个原始问题,通过图示展示出Java EE所处的位置。Web容器和EJB容器均属于Java EE技术体系,但是是有区别和侧重点的。

Java EE作为一套技术规范,其商业实现产品有多种,单单咱们国产的Java EE应用服务器实现就有3个,岂乃国货之光?这种一种规范 + 多种实现是咱们程序员的老套路了,该方式对企业非常友好,当遇到某供应商产品服务不靠谱的话迁移起来就不用太费劲了。

本文地址:http://www.bhae.cn/news/151d29099558.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

Ubuntu 15.10 Beta 的代号叫 Wily Werewolf(威利狼人),于10 月20 号正式发布了。假如你是一个勇于尝鲜的试用达人,可以参考本文先将你的 Ubuntu 15.04 升级到 Ubuntu 15.10 Beta。注意:Ubuntu 15.10 beta 目前还只是测试版本,可能会遇到一个问题和Bug,一旦升级到Ubuntu 15.10 beta 除了重装将无法再降级回 15.04。Ubuntu 15.04升级到Ubuntu 15.10Ubuntu 15.04 升级到 Ubuntu 15.10 的步骤同时适用于:Xubuntu、Kubuntu、Lubuntu、Ubuntu Gnome 和 Ubuntu Mate。1.打开软件和更新2.浏览到更新选项卡 — 勾选提前释放出的更新 — 选择适用任何新版本3.当以上选项配置好之后,使用如下命令来更新系统:sudo apt-get update && sudo apt-get dist-upgrade 以上命令可能会花比较长的时间,这主要取决于你的网速和使用的源。4.使用如下命令运行软件更新器, -d 参数会寻找版本升级sudo update-manager –d 5.执行如上命令后,软件更新器将会检查当前系统可用的版本更新 接下来想必不用我说了。下载Ubuntu 15.10 beta假如你不想直接在系统上升级就试用 Ubuntu 15.10,可以直接下载 ISO 镜像文件在虚拟机中安装尝鲜。如何将Ubuntu 15.04升级到Ubuntu 15.10这个问题是不是迎刃而解了,希望本文对大家的学习有所帮助哦。

电脑扬声器没有声音的设置方法(解决电脑扬声器无声的问题,让音频正常播放)

电脑迷你世界注册教程(轻松注册,畅玩电脑迷你世界)

电脑挂防封条教程(轻松保护电脑安全的关键技巧)

Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统。Ubuntu基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity,与Debian的不同在于它每6个月会发布一个新版本。ubuntu-Kylin中国定制版的Ubuntu桌面Linux系统,融入中国独有的特色。ubuntu默认是不能用root用户登录的,对于个人来说没有root用户权限非常麻烦。这里我将介绍Ubuntu keylin 14.04开启root用户登录;假如有需要的同学就一起学习下!!!1、为root用户设置密码安装完成如需使用root身份登录,可打开终端输入以下命令:#设置root密码sudo passwd root,输入当前用户密码,然后输入两次设置的root密码;2、#切换到root用户sudo -s。输入root密码,进入root终端3、设置登录面板,使其实现root登录想要在登录界面使用root身份登录,可编辑 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf目录下的 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf文件,如没有此文件,直接创建 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf进入 /usr/share/lightdm/lightdm.conf.d/cd  /usr/share/lightdm/lightdm.conf.d/编辑50-ubuntu.conf文件内容最终为:[SeatDefaults]user-session=ubuntuautologin-user=rootgreeter-session=unity-greetegreeter-show-manual-login=truallow-guest=false修改完之后执行reboot命令重启Ubuntu生效;启动后以root身份自动登录autologin-user=root#手工输入登陆系统的用户名和密码greeter-show-manual-login=true#禁用guest用户allow-guest=false4、重启ubuntu命令行输入reboot回车,等待重启;启动后默认已root用户登录了。注意事项:学用户假如对于vim使用不熟悉可以使用gedit非常方便。

电脑显示文件大小错误的原因及解决方法(解析文件大小显示错误的常见问题及应对措施)

联想主板安装教程(详细教您如何正确安装联想主板,让您的电脑更稳定更高效)

系统重装教程PE(简单易懂的系统重装教程,让您轻松搞定电脑系统恢复)

热门文章

友情链接

滇ICP备2023000592号-9