1、Java从入门到精通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
2、(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。 1、 JDK的下载和安装 JDK又叫做J2SE(Java2 SDK Standard Edition),可以从Sun的Java网站上下载到,http:/ ,JDK当前最新的版本是J2SDK1.4.2,建议下载该版本的JDK,下载页 在 http:/ 下载好的JDK是一个可 行安装 , 安装 在C:Program FilesJava 下安装一 JRE( 器 用),在C:j
3、2sdk1.4.2下安装一 JDK(也包括一 JRE)。 我们需要在环境 PATH的最前 java的 C:j2sdk1.4.2bin。 JDK 安装好了。 2、 JDK的 工具 JDK的最 要 行工具 java JVM 行class javac Java器 jar Java包工具 javadoc Javacurrency1器 “ 行要fififl ,个 都要很精通行。 “ 的学,JDK Documentation上有的。 ”、 JDK Documentation Documentation在JDK的下载页 也有下载,建议 下载Documentation。Documentation是最最 要的
4、,了整个Java有 的内的。可以 说,学Java , 都是 在 个Documentation上 的。我是 的, Java 的 , , 不 。、 应用服务器(App Server) App Server是运行Java 组 的平台, 了应用 的主要运行环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以 的Jboss, 其中一个 行学 可以了,个 Weblogic,因的 ,开发和 ,是Java 开发 的开发平台。下 要 fi用的App Server 1、 Tomcat Tomcat 上 不是一个 的App Server,只是一个可以支持
5、运行Serlvet/JSP的Web器,不过Tomcat也扩展了一“App Server的功能,如JNDI, 据库池,用户事务处理等等。Tomcat被fi广泛的应用在中小规模的Java Web应用中,因此本做一点下载、安装和配置Tomcat的 Tomcat是Apache组织下Jakarta项 下的一个子项 ,的主网站是 http:/jakarta.apache.org/tomcat/ ,Tomcat最新版本是Tomcat4.1.27, 下载的是 http:/www.apache.org/dist/jakarta/tomcat-4/binaries/ 。 下载Tomcat既可以直下载zip包,也可
6、以下载exe安装包(个 建议zip “),不管哪情况,下载 安装好以 (zip直解压缩 可以了)。需要设置两个环境 JAVA_HOME=C:j2sdk1.4.2 CATALINA_HOME=D:tomcat4 (你的Tomcat安装 ) 安装好了,Tomcat运行CATALINA_HOMEbinstartup.bat,关闭Tomcat运行shutdown.bat脚本。Tomcat以 , 用8080端口,因此可以用 器访问http:/localhost:8080 测试Tomcat是否 fi。 Tomcat提 了两个Web界 的管理工具,URL别是 http:/localhost:8080/adm
7、in/index.jsp http:/localhost:8080/manager/html 在用 两个管理工具之前,先需要工配置一下管理 用户和口 。用一个本工具开CATALINA_HOMEconftomcat-users.xml 个 , 入如下 行 用户“robbin” 具备了超级管理 权限。 新Tomcat以 ,你 可以 用该用户 登陆如上的两个管理工具,通过Web式 行Tomcat的配置和管理了。 2、 BEA Weblogic Weblogic可以到BEA的网站上 注 之 下载到最新的Weblogic8.1 版,License可以 用1年 ,其实 已经 全足够了。Weblogic的下
8、载 http:/ http:/ 。 3、 IBM Webshpere Websphere 可以下载到 的试用版本,到IBM的developerWorks网站可以到Websphere试用产品的下载和相关的Websphere的资料,developerWorks中网站的是 http:/ ,Websphere的下载 http:/ 。 4、 Jboss Jboss是 开源的App Server,可以 的从Jboss网站下载 http:/www.jboss.org/index.html, 而Jboss的是不 ,需要 钱购买,以我们学Jboss设置了一定的障碍。在Jdon上有 篇不错的Jboss配置,可以用
9、 考 http:/ 四、 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层
10、交互 Web层 运行Servlet/JSP EJB层 运行EJB, 务逻辑运算 DB层 端 据库,向Java 提 据访问服务 4、 Java嵌入式应用 Java嵌入式应用是一个兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有不。另外还需要到特定的嵌入式厂商那 下载模拟器。 Java Learning Path(”)、书籍篇 学一门新的知识,不可能指望只一本,或者两本书 能够 全掌握。需要有一个循 渐 的阅读过 。我Oreilly出版的Java 书籍。 在 我只 一点 ,很多 学Java是从 Thinking
11、in Java 本书入的,但是我 本书是不 学者的。我 的 用 本书的 应该是 的读 。 Thinking in Java 不是在 整的 Java的整个,而是一 式的 ,是一类 tips的 Java很多知识点 行了 入的 和解 。 学者 说,最好是 一本Java入门的书籍,但是比较 整的循 的 Java的 , 向 的特,核心类库等等,在 本书的 ,可以步 Thinking in Java , Java的理解和理的运用, 又可以 整的了解Java的整个。 Java的入门书籍, 学 的是Oreilly的 Exploring Java, 2nd Edition 或者 Java in a Nutshe
12、ll,2nd Edition( C+ ) ,我 有过 两本书。其实我 子工 出版的 Java 2 解 或者 Java 2从入门到精通 很不错。 在有的Java书籍当中,其实最最有用的, 不是Oreilly的 Java Serials, 最最有用处是JDK的Documentation 你 的有的知识在Documentation 全 都有,其中最主要的 当是Java基础类库的API,是currency1package 组织的,一个class都有的解 ,的“关,是否实了某个口,通fi用在哪“ ,还可以 到有的public的 和 ,个 的解, ,个 的用fi,fl用的 , 的 , 的类,以 可能出的
13、fi等等。可以说,有关Java 的书籍其实都不过是在用比较通的 ,和”好的组织式 Documentation 的某个package 包含的一“类的用 而已。以 不 其,如你有足够的能 直通过Documentation 学Java的类库,那么基本上 不需要其的书籍了。除此之外,Documentation也是 备的 ,我的桌 上有 个Documentation的 式,别是J2SDK1.4.1的Documentation,Servlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了 个 个Documentation,什么其的书籍都不需要了。 Java
14、Web 说,最核心的是要fl 和掌握HTTP议, 个 和Java关了,在fl HTTP议之 , 需要fl Java的实HTTP议的类库,也 是Servlet API,以最 要的 是ServletAPI。当 学者而,直通过Servlet API 学Web 有很的,我 Oreilly的Java Server Pages 本书 学Web 。 EJB的书籍当中, Enterprise JavaBeans, 2nd Edition 是一本很不错的书, EJB的学门是比较高,入门很,但是 本书 全 了学的,特别 要的一点是,EJB的学需要 一App Server的具实,以在学EJB的 ,步的学某App S
15、erver,而 本书相关的出了 本书,别是Weblogic6.1,Websphere4.0和JBoss3.0上 书中例子的实做。 是既有理论,又有实。在学EJB的 ,可以 做,EJB的学 很。 但是 本书也有一个问, 是版本比较,主要 EJB1.1规 和 EJB2.0的规 。而Ed Roman 的 Mastering EJB 2.0 本书 全是 据EJB2.0规 的, 入 出, 了EJB 的 个 ,还有很多 经 tips,也是学EJBfi 的书籍之一。 如是 Weblogic 学J2EE的 , J2EE应用 BEA Weblogic Server 是 读 , 是 的Weblogic6.0, 购
16、买, 本书是BEA 的 , 者也是BEA公司的工 。在中版已经处可 了。 本书 Weblogic 了J2EE 个 的 在Weblogic平台上的开发和 ,实指 fi 。 在掌握了Java平台基础知识和J2EE 的知识以 , 一步的是学如 运用OO的 行 的设,那么 一定要学“设模式。Sun公司出版了一本 J2EE核心模式 ,是个开发Java 平台的 备的书籍。 本书全 的 了J2EE 的 设模式,是设的读书籍。 Java Learning Path( )过 篇 个 的学 是不的,一个 的 不 另一个 ,我只能是自己的学 。因我学Java是 全自学的,从 有问过别 ,以学的过 基本上 全是自己
17、出 的。我也不知 是否是比较好的 ,只能 提 一点考了。 学Java的第一步是安装好JDK, 一个Hello World,? 其实JDK的学 有那么 单,关JDK有两个问是很一直 Java 的 一个是CLASSPATH的问,其实从 理上 说,是要 JRE的ClassLoader是如 载Class的 另一个问是package和import问,如 类的问。把 两个问 了, 除了学Java和 用JDK的最障碍。 一下的Java , 两个问 行了 入的 。 第”步是学Java的 。Java的 是类C+的,基本上主流的 不是类C, 是类C+的, 有什么新,以 的学,概 是半天的 足够了。唯一需要注的是有
18、 个不 的关键字的用 ,public,protected,private,static,什么 用,什么要用,怎么用, 可能需要有指点一下,我当 是 全自己琢磨出 的, 了很久的 。不过 我到 Thinking in Java 本书上 是 了 “概念的。 第 步是学Java的 向 的 的特 的 。比如“, 造器,抽 类,口, 的多态,载, ,Java的 fi处理机制。一个 有 向 的 说,我 个过 需要 很长很长 ,因学Java之前 有C+的经 ,只有C的经 ,我是概 了一个月左右吧,彻底把 “概念都 ,把书上 的例子反复的揣摩,修改,尝试,把那 章内反复的过 ,过去,了不下5遍,彻底领悟了。不
19、过我 如有C+经 的 ,应该一两天 足够了。那么在 个过 中,可以多Thinking in Java 本书, 向 的 解fi透彻。可惜的是我学的 , 有到 本书,以自己 了 的 ,通过自己的尝试和揣摩 学 的。 第四步 是开始fl Java的类库。Java的基础类库其实 是JDK安装 下 jrelibrt.jar 个包。学基础类库 是学rt.jar。基础类库 的类fifi多。据说有3000多个,我 有统过。但是 我们 说最核心的只有4个,别是 java.lang.*; java.io.*; java.util.*; java.sql.*; 四个包的学,个包的学都可以 一本厚厚的 ,而Oreil
20、ly也 实是 做的。我 如比较紧,是不可能通过读四本书 学。我 比较好的学 是 的 先要通读整个package的框,了解整个package的class,interface,exception的 ,最好是能够 到 整个包框的章。 “专门 包的书籍的前 章应该 是 “总的框内 。 包整框的把握 不是要fl 个类的用 ,记住有哪“ , 。 记也记不住的。而是要知 包有哪“ 的类 的, “类的用fi是什么,最核心的 个类别是 什么功能的。我在 培训的 一般是一次课 一个包,以不可能的 个类的用 ,但是我反复 fl,我 你们 “包的不是要告诉你们类的 是怎么fl用的,也不要求你们记住类的 fl用,而是要
21、你们了解,Java 我们提 了哪“类,个类是用在什么 ,当我遇到问的 ,我知 哪个类,或者哪 个类的组 可以解决我的问,Thatall,当我们具 的 ,只要你知 该用哪个类 你的工 足够了。 的 ,具的 fl用,是 , Documentation,有的都在Documentation ,不要求你一定记住,实际你也记不住3000多个类的总共将近10个 fl用。以个包的总框的把握 极 要。 第五步,通过上 的学,如学的比较扎实的 , 好了Java的基础了,剩下要做的工 是Documentation 除了上 4个包之外的其一“比较有用处的类。相信 展到 一步,Java的自学能已经被培养出 了,可以到了
22、直学Documentation的水平了。除了要做GUI 之外,JDK 其 有用处的包是 “ java.text.*; .*; javax.naming.*; “包 用的比较多的类其实很少,只有 个,以不需要 很多 。 第六步,Java Web Web 的核心是HTTP议,HTTP议和Java关,如不fl HTTP议的 , 也可以学好Servlet/JSP ,但是达不到举一反 ,一通百通的境界。以HTTP议的学是备的。如fl 了HTTP议的 ,又有了Java 的”好的基础,学Servlet/JSP 直如反掌,我学Servlet/JSP 用了不到一周的 , 开始用JSP 做项 了。 在Servle
23、t/JSP的学中, 头 是Servlet Documentation。Servlet API最fi用的类很少, 比较少的 可以掌握了。把 “类都一遍,多 个例子试试。Servlet/JSP 本质 是在反复fl用 “类 通过HTTP议在Web Server和Brower之交。另外JSP,还需要fl 个fi用JSP的标记,具的 记不住的 ,临 是了。 此外Java Web 学的 点要放在Web Application的设模式上,如 行 务逻辑的 , 行 理的设,currency1MVC设模式的要求,运用Servlet和JSP别 不的逻辑层,掌握如 在Servlet和JSP之 行流 的控制和 据的共
24、享,以 Web Application应该如 配置和 。 第七步,J2EE 以上的学过 如是比较顺利的 , 行到 一步,又陡 提高。因上 的知识内都是只涉 一个 ,而像EJB,JMS,JTA等核心的J2EE规 往往是 Java 的综 运用的 晶,以掌握起 比较。 先一定要学好JNDI,JNDI是App Server定位服务器资源(EJB组 ,Datasouce,JMS) ,如JNDI不fl 的 ,EJB,JMS “ 学不下去。JNDI其实 是javax.naming.* 个包,运用起 很 单。点在服务器资源 的配置。服务器资源 的配置, 需要专门的规 了,比如web.xml的 ,ejb-jar
25、.xml的 等等。 不的App Server,还有自己的服务资源配置 ,也是需要fl 的。 可以学JTA,主要是要理解JTA事务的控制的 ,以 该在什么 用JTA。 可以 单的举个例子,我们知 一般情况可以一个 据库 行事务控制(conn.setAutoCommit(false),mit(),做一个 子操 ,但是假设我的 务需求是要把两个不 据库的操 做一个 子操 ,你能做的到吗? 只能用JTA了。假设操 过 是先往A 据库插一条记 , 删除B 据库另一个记 ,我们自己 是控制不了把整个操 做一个 子操 的。用JTA的 ,由App Server 控制。 在学EJB之前要学 化和RMI,RMI是
26、EJB的基础。着学JMS和EJB,EJB 说,最关键是要理解EJB是如 通过RMI 实远端 的fl用的,以 在什么情况下要用到EJB。 在学 EJB,JMS “之 ,你可能 识到要急不可待学两个领域的知识,一个是UML,另一个是Design Pattern。Java 的设fi 视框(Framework)的设,一个好的 框是 开发功的要条 。在 个 ,应该开始把学的 点放在设模式和框的学上,通过学和实际的经 掌握EJB的设模式和J2EE的核心模式。 J2EE规 ,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外还有很多很多的 , 不一一行 了。 另外还有一个最新领域Web Ser
27、vices。Web Services也 全 有任 新,像是一黏 剂,可以把不的服务统一起 提 一个统一的fl用口, 用者 说,我只要服务提 者 我的WSDL(服务的), 够了,我 全不知 服务器提 者提 的服务究竟是EJB组 ,还是.Net组 ,还是什么CORBA组 ,还是其的什么实,我也不需要知 。Web Services最伟的 在通过统一的服务提 式和fl用式,实了整个Internet服务的共享,是一个fi 激的 领域。Web Services好像 前还 有什么很好的书籍,但是可以通过在网络上 资料的式 学。 Java Learning Path(四) 篇 Java 一门 ,最好的学 是
28、。当你学一个类以 ,你 可以自己 个 单的例子运行一下,有什么 , 再多fl用 个类的 ,运行 , fi直观的把类 学 了,而 记忆fi 刻。 不应该满足把 fl通,你应该 如我不 ,换个式,再试试行不行。记哪个高 说过学 是个破坏的过 ,把书上的例子,自己学Documentation 的例子在运行通过以 ,不断的尝试着用不的 实,不断的尝试破坏 的 , 有什么 。通过的式,你 很彻底的很精通的掌握Java。 举个例子,我们都过Hello World public class HelloWorld public static void main(String args) System.out.
29、println(“Hello World“); 很多 学者不是很理解什么main 一定要 定 public static void main(String args),能不能不 ?包括我刚学Java的 也有 的疑问。 知 答案吗?很 单,你把main改个名字运行一下,报什么错误, 据出错信息 行 把main的public取掉,在试试,报什么错误 static去掉还能不能运行 不知 main 是否一定要传一个String 组的,把String改掉,改int,或者String试试 不知 是否 args 名称的,也可以把args改别的名字,运行 如 。 我当 学Java的 是 做的,把Hello W
30、orld 反复改了七八次,不断运行, 运行 ,最 彻底 什么了main 是 定 的了。 此外,我static,public,private,Exception,try catch finally等等等等一开始都不是很,都是把考书上 的例子运行功, 开始破坏,不断的 据自己心 的疑问 新改,能不能运行,运行出 是个什么 子,是否可以到 的 。 比较 ,不过一个例子 反复破坏 次之 。我 个相关的知识彻底学通了。有 至 一“错误的 运行,能否到 的运行错误。 的掌握是 其 刻的。 其中特别一提的是JDK有一个fi 的fl试功能,-verbose java verbose javac verbose
31、 以 其很多JDK工具都有 个 项 -verbose 可以显示在 行的过 中,JVM都 次 载哪 Class,通过 “ 的fl试信息,可以 我们 出JVM在 行的过 中都 了“什么。 另外,自己在学过 中, 的很多的 破坏例 ,应该有识的门别类的 下 ,在工 中 的 例 也应该定 整理, 月 ,自己 有了一个 库了。遇到类 的问,到 库 Copy & Paste ,Search & Replace, 好了,极提高了开发 。最理 的情况是把一“通用的例 自己再抽 一层,形一个通用的类库, 装好。那么可复用 了。 以我 其实不是特别需要例 的,自己 的破坏例 是最好的例子,如你实在自己 的 不放心
32、的 ,我 你JDK基础类库的Java源 。在JDK安装 下 有一个src.zip,解开 可以 整的到整个JDK基础类库,也 是rt.jar的Java源 ,你可以考一下Sun是怎么 Java 的,规 是什么 子的。我自己在学Java的类库的 ,当有“ 理解的不是很 的 ,或者 的理解运 的 的 ,往往 开相应的类的源 ,通过源 ,有的问都 一而 。Java Learning Path(五)资源篇 1、 http:/ ( ) Sun的Java网站,是一个应该经fi去的 。不用多说。 2、http:/ IBM的developerWorks网站, 好的直去 主站点。 不但是一个极好的 向 的 设网站,
33、也是Web Services,Java,Linux极好的网站。 3、http:/ ( ) 关Java很多新 的 论和新 。 多了解Java的 的应用, 比较好。 4、http:/ BEA的开发者 ,BEA 最 要的App Server厂商,有很多 到的 ,在Weblogic上做开发的 不错过。 5、http:/ 网站,一个专 的中 网站, 不是专 的Java网站,但是在J2EE 应用 有 厚的造 。 6、http:/ ( ) TheServerSide是一个 名的专门 向Java Server端应用的网站。 7、http:/www.javaresearch.org/ Java究组织,有很多的Java 的章和 ,特别是在JDO 的章比较。 8、http:/jsp.org/ JSP 网站,有相当多的Java 的章和资源。 9、http:/ Jdon论,是一个个 质的中J2EE专 论,在多的Java的中论中,Jdon一个是 含fi高,currency1子质 fi好的论。 10、http:/ SourgeForge是一个开放源 的本,其中也有fifi的Java的开放源 的 名的 。