J2EE修炼之四书五经

作者:彭晨阳

J2EE其实没有四书五经,因为J2EE一直如汹涌澎湃的大江,推陈出新,不断高速发展,这是一种带领我们走向未来的技术。当然,如何在这种气势如虹的潮流之中不至于迷失方向,需要相关指南性书籍的引导。本文将从线程和模式两个方面推荐J2EE书籍,这两个方面正好是两种不同的方向,线程是从微观、底层机制入手;而模式则是从设计高度来看待J2EE。

线程(Thread)

首先,线程是很多J2EE初学者容易忽视的一个基本知识,可以说,无论你是从Java世界的哪一扇门进入J2EE的,线程是必经之道。已经不记得在哪里看到过下面一段英文:在过去,大概只有勇敢的程序员才勇于使用pthread和Win32线程,现代语言如Java正试图在编写一些令人恐惧的应用如并行计算等方面来挽救我们。J2EE的Servlet和EJB确保我们不用担心线程以及同步等问题,我们只要象往常一样编程,容器自动会使用线程池等技术来支持我们的应用。由此可见,线程是J2EE最基本的底层机制,每个Servlet/Jsp程序其实是一段线程程序,如果你不懂得线程/多线程的一些原理,如何能娴熟驾驭J2EE的Servlet/Jsp?在线程计算方面有很多权威,Dou Lee无疑是这方面的杰出代表,他的并行计算包已经加入了最新的JDK1.5版本中,他的书籍都属于奠基性质,但是,这样书籍可能不是很适合只想对线程进行了解的J2EE初学者。

《Java线程编程》(Java Thread Programming)

  是我推荐的第一本有关J2EE书籍,在这本书中,作者以简单的例子,形象易懂地从单线程讲解到多线程,线程池(Thread Pool)、并发同时访问对象和变量(Concurrent Access to Objects and Variables),这些都是我们在平时Servlet/Jsp编程中经常会发生疑惑的地方,在这本书的案例中,作者清晰明了地给我们展示这些细节而有重要的技术。同时,也让我们深刻地理解了直接编制多线程应用是一件“令人恐惧”的事情。很有意思的是,我在一家网上书店社区里也发现了与我有同样见解的帖子,称这本书是“一本让经典成为过去的书”

设计模式

  线程世界就象微生物世界一样,复杂且几乎没有边界,作为信息系统的程序员如果太执著于这样纯技术的微观层面,可能浪费太多宝贵时间和精力,在基本掌握多线程机制后,需要更加关注J2EE的设计应用了。J2EE是Java世界中一个独特的框架或标准,所以,我们首先需要掌握基于Java的设计应用,这些设计应用技巧,是先行者经过长期实践总结出来的心得,他们称之为设计模式。在J2EE应用中,只有大量使用设计模式,才能体现出分离和解耦的最高宗旨,才能使得自己的J2EE系统脉络清晰、层次分明,这样的系统才真正具有良好的可伸缩性、稳固的健壮性以及方便的可维护性。

  GoF 23种设计模式已经成为经典,2002年我在我的网站J道发表23种设计模式Java详解时,竟然在中文google里很难发现这方面的资料,这让我万分惊讶,也许国人确实是非常实在,只对算法、数据结构等这样看得见、摸得着的概念感兴趣,其实我一直反复和别人讲:设计模式不是纯抽象概念,它是实践的总结,如同UML一样,是一种交流和编码实现的语言。

  我在2002年帮朋友购买了GoF 23种设计模式的中文版:《设计模式:可复用面向对象软件的基础》,它是2000年12月第2次印刷的版本,这样经典必读书籍,8000册在2年时间内都没有销售完毕,相比那些喧嚣炒作的书籍,在出版几个月内销售过万,越发显得我们这个社会的浮躁和急功近利了。

  当然,这本薄薄的书虽然由四个国人鼎力协助翻译,想必他们也殚思竭虑,尽了最大努力了,可惜书中还是有很多翻译欠妥之处,影响了它的销量。由于这本经典的GoF设计模式比较难懂,初学者更多应该是从实例应用中了解和掌握GoF设计模式,相关提供实例应用的书籍有下面几本:Mark Grand的Patterns in Java系列;美籍华人阎宏的《Java与模式》;笔者的《Java实用系统开发指南》;

