Java学*从入门到精通-方法学(转)

发布于:2021-05-11 05:31:44

很多网友问我学* Java 有没有什么捷径,我说"无他,唯手熟尔"。但是我却很愿意将自己 学*的一些经验写出来,以便后来者少走弯路,帮助别人是最大的快乐嘛! 要想学好 Java,首先要知道 Java 的大致分类。我们知道,自从 Sun 推出 Java 以来,就力 图使之无所不包,所以 Java 发展到现在,按应用来分主要分为三大块:J2SE,J2ME 和 J2EE, 这也就是 Sun ONE(Open Net Environment)体系。J2SE 就是 Java2 的标准版,主要用于桌面 应用软件的编程;J2ME 主要应用于嵌入是系统开发,如手机和 PDA 的编程;J2EE 是 Java2 的企业版,主要用于分布式的网络程序的开发,如电子商务网站和 ERP 系统。J2SE 开发桌 面应用软件比起 VC,VB,DEPHI 这些传统开发语言来说,优势好象并不明显。J2ME 对于初学 者来说,好象又有点深奥,而且一般开发者很难有开发环境。所以现在应用最广泛又最好 学的就是 J2EE 了。J2EE 又包括许多组件,如 Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail 等。要 学*起来可不是一两天的事。 那么又该如何学* J2EE 呢?当然 Java 语法得先看一看的,I/O 包,Util 包,Lang 包你都熟 悉了吗?然后再从 JSP 学起。如果你学过 HTML,那么事情要好办的多,如果没有,那你 快去补一补 HTML 基础吧。其实 JSP 中的 Java 语法也不多,它更象一个脚本语言,有点象 ASP。然后你就该学一学 Servlet 了。Servlet 就是服务器端小程序,他负责生成发送给客户 端的 HTML 文件。JSP 在执行时,也是先转换成 Servlet 再运行的。虽说 JSP 理论上可以完 全取代 Servlet,这也是 SUN 推出 JSP 的本意,可是 Servlet 用来控制流程跳转还是挺方便 的,也令程序更清晰。接下来你应该学*一下 Javabean 了,可能你早就看不管 JSP 在 HTML 中嵌 Java 代码的混乱方式了,这种方式跟 ASP 又有什么区别呢?还好,SUN 提供了 Javabean 可以把你的 JSP 中的 Java 代码封装起来,便于调用也便于重用。接着就是 EJB 了,EJB 就是 Enterprise JavaBean,看名字好象它是 Javabean,可是它和 Javabean 还是有区 别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中 间件(也就是我们常听到的 Weblogic,Websphere 这些 J2EE 服务器)完成了,所以我们要 做的程序代码量很少,大部分工作都在设计和配置中间件上。至于 JDBC,就不用我多说 了,你如果用 java 编过存取数据库的程序,就应该很熟悉。还有,如果你要用 Java 编发 送电子邮件的程序,你就得看看 Javamail 了。 好了,对 Java 和 J2EE 有了一些基本概念之后,你就应该编一些程序了,千万不要纸上谈 兵哦。最好找一些有实例且带光盘的书来看,这样看到好的程序就可以直接 Ctrl+C 再 Ctrl+V,也不用劳您老大架再亲自把它 再输一遍吧,再说直接复制还不用怕出错,何乐而 不为呢!还有就是要经常上一些好的 Java 编程文章,有好的文章要 Cut 下来,有问题尽管 问,只要问题不是太傻,一般高手都会回答你的。下面介绍几个好的 Java 方面的编程网 站: CSDN 论坛 http://www.csdn.net/ 中国最有名的技术论坛,《程序员》杂志就是他们出版 的,你可以在上面提出问题,马上就有人回答你,如果你觉得好,你可以给那人加分; Java 研究组织 http://www.javaresearch.org/ 上面有很多原创文章,高手还是挺多的;

