黑豹程序员-架构师学习路线图-百科:开启分布式架构开发先河,让Java戴上全球第一的皇冠-EJB

文章目录

1、EJB的传奇

EJB这项技术其实已经消亡了,但为何我还专门单另拿出来讲呢?原因有三。

第一、EJB是J2EE雄霸全球的功臣,它把我们编程推向了分布式架构开发,为开发大型项目做好了铺垫,也是java强于其它语言的一个重要标志。

第二、EJB技术虽然失败了,但是EJB的思想并没有消亡,今天的分布架构、微服务架构都起源于它。

第三、EJB快速消亡的"罪魁祸首",虽然让J2EE黯然失色,直接"破产",但它却让Java迎来了第二春,那就是Spring框架。不夸张的说今天学Java其真正学的是Spring框架。如:开发中小项目的基础框架三大框架SSM,两大框架和Spring相关,SpringMVC和Spring。开发大型项目微服务架构SpringCloud,听这名字你就知道,全是基于Spring的东西。而今天如果你应聘java开发岗位,你说你不会微服务,那就地88。

这么传奇吗?就这么传奇,那大家搬好小板凳,快听我给大家来说说。

那一切还得从一本书说起。

下面这本书的作者叫Rod Johnson(罗德·约翰逊),一看发际线就知道是个高手,他就是Spring的作者,一个初出茅庐的人干翻了SUN公司正如火如荼,如日中天,当时的软件企业,甚至世界500强正纷纷膜拜EJB时。他出品了这本书,立刻一片哗然。

乍一看这本书的名字,Expert one-on-one (专家一对一)J2EE Development without EJB (J2EE开发不用EJB )并没有给人带来太冲击。毕竟关于J2EE的书太多了,而without EJB看上去有点象是故意挑衅EJB的感觉。一本J2EE的书怎么可能会给人带来信念或思维的冲击呢?但意向不到的是,它做到了。

那我们先得说清EJB,在说他怎么干掉的EJB。

2、什么是 EJB

EJB是Enterprise Java Beans技术的简称, 又被称为企业级Java Beans。这种技术最早是由美国计算公司研发出来的。EJB技术的诞生标志着Java Beans的运行正式从客户端领域(单一服务器)扩展到服务器领域(分布式服务器集群)。在电子商务领域运用EJB技术可以简化应用系统的开发, 这是由该技术的结构和特点所决定的。

EJB (Enterprise Java Beans) 是基于分布式事务处理的企业级应用程序的组件。Sun公司发布的文档中对EJB的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。

在开发分布式系统时, 采用EJB可以使得开发商业应用系统变得容易, 应用系统可以在一个支持EJB的环境中开发, 开发完之后部署在其它的EJB环境中, 随着需求的改变, 应用系统可以不加修改地迁移到其它功能更强、更复杂的服务器上。EJB在系统实现业务逻辑层里面负责表示程序的逻辑和提供访问数据库的接口。

3、从拥抱到抛弃

由于IBM和Sun Microsystems等EJB提倡者力推其前景,起初一些大公司纷纷采用EJB部署他们的系统。然而随后各种问题便接踵而至,对EJB的恶评短时间内激增。

对于初学者,EJB的API显得太过困难;对于许多程序员来说,书写那些必须抛出特定异常的接口并将bean类作为抽象类实现的做法既不直观也不正常。当然,EJB所被赋予的使命,如对象关系映射和事务管理确实有其天然复杂性,但其API之复杂还是令开发人员们觉得望而却步,一些人开始怀疑EJB除了引入了复杂的实现手段以外似乎并未带来什么实际好处。

另外,实际运用中被发现,如果使用EJB来封装业务逻辑会带来性能上的下降。这是因为,最早的EJB规范只允许客户端通过特定协议(如CORBA)进行远程方法调用来调用,即使大部分实际应用根本就不需要分布式计算。直到EJB 2.0才引入了本地接口,以支持可以开发不通过网络就能直接本地调用的EJB系统。

尽管如此,EJB的广泛普及仍然为其复杂度所制约。尽管已经有一些高质量的集成开发工具可以协助开发人员通过自动编码解决一部分重复作业,但这并不能降低学习此项技术的难度。

另一方面,"草根阶层"的编程爱好者们发起了一场旨在使用 "轻量级"技术以代替复杂的EJB的运动。这些技术包括Hibernate(用于提供数据持久化和对象-关系映射)及Spring框架(用于封装业务逻辑)。尽管它们不像EJB那样有巨头支持,但其在庶民间却更加流行,并且也被一些对EJB深感失望的企业所采用。

4、最终版EJB3.0

EJB规范起初的一个主要价值---对分布式应用进行事务管理---在随后的实践中被一致认为几乎没能派上用场。对于企业级应用来说,Spring和Hibernate等简化框架更加实用。因此,EJB 3.0规范(JSR 220)为了迎合这个趋势相比于其前辈进行了一次激进的大跳跃。受到Spring 影响,EJB 3.0也使用所谓的"传统简单Java对象(POJO)";同时,支持依赖注入来简化全异系统的集成与配置。Hibernate的创始人Gavin King参与了这一新版规范的制订,并对EJB大加提倡。Hibernate的许多特性也被引入到Java持久化API当中,从而取代原来的实体bean。EJB 3.0规范大幅采用Java注释(annotation)来对代码进行元数据修饰,从而消减了此前EJB编程的冗杂性。

但此时已经为时已晚,Hibernate和Spring的成功,让EJB黯然退出市场。

但在我看来,在当时单机服务器就足够的时代,EJB太先进了,相当于牛刀杀鸡不好用太麻烦,再者它没有像今天微服务使用那么轻巧,所以才被弃用。而且Hibernate、Spring还是单机产物,其实并没有胜过EJB分布式的架构。

可这就是历史,太先进太超前的东西不会被立刻接受的。

相关推荐
Francek Chen4 小时前
【大数据技术基础 | 实验十二】Hive实验:Hive分区
大数据·数据仓库·hive·hadoop·分布式
Red Red5 小时前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
Natural_yz7 小时前
大数据学习17之Spark-Core
大数据·学习·spark
qq_172805597 小时前
RUST学习教程-安装教程
开发语言·学习·rust·安装
一只小小汤圆7 小时前
opencascade源码学习之BRepOffsetAPI包 -BRepOffsetAPI_DraftAngle
c++·学习·opencascade
虾球xz7 小时前
游戏引擎学习第20天
前端·学习·游戏引擎
LateBloomer7777 小时前
FreeRTOS——信号量
笔记·stm32·学习·freertos
legend_jz8 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
Komorebi.py8 小时前
【Linux】-学习笔记04
linux·笔记·学习
javaDocker8 小时前
业务架构、数据架构、应用架构和技术架构
架构