J2EE

左直拳 2021-02-23 16:00:10
CSDN 技术开发 j2ee ee


我用java的spring有一段时间了。学习应用过程中,查阅一些资料,或多或少都会提到J2EE,二者往往作为对比相提并论。其实没有使用Java以前,我也听说过这个J2EE。对于究竟什么是J2EE,我一直很糊涂,搞不清。

一、什么是J2EE

J2EE(Java 2 Platform Enterprise Edition,Java 2 平台企业版)

j2EE就是java的企业版。

听上去,这就好像一套俗气的商业软件,分什么体验版,标准版,豪华版,旗舰版之类。

Java的三个版本 : Java SE(标准版),Java EE(企业版),Java ME(微型版).

J2EE里面的2是什么意思

1998年Java 1.2版本发布,1999年发布Java 1.2的标准版,企业版,微型版三个版本,为了区分这三个版本,分别叫做Java2SE,Java2EE,Java2ME,简称J2SE,J2EE,J2ME。所以2的含义为1.2版本。java1.2是java中很重要的一站。之后的1.3,1.4与1.2相比,有一些变化,但不是特别大。所以在1.5推出以前一直在使用j2ee这个叫法,没有叫做j3ee,j4ee。2005年。java推出1.5版本,这又是java发展史上的一个里程碑,与之前的java版本有了较大的变化,所以sun决定不再使用这个j2ee这样的称呼,当然也没有使用j5ee。J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。所以,现在的J2EE等叫法是05年以前老一辈的叫法。

原来如此。我还以为,这个2是to的意思。J2EE,就是java to 伊伊。伊伊是个人名。搞IT的人这一招泛滥成灾,比如写一本书,自序里必定要感谢全家。那么J2EE,就是向伊伊扯旗致敬的一个Java框架?

但是,J2EE是软件没有错,不过准确来说,它只是一组标准,是一组建立在JavaSE之上的标准,解决企业级开发中的一系列问题。它对一系列接口进行了约定,然后由众多厂商围绕这个标准做实现,如JBoss,WebSphere等。

二、J2EE体系结构

J2EE由一整套服务(services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持。它定义了动态Web页面功能(Servlet和Jsp)、商业组件(EJB)、异步消息传输机制(JMS)、名称和目录定位服务(JNDI)、数据库访问(JDBC)、与子系统的连接器(JCA)和安全服务等。
在这里插入图片描述
图1
在这里插入图片描述
图2
在这里插入图片描述
图3

一个完整的J2EE服务器应该包括Web容器和EJB容器。

J2EE的体系结构可以分为四层,如上图所示。

1)客户端层:负责与用用户直接交互,J2EE支持多种客户端,所以客户端既可以是WEB浏览器,也可以是专用的Java客户端。

2)服务器端组件层:本层是为了基于WEB的应用服务的,利用J2EE中的JSP与Java Servlet技术,可以响应客户端的请求,并向后访问封装有商业逻辑的组件。

3)EJB层:本层主要封装了商务逻辑,完全企业计算机,提供了事务处理,负载均衡、安全、资源连接等各种基本服务,程序在编写EJB时可以不关心这些基本的服务,集中注意力于商务逻辑的实现。

4)企业信息系统层:企业信息系统层包括了企业的现有系统(包括数据库系统、文件系统),J2EE提供了多种技术以访问这些系统,如JDBC访问DBMS。

J2EE中的主要技术规范有JDBC、JNDI、EJB、JSP、Servlet、JTS、JTA、JMS。。。,等等。

Servlet:定义了如何处理Web请求,这个相信大家最熟悉
Java Server Faces:定义了如何使编写Web界面
JAX-RS:定义了如何编写RESTFul的接口
EJB:定义了如何编写“企业Bean”
JPA:定义了如何编写ORM和数据存取
JTA:定义了如何编写事务相关的代码
JMS:定义了如何编写消息队列程序
CDI:定义了如何编写依赖注入
JAX:定义了如何编写XML程序
JAX-WS: 定义了如何编写基于XML的网络服务,即SOAP……

三、EJB

EJB(Enterprise JavaBean),又被称为企业Java Beans。

EJB技术是在Java Bean基础上开发的、面向服务器端、分布应用的组件技术。EJB是J2EE规范的一部分,得到了广泛的发展,已经成为应用服务器端的标准技术。EJB提供了一个开发和实施分布式商务逻辑的框架,大大地简化了具有可伸缩性、高度复杂的企业级应用的开发。