Java 开发者 http://www.chinajavaworld.com/ 那里 Java 资料比较全; java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛,注册用户快接*一万了,同 时在线人数也在一千左右,人气很旺的; IBM 的开发者网络 http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM 永远 的蓝色巨人;

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢? 当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎 么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些 散乱的代码之外,可能再没有别的东西了吧!你现在最缺的是实际的工作经验,而不是书 本上那些凭空想出来的程序。所以你快去找一份 Java 的编程工作来做吧(如果是在校学生 可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个 高手,而且他还愿意不厌其烦地教你,这样好象有点难哦! 还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合 理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对 不起,偶最*《金装四大才子》看多了)。学 Java 必读的两个开源程序就是 Jive 和 Pet Store.。Jive 是国外一个非常著名的 BBS 程序,完全开放源码。论坛的设计采用了很多先进 的技术,如 Cache、用户认证、Filter、XML 等,而且论坛完全屏蔽了对数据库的访问,可 以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们*时编程时 容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受, 这就是我们与国外软件的差距所在)。Jive 的资料在很多网站上都有,大家可以找来研究 一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是 Jive 从 2.5 以后就不再无条件 的开放源代码,同时有 licence 限制。不过幸好还有中国一流的 Java 程序员关注它,外国 人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的 Jive 版本-J 道。Jive(J 道版) 是由中国 Java 界大名鼎鼎的 banq 在 Jive 2.1 版本基础上改编而成, 全中文,增加了一些实 用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以 访问 banq 的网站 http://www.jdon.com/ 去下载,或到同济技术论坛的服务器上 ftp://nro.shtdu.edu.cn 去下,安装上有什么问题,可以到论坛上去提问。Pet Store.(宠物 店)是 SUN 公司为了演示其 J2EE 编程规范而推出的开放源码的程序,应该很具有权威 性,想学 J2EE 和 EJB 的朋友不要错过了。 你一定会高兴地说,哈哈,原来成为 Java 高手就这么简单啊!记得 Tomjava 也曾碰到过一 个项目经理,号称 Java 很简单,只要三个月就可以学会。其实说这种话的人就如当年小日 本号称"三个月拿下中国"一样大言不惭。不是 Tomjava 泼你冷水,你现在只是学到了 Java 的骨架,却还没有学到 Java 的精髓。接下来你得研究设计模式了。设计模式是高级程序员 真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想, 它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接口或

抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是,设计模式反复向你 强调一个宗旨:要让你的程序尽可能的可重用。关于设计模式的资料,还是向大家推荐 banq 的网站 http://www.jdon.com/ ,他把 GOF 的 23 种模式以通俗易懂的方式诠释出来, 纯 Java 描述,真是经典中的经典。有时间再研究一下 MVC 结构(把 Model-View- Control 分离开的设计思想)吧,现在很流行的 Structs 就是它的一种实现方式,不过 Structs 用起 来实在是很繁,我们只要学*其精髓即可,我们完全可以设计自己的 MVC 结构。然后你 再研究一下软件 Refactoring(重整)和极限 XP 编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的 Java 代码,把那些经典的程序和常见的应用整理出来,再 精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室 吧,你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周 全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以 Money 就哗啦啦的来 了。。。。。。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做 贡献嘛!开发者在互联网上用 CVS 合作开发,用 QQ,MSN,E-mail 讨论联系,天南海北的程 序员分散在各地却同时开发同一个软件,是不是很有意思呢? 下面介绍两个好的开源项目网站: 湖北省软件公共开发*台 http://gro.clinux.org/ 共创联盟 http://cosoft.org.cn/

Java Learning Path (一)、工具篇

一、 JDK (Java Development Kit) JDK 是整个 Java 的核心,包括了 Java 运行环境(Java Runtime Envirnment),一堆 Java 工具和 Java 基础的类库(rt.jar)。不论什么 Java 应用服务器实质都是内置了某个版本的 JDK。因此掌握 JDK 是学好 Java 的 第一步。最主流的 JDK 是 Sun 公司发布的 JDK,除了 Sun 之外,还有很多 公司和组织都开发了自己的 JDK,例如 IBM 公司开发的 JDK,BEA 公司的 Jrocket,还有 GNU 组织开发的 JDK 等等。其中 IBM 的 JDK 包含的 JVM

