重温经典——J2EE without EJB

2024-03-31 10:48
文章标签 经典 without 重温 j2ee ejb

本文主要是介绍重温经典——J2EE without EJB,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一年了,但每次我看到这本书仍然会有一种心情澎湃的感觉。这是我一年里第三次看这本书,而且这次我看到的是它的中文版。我很少看中文版的书,但这次我居然在看完了两遍这本书的英文版后又买了本中文版的书。因为这本书对我太重要了,它对我的影响力甚至比Design pattern带给我的冲击还又大,它带我的不仅仅是技术上的提高,还有整个思想观念和思维方式的变化。也因为这本书的中文版在JavaEye上也叫嚣了好久了,也因为这本书的几个译者都是值得我尊敬的人。我对potian的尊敬有时甚至达到了崇拜的地步,而robbindleegigixmoxie、曹等几位也都是江湖上也都是出名的一流高手。


乍一看这本书的名字,Expert one on one J2EE development without EJB并没有给人带来太冲击。毕竟关于J2EE的书太多了,而without EJB看上去有点象是故意挑衅EJB的感觉。一本J2EE的书怎么可能会给人带来信念或思维的冲击呢?但是它做到了,它不仅使自己变成了不朽的经典,也使Rod Johnson成为了我最近一年的新偶像。

 

这本书的前五章是让人宕气回肠的五章,每次看这几章的内容都会感觉非常过瘾。因为它不仅向整个EJB的架构和传统观念发起了冲击,而且它的每一条分析都是如何的有理有据,如此的让人信服。Rod Johnson是一个实用主义者,他不是全盘否定了EJB的价值,而是从实用的角度出发,对EJB的方方面面的功能进行了深入分析,并说明了EJB的优点和缺点。分布式对象、多线程模型、SFLB、传统的分布式架构,一个个的EJB的神话被揭穿了。如果说Rod Johnson的前一本书是对EJB的方方面面零星地提出了怀疑和批判,那么这本书则对上一本书的思想得到了升华,将这些思想进行了汇总,并以深入的方式表达出来。

 

我们中的大多数人生活在人云亦云的世界里,或者象Ted Neward说的那样,我们就象足球比赛里的足球被人踢来踢去。EJBIOCAOPgroovy ruby python那样的动态语言、AJAXruby on rail,一样一样的新技术在往外冒,于是我们随着潮流被这个技术踢向了另一个技术。我并不是追随新技术有什么不好,但是假如我们学会象Rod Johnson的那种怀疑权威,那种从实用的角度对技术进行深入分析的思考,我们的世界可能会就不一样了(当然我们要想不想被人踢来踢去,我们必须要有深厚的技术功底,而不是人云我否的那样别人赞,我们就骂)。这也就是我读这本书的最大收获,以前我学strutsEJB或者更早的其它技术时,我从来没有怀疑过它们的设计有没有问题,有没有更佳的解决方案,而是象小学生背书一样将这些东西全盘接收。但是现在我每学一种新技术,都会从不同的角度分析它的优劣和思想,这样的思考方式对我们的开发生涯也许会有巨大的影响。

 

当然这本书的另一个亮点是它对各种技术、开源架构进行了详尽的对比分析。市面上没有其他(也许是我孤陋寡闻)任何一本书会将如此多的技术进行如此深入分析,并进行的对比,说明各自的优缺点各使用场合。以前只能在某些人的blogTheServerSide上零零星星地发现一些个别的内容。而这本书则将J2EE的各个层面的技术都进行了深入全面地分析,IOCSpring, Pico, Hivemind)、AOP架构(AspectJ, AspectWerkz, JBoss AOP, Spring)Web层的MVC架构(Struts, Spring, Webwork)和其它类型的解决方案(Tapestry, JSF, ASP.Net),持久层架构(iBatisSpring DAO, hibernate JDO)与历史,远程连接等等。Rod Johnson的技术功底在此体现无遗,他对J2EE的各种技术的理解都达到如此多的深度确实令人佩服。

 