EJB运行于EJB容器。EJB容器负责提供公用服务,如目录服务、事务管理、安全性、资源缓冲池以及容错性等。EJB规范定义了EJB组件如何与EJB容器进行交互。

EJB并不是实现J2EE的唯一途径,由于J2EE的开放性,使得有的厂商能够以一种和EJB平行的方式来达到同样的目的。

EJB提供了基于Java二进制字节代码的重用方式。EJB技术的推出,使得用Java基于组件技术开发服务器端分布式应用成为可能。从企业应用多层结构的角度来看,EJB是业务逻辑层的中间件技术。与JavaBeans的关键不同是它提供了事务处理的能力。

在这里插入图片描述
EJB中定义了三种bean,分别是会话bean ,实体bean,和消息驱动bean。

四、EJB vs Java Bean

1、什么是Java Bean

Java Bean是符合一定技术规范的Java类。

Java 1996年发布,同年12月即发布了Java Bean1.00-A。通过统一的规范可以设置对象的值(get,set方法),这就是最初的Java Bean。但在实际企业开发中,需要实现事务、安全、分布式,javabean就不好用了。于是sun公司就开始往上面堆功能,这时Java Bean就复杂为EJB。然而EJB功能强大是强大,但太重了,此时又出现了DI(依赖注入)、AOP(面向切面)技术,通过简单的Java Bean也能完成EJB的事情,这时Java Bean简化为POJO,于是Spring诞生了。

一个Java类算不算Java Bean,需要满足至少三个条件:

1)有一个public默认构造器(例如无参构造器)。

2)属性使用public 的get,set方法访问,也就是说设置成private,同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成

public String getName(){

return "zhang3";
}

3)支持序列化。

2、EJB与Java Bean的区别
这里说的EJB是指EJB组件,它跟Java Bean一样,都是Java编写的组件。

但Java Bean是本地进程内组件,不能被跨进程访问;EJB组件是分布式组件,基于Java的远程方法调用(RMI)技术,可以被远程访问(跨进程、跨计算机);

Java Bean可以在程序中直接调用,但EJB组件不能直接访问,要通过EJB容器(诸如Webspere、WebLogic,JBoss)间接访问,EJB容器是EJB组件的代理。

对于简单的服务器端应用来说,使用JavaBean是很不错的选择。如果是复杂的服务器端应用,使用JavaBean虽然也可以达到相同的效果,但这么做的话,所有底层的实现都必须手工来重新编写。而EJB不必用户关心它的底层操作,因为这些都已经由容器提供,而只要关心它的外部实现即可。

3、EJB 约等于 SSH/SSM
与其将 EJB与JavaBean 比较,不如将EJB和SSH或者SSM比较,因为它们解决的目标是一致的。

SSH:Struts2为控制器(controller) ,spring 为事务层(service), hibernate 负责持久层(dao)

SSM:springMVC为控制器(controller) ,spring 为事务层(service), MyBatis 负责持久层(dao)

一个完整的J2EE服务器应该包括Web容器和EJB容器。EJB运行于EJB容器,而SSH或者SSM运行于Web容器。以体量而论,EJB是大型的,SSH/SSM是轻量级的。

五、J2EE vs Spring

如上所述,J2EE是一套标准,它对一系列接口进行了约定,然后由众多厂商围绕这个标准做实现。Spring框架就是一个开源的J2EE应用程序框架。(搞了半天,原来Spring也算是J2EE一分子)

早期的Spring定位于解决J2EE在实际使用上的一系列问题,因为J2EE的API实在是太难用了。Spring框架的发起人Rod估计是趟了不少大坑,于是总结了一套最佳实践,并总结到了一套框架里。其中最重要的,就是所谓IoC(控制反转)。

Spring大量使用或者实现了J2EE标准。比如spring-mvc是在servlet基础之上的封装;spring本身并不提供容器,而是支持使用任何支持servlet标准的容器(如tomcat,jetty等);spring-data也实现了JPA,通过标准接口对进行CRUD等。归根到底Spring只是想更好的解决实际问题。J2EE的实现做得好的就用,做得不好的,用比较恰当的方式独立实现或者封装。

