作者:佚名 来自Qhttp://www.pconline.com.cn
每个人的学习Ҏ(gu)是不同的Q一个h的方法不见得适合另一个hQ我只能是谈自己的学习方法。因为我学习Java是完全自学的Q从来没有问q别人,所以学习的q程基本上完全是自己摸烦出来的。我也不知道q种Ҏ(gu)是否是比较好的方法,只能l大家提供一点参考了?/P>
学习Java的第一步是安装好JDKQ写一个Hello WorldQ?其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰JavaE序员的地方Q一个是CLASSPATH的问题,其实从原理上来说Q是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题Q如何来Lcȝ路径问题。把q两个问题摸索清楚了Q就扫除了学习Java和用JDK的最大障。推荐看一下王的《Java深度历险》,对这两个问题q行了深入的探讨?/P>
W二步是学习Java的语法。Java的语法是cC++的,基本上主的~程语言不是cCQ就是类C++的,没有什么新东西Q所以语法的学习Q大概就是半天的旉_了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,publicQprotectedQprivateQstaticQ什么时候用Qؓ什么要用,怎么用,q可能需要有人来指点一下,我当初是完全自己琢磨出来的,׃很久的时间。不q后来我看到《Thinking in Java》这本书上面是讲了这些概늚?/P>
W三步是学习Java的面向对象的~程语言的特性的地方。比如承,构造器Q抽象类Q接口,Ҏ(gu)的多态,重蝲Q覆盖,Java的异常处理机制。对于一个没有面向对象语a背景的h来说Q我觉得q个q程需要花很长很长旉Q因为学习Java之前没有C++的经验,只有C的经验,我是大概׃一个月左右吧,才彻底把q些概念都搞清楚Q把书上面的例子反复的揣摩,修改Q尝试,把那几章内容反复的看q来Q看q去Q看了不?遍,才彻底领(zhn)了。不q我惛_果有C++l验的话Q应该一两天旉_了。那么在q个q程中,可以多看看《Thinking in Java》这本书Q对面向对象的讲解非帔R彻。可惜的是我学习的时候,q没有看到这本书Q所以自p了大量的旉Q通过自己的尝试和揣摩来学会的?/P>
W四步就是开始熟(zhn)Java的类库。Java的基cd其实是JDK安装目录下面jre\lib\rt.jarq个包。学习基cd是学习rt.jar。基cd里面的类非常非常多。据说有3000多个Q我没有l计q。但是真正对于我们来说最核心的只?个,分别?/P>
java.lang.*;
java.io.*;
java.util.*;
java.sql.*;
q四个包的学习,每个包的学习都可以写成一本厚厚的教材Q而O'reilly也确实是q样做的。我觉得如果旉比较紧,是不可能通过d本书来学习。我觉得比较好的学习Ҏ(gu)是这L(fng)Q?/P>
首先要通读整个package的框Ӟ了解整个package的classQinterfaceQexception的构成,最好是能够扑ֈ介绍整个包框架的文章。这些专门介l包的书c的前几章应该就是这些M的框架内容介l?/P>
对包整体框架的把握ƈ不是要熟(zhn)每个类的用法,C它有哪些属性,Ҏ(gu)。想CC住的。而是要知道包有哪些方面的cL成的Q这些类的用途是什么,最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一ơ课讲一个包Q所以不可能详细的介l每个类的用法,但是我反复强调,我给你们讲这些包的不是要告诉你们cȝҎ(gu)是怎么调用的,也不要求你们CcȝҎ(gu)调用Q而是要你们了解,Javal我们提供了哪些c,每个cL用在什么场合,当我遇到问题的时候,我知道哪个类Q或者哪几个cȝl合可以解决我的问题QThat'allQ,当我们具体写E序的时候,只要你知道该用哪个类来完成你的工作就_了。编码的时候,具体的方法调用,是边写代码,Ҏ(gu)DocumentationQ所有的东西都在Documentation里面Q不要求你一定记住,实际你也C?000多个cȝd近10万个Ҏ(gu)调用。所以对每个包的M框架的把握就变得极ؓ重要?/P>
W五步,通过上面的学习,如果学的比较扎实的话Q就打好了Java的基了,剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到q一步,Java的自学能力已l被培养出来了,可以C直接学习Documentation的水q了。除了要做GUI~程之外QJDK里面其他会有用处的包是这些:
java.text.*;
java.net.*;
javax.naming.*;
q些包里面真正用的比较多的类其实很少Q只有几个,所以不需要花很多旉?/P>
W六步,Java Web ~程
Web~程的核心是HTTP协议QHTTP协议和Java无关Q如果不熟?zhn)HTTP协议的话Q虽然也可以学好Servlet/JSP~程Q但是达不到举一反三Q一通百通的境界。所以HTTP协议的学习是必备的。如果熟(zhn)了HTTP协议的话Q又有了Java~程的良好的基础Q学习Servlet/JSP直易如反掌,我学习Servlet/JSPq了不C周的旉Q然后就开始用JSP来做目了?/P>
在Servlet/JSP的学习中Q重头仍然是Servlet Documentation。Servlet API最常用的类很少Q花比较?yu)的旉可以掌握了。把q些c都看一遍,多写几个例子试试。Servlet/JSP~程本质是在反复调用这些类来通过HTTP协议在Web Server和Brower之间交谈。另外对JSPQ还需要熟(zhn)几个常用JSP的标讎ͼ具体的写法记不住的话Q(f)时查是了?/P>
此外Java Web~程学习的重点要攑֜Web Application的设计模式上Q如何进行业务逻辑的分析,q且q行合理的设计,按照MVC设计模式的要求,q用Servlet和JSP分别完成不同的逻辑层,掌握如何在Servlet和JSP之间q行程的控制和数据的共享,以及Web Application应该如何配置和部|Ӏ?/P>
W七步,J2EE~程
以上的学习过E如果是比较利的话Q进行到q一步,隑ֺ又陡然提高。因Z面的知识内容都是只涉及一个方面,而像EJBQJMSQJTA{核心的J2EE规范往往是几UJava技术的l合q用的结Ӟ所以掌握v来难度比较大?/P>
首先一定要学习好JNDIQJNDI是App Server定位服务器资源(EJBlgQDatasouceQJMSQ查找方法,如果对JNDI不熟(zhn)的话,EJBQJMSq些东西几乎学不下去。JNDI其实是javax.naming.*q个包,q用h很简单。难点在于服务器资源文g的配|。对于服务器资源文g的配|,需要看看专门的文规范了,比如web.xml的写法,ejb-jar.xml的写法等{。针Ҏ(gu)U不同的App ServerQ还有自q服务资源配置文gQ也是需要熟(zhn)的?/P>
然后可以学习JTAQ主要是要理解JTA对于事务的控制的Ҏ(gu)Q以及该在什么场合用JTA。这里可以简单的举个例子Q我们知道一般情况可以对于一个数据库q接q行事务控制(conn.setAutoCommit(false),....,conn.commit())Q做Z个原子操作,但是假设我的业务需求是要把对两个不同数据库的操作做Z个原子操作,你能做的到吗Q这时候只能用JTA了。假设操作过E是先往A数据库插一条记录,然后删除B数据库另一个记录,我们自己写代码是控制不了把整个操作做Z个原子操作的。用JTA的话Q由App Server来完成控制?/P>
在学习EJB之前要学习对象序列化和RMIQRMI是EJB的基。接着学习JMS和EJBQ对于EJB来说Q最关键是要理解EJB是如何通过RMI来实现对q端对象的调用的Q以及在什么情况下要用到EJB?/P>
在学习完EJBQJMSq些东西之后Q你可能会意识到要急不可待学习两个领域的知识,一个是UMLQ另一个是Design Pattern。Java企业软g的设计非帔R视框?Framework)的设计,一个好的Y件框架是软g开发成功的必要条g。在q个时候,应该开始把学习的重Ҏ(gu)在设计模式和框架的学习上Q通过学习和实际的~程l验来掌握EJB的设计模式和J2EE的核心模式?/P>
J2EE规范里面Q除了EJBQJMSQJTAQServlet/JSPQJDBC之外q有很多很多的企业技术,q里不一一q行介绍了?/P>
另外q有一个最新领域Web Services。Web Services也完全没有Q何新东西Q它像是一U黏合剂Q可以把不同的服务统一h提供一个统一的调用接口,作ؓ使用者来_我只要获得服务提供者给我的WSDLQ对服务的描qͼQ就够了Q我完全不知道服务器提供者提供的服务I竟是EJBlgQ还?NetlgQ还是什么CORBAlgQ还是其他的什么实玎ͼ我也不需要知道。Web Services最伟大的地方就在于通过l一的服务提供方式和调用方式Q实C整个Internet服务的共享,是一个非o人激动的技术领域。Web Services好像目前q没有什么很好的书籍Q但是可以通过在网l上面查资料的方式来学习?/P>
作者:佚名 来自Qhttp://www.pconline.com.cn
学习一门新的知识,不可能指望只看一本,或者两本书p够完全掌握。需要有一个@序渐q的阅读q程。我推荐Oreilly出版的Javapd书籍?/P>
在这里我只想补充一点看法,很多人学习Java是从《Thinking in Java?/FONT>q本书入手的Q但是我认ؓq本书是不适合初学者的。我认ؓ正确的用这本书的方法应该是作ؓ辅助的读物?A target=_blank>《Thinking in Java?/FONT>q不是在完整的介lJava的整个体p,而是一U蟩跃式的写作方法,是一U类似tips的方法来对Java很多知识点进行了深入的分析和解释?/P>
对于初学者来_最好是找一本Java入门的书c,但是比较完整的@序的介绍Java的语法,面向对象的特性,核心cd{等Q在看这本书的同Ӟ可以同步来看《Thinking in Java?/FONT>Q来加深对Java的理解和原理的运用,同时又可以完整的了解Java的整个体pR?/P>
对于Java的入门书c,蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition?或者《Java in a Nutshell,2nd EditionQ针对C++背景Q》,我ƈ没有看过q两本书。其实我觉得?sh)子工业出版C《Java 2~程详解?/FONT>或者《Java 2从入门到_N》就很不错?/P>
在所有的Java书籍当中Q其实最最有用的,q不是O'reilly?Java SerialsQ真正最最有用处是JDK的DocumentationQ几乎你惌得的所有的知识在Documentation里面全部都有Q其中最主要的部分当然是Java基础cd的API文Q是按照package来组l的Q对于每一个class都有详细的解释,它的l承关系Q是否实C某个接口Q通常用在哪些场合Q还可以查到它所有的public的属性和Ҏ(gu)Q每个属性的解释Q意义,每个Ҏ(gu)的用途,调用的参敎ͼ参数的意义,q回值的cdQ以及方法可能抛出的异常{等。可以这h_所有关于Java~程斚w的书c其实都不过是在用比较通俗易懂的语aQ和良好的组l方式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不d宗,如果你有_的能力来直接通过Documentation来学习Java的类库,那么基本上就不需要看其他的书c了。除此之外,Documentation也是~程必备的手册,我的桌面上有三个Documentation的快h式,分别是J2SDK1.4.1的DocumentationQServlet2.3的Documentation和J2SDKEE1.3.1的Documentation。有了这个三个DocumentationQ什么其他的书籍都不需要了?/P>
对于Java Web ~程来说Q最核心的是要熟(zhn)和掌握HTTP协议Q这个就和Java无关了,在熟(zhn)HTTP协议之后Q就需要熟(zhn)Java的实现HTTP协议的类库,也就是Servlet APIQ所以最重要的东西就是Servlet API。当然对于初学者而言Q直接通过Servlet API来学习Web~程有很大的隑ֺQ我推荐O'reilly的《Java Server Pages 》这本书来学习Web ~程?/P>
EJB的书c当中,《Enterprise Java Beans?, 2nd Edition》是一本很不错的书Q?EJB的学习门槛是比较高,入门很难Q但是这本书完全降低了学习的隑ֺQ特别重要的一Ҏ(gu)QEJB的学习需要结合一UApp Server的具体实玎ͼ所以在学习EJB的同Ӟ必须同步的学习某UApp ServerQ而这本书相关的出了三本书Q分别是Weblogic6.1QW(xu)ebsphere4.0和JBoss3.0上面部v书中例子的实做。真是既有理论,又有实践。在学习EJB的同Ӟ可以边看边做QEJB的学习会变得很轻松?/P>
但是q本书也有一个问题,是版本比较旧,主要讲EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0?/FONT>q本书完全是Ҏ(gu)EJB2.0规范写的Q深入浅出,覆盖了EJB~程的各个方面,q且q有很多~程l验tipsQ也是学习EJB非常推荐的书c之一?/P>
如果是结合Weblogic来学习J2EE的话Q《J2EE应用与BEA Weblogic Server》绝Ҏ(gu)首选读物,虽然是讲q的Weblogic6.0Q仍然值得购买Q这本书是BEA官方推荐的教材,作者也是BEA公司的工E师。现在中文版已经随处可见了。这本书l合Weblogic介绍了J2EE各个斚w的技术在Weblogicq_上的开发和部vQ实跉|导意义非常强?/P>
在掌握了Javaq_基础知识和J2EE斚w的知识以后,更进一步的是学习如何运用OO的方法进行Y件的设计Q那么就一定要学习“设计模式”。Sun公司出版了一本《J2EE核心模式》,是每个开发Java企业q_软g的架构师必备的书c。这本书全面的介l了J2EE体系架构的各U设计模式,是设计师的必Mc?/P>
作者:佚名 来自Qhttp://www.pconline.com.cn
一、JDK (Java Development Kit)
JDK是整个Java的核心,包括了Javaq行环境QJava Runtime EnvirnmentQ,一堆Java工具和Java基础的类?rt.jar)。不Z么Java应用服务器实质都是内|了某个版本的JDK。因此掌握JDK是学好Java的第一步。最L的JDK是Sun公司发布的JDKQ除了Sun之外Q还有很多公司和l织都开发了自己的JDKQ例如IBM公司开发的JDKQBEA公司的JrocketQ还有GNUl织开发的JDK{等。其中IBM的JDK包含的JVMQJava Virtual MachineQ运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86q_的Jrocket在服务端q行效率也要比Sun JDK好很多。但不管怎么_我们q是需要先把Sun JDK掌握好?/P>
1、JDK的下载和安装
JDK又叫做J2SEQJava2 SDK Standard EditionQ,可以从Sun的Java|站上下载到Q?A >http://java.sun.com/j2se/downloads.html QJDK当前最新的版本?A target=_blank>J2SDK1.4.2Q徏议下载该版本的JDKQ下载页面在q里Q?A >http://java.sun.com/j2se/1.4.2/download.html?BR> 下蝲好的JDK是一个可执行安装E序Q默认安装完毕后会在C:\Program Files\Java\目录下安装一套JREQ供览器来使用Q,在C:\j2sdk1.4.2下安装一套JDKQ也包括一套JREQ。然后我们需要在环境变量PATH的最前面增加java的\径C:\j2sdk1.4.2\bin。这样JDK安装好了?BR> 2、JDK的命令工?BR> JDK的最重要命o行工P
javaQ?启动JVM执行class
javacQ?Java~译?BR> jarQ?Java打包工具
javadocQ?Java文生成?BR> q些命o行必要非常非常熟?zhn)Q对于每个参数都要很_N才行。对于这些命令的学习QJDK Documentation上有详细的文?/P>
二、JDK Documentation
Documentation在JDK的下载页面也有下载连接,同时下蝲Documentation。Documentation是最最重要的编E手册,늛了整个Java所有方面的内容的描q。可以这栯Q学习Java~程Q大部分旉都是花在看这个Documentation上面的。我是随w携带的Q写Java代码的时候,随时查看Q须臾不L?/P>
三、应用服务器(App Server)
App Server是运行Java企业lg的^収ͼ构成了应用Y件的主要q行环境。当前主的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的JbossQ选择其中一个进行学习就可以了,个h推荐WeblogicQ因为它的体pȝ构更加干净Q开发和部v更加方便Q是Java企业软g开发h员首选的开发^台。下面简要介l几U常用的App ServerQ?/P>
1、Tomcat
Tomcat严格意义上ƈ不是一个真正的App ServerQ它只是一个可以支持运行Serlvet/JSP的Web容器Q不qTomcat也扩展了一些App Server的功能,如JNDIQ数据库q接池,用户事务处理{等。Tomcat被非常广泛的应用在中规模的Java Web应用中,因此本文做一点下载、安装和配置Tomcat的介l:
Tomcat是Apachel织下Jakarta目下的一个子目Q它的主|站是:http://jakarta.apache.org/tomcat/ QTomcat最新版本是Tomcat5.0.16QY件下载的q接是:http://www.apache.org/dist/jakarta/tomcat-5/v5.0.16/ ?BR> 下蝲Tomcat既可以直接下载zip包,也可以下载exe安装包(个hzip更干净些)Q不哪U情况,下蝲完毕安装好以后(zip直接解压~就可以了)。需要设|两个环境变量:
JAVA_HOME=C:\j2sdk1.4.2
CATALINA_HOME=D:\tomcat4 (你的Tomcat安装目录)
q样安装好了,启动Tomcatq行CATALINA_HOME\bin\startup.batQ关闭Tomcatq行shutdown.bat脚本。Tomcat启动以后Q默认?080端口Q因此可以用览器访?A href="http://localhost:8080/">http://localhost:8080来测试Tomcat是否正常启动?BR> Tomcat提供了两个Web界面的管理工PURL分别是:
http://localhost:8080/admin/index.jsp
http://localhost:8080/manager/html
在启用这两个理工具之前Q先需要手工配|一下管理员用户和口令。用一个文本工h开CATALINA_HOME\conf\tomcat-users.xmlq个文gQ加入如下几行:
<role rolename="manager"/>
<role rolename="admin"/>
<user username="robbin" password="12345678" roles="admin,manager,tomcat"/>
q样用户“robbin”就具备了超U管理员权限。重新启动Tomcat以后Q你可以用该用户来登陆如上的两个理工具Q通过Web方式q行Tomcat的配|和理了?BR> 2、BEA Weblogic
Weblogic可以到BEA的网站上免费注册之后下蝲到Weblogic8.1企业版,License可以免费使用1q时_其实q已l完全够了。Weblogic的下载连接:http://commerce.bea.com/index.jspQW(xu)eblogic的在U文档:http://edocs.bea.com/ ?BR> 3、IBM Webshpere
Websphere同样可以下蝲到免费的试用版本Q到IBM的developerWorks|站可以看到Websphere试用产品的下载和相关的Websphere的资料,developerWorks中文|站的连接是Q?A >http://www-900.ibm.com/developerWorks/cn/wsdd/ QW(xu)ebsphere的下载连接:http://www7b.software.ibm.com/wsdd/downloads/WASsupport.html ?BR> 4、Jboss
Jboss是免费开源的App ServerQ可以免费的从Jboss|站下蝲Q?A >http://www.jboss.org/index.htmlQ然而Jboss的文档是不免费,需要花p乎ͼ所以ؓ我们学习Jboss讄了一定的障碍。在Jdon上有几篇不错的Jboss配置文Q可以用来参考:http://www.jdon.com/idea.html
四、Java应用的运行环?/P>
Java的应用可以简单分Z下几个方面:
1、Java的桌面应?BR> 桌面应用一般仅仅需要JRE的支持就_了?BR> 2、Java Web应用
Java的Web应用臛_需要安装JDK和一个web容器Q例如TomcatQ,以及一个多用户数据库,W(xu)eb应用臛_分ؓ三层Q?BR> Browser层:览器显C用户页?BR> Web层:q行Servlet/JSP
DB层:后端数据库,向JavaE序提供数据讉K服务
3、Java企业U应?BR> 企业U应用比较复杂,可以扩展到n层,最单情况会分ؓ4层:
Browser层:览器显C用户页?BR> Client层:Java客户端图形程序(或者嵌入式讑֤的程序)直接和W(xu)eb层或者EJB层交?BR> Web层:q行Servlet/JSP
EJB层:q行EJBQ完成业务逻辑q算
DB层:后端数据库,向JavaE序提供数据讉K服务
4、Java嵌入式应?BR> Java嵌入式应用是一个方兴未艄领域Q从事嵌入式开发,需要从Sun下蝲J2ME开发包QJ2ME包含了嵌入式讑֤专用虚拟机KVMQ和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下蝲模拟器?/P>