有人认为这本书给Spring做托,我对此只能表示无奈。确实这本倡导轻量级容器,倡导用AOP来替换EJB的一些服务,倡导用JDBC框架简化数据访问,但是这些都是从实用的角度考虑的,因为Spring确实给我们带来了方便,让我们开发的程序更有效率更健壮。再说有谁不喜欢把自己创造的产品象孩子一样爱护的?难道Gavin King不喜欢hibernate,难道robbin不喜欢他一手创办的论坛?这是个人的成就感,正是这种成就感推动着他们将他们的产品做得更出色。

 

最后说说这本书的中文版,其实我不太喜欢看中文版的书,我更喜欢Rod Johnson那种严谨又井井有条的文笔,虽然这样的文笔算不上优美,但是却让人有一种那肃然起敬的感觉,让人感觉到真正的英国绅士(虽然他是澳大利亚人,呵呵。而且他说话或在bbs上留言都会有文绉绉的感觉)。但是中文版看起来确实比英文版的快,而且这本书读起来确实很流畅。毕竟每一位译者都是技术高手,再加上gigix的文笔润色,虽然有些小错误,但无论如何它的翻译质量绝对称得上是精品。

 

当然我们不能忽略的是Rod Johnson在这本书之前写的另一本书, Expert one on one J2EE design and development。很多人把它当成J2EE without EJB的第一版,他们错了。这本书的价值和观念的冲击甚至比J2EE without EJB还要大,因为它出版在2002年,一个EJB 2还在流行的年代,因为它促成了Spring的诞生。还因为这本书里的好多章节到了现在仍然有很大的价值,这是J2EE without EJB无法替代的,它对EJB在技术层面上深入剖析比起J2EE without EJB要细致好几倍。其中的第4章更是任何Java开发者必看的经典。

这篇关于重温经典——J2EE without EJB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/864151

相关文章

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

前端 CSS 经典:文字描边

前言:文字描边有两种实现方式 1. text-shadow 设置 8 个方向的文字阴影,缺点是只有八个方向,文字转角处可能有锯齿状。不支持文字透明,设置 color: transparent,文字会成描边颜色。 <!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><meta http-equiv="X-UA-Comp

BD错误集锦6——【IDEA报错】tomcat server功能无效,报错Java EE: EJB, JPA, Servlets

在网上查找原因,发现是非法关闭IDEA导致的。 Open Settings | Plugns and enable it. 在设置中enable JAVA EE和tomcat server即可。 参考: https://stackoverflow.com/questions/43607642/intellij-idea-plugin-errorproblems-found-loadin

LeetCode:经典题之141、142 题解及延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 142.环型链表 目录 系列目录141. 环形链表常量因子 1

【数据结构与算法 经典例题】使用队列实现栈(图文详解)

💓 博客主页:倔强的石头的CSDN主页               📝Gitee主页:倔强的石头的gitee主页    ⏩ 文章专栏:《数据结构与算法 经典例题》C语言                                   期待您的关注 ​​ 目录  一、问题描述 二、前置知识 三、解题思路 四、C语言实现代码 🍃队列实现代码:

海量数据处理经典思想

第一部分、十五道海量数据处理 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?     方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(

LeetCode:经典题之389 题解与延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 142.环型链表 目录 系列目录389.找不同哈希表

【经典算法】LeetCode 22括号生成(Java/C/Python3/Go实现含注释说明,中等)

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论,💬支持博主,记得点个大大的关注,持续更新🤞 ————————————————- 首先,请注意题目链接有误,您提供的链接是LeetCode 14,但题目

前端 CSS 经典:mix-blend-mode 属性

前言:这是一个混合属性,作用是将两个颜色混合生成一个新颜色。可以将视频和文字相融合,产生动态文字效果。 效果 实现代码  <!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><metaname="viewpo

【Linux详解】冯诺依曼架构 | 操作系统设计 | 斯坦福经典项目Pintos

目录 一. 冯诺依曼体系结构 (Von Neumann Architecture) 注意事项 存储器的意义:缓冲 数据流动示例 二. 操作系统 (Operating System) 操作系统的概念 操作系统的定位与目的 操作系统的管理 系统调用和库函数 操作系统的管理: sum 三. 系统调用实现示例:Pintos 项目 Step 1:进入 examples 目录 St