随着时间的发展,J2EE已经越来越落后,这是由于它的体制造成的。J2EE的制定是由几大巨头定期开会协商通过,发布。然后由大容器实现厂商跟进。但这样太慢了。互联网的发展速度已经远不是这样一个僵化的体制能够适应的。反观Spring相对就快速的多。Spring自己就是一家公司,觉得整个社区什么东西最前沿,最急缺就立刻响应去做了。比如,Restful刚流行,你是愿意等一年半载出JAX-RS标准,然后再出Jersey,才能用;还是选择直接用Spring MVC直接就把事办了?结果不言而喻。对解决问题的态度是二者目前境遇不同的主要原因。最早期J2EE是领导者,所有的技术厂商要想在这个圈子里混,必须跟着标准走。而Spring逐渐占据领导地位之后,J2EE的一些标准反而要跟着Spring走。

在这里插入图片描述
详见Spring

参考文章:

关于J2EE和Spring目前到底是怎样的关系,以及未来这两者的发展是怎样的,是否存在竞争市场的情况?

JAVA开发与J2EE开发区别是什么?

图解EJB的体系结构

J2EE基础之EJB

Java bean 是个什么概念?

版权声明
本文为[左直拳]所创,转载请带上原文链接,感谢
https://leftfist.blog.csdn.net/article/details/113354448

  1. Redis 日志篇:系统高可用的杀手锏
  2. Java中把一个对象的值复制给另外一个对象引发的思考
  3. Java serialization / call wildfly service interface exception: ejbclient000409
  4. Docker compose deploy stack
  5. Mac下查看已安装的jdk版本及其安装目录
  6. Redis log: the killer of system high availability
  7. mybatis映射xml配置文件报错:<statement> or DELIMITER expected, got ‘id‘
  8. Thinking about copying the value of one object to another in Java
  9. IntelliJ IDEA 还能画思维导图,果然最强 IDE!
  10. vue使用sdk进行七牛云上传
  11. IntelliJ IDEA 还能画思维导图,果然最强 IDE!
  12. Spring原来还可以这么玩!阿里新产Spring全线宝典成功颠覆了我对Spring的认知!
  13. View the installed JDK version and its installation directory under mac
  14. Error in mybatis mapping XML configuration file: < statement > or delay expected, got 'ID‘
  15. IntelliJ IDEA 还能画思维导图,果然最强 IDE!
  16. Javascript性能优化【内联缓存】 V8引擎特性
  17. IntelliJ idea can also draw mind maps. It's really the strongest ide!
  18. Vue uses SDK to upload Qi Niu cloud
  19. IntelliJ idea can also draw mind maps. It's really the strongest ide!
  20. 深入理解 Web 协议 (三):HTTP 2
  21. Spring can still play like this! Ali's new spring product has successfully overturned my understanding of spring!
  22. IntelliJ idea can also draw mind maps. It's really the strongest ide!
  23. JavaScript performance optimization [inline cache] V8 engine features
  24. linux 配置java环境
  25. linux find 查找文件
  26. 深入理解 Web 协议 (三):HTTP 2
  27. IntelliJ IDEA 相关问题记录
  28. Deep understanding of Web protocol (3): http 2
  29. 深入理解 Web 协议 (三):HTTP 2
  30. 腾讯IEG开源AI SDK:自动化测试吃鸡、MOBA类游戏
  31. Mysql Command
  32. Configuring Java environment with Linux
  33. Find files in Linux
  34. docker-Dockerfile 创建镜像
  35. Redis Cluster
  36. 深入理解 Web 协议 (三):HTTP 2
  37. JavaScriptBOM操作
  38. JavaScriptBOM操作
  39. Deep understanding of Web protocol (3): http 2
  40. Record of IntelliJ idea related problems
  41. Deep understanding of Web protocol (3): http 2
  42. Tencent IEG open source AI SDK: automatic testing of chicken eating and MoBa games
  43. Mysql Command
  44. Docker dockerfile create image
  45. Redis Cluster
  46. 死磕Spring之IoC篇 - 文章导读
  47. Deep understanding of Web protocol (3): http 2
  48. JavaScript BOM operation
  49. JavaScript BOM operation
  50. 死磕Spring之IoC篇 - 文章导读
  51. k8s node 操作与维护
  52. k8s 证书更新
  53. 【Java面试题第三期】JVM中哪些地方会出现内存溢出?出现的原因是什么?
  54. HashMap连环问你能答出几道?
  55. k8s-cronjob
  56. k8s-cert
  57. Spring: an introduction to IOC
  58. Spring: an introduction to IOC
  59. Operation and maintenance of k8s node
  60. K8s certificate update