What is EJB
0)什么是EJB?
答:EJB是用于构建企业应用程序模块托管的、服务器端组件架构。EJB技术加速并简化了开发基于Java技术的分布式、事务性、安全和便携的应用程序。
先看一下EJB在J2EE开发中的详细(EJB处于业务逻辑层):
引用一位大神的话说,EJB就是:"把你编写的软件中那些需要执行制定的任务的类,不放到客户端软件上了,而是给他打成包放到一个服务器上了"。是的,没错!EJB 就是将那些"类"放到一个服务器上,用C/S 形式的软件客户端对服务器上的"类"进行调用。
1)为什么EJB不火了?
答:因为很多人初学Java Web开发时就只听说了Spring,很多培训机构也只教Spring。不少Java开发人员连JavaEE有些什么都弄不清,更别说EJB了。当然,Spring本身没什么不好。它跟JavaEE是相互竞争,互相取长补短的关系。
个人认为主要是EJB依赖于EJB容器才能运行,比如JBoss服务器,完全没有Spring更为方便的管理。
JBoss服务器是一个J2EE的容器,也是一个WEB容器;而现在大部分用的都是servlet容器(一般称为WEB容器),比如tomcat。
2)EJB设计的初衷(让程序员更专注于自己的业务实现)
答:从某种意义上来看,EJB是一种大型分布式企业应用开发架构的先驱尝试者,它试图解决这种企业应用底层那些系统级的问题,系统提供一种可重用的、通用的解决方案。
回顾EJB出现以前的Java应用开发,大部分开发者直接用JSP页面,再加上少量Java Bean就可以完成整个应用,所有的业务逻辑、数据库访问逻辑都直接写在JSP页面中。系统开发前期,开发者不会意识到有什么问题,但随着开发进行到后期,应用越来越大,开发者需要花费大量时间去解决非常常见的系统级问题,反而无暇顾及真正需要解决的业务逻辑问题。
对于EJB来说,它提供了一种良好的组件封装,EJB容器负责处理如事务、访问控制等系统级问题,而EJB开发者则集中精力去实现业务逻辑;对页面开发者而言,EJB的存在无须关心,EJB的实现无须关心,他们只要调用EJB的方法即可。