(Java Virtual Machine)运行效率要比 Sun JDK 包含的 JVM 高出许多。而 专门运行在 x86 *台的 Jrocket 在服务端运行效率也要比 Sun JDK 好很 多。但不管怎么说,我们还是需要先把 Sun JDK 掌握好。 1、 JDK 的下载和安装 JDK 又叫做 J2SE(Java2 SDK Standard Edition),可以从 Sun 的 Java 网站 上下载到,http://java.sun.com/j2se/downloads.html ,JDK 当前最新的版 本是 J2SDK1.4.2,建议下载该版本的 JDK,下载页面在这里: http://java.sun.com/j2se/1.4.2/download.html。 下载好的 JDK 是一个可执行安装程序,默*沧巴瓯虾蠡嵩 C:\Program Files\Java\目录下安装一套 JRE(供浏览器来使用),在 C:\j2sdk1.4.2 下安 装一套 JDK(也包括一套 JRE)。然后我们需要在环境变量 PATH 的最前 面增加 java 的路径 C:\j2sdk1.4.2\bin。这样 JDK 就安装好了。 2、 JDK 的命令工具 JDK 的最重要命令行工具: java: 启动 JVM 执行 class javac: Java 编译器 jar: Java 打包工具 javadoc: Java 文档生成器 这些命令行必须要非常非常熟悉,对于每个参数都要很精通才行。对于这 些命令的学*,JDK Documentation 上有详细的文档。

二、 JDK Documentation Documentation 在 JDK 的下载页面也有下载连接,建议同时下载 Documentation。Documentation 是最最重要的编程手册,涵盖了整个 Java 所有方面的内容的描述。可以这样说,学* Java 编程,大部分时间都是 花在看这个 Documentation 上面的。我是随身携带的,写 Java 代码的时 候,随时查看,须臾不离手。

三、 应用服务器(App Server) App Server 是运行 Java 企业组件的*台,构成了应用软件的主要运行环 境。当前主流的 App Server 是 BEA 公司的 Weblogic Server 和 IBM 公司的 Websphere 以及免费的 Jboss,选择其中一个进行学*就可以了,个人推 荐 Weblogic,因为它的体系结构更加干净,开发和部署更加方便,是 Java 企业软件开发人员首选的开发*台。下面简要介绍几种常用的 App Server: 1、 Tomcat Tomcat 严格意义上并不是一个真正的 App Server,它只是一个可以支持 运行 Serlvet/JSP 的 Web 容器,不过 Tomcat 也扩展了一些 App Server 的功 能,如 JNDI,数据库连接池,用户事务处理等等。Tomcat 被非常广泛的 应用在中小规模的 Java Web 应用中,因此本文做一点下载、安装和配置 Tomcat 的介绍: Tomcat 是 Apache 组织下 Jakarta 项目下的一个子项目,它的主网站是: http://jakarta.apache.org/tomcat/ ,Tomcat 最新版本是 Tomcat4.1.27,软 件下载的连接是:http://www.apache.org/dist/jakarta/tomcat4/binaries/ 。 下载 Tomcat 既可以直接下载 zip 包,也可以下载 exe 安装包(个人建议 zip 更干净些),不管哪种情况,下载完*沧昂靡院螅▃ip 直接解压缩就 可以了)。需要设置两个环境变量: JAVA_HOME=C:\j2sdk1.4.2 CATALINA_HOME=D:\tomcat4 (你的 Tomcat 安装目录) 这样就安装好了,启动 Tomcat 运行 CATALINA_HOME\bin\startup.bat,关 闭 Tomcat 运行 shutdown.bat 脚本。Tomcat 启动以后,默认使用 8080 端

