java学习流程(转载)

 
近论坛上看到好几个朋友都在问,如何学习 Java的问题,我已经学习了J2SE,怎么样才能转向J2EE?”, “我看完了Thinking in Java, 可以学习J2EE了么?”.于是就有了写这篇文章的想法,希望能帮助初学者少走一些弯路。也算是对自己几年来学习Java的一个总结吧 .

  
在开始之前有必要再讨论一下J2ME, J2SE, J2EE这些概念。J2SE, The Micro Edition of the Java 2 Platform. 主要用于嵌入式Java,如手机,PDA等等。J2SE, Java 2 Platform, Standard Edition, 我们通常所说的JDK(Java Development Kit)包含在此,是J2EE的基础。J2EE, Java 2 Platform, Enterprise Edition , 就是所谓的企业级Java. 这些只是从API级别上的划分,实际上SunJ2EE的定义是:开发基于组件的多层的企业级应用的规范。也就是为各种不同的技术定义一个Java的规范,使这些不同的技术结合起来,在Java平台上构建强壮的企业级应用。从这一点来看,J2EE这个概念应该是涵盖J2ME, J2SE的。比如一个典型的J2EE应用,网上商店, 它支持web 方式下订单,也支持手机下订单。显然必须用到J2SE,J2ME. 所以也就不存在所谓的从J2SE转向J2EE的问题了,只是后者包含的范围更广而已。


来看看Sun给出的J2EE 相关技术主要分为几大块。
1. Web Service
技术
-  Java API for XML Processing (JAXP) 
-  Java API for XML Registries (JAXR) 
-  Java API for XML-based RPC (JAX-RPC) 
-    SOAP with Attachments API for Java (SAAJ)