EJB

  EJB是J2EE中一个重要组成部分,J2EE推荐将你的业务功能核心放在EJB中实现,EJB类似肯得基的“全家桶”,将实际中需要的基础功能全都打包在一起了,如果你是个挑剔或个性化的客户,我想你可能不会只满足于“全家桶”。

  不管“全家桶”是否合适你,了解它里面装的是什么是一个必需的过程。掌握EJB需要从两个方面着手:基本原理和如何使用。

  《精通EJB(第二版)》

  是对EJB原理讲解得比较透彻,但是书中将EJB一些本质原理推卸给了Corba,而对Corba又没有仔细介绍,我认为初学者应该在这里适可而止,如果你非常对EJB底层实现感兴趣,我推荐阅读JBoss的源码,其实JBoss源码在你孜孜不倦的钻研之劲攻击下很快会土崩瓦解。

  对象池(Object Pool)、RMI和事务机制应该是EJB原理掌握三个方向,这三种技术方向又可以推荐很多书籍供学习研究,这里就不说了。

  EJB主要分EJB容器和EJB应用系统,初学者更多精力应该关注如何构建EJB应用系统,由于EJB提供功能强大且非常有特点,因此,使用他们要非常小心,遵循一定的前提和规则,由此,EJB设计模式是不能不了解的。

  《EJB设计模式》(http://www.huachu.com.cn/itbook/itbookinfo.asp?lbbh=BB99699392)是这方面的经典之作,在书中,作者指出了使用CMP注意特点、DAO模式的重要性、DTO模式的变种等。阅读本书的同时,如果参考SUN的PetStore源码学习,将会起到事半功倍的效果,

  看完上面两本书,自己动手实践非常重要,EJB使用中关于EJB reference配置比较麻烦,其原理是这样:调用者---- > EJB Reference ---> 被调用EJB的JNDI名称 ---- >被调用EJB,这些细节使用问题只有实践时才能碰到,也可以从网上寻找一些这方面的电子教程实例。

  只有调试了一两个EJB实例,这时你才可以站出来表达你的想法:喜欢或不喜欢?架构选型时也可以提供参考意见:是轻量型还是重量型?盲目排斥EJB或认为EJB是唯一解决方案等两种极端观点是要不得的,条条大路通罗马,伸缩和性能是关键。

  这里推荐一本从纯设计角度看待EJB/J2EE的书籍:Rod Johnson的《J2EE设计开发编程指南》,英文是Expert One-on-One J2EE Design and Development,Rod Johnson在书中从一个完美的设计角度指出了EJB缺点,这些缺点他是用黑体标识,非常醒目,同时,他将如果不使用EJB所带来的额外工作量使用正常小字体标识了,算是轻描淡写吧。当然,Rod Johnson为了将其理想的设计落实为代码,主持了Spring框架开发,如果J2EE领域有一个既符合完美的设计要求,又能支持成熟应用,同时又是业界标准,那是一个多么令人向往的事情,Spring框架至少在这方面做了有益的探索。

集群、Web服务和资源整合

  对于中大型软件系统,集群和Web服务是必需掌握的技术,目前相关书籍不多。如何将J2EE新技术和现有资源整合,也属于一个探索性的领域,期待这几个方面有好的书籍问世。

J2EE修炼之四书五经[转自2004年程序员]的更多相关文章

  1. TCP/IP之四书五经[转自2003.12程序员]

    TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要.从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架( ...

  2. C++程序设计之四书五经[转自2004程序员杂志]--下篇

    C++程序设计之四书五经(下篇) 作者:荣耀 我在上篇中“盘点”了TCPL和D&E以及入门教程.高效和健壮编程.模板和泛型编程等方面共十几本C++好书.冬去春来,让我们继续C++书籍精彩之旅. ...

  3. C++程序设计之四书五经[转自2004程序员杂志]--上篇

    C++程序设计之四书五经 作者:荣耀 C++是一门广泛用于工业软件研发的大型语言.它自身的复杂性和解决现实问题的能力,使其极具学术研究价值和工业价值.和C语言一样,C++已经在许多重要的领域大获成功. ...

  4. java程序员修炼之道

    今天在论坛里看到了一位工作10年的java大牛总结的java程序员修炼之道,看完后给出的评价是:字字玑珠,深入人心,猛回头,自己一无是处··· 大牛告诉我们应该好好学习与修炼以下知识与技能 Java语 ...

  5. Java程序员修炼之道 之 Logging(1/3) - Logback 配置(转)

    转自紫风乱写:http://www.blogjava.net/justfly/archive/2014/08/10/416768.html,建议大家去原处学习 写在前面的话: 作为<Java程序 ...

  6. J2EE程序员应该要掌握的linux知识

    J2EE程序员应该要掌握的linux知识 大型J2EE应用都在建构在linux环境下的.开发环境下我们可以通过samba映射成本地的网络驱动器,直接在windows环境下进行编程调试.但是最后的发布还 ...

  7. 《程序员的思维修炼》摘抄start:2014年9月27日19:27:07

    程序员的思维修炼:摘抄:考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是: ▪沟通能力: ▪学习和思考能力.软件行业正在逐步提高沟通能力.特别是敏捷方法(见注解 ...

  8. 《程序员修炼之道:从小工到专家》【PDF】下载

    <程序员修炼之道:从小工到专家>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196340 内容简介 <程序员修炼之道> ...

  9. 《程序员的思维修炼:开发认知潜能的九堂课》【PDF】下载

    <程序员的思维修炼:开发认知潜能的九堂课>[PDF]下载链接: https://u253469.ctfile.com/fs/253469-231196325 内容简介 运用一门程序设计语言 ...

随机推荐

  1. Spring声明式事务管理基于tx/aop命名空间

    目的:通过Spring AOP 实现Spring声明式事务管理; Spring支持编程式事务管理和声明式事务管理两种方式. 而声明式事务管理也有两种常用的方式,一种是基于tx/aop命名空间的xml配 ...

  2. 用php创建mysql数据库

    接触php就等于向后台更近了一步,之前一直在做前端,不过也在学php,但一直没敢写博客,现在终于有勇气迈向了这一步,还请各位博友多多担待. 服务器是后台开发的必备工具,但对于一般初学者来说是没有自己的 ...

  3. 利用HtmlAgilityPack库进行HTML数据抓取

    主要介绍基于XPATH的文本分析方式的实现,代码如下: using System; using System.Collections.Generic; using System.Linq; using ...

  4. 异步CTP(Async CTP)为什么那样工作?

    对异步CTP感兴趣有很多原因.异步CTP使异步编程比以前更加容易了.它虽然没有Rx强大,但是更容易学.异步CTP介绍了两个新的关键字,async和await.异步方法(或Lambda表达式)必须返回v ...

  5. Kali Linux渗透测试实战 1.2 环境安装及初始化

    1.2 环境安装及初始化 目录(?)[-] 环境安装及初始化 下载映像 安装虚拟机 安装Kali Linux 安装中文输入法 安装VirtualBox增强工具 配置共享目录和剪贴板 运行 Metasp ...

  6. FusionCharts简单教程(五)-----FusionCharts中的那些特殊符号

           在FusionCharts中有些特殊字符,我们需要进行编码操作才能够使用,否则就无法正常显示. 欧元符号       在FusionCharts里显示"€",你需要用 ...

  7. C#Light 再推荐,顺便介绍WP8 功能展示项目

    由于在项目中验证了C#Light脚本,C#Light的健壮和稳定程度已经得到了很大的提升. 现在可以更好的把C#Light介绍给大家使用,同时也有更多的自信,告诉大家这是一个已经具有商业价值的类库. ...

  8. TCP Server—Linux

    #include <stdio.h> #include <netinet/ip.h> #define BUFF_SIZE 1024 int main(int argc,char ...

  9. Winform文件下载之WebClient

    最近升级了公司内部使用的一个下载小工具,主要提升了下面几点: 1. 在一些分公司的局域网中,连接不上外网 2. 服务器上的文件更新后,下载到的还是更新前的文件 3. 没有下载进度提示 4. 不能终止下 ...

  10. Atitit 常用比较复杂的图像滤镜 attilax大总结

    Atitit 常用比较复杂的图像滤镜 attilax大总结 像素画滤镜 水彩油画滤镜 素描滤镜 梦幻镜 特点是中央集焦,周围景物朦化微带光晕,使人产生如入梦境的感觉.常用于拍摄婚纱.明星照,也用于其它 ...