口,因此可以用浏览器访问 http://localhost:8080 来测试 Tomcat 是否正常 启动。 Tomcat 提供了两个 Web 界面的管理工具,URL 分别是: http://localhost:8080/admin/index.jsp http://localhost:8080/manager/html 在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用 一个文本工具打开 CATALINA_HOME\conf\tomcat-users.xml 这个文件,加 入如下几行: <role rolename="manager"/> <role rolename="admin"/> <user username="robbin" password="12345678" roles="admin,manager,tomcat"/> 这样用户“robbin”就具备了超级管理员权限。重新启动 Tomcat 以后,你 就可以使用该用户来登陆如上的两个管理工具,通过 Web 方式进行 Tomcat 的配置和管理了。 2、 BEA Weblogic Weblogic 可以到 BEA 的网站上免费注册之后下载到最新的 Weblogic8.1 企 业版,License 可以免费使用 1 年时间,其实这已经完全足够了。 Weblogic 的下载连接:http://commerce.bea.com/index.jsp,Weblogic 的在 线文档:http://edocs.bea.com/ 。 3、 IBM Webshpere Websphere 同样可以下载到免费的试用版本,到 IBM 的 developerWorks 网站可以看到 Websphere 试用产品的下载和相关的 Websphere 的资料, developerWorks 中文网站的连接是:http://www900.ibm.com/developerWorks/cn/wsdd/ ,Websphere 的下载连接: http://www7b.software.ibm.com/wsdd/downloads/WASsupport.html 。 4、 Jboss

Jboss 是免费开源的 App Server,可以免费的从 Jboss 网站下载: http://www.jboss.org/index.html,然而 Jboss 的文档是不免费,需要花钱 购买,所以为我们学* Jboss 设置了一定的*T Jdon 上有几篇不错 的 Jboss 配置文档,可以用来参考:http://www.jdon.com/idea.html

四、 Java 应用的运行环境 Java 的应用可以简单分为以下几个方面: 1、 Java 的桌面应用 桌面应用一般仅仅需要 JRE 的支持就足够了。 2、 Java Web 应用 Java 的 Web 应用至少需要安装 JDK 和一个 web 容器(例如 Tomcat),以 及一个多用户数据库,Web 应用至少分为三层: Browser 层:浏览器显示用户页面 Web 层:运行 Servlet/JSP DB 层:后端数据库,向 Java 程序提供数据访问服务 3、 Java 企业级应用 企业级应用比较复杂,可以扩展到 n 层,最简单情况会分为 4 层: Browser 层:浏览器显示用户页面 Client 层:Java 客户端图形程序(或者嵌入式设备的程序)直接和 Web 层 或者 EJB 层交互 Web 层:运行 Servlet/JSP EJB 层:运行 EJB,完成业务逻辑运算 DB 层:后端数据库,向 Java 程序提供数据访问服务 4、 Java 嵌入式应用 Java 嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从 Sun 下 载 J2ME 开发包,J2ME 包含了嵌入式设备专用虚拟机 KVM,和普通的 JDK

中包含的 JVM 有所不同。另外还需要到特定的嵌入式厂商那里下载模拟 器。

Java Learning Path(二)、书籍篇 学*一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。 需要有一个循序渐进的阅读过程。我推荐 Oreilly 出版的 Java 系列书籍。 在这里我只想补充一点看法,很多人学* Java 是从《Thinking in Java》这 本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这 本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的 介绍 Java 的整个体系,而是一种跳跃式的写作方法,是一种类似 tips 的 方法来对 Java 很多知识点进行了深入的分析和解释。 对于初学者来说,最好是找一本 Java 入门的书籍,但是比较完整的循序 的介绍 Java 的语法,面向对象的特性,核心类库等等,在看这本书的同 时,可以同步来看《Thinking in Java》,来加深对 Java 的理解和原理的运 用,同时又可以完整的了解 Java 的整个体系。 对于 Java 的入门书籍,蔡学镛推荐的是 Oreilly 的《Exploring Java, 2nd Edition》 或者《Java in a Nutshell,2nd Edition(针对 C++背景)》,我并没 有看过这两本书。其实我觉得电子工业出版社的《Java 2 编程详解》或者 《Java 2 从入门到精通》就很不错。 在所有的 Java 书籍当中,其实最最有用的,并不是 O'reilly 的 Java Serials,真正最最有用处是 JDK 的 Documentation!几乎你想获得的所有 的知识在 Documentation 里面全部都有,其中最主要的部分当然是 Java 基础类库的 API 文档,是按照 package 来组织的,对于每一个 class 都有 详细的解释,它的继承关系,是否实现了某个接口,通常用在哪些场合, 还可以查到它所有的 public 的属性和方法,每个属性的解释,意义,每个 方法的用途,调用的参数,参数的意义,返回值的类型,以及方法可能抛