2. 
组件模型技术(Component Model Technologies
-  Java Servlet 
-  JavaServer Pages 
-  JavaServer Faces 
-  Enterprise JavaBeans 
-  Java Message Service 
-    J2EE Connector Architecture

3 .
管理技术(Management Technologies)
-  J2EE Deployment Specification 
-  J2EE Management Specification 
-  J2EE Client Provisioning 
-    Java Authorization Contract for Containers

4.
其他相关技术(Other J2EE Technologies)
-  JDBC 
-  Java Data Objects (JDO) 
-  CORBA (Java IDL and Java RMI-IIOP) 
-  JavaMail 
-  Transactions
   
如此之多的技术难免使初学者无所适从,望而却步。即使是一位经验丰富的J2EE 开发者,又有几个人敢说J2EE相关的技术我都熟练掌握了。不过作为一名普通J2EE应用程序的开发者来说,我们只需要重点学习其中的一部分技术就可以了,对于其他部分只要做到心中有数,哪天需要用到了知道跑哪里去找到资料就行了。以我个人的观点,下面这些技术是一般J2EE应用开发人员所必须熟练掌握的。Java Server Page, Java Servlet, Enterprise JavaBean, JDBC, Transactions.  还有JAXPXML相关技术,Java Message Service, Java Mail, JDO等等是最好应该掌握的。其他Management TechnologiesConnector Architecture等等主要是给容器提供商中间件提供商参考的,应用开发者不需要怎么关心,等用到了再去学习也不迟 .

语言学习篇

  
首先是J2SE基础.学习一门新技术,无外乎阅读和实践了而一本好的参考书对于初学者来说显得格外重要现在市面上的 Java书籍可以说是铺天盖地质量也是良莠不齐令初学者无所适从所以还是先推荐几本书籍吧目前对于 Java基础知识,大家一般都比较推荐两本书, <<Thinking In Java>>  << Core Java(TM) 2, Volume I?Fundamentals >>.  第一本书不必多说了, Bruce Eckel 的大作, Jolt获奖书籍内容比较全面基本涵盖了java语言的方方面面这本书提供了相当丰富的例子非常有利于对学习内容的了解另外书中第一部分对于OO基本书籍的介绍我觉得对于刚接触OO的人来说帮助会很大而且此书是Open Source可以从作者网上下载http://www.mindview.net/Books/TIJ/而对于习惯于读中文版的学习者来说侯捷翻译的中文版是不错的选择.  要说这本说的缺点可能就是对于初学者来说厚了一点这也是一些人并不推荐此书作为初学者学习用书的原因吧后面一本<<Core Java(TM) 2, Volume I?Fundamentals>>, 目前已经是第七版了单从它出版的次数来看也可以看出此书受欢迎的程度这本书特点也是讲述比较全面系统基本上一路啃下来的话Java语言基础应该算过关了缺点也是太厚了有点像参考手册前面部分花了不少篇幅讲  SwingApplet,可能对初学者不是很有用.  还有一些像<< Java in a nutshell>>也是比较不错的基础书籍 .
学习了基本的语言基础,别忘了最重要也是最有用的资料还是JDK文档从你学习java的第一天开始JDK文档应该是常备手头了如果你碰到问题首先想到的是到论坛上去提问而不是查阅Jdk文档那先别继续往下学习了,学会查JDK文档先不夸张的说在我们的初学者论坛中60%的问题是光查一下JDK文档就能解决问题的最新JDK Documentation下载地址http://java.sun.com/j2se/1.4.2/download.html(目前最新版是J2SE5 http://java.sun.com/j2se/1.5.0/download.jsp)不能光说不练同一下载页面把JDK给下载回来安装完后有一点我想提一下安装路径下有一个src.zip(有些jdk版本是src.jar), 好东西啊---JDK源代码老是有人在论坛上问哪里有JDK源代码下载你说东西就放在你家里还到处找有了这个有些问题就需要在论坛上跟人家争来争去了,翻开源代码瞧一下什么疑问都没有了几个最重要的命令行工具是

javac  : 
编译源文件到class文件
java:     
运行 class
jar : 
打包工具
.
Javadoc :  
生成java doc的工具
.
对于初学java的人来说我不推荐使用IDE 直接用文本编辑器然后用命令行编译运行这样有利于理解CLASSPATH, PATH这些最基本概念. CLASSPATH是初学者比较容易感觉迷惑的地方.现在的 IDE太聪明了给个名字就给你自动生成java source code, 自动编译可能你运行完了你的第一个Hello World 程序还不知道java  javac是用来做什么的至于实际的项目开发一款合适的IDE还是十分重要的我们稍后再对java 开发工具做一些介绍



J2EE 
基础和Java语言进阶


   
学习完语言基础就可以比较自然地转入J2EE实际技术的学习了. J2EE实在是比较庞杂EJB, Servlet , 这些核心技术是作为每一个J2EE开发人员所需要掌握的关于servlet,  我比较推荐<<Core Servlet and JSP 2Edition>><<More Servlets and Java Server Pages>>, 第一本是Sun推荐的Servlet教材第二本是当年Amazon最畅销Java书籍五星级书籍这本书机械工业出版社有中文版叫<<Servlet JSP权威指南>>,感觉翻译得还可以第二版好像还没有看到有中文版两本书都全面系统地介绍了JSPSevlet知识web服务器配置, JSP, Servlet基本编程标记库(Tag Lib), 过滤器事件框架都有很好地描述提供地例子也比较实用对于EJB学习比较著名有两本书, << Enterprise JavaBeans, 3nd Edition>> << Mastering Enterprise Java Beans Third Edition>>, 两位作者Richard Monson, Ed Roman都是属于业界重量级人物.Richard Monson本身就是EJB规范专家组成员.对我来说两本书难分优劣第二本书有个好处就是可以免费下载 http://www.theserverside.com/books/wiley/masteringEJB/index.tss.
还是那句话,不能光说不练不过J2EE 的练习做起来有一点麻烦应用服务器是不可少的最好还得准备个轻量级的数据库下面简单介绍一下这些工具
web
服务器(Servlet Container)方面有
.
Tomcat.   
http://jakarta.apache.org/tomcat/
Jetty:      http://jetty.mortbay.org/jetty/
应用服务器常用的有 ,
Jboss:        
http://www.jboss.org/products/index
Weblogic:   http://www.bea.com/framework.jsp?CNT=index.htm&FP=/content/products/server
WebSphere: http://www-128.ibm.com/developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN.
Tomcat, Jetty, Jboss
都是Open Source. Weblogic  WebSphereJ2EE服务器中的老大级人物价格也不菲不过对于开发者有免费的试用版下载 .
如果单单只是学习Servlet, 推荐使用Tomcat, 它是Sun官方指定的Servlet, JSP规范的参考实现.. 对初学者最重要的是它使用比较简单自带文档比较齐全使用者众多有什么问题容易在论坛上面得到帮助如果学习EJB的话推荐使用Jboss, 不仅仅是因为它是Open Source,主要是配置比较简单使用方便比如说对于连接数据库对于常用的MySQL, Oracle , MS SQL等等都提供了Sample Config文件直接拿过来做些小改动扔到Deploy目录下就可以用 DataSource部署J2EE应用也简单把整个 .ear或者.war扔到deploy下就可以了唯一不方便的地方是从 Jboss3.0开始它的文档开始收费了但是对于一些基本的配置在网上还是非常容易找到的毕竟它太流行了至于 Weblogic, 也比较容易使用不过比起Jboss来个头大了很多通过强大的管理界面使得一些常用的配置工作变得十分简单.  Jboss比起来它的文档就太多了简直是有点罗里八嗦比如要部署一个.ear文件一般我们也就是直接扔到domain下的applications目录下就会自动deploy但是要看它的文档可是长篇大论容易吓着初学者以为这又是什么高深的学问至于WebSphere, 个人不推荐初学者使用相比前俩个Server比较难使而且狂吃内存.不过在企业级市场这个家伙表现不俗毕竟是出生于IBM这样的豪门

数据库方面目前常见的主要有PostgreSQL, MySQL, Oracle, MS SQL, DB2等等.前面两个是开源数据库后面几个基本上垄断着大部分的数据库市场对于初学者用来做做EJB, JDBC的练习我推荐MySQL, 理由还是很简单开源软件不要钱个头小使用方面用户众多文档齐全下载地址http://www.mysql.com/products/mysql/.  PostgreSQL也可以考虑不过国内使用者远不如MySQL所以要在论坛上问起问题来就少方便一些了下载地址http://www.pervasive-postgres.com/downloads/至于后面那些比较重量级的数据库为了做做练习而言就不用考虑了咱也花不起这个钱啊
.

学习完J2EE 的这些具体技术这个时候进行基本的 J2EE 开发应该是不成问题了此时应该考虑提高自己的代码质量了这里我强烈推荐Martin Fowler<<Refactoring: Improving the Design of Existing Code >>, 这本书不是一本非常实际的书作者完全是手把手地教你如何提高代码质量从具体地代码中告诉你什么是代码的Bad Smell, 如何去掉这些Bad Smell. 不少书评是这么说的这本书对于初级,中级的读者帮助是立杆见影的.至少 就我接触到的几个学习编程不久的程序员编码质量在短期内都有很大提高当然重构(Refactoring)这一概念并不只针对Java语言的它对所有OO语言都是适用的重构的概念是如此深入人心,以至于今天几乎所有流行的 IDE工具都有对重构的支持这里我还想再推荐一本<<Effective Java>> . C++ 过来的程序员都知道<<Effective C++>>C++领域的地位至今还流传着这样的趣话, C++程序员分为两种一种是读过<<Effective C++>>另一种是没有读过C++虽然这本<<Effective Java>>Java领域的影响也许没有那么大但对于Java程序员绝对有相当的指导价值作者是Sun公司的Joshua Bloch,  java Collection framework 的设计者作者站在JDK设计者的角度向你介绍他的Best Practice, 应该这样做而不应该那样做对于JDK中某些API设计的缺陷他也毫不袒护的指出. Java语言之父James Gosling为此书写的前言是这么说的” I sure wish I had had this book ten years ago. Some might think that I don't need any Java books, but I need this one”. 这本书会让你觉得原来你对Java还是有很多东西不了解的举个例子来说对象的equals方法我们认为它很简单也许你每天都在为你新写的Class重载这个方法但是你在重载的时候注意过自反”, “对称”, “传递这些必须要考虑的因素你是否同时还小心谨慎的重载了hashcode这个方法如果没有建议你要读一下这本书读完这本书,你会觉得离Java的距离更近了上面两本书都出过中文版后面一本<<Effective Java>>还有两个版本的中文版第一次翻译的比较差一点后来机械工业出版社 又委托潘爱民先生重新翻译了一遍.同一本书在同一个出版社连续被翻译了两次也说明国内出版界对这本书还是比较重视的
.  
这个阶段在看书的同时可以结合着学习一些优秀的开源项目的源代码这些开源项目的代码风格注释都是值得借鉴的实在太懒也别忘了手头上还有个Jdk的源代码其实也不用刻意去找源代码在实际的J2EE项目开发中基本上都会用到一些优秀的开源项目.  Framework可能会用到Spring, Struts, Log机制基本上都会JarkartaCommons Log或者Log4j,  单元测试会大多会用Junit, 结合项目阅读一下其中的一些源代码既可以提高自己又对项目会有所帮助说不定因此而得到PM的赏识呢一举两得何乐而不为呢呵呵有点扯远了过了初学者阶段,该学会如何找到适合自己的Java书籍了历经数十载今天的Java技术已经变的如此之庞杂我相信即使穷净一个人毕生之精力也不可能把Java所有的相关技术都学通何况新技术还在层出不穷地推出, 3年之前谁会知道Struts会成为Web框架事实上的工业标准. 2年之前谁会知道Hibernate会在今天独领风骚.  既然已经不能指望一次性把java技术的方方面面都学个通在实际中也只能是需要什么技术再学习什么技术了而能否选择一本好的参考书籍带来的就是事半功倍和事倍工半 的效果所以我觉得花点时间放在选择书籍上面还是很值得的否则你在后面只会花更多的时间下面我谈谈自己选择书籍的一些经验不一定正确首先看作者像上面提到的那些书的作者都是业界鼎鼎大名的选择他们的书一般错不了大家看的书多了自己胸中自然也会有一个list, 哪些作者是信得过的.二看出版社计算机书籍方面,  Oreilly, Addison-Wesley都是公认比较好的出版社对于目前比较流行的Java技术, Oreilly<<XXXX  in  Action>>系列是不错的选择另外我还会去看看Amazon网站(http://www.amazon.com/)的书评一般小于3星级的书我都不会考虑还有一个好去处theserverside,http://www.theserverside.com/的书评这里的书评比较有趣,往往都有很激烈的争论里面经常会看到一些名人在发言.我要向所有Java 学习者推荐如果我的收藏夹里面只能存放两个网站,我会选择java.sun theserverside. 在这里你可以了解最新的Java动态可以学习第一手的Java资料可以看到Java高手们(里面不乏业界大腕)激烈辩论

到此阶段, Java Developer的基本功底应该算是打好了吧,往后就是不断学习喽结束这一段之前,最后再介绍一本书Oreilly <<Java Threads, Second Edition >>, 因为我觉得多线程编程属于 Java基本功每一个想学好Java的人都应该好好掌握




提高篇

在这个阶段应该从软件架构, Framework层次上来学习了作为面向对象的圣经<<Design Patterns>>, 这本书是不得不推荐的不用再多说了这本在面向对象领域地位完全是属于教父级别的.  不管你学习的是什么OO语言不管你现在是用.Net还是J2EE开发这本书都是你进阶之路上的必读之书<<Core J2EE Patterns>>则专门针对于J2EE来讨论设计模式书中Sun Java Center的资深设计师描述了J2EE关键技术的模式最佳实践,设计策略和经过验证的解决方案对于每一个希望成为J2EE 架构师或者设计师这本书值得一读学习设计模式的时候,建议是结合实际的源代码来看比如看看Junit源代码你可以看到很多设计模式优雅的实现作者之一Erich Gamma本身 就是<<Design Patterns>>的作者至于J2EE的设计模式, Sun还开辟了专门的空间http://java.sun.com/blueprints/patterns/,  里面有对常用模式的讨论又提供了详细的源代码样例正如Grady Booch所说模式对于普遍问题提供了通用的解决方案利用模式就等于拥有一个强大的专家队伍.  如果你还没有学习现在就开始吧此外对于面向对象方法论极限编程的思想也应该有所了解http://www.extremeprogramming.org/ . 对于J2EE项目的具体实施, Rod Johnson<<Expert One-on-One J2EE Design and Development (Programmer to Programmer)>>也很有价值该书以作者丰富的实战经验向我们展示如何用尽可能简单的解决方案构建J2EE 应用书中作者第一次提出这样的观点很多时候, J2EE应用完全没有必要用到EJB, 对于言必称EJB的广大J2EE开发者来说怎么说也有点惊世咳俗的味道当然作为ServletJDO两个专家组的成员这可不是作者信口胡驺的今天风靡Java世界的Spring 框架最初便是源于此书IOC, AOP等概念更是被时下的java开发者挂在嘴边最后作为对Java的深入学习, Java技术的各个Specification也有必要一读暂时就写到这里吧
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值