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. Oracle EBS进化史

    https://blogs.oracle.com/ptian/entry/oracle_ebs%E8%BF%9B%E5%8C%96%E5%8F%B2 通过图表总结了下Oracle EBS的进化历史,回 ...

  2. 在docker里部署网络服务

    之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干 ...

  3. 计划参照mysql-proxy编写mssql-proxy

    目前使用haproxy做了mssql多个读库的负载均衡,在生产环境中运行得不错. 不过,这个方案有缺点:客户端需要选择是使用读库,还是写库.这样还是不够方便,如果能够实现自动路由就更好了,即让hapr ...

  4. Quartz.net 定时调度时间配置格式说明与实例

    格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 小时 ...

  5. Java设计模式4:单例模式

    前言 非常重要,单例模式是各个Java项目中必不可少的一种设计模式.本文的关注点将重点放在单例模式的写法以及每种写法的线程安全性上.所谓"线程安全性"的意思就是保证在创建单例对象的 ...

  6. EF 外键问题

    在做一个评论功能的时候,发现用户的id不对,打开数据库一看,莫名其妙的新增了几个用户.明显是将外键中的用户新增到用户表中了. 评论表: public class CourseComment : Bas ...

  7. [.net 面向对象编程基础] (14) 重构

    [.net 面向对象编程基础] (14) 重构 通过面向对象三大特性:封装.继承.多态的学习,可以说我们已经掌握了面向对象的核心.接下来的学习就是如何让我们的代码更优雅.更高效.更易读.更易维护.当然 ...

  8. C#高级二

    编程小虾米大侠之梦 软件环境:win7 开发工具:vs 2010 平台:.NET 语言:C# 类库版本:.NET Framework 2.0 语言特点:强类型语言 规划知识点: 1..net fram ...

  9. JVM的SNMP监控配置

    近期看了一下JVM对监控的支持,除了常规的JMX外居然还有SNMP, 有点意思, 这个网管协议适配的地方还真多,那么就先测试一下. 先随便找一个能在后台持续运行的java小程序,如我手头的BIO的so ...

  10. Post方式的Http流请求调用

    HttpRequest公共类: public static class HttpRequestAction { /// <summary> /// 发送http请求并返回响应 /// &l ...