出的异常等等。可以这样来说,所有关于 Java 编程方面的书籍其实都不 过是在用比较通俗易懂的语言,和良好的组织方式来介绍 Documentation 里面的某个 package 里面包含的一些类的用法而已。所以万变不离其宗, 如果你有足够的能力来直接通过 Documentation 来学* Java 的类库,那 么基本上就不需要看其他的书籍了。除此之外,Documentation 也是编程 必备的手册,我的桌面上有三个 Documentation 的快捷方式,分别是 J2SDK1.4.1 的 Documentation,Servlet2.3 的 Documentation 和 J2SDKEE1.3.1 的 Documentation。有了这个三个 Documentation,什么其他 的书籍都不需要了。 对于 Java Web 编程来说,最核心的是要熟悉和掌握 HTTP 协议,这个就和 Java 无关了,在熟悉 HTTP 协议之后,就需要熟悉 Java 的实现 HTTP 协议 的类库,也就是 Servlet API,所以最重要的东西就是 Servlet API。当然对 于初学者而言,直接通过 Servlet API 来学* Web 编程有很大的难度,我 推荐 O'reilly 的《Java Server Pages 》这本书来学* Web 编程。 EJB 的书籍当中,《Enterprise JavaBeans, 2nd Edition》是一本很不错的 书, EJB 的学*门槛是比较高,入门很难,但是这本书完全降低了学*的 难度,特别重要的一点是,EJB 的学*需要结合一种 App Server 的具体实 现,所以在学* EJB 的同时,必须同步的学*某种 App Server,而这本书 相关的出了三本书,分别是 Weblogic6.1,Websphere4.0 和 JBoss3.0 上面 部署书中例子的实做。真是既有理论,又有实践。在学* EJB 的同时,可 以边看边做,EJB 的学*会变得很轻松。 但是这本书也有一个问题,就是版本比较旧,主要讲 EJB1.1 规范和部分 EJB2.0 的规范。而 Ed Roman 写的《Mastering EJB 2.0》这本书完全是根据 EJB2.0 规范写的,深入浅出,覆盖了 EJB 编程的各个方面,并且还有很多 编程经验 tips,也是学* EJB 非常推荐的书籍之一。 如果是结合 Weblogic 来学* J2EE 的话,《J2EE 应用与 BEA Weblogic Server》绝对是首选读物,虽然是讲述的 Weblogic6.0,仍然值得购买,这 本书是 BEA 官方推荐的教材,作者也是 BEA 公司的工程师。现在中文版

已经随处可见了。这本书结合 Weblogic 介绍了 J2EE 各个方面的技术在 Weblogic *台上的开发和部署,实践指导意义非常强。 在掌握了 Java *台基础知识和 J2EE 方面的知识以后,更进一步的是学* 如何运用 OO 的方法进行软件的设计,那么就一定要学*“设计模式”。 Sun 公司出版了一本《J2EE 核心模式》,是每个开发 Java 企业*台软件 的架构师必备的书籍。这本书全面的介绍了 J2EE 体系架构的各种设计模 式,是设计师的必读书籍。 Java Learning Path(三)过程篇 每个人的学*方法是不同的,一个人的方法不见得适合另一个人,我只能 是谈自己的学*方法。因为我学* Java 是完全自学的,从来没有问过别 人,所以学*的过程基本上完全是自己摸索出来的。我也不知道这种方法 是否是比较好的方法,只能给大家提供一点参考了。 学* Java 的第一步是安装好 JDK,写一个 Hello World, 其实 JDK 的学*没有那么简单,关于 JDK 有两个问题是很容易一直困扰 Java 程序 员的地方:一个是 CLASSPATH 的问题,其实从原理上来说,是要搞清楚 JRE 的 ClassLoader 是如何加载 Class 的;另一个问题是 package 和 import 问题,如何来寻找类的路径问题。把这两个问题摸索清楚了,就扫除了学 * Java 和使用 JDK 的最大*M萍隹匆幌峦跎摹禞ava 深度历险》, 对这两个问题进行了深入的探讨。 第二步是学* Java 的语法。Java 的语法是类 C++的,基本上主流的编程语 言不是类 C,就是类 C++的,没有什么新东西,所以语法的学*,大概就 是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的 用法,public,protected,private,static,什么时候用,为什么要用,怎 么用,这可能需要有人来指点一下,我当初是完全自己琢磨出来的,花了 很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些 概念的。

第三步是学* Java 的面向对象的编程语言的特性的地方。比如继承,构 造器,抽象类,接口,方法的多态,重载,覆盖,Java 的异常处理机制。 对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很 长时间,因为学* Java 之前没有 C++的经验,只有 C 的经验,我是大概 花了一个月左右吧,才彻底把这些概念都搞清楚,把书上面的例子反复的 揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了不下 5 遍,才彻底领悟了。不过我想如果有 C++经验的话,应该一两天时间足够 了。那么在这个过程中,可以多看看《Thinking in Java》这本书,对面向 对象的讲解非常透彻。可惜的是我学*的时候,并没有看到这本书,所以 自己花了大量的时间,通过自己的尝试和揣摩来学会的。 第四步就是开始熟悉 Java 的类库。Java 的基础类库其实就是 JDK 安装目 录下面 jre\lib\rt.jar 这个包。学*基础类库就是学* rt.jar。基础类库里面 的类非常非常多。据说有 3000 多个,我没有统计过。但是真正对于我们 来说最核心的只有 4 个,分别是 java.lang.*; java.io.*; java.util.*; java.sql.*; 这四个包的学*,每个包的学*都可以写成一本厚厚的教材,而 O'reilly 也确实是这样做的。我觉得如果时间比较紧,是不可能通过读四本书来学 *。我觉得比较好的学*方法是这样的: 首先要通读整个 package 的框架,了解整个 package 的 class,interface, exception 的构成,最好是能够找到介绍整个包框架的文章。这些专门介 绍包的书籍的前几章应该就是这些总体的框架内容介绍。 对包整体框架的把握并不是要熟悉每个类的用法,记住它有哪些属性,方 法。想记也记不住的。而是要知道包有哪些方面的类构成的,这些类的用 途是什么,最核心的几个类分别是完成什么功能的。我在给人培训的时候 一般是一次课讲一个包,所以不可能详细的介绍每个类的用法,但是我反 复强调,我给你们讲这些包的不是要告诉你们类的方法是怎么调用的,也

不要求你们记住类的方法调用,而是要你们了解,Java 给我们提供了哪些 类,每个类是用在什么场合,当我遇到问题的时候,我知道哪个类,或者 哪几个类的组合可以解决我的问题,That'all!,当我们具体写程序的时 候,只要你知道该用哪个类来完成你的工作就足够了。编码的时候,具体 的方法调用,是边写代码,边查 Documentation,所有的东西都在 Documentation 里面,不要求你一定记住,实际你也记不住 3000 多个类 的总共将* 10 万个方法调用。所以对每个包的总体框架的把握就变得极 为重要。 第五步,通过上面的学*,如果学的比较扎实的话,就打好了 Java 的基 础了,剩下要做的工作是扫清 Documentation 里面除了上面 4 个包之外的 其他一些比较有用处的类。相信进展到这一步,Java 的自学能力已经被培 养出来了,可以到了直接学* Documentation 的水*了。除了要做 GUI 编 程之外,JDK 里面其他会有用处的包是这些: java.text.*; java.net.*; javax.naming.*; 这些包里面真正用的比较多的类其实很少,只有几个,所以不需要花很多 时间。 第六步,Java Web 编程 Web 编程的核心是 HTTP 协议,HTTP 协议和 Java 无关,如果不熟悉 HTTP 协议的话,虽然也可以学好 Servlet/JSP 编程,但是达不到举一反三,一 通百通的境界。所以 HTTP 协议的学*是必备的。如果熟悉了 HTTP 协议 的话,又有了 Java 编程的良好的基础,学* Servlet/JSP 简直易如反掌, 我学* Servlet/JSP 就用了不到一周的时间,然后就开始用 JSP 来做项目 了。 在 Servlet/JSP 的学*中,重头仍然是 Servlet Documentation。Servlet API 最常用的类很少,花比较少的时间就可以掌握了。把这些类都看一遍,多 写几个例子试试。Servlet/JSP 编程本质就是在反复调用这些类来通过 HTTP 协议在 Web Server 和 Brower 之间交谈。另外对 JSP,还需要熟悉几

个常用 JSP 的标记,具体的写法记不住的话,临时查就是了。 此外 Java Web 编程学*的重点要放在 Web Application 的设计模式上,如 何进行业务逻辑的分析,并且进行合理的设计,按照 MVC 设计模式的要 求,运用 Servlet 和 JSP 分别完成不同的逻辑层,掌握如何在 Servlet 和 JSP 之间进行流程的控制和数据的共享,以及 Web Application 应该如何配置 和部署。 第七步,J2EE 编程 以上的学*过程如果是比较顺利的话,进行到这一步,难度又陡然提高。 因为上面的知识内容都是只涉及一个方面,而像 EJB,JMS,JTA 等核心的 J2EE 规范往往是几种 Java 技术的综合运用的结晶,所以掌握起来难度比 较大。 首先一定要学*好 JNDI,JNDI 是 App Server 定位服务器资源(EJB 组件, Datasouce,JMS)查找方法,如果对 JNDI 不熟悉的话,EJB,JMS 这些东 西几乎学不下去。JNDI 其实就是 javax.naming.*这个包,运用起来很简 单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,就需 要看看专门的文档规范了,比如 web.xml 的写法,ejb-jar.xml 的写法等 等。针对每种不同的 App Server,还有自己的服务资源配置文件,也是需 要熟悉的。 然后可以学* JTA,主要是要理解 JTA 对于事务的控制的方法,以及该在 什么场合使用 JTA。这里可以简单的举个例子,我们知道一般情况可以对 于一个数据库连接进行事务控制 (conn.setAutoCommit(false),....,conn.commit()),做为一个原子操作,但是 假设我的业务需求是要把对两个不同数据库的操作做为一个原子操作,你 能做的到吗?这时候只能用 JTA 了。假设操作过程是先往 A 数据库插一条 记录,然后删除 B 数据库另一个记录,我们自己写代码是控制不了把整 个操作做为一个原子操作的。用 JTA 的话,由 App Server 来完成控制。 在学* EJB 之前要学*对象序列化和 RMI,RMI 是 EJB 的基础。接着学*

JMS 和 EJB,对于 EJB 来说,最关键是要理解 EJB 是如何通过 RMI 来实现 对远端对象的调用的,以及在什么情况下要用到 EJB。 在学*完 EJB,JMS 这些东西之后,你可能会意识到要急不可待学*两个 领域的知识,一个是 UML,另一个是 Design Pattern。Java 企业软件的设 计非常重视框架(Framework)的设计,一个好的软件框架是软件开发成功 的必要条件。在这个时候,应该开始把学*的重点放在设计模式和框架的 学*上,通过学*和实际的编程经验来掌握 EJB 的设计模式和 J2EE 的核 心模式。 J2EE 规范里面,除了 EJB,JMS,JTA,Servlet/JSP,JDBC 之外还有很多很 多的企业技术,这里不一一进行介绍了。 另外还有一个最新领域 Web Services。Web Services 也完全没有任何新东 西,它像是一种黏合剂,可以把不同的服务统一起来提供一个统一的调用 接口,作为使用者来说,我只要获得服务提供者给我的 WSDL(对服务的 描述),就够了,我完全不知道服务器提供者提供的服务究竟是 EJB 组 件,还是.Net 组件,还是什么 CORBA 组件,还是其他的什么实现,我也 不需要知道。Web Services 最伟大的地方就在于通过统一的服务提供方式 和调用方式,实现了整个 Internet 服务的共享,是一个非常令人激动的技 术领域。Web Services 好像目前还没有什么很好的书籍,但是可以通过在 网络上面查资料的方式来学*。 Java Learning Path(四) 方法篇 Java 作为一门编程语言,最好的学*方法就是写代码。当你学*一个类以 后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然 后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会 了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果 我不这样写,换个方式,再试试行不行。记得哪个高人说过学*编程就是 个破坏的过程,把书上的例子,自己学* Documentation 编写的例子在运 行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结

构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握 Java。 举个例子,我们都编过 Hello World public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } 很多初学者不是很理解为什么 main 方法一定要这样来定义 public static void main(String[] args),能不能不这样写?包括我刚学* Java 的时候也有 这样的疑问。想知道答案吗?很简单,你把 main 改个名字运行一下,看 看报什么错误,然后根据出错信息进行分析;把 main 的 public 取掉,在 试试看,报什么错误;static 去掉还能不能运行;不知道 main 方法是否一 定要传一个 String[]数组的,把 String[]改掉,改成 int[],或者 String 试试 看;不知道是否必须写 args 参数名称的,也可以把 args 改成别的名字, 看看运行结果如何。 我当初学* Java 的时候就是这样做的,把 Hello World 程序反复改了七八 次,不断运行,分析运行结果,最后就彻底明白为什么了 main 方法是这 样定义的了。 此外,我对于 staic,public,private,Exception,try{ }catch {}finally{}等等 等等一开始都不是很懂,都是把参考书上面的例子运行成功,然后就开始 破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运 行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费 时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识 彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预 期的运行错误。这样对于编程的掌握是及其深刻的。

其中特别值得一提的是 JDK 有一个非常棒的调试功能,-verbose java –verbose javac –verbose 以及其它很多 JDK 工具都有这个选项 -verbose 可以显示在命令执行的过程中,JVM 都依次加载哪里 Class,通 过这些宝贵的调试信息,可以帮助我们分析出 JVM 在执行的过程中都干 了些什么。 另外,自己在学*过程中,写的很多的这种破坏例程,应该有意识的分门 别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累, 自己就有了一个代码库了。遇到类似的问题,到代码库里面 Copy & Paste ,Search & Replace,就好了,极大提高了开发速度。最理想的情况 是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。那 么可复用性就更强了。 所以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例 子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看 JDK 基础 类库的 Java 源代码。在 JDK 安装目录下面会有一个 src.zip,解开来就可 以完整的看到整个 JDK 基础类库,也就是 rt.jar 的 Java 源代码,你可以参 考一下 Sun 是怎么写 Java 程序的,规范是什么样子的。我自己在学* Java 的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清 晰的理解运作的细节的时候,往往会打开相应的类的源代码,通过看源代 码,所有的问题都会一扫而空。 Java Learning Path(五)资源篇 1、 http://java.sun.com/ (英文) Sun 的 Java 网站,是一个应该经常去看的地方。不用多说。 2、http://www-900.ibm.com/developerWorks/cn/ IBM 的 developerWorks 网站,英语好的直接去英文主站点看。这里不但 是一个极好的面向对象的分析设计网站,也是 Web Services,Java,Linux 极好的网站。强烈推荐!!!

3、http://www.javaworld.com/ (英文) 关于 Java 很多新技术的讨论和新闻。想多了解 Java 的方方面面的应用, 这里比较好。 4、http://dev2dev.bea.com.cn/index.jsp BEA 的开发者园地,BEA 作为最重要的 App Server 厂商,有很多独到的技 术,在 Weblogic 上做开发的朋友不容错过。 5、http://www.huihoo.com/ 灰狐动力网站,一个专业的中间件网站,虽然不是专业的 Java 网站,但 是在 J2EE 企业应用技术方面有深厚的造诣。 6、http://www.theserverside.com/home/ (英文) TheServerSide 是一个著名的专门面向 Java Server 端应用的网站。 7、http://www.javaresearch.org/ Java 研究组织,有很多优秀的 Java 方面的文章和教程,特别是在 JDO 方 面的文章比较丰富。 8、http://www.cnjsp.org/ JSP 技术网站,有相当多的 Java 方面的文章和资源。 9、http://www.jdon.com/ Jdon 论坛,是一个个人性质的中文 J2EE 专业技术论坛,在众多的 Java 的 中文论坛中,Jdon 一个是技术含量非常高,帖子质量非常好的论坛。 10、http://sourceforge.net/ SourgeForge 是一个开放源代码软件的大本营,其中也有非常非常丰富的 Java 的开放源代码的著名的软件。