看牛人如何學(xué)習(xí)JAVA.doc_第1頁(yè)
看牛人如何學(xué)習(xí)JAVA.doc_第2頁(yè)
看牛人如何學(xué)習(xí)JAVA.doc_第3頁(yè)
看牛人如何學(xué)習(xí)JAVA.doc_第4頁(yè)
看牛人如何學(xué)習(xí)JAVA.doc_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

看牛人如何學(xué)習(xí)JAVA第一章 Java語(yǔ)言概述 終于要開(kāi)始Java編程基礎(chǔ)這門(mén)課了,從學(xué)生的眼中可以看到一種期待,但我覺(jué)得學(xué)生們都有一種誤解,覺(jué)得這門(mén)課學(xué)好了就是學(xué)好Java了,對(duì)二年的J2EE學(xué)習(xí)會(huì)產(chǎn)生決定性的影響。可是實(shí)際上,這門(mén)課就像它的名字一樣,只是一個(gè)基礎(chǔ),它的目的就是能讓大家掌握J(rèn)ava的基本語(yǔ)法,能夠使用Java語(yǔ)言來(lái)實(shí)現(xiàn)面向?qū)ο蠖眩瑥膶?duì)J2EE學(xué)習(xí)的影響性來(lái)說(shuō),我覺(jué)得這門(mén)課的地位還不如ASP網(wǎng)絡(luò)編程。 當(dāng)然我并不是想說(shuō)Java基礎(chǔ)不重要,只是沒(méi)有重要到需要放棄畢業(yè)設(shè)計(jì)來(lái)聽(tīng)這門(mén)課(是的,有幾個(gè)學(xué)生已經(jīng)準(zhǔn)備這么干了)。 翻了一下這本書(shū)的目錄,發(fā)現(xiàn)它可以分為兩個(gè)階段第一階段:使用Java語(yǔ)法來(lái)實(shí)現(xiàn)面向?qū)ο螅嫦驅(qū)ο蟮幕靖拍钤贑+課程里面已經(jīng)介紹了,我想這部分的進(jìn)行會(huì)相對(duì)容易,當(dāng)然了,需要給學(xué)生們指出Java和C+在實(shí)現(xiàn)面向?qū)ο笊系膮^(qū)別;第二階段:使用Java進(jìn)行圖形編程,簡(jiǎn)單說(shuō),用Java來(lái)實(shí)現(xiàn)VB那一套東西,不知道學(xué)生們用慣了VB的可視化編程,能不能適應(yīng)手工生成界面。 就這些內(nèi)容可能有些單薄吧,我在想,中心還專(zhuān)門(mén)為Java增加了3節(jié)理論課,這樣算下來(lái)會(huì)有14節(jié)課來(lái)介紹Java。嗯可以用增加的理論課來(lái)介紹設(shè)計(jì)模式(Design Pattern)!這應(yīng)該是個(gè)好主意,能讓學(xué)生們學(xué)到更專(zhuān)業(yè)的開(kāi)發(fā)知識(shí),不過(guò)對(duì)于他們來(lái)說(shuō)會(huì)不會(huì)太難呢?隨著課程進(jìn)行看吧,反正我也不準(zhǔn)備把23種設(shè)計(jì)模式都講一遍。 我制定的Java授課計(jì)劃 好了,開(kāi)始上課了,課前大鵬問(wèn)我Java難不難,引用一句古文“人之為學(xué)有難易乎,為之,則難者亦易矣”。 從頭講起,Java的歷史、發(fā)明者這些東西我最討厭,一筆代過(guò)。開(kāi)始介紹Java的幾個(gè)基本特點(diǎn): 簡(jiǎn)單:沒(méi)有的指針操作; 健壯性:無(wú)須手工管理內(nèi)存; 可移植性:地球人都知道Java是跨平臺(tái)的。 就說(shuō)這么多吧,關(guān)于Java高性能這部分實(shí)在不想多講,搞過(guò)Java開(kāi)發(fā)的人都知道Java也許不是世界上最好的語(yǔ)言,但絕對(duì)是運(yùn)行速度最慢的語(yǔ)言。 重點(diǎn)要說(shuō)一下Java虛擬機(jī)(JVM),它是保證Java語(yǔ)言能跨平臺(tái)運(yùn)行的關(guān)鍵。想象聯(lián)合國(guó)開(kāi)大會(huì)的例子,來(lái)自中國(guó),美國(guó),法國(guó),德國(guó)的一大群發(fā)言人準(zhǔn)備說(shuō)話(huà)了,為了保證其他人也能聽(tīng)得懂,需要一個(gè)翻譯團(tuán),對(duì)翻譯團(tuán)中每個(gè)團(tuán)員的要求就是至少懂得英語(yǔ)和另一門(mén)語(yǔ)言?,F(xiàn)在中國(guó)的發(fā)言人說(shuō)話(huà)了,懂英語(yǔ)和漢語(yǔ)的翻譯會(huì)首先將中文翻譯成英文,然后不同語(yǔ)種的翻譯再根據(jù)英文翻譯成各自的文字。如果聯(lián)合國(guó)增加了一個(gè)成員“土撥?chē)?guó)”,他們講“土撥語(yǔ)”,那很簡(jiǎn)單,增加一名會(huì)說(shuō)“土撥語(yǔ)”和英語(yǔ)的翻譯就可以了。 這也就是Java虛擬機(jī)的運(yùn)行模式,我們都知道寫(xiě)好源代碼以后要進(jìn)行編譯,傳統(tǒng)語(yǔ)言(VB, VC)都會(huì)直接將源代碼編譯成能在某固定操作系統(tǒng)下運(yùn)行的EXE程序(我們都知道windows程序不能在Dos下運(yùn)行),而Java則是將源代碼編譯成我們稱(chēng)之為“字節(jié)碼”的中間文件(我們例子中的英語(yǔ)),OK,就到此為止了。顯然這個(gè)中間文件是無(wú)法直接執(zhí)行的,現(xiàn)在Java虛擬機(jī)登場(chǎng)了,我們執(zhí)行一個(gè)中間文件的流程是:Java虛擬機(jī)將中間文件讀入,翻譯成能在本操作系統(tǒng)下運(yùn)行的文件,然后執(zhí)行之。假如現(xiàn)在我們新增一個(gè)操作系統(tǒng),名為“土撥系統(tǒng)2005”(Turbo System 2005),如果想讓我們的Java在上面跑起來(lái),只需要sun公司開(kāi)發(fā)一個(gè)在“土撥系統(tǒng)2005”下運(yùn)行的Java虛擬機(jī)就可以了(Java Virtual Machine for Turbo System 2005)。 講到這兒發(fā)現(xiàn)一些學(xué)生已面露迷茫之色,趕快講些容易的,從剛才的描述可知,我們開(kāi)發(fā)Java程序需要先編寫(xiě)源代碼(*.java文件),然后將源代碼編譯成中間文件(*.class文件),最后通過(guò)Java虛擬機(jī)執(zhí)行,對(duì)應(yīng)這個(gè)過(guò)程,我們需要三種武器:編輯器、編譯器和Java運(yùn)行環(huán)境。 編輯器的目的是讓我們方便的開(kāi)發(fā)源代碼,好的編輯器支持語(yǔ)法高亮顯示,輸入“.”出現(xiàn)成員列表等功能,當(dāng)前企業(yè)開(kāi)發(fā)中最常用的編輯器應(yīng)該是Borland公司的 JBuilder,最新版本2005版;還有現(xiàn)在最熱門(mén)的開(kāi)源項(xiàng)目( 搜索互聯(lián)網(wǎng),了解開(kāi)源項(xiàng)目) Eclipse,最新版本3.0;不過(guò)作為入門(mén),我讓學(xué)生們先用 JCreator 3.5,注意,它的3.1版本在顯示中文時(shí)有問(wèn)題。 編譯器包含在JDK(Java Develop Kits)中,它將源代碼轉(zhuǎn)換成中間文件,在sun公司的官方網(wǎng)站上,可以找到JDK1.4.2版和JDK1.5版,其中1.5版是最新的,里面還附帶了一個(gè)叫NetBeans的編輯器,但是速度很慢,我推薦學(xué)生下載JDK1.4.2版,如果英文基礎(chǔ)好的話(huà),還可以同時(shí)下載JavaDoc,里面有java的幫助,有點(diǎn)像MSDN,只不過(guò)是純英文的。 Java運(yùn)行環(huán)境JRE(Java Runtime Environment)中最重要的組成部分就是Java虛擬機(jī),它也已經(jīng)包含在JDK中了,然而,如果我們想確保Java程序能在別人的機(jī)器上運(yùn)行,對(duì)方至少應(yīng)該安裝一個(gè)JRE。 最后講講配置問(wèn)題,我建議學(xué)生先安裝JDK,再安裝編輯器,這樣可以省去很多配置的麻煩。從書(shū)上得知要運(yùn)行Java程序還需要配置三個(gè)系統(tǒng)參數(shù):Path,ClassPath和Java_Hone,它們指明了JDK的安裝為之;實(shí)際上,除非你想在DOS環(huán)境下手工編譯程序,否則你根本不需要它們,因?yàn)榫庉嬈魇菚?huì)自己尋找JDK安裝位置的,像JBuilder甚至還自帶了一個(gè)JDK。 呼長(zhǎng)舒一口氣,休息一下吧,口干舌燥了。 第二節(jié)課我先介紹了一下當(dāng)今Java比較流行的三個(gè)分支,這些名詞你肯定聽(tīng)過(guò):J2SE,J2EE和J2ME。 1. J2SE (Java 2 Platform,Standard Edition) 指Java 1.2版以上的標(biāo)準(zhǔn)開(kāi)發(fā)包 開(kāi)發(fā)J2SE程序需要的編譯器為JDK,編輯器有記事本,JCreator, JBuilder (Borland), Eclipse (OpenSource), NetBeans(SUN), Visual Age For Java(IBM)等 如果要運(yùn)行J2SE程序,需要安裝JRE (Java Runtime Environment) 2. J2EE (Java 2 Platform,Enterprise Edition) Java2企業(yè)版由Jsp + Servlet + JavaBean + EJB組成 運(yùn)行企業(yè)版程序需要J2EE容器,比如WebLogic, WebSphere等 3. J2ME (Java 2 Platform,Micro Edition) 專(zhuān)門(mén)運(yùn)行在移動(dòng)設(shè)備和無(wú)限設(shè)備上的Java,手機(jī)游戲很多用此開(kāi)發(fā) 好了,介紹部分就這么多吧,我要開(kāi)始演示Hello World了,學(xué)生都很奇怪,為什么Java的源文件名要和類(lèi)名完全一致,哎,記住就行了,管它那么多。大家對(duì)main函數(shù)的聲明叫苦不迭,那么長(zhǎng)阿。其實(shí)我們仔細(xì)分析一下,會(huì)發(fā)現(xiàn)里面沒(méi)有一個(gè)多余的單詞: public static void main(String args) public將main聲明成公用,當(dāng)然了,因?yàn)閙ain函數(shù)是程序的起點(diǎn),由Java虛擬機(jī)自動(dòng)調(diào)用,如果是私有,不就訪問(wèn)不到了嘛;下一個(gè)是static,將函數(shù)聲明稱(chēng)靜態(tài),由C+的知識(shí)我們知道,只有靜態(tài)函數(shù)可以被直接訪問(wèn),這也是為了讓Java虛擬機(jī)能夠方便的開(kāi)始我們的程序;void說(shuō)明main函數(shù)沒(méi)有返回值,而括號(hào)里面的數(shù)組表示了命令行參數(shù),在我們還沒(méi)有圖形界面之前,我們幾乎只能靠這種方式來(lái)接收用戶(hù)的輸入??磁H巳绾螌W(xué)習(xí)JAVA-如何學(xué)習(xí)java(一)(二)2007年12月05日 星期三 07:52 P.M.看牛人如何學(xué)習(xí)JAVA如何學(xué)習(xí)java(一)最近論壇上看到好幾個(gè)朋友都在問(wèn),如何學(xué)習(xí) Java的問(wèn)題,“我已經(jīng)學(xué)習(xí)了J2SE,怎么樣才能轉(zhuǎn)向J2EE?”,“我看完了Thinking in Java, 可以學(xué)習(xí)J2EE了么?”。于是就有了寫(xiě)這篇文章的想法,希望能幫助初學(xué)者少走一些彎路。也算是對(duì)自己幾年來(lái)學(xué)習(xí)Java的一個(gè)總結(jié)吧。在開(kāi)始之前有必要再討論一下J2ME,J2SE,J2EE這些概念。J2ME,The Micro Edition of the Java 2 Platform。主要用于嵌入式Java,如手機(jī),PDA等等。J2SE,Java 2 Platform,Standard Edition,我們通常所說(shuō)的JDK(Java Development Kit)包含在此,是J2EE的基礎(chǔ)。J2EE,Java 2 Platform,Enterprise Edition,就是所謂的企業(yè)級(jí)Java。這些只是從API級(jí)別上的劃分,實(shí)際上Sun給J2EE的定義是:開(kāi)發(fā)基于組件的多層的企業(yè)級(jí)應(yīng)用的規(guī)范。也就是為各種不同的技術(shù)定義一個(gè)Java的規(guī)范,使這些不同的技術(shù)結(jié)合起來(lái),在Java平臺(tái)上構(gòu)建強(qiáng)壯的企業(yè)級(jí)應(yīng)用。從這一點(diǎn)來(lái)看,J2EE這個(gè)概念應(yīng)該是涵蓋J2ME,J2SE的。比如一個(gè)典型的J2EE應(yīng)用,網(wǎng)上商店,它支持web方式下訂單,也支持手機(jī)下訂單。顯然必須用到J2SE,J2ME。所以也就不存在所謂的從J2SE轉(zhuǎn)向J2EE的問(wèn)題了,只是后者包含的范圍更廣而已。來(lái)看看Sun給出的J2EE 相關(guān)技術(shù)主要分為幾大塊。1. Web Service技術(shù)- 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. 組件模型技術(shù)(Component Model Technologies)- Java Servlet- JavaServer Pages- JavaServer Faces- Enterprise JavaBeans- Java Message Service- J2EE Connector Architecture3. 管理技術(shù)(Management Technologies)- J2EE Deployment Specification- J2EE Management Specification- J2EE Client Provisioning- Java Authorization Contract for Containers4. 其他相關(guān)技術(shù)(Other J2EE Technologies)- JDBC- Java Data Objects (JDO)- CORBA (Java IDL and Java RMI-IIOP)- JavaMail- Transactions如此之多的技術(shù)難免使初學(xué)者無(wú)所適從,望而卻步。即使是一位經(jīng)驗(yàn)豐富的J2EE開(kāi)發(fā)者,又有幾個(gè)人敢說(shuō)J2EE相關(guān)的技術(shù)我都熟練掌握了。不過(guò)作為一名普通J2EE應(yīng)用程序的開(kāi)發(fā)者來(lái)說(shuō),我們只需要重點(diǎn)學(xué)習(xí)其中的一部分技術(shù)就可以了,對(duì)于其他部分只要做到心中有數(shù),哪天需要用到了知道跑哪里去找到資料就行了。以我個(gè)人的觀點(diǎn),下面這些技術(shù)是一般J2EE應(yīng)用開(kāi)發(fā)人員所必須熟練掌握的。Java Server Page,Java Servlet,Enterprise JavaBean,JDBC,Transactions。還有JAXP等XML相關(guān)技術(shù),Java Message Service,Java Mail,JDO等等是最好應(yīng)該掌握的。其他Management Technologies,Connector Architecture等等主要是給容器提供商中間件提供商參考的,應(yīng)用開(kāi)發(fā)者不需要怎么關(guān)心,等用到了再去學(xué)習(xí)也不遲。語(yǔ)言學(xué)習(xí)篇首先是J2SE基礎(chǔ)。學(xué)習(xí)一門(mén)新技術(shù),無(wú)外乎閱讀和實(shí)踐了。而一本好的參考書(shū)對(duì)于初學(xué)者來(lái)說(shuō)顯得格外重要。現(xiàn)在市面上的 Java書(shū)籍可以說(shuō)是鋪天蓋地,質(zhì)量也是良莠不齊,令初學(xué)者無(wú)所適從。所以還是先推薦幾本書(shū)籍吧。目前對(duì)于Java基礎(chǔ)知識(shí),大家一般都比較推薦兩本書(shū),和。第一本書(shū)不必多說(shuō)了,Bruce Eckel的大作,Jolt獲獎(jiǎng)書(shū)籍。內(nèi)容比較全面,基本涵蓋了java語(yǔ)言的方方面面。這本書(shū)提供了相當(dāng)豐富的例子,非常有利于對(duì)學(xué)習(xí)內(nèi)容的了解。另外書(shū)中第一部分對(duì)于OO基本書(shū)籍的介紹,我覺(jué)得對(duì)于剛接觸的人來(lái)說(shuō)幫助會(huì)很大。而且此書(shū)是Open Source的,可以從作者網(wǎng)上下載/Books/TIJ/而對(duì)于習(xí)慣于讀中文版的學(xué)習(xí)者來(lái)說(shuō),侯捷翻譯的中文版是不錯(cuò)的選擇。要說(shuō)這本說(shuō)的缺點(diǎn)可能就是對(duì)于初學(xué)者來(lái)說(shuō)厚了一點(diǎn),這也是一些人并不推薦此書(shū)作為初學(xué)者學(xué)習(xí)用書(shū)的原因吧。后面一本,目前已經(jīng)是第七版了,單從它出版的次數(shù)來(lái)看也可以看出此書(shū)受歡迎的程度,這本書(shū)特點(diǎn)也是講述比較全面系統(tǒng),基本上一路啃下來(lái)的話(huà)Java語(yǔ)言基礎(chǔ)應(yīng)該算過(guò)關(guān)了。缺點(diǎn)也是太厚了,有點(diǎn)像參考手冊(cè),前面部分花了不少篇幅講Swing和Applet,可能對(duì)初學(xué)者不是很有用。還有一些像也是比較不錯(cuò)的基礎(chǔ)書(shū)籍。學(xué)習(xí)了基本的語(yǔ)言基礎(chǔ),別忘了最重要也是最有用的資料還是JDK文檔。從你學(xué)習(xí)java的第一天開(kāi)始JDK文檔應(yīng)該是常備手頭了。如果你碰到問(wèn)題首先想到的是到論壇上去提問(wèn)而不是查閱Jdk文檔,那先別繼續(xù)往下學(xué)習(xí)了,學(xué)會(huì)查JDK文檔先。不夸張的說(shuō)在我們的初學(xué)者論壇中60%的問(wèn)題是光查一下JDK文檔就能解決問(wèn)題的。最新JDK Documentation下載地址/j2se/1.4.2/download.html(目前最新版是J2SE5 /j2se/1.5.0/download.jsp)不能光說(shuō)不練,同一下載頁(yè)面把JDK給下載回來(lái)。安裝完后有一點(diǎn)我想提一下,安裝路徑下有一個(gè)src.zip(有些jdk版本是src.jar),好東西啊-JDK源代碼,老是有人在論壇上問(wèn)哪里有JDK源代碼下載,你說(shuō)東西就放在你家里還到處找。有了這個(gè)有些問(wèn)題就需要在論壇上跟人家爭(zhēng)來(lái)爭(zhēng)去了,翻開(kāi)源代碼瞧一下什么疑問(wèn)都沒(méi)有了。幾個(gè)最重要的命令行工具是javac: 編譯源文件到class文件java: 運(yùn)行classjar: 打包工具。javadoc: 生成java doc的工具。對(duì)于初學(xué)java的人來(lái)說(shuō),我不推薦使用IDE而直接用文本編輯器,然后用命令行編譯運(yùn)行。這樣有利于理解CLASSPATH,PATH這些最基本概念。CLASSPATH是初學(xué)者比較容易感覺(jué)迷惑的地方?,F(xiàn)在的IDE太聰明了,給個(gè)名字就給你自動(dòng)生成java source code,自動(dòng)編譯??赡苣氵\(yùn)行完了你的第一個(gè)Hello World程序,還不知道java和javac是用來(lái)做什么的。至于實(shí)際的項(xiàng)目開(kāi)發(fā),一款合適的IDE還是十分重要的,我們稍后再對(duì)java開(kāi)發(fā)工具做一些介紹。如何學(xué)習(xí)java(二)J2EE基礎(chǔ)和Java語(yǔ)言進(jìn)階學(xué)習(xí)完語(yǔ)言基礎(chǔ),就可以比較自然地轉(zhuǎn)入J2EE實(shí)際技術(shù)的學(xué)習(xí)了。J2EE實(shí)在是比較龐雜,而EJB,Servlet,這些核心技術(shù)是作為每一個(gè)J2EE開(kāi)發(fā)人員所需要掌握的。關(guān)于servlet,我比較推薦和,第一本是Sun推薦的Servlet教材。第二本是當(dāng)年Amazon最暢銷(xiāo)Java書(shū)籍,五星級(jí)書(shū)籍。這本書(shū)機(jī)械工業(yè)出版社有中文版叫,感覺(jué)翻譯得還可以,第二版好像還沒(méi)有看到有中文版。兩本書(shū)都全面系統(tǒng)地介紹了JSP和Sevlet知識(shí),從web服務(wù)器配置,JSP,Servlet基本編程,標(biāo)記庫(kù)(Tag Lib),過(guò)濾器,事件框架都有很好地描述。提供地例子也比較實(shí)用。對(duì)于EJB學(xué)習(xí),比較著名有兩本書(shū),和,兩位作者Richard Monson,Ed Roman都是屬于業(yè)界重量級(jí)人物。而Richard Monson本身就是EJB規(guī)范專(zhuān)家組成員。對(duì)我來(lái)說(shuō),兩本書(shū)難分優(yōu)劣,第二本書(shū)有個(gè)好處就是可以免費(fèi)下載/books/wiley/masteringEJB/index.tss。還是那句話(huà),不能光說(shuō)不練,不過(guò)J2EE的練習(xí)做起來(lái)有一點(diǎn)麻煩,應(yīng)用服務(wù)器是不可少的,最好還得準(zhǔn)備個(gè)輕量級(jí)的數(shù)據(jù)庫(kù)。下面簡(jiǎn)單介紹一下這些工具。web服務(wù)器(Servlet Container)方面有。Tomcat: /tomcat/Jetty: /jetty/應(yīng)用服務(wù)器常用的有,Jboss: /products/indexWeblogic: /framework.jsp?CNT=index.htm&FP=/content/products/serverWebSphere: /developerworks/downloads/ws/was/?S_TACT=105AGX28&S_CMP=DLMAIN。Tomcat,Jetty,Jboss都是Open Source。Weblogic和WebSphere是J2EE服務(wù)器中的老大級(jí)人物,價(jià)格也不菲。不過(guò)對(duì)于開(kāi)發(fā)者有免費(fèi)的試用版下載。如果單單只是學(xué)習(xí)Servlet,推薦使用Tomcat,它是Sun官方指定的Servlet,JSP規(guī)范的參考實(shí)現(xiàn)。對(duì)初學(xué)者最重要的是它使用比較簡(jiǎn)單,自帶文檔比較齊全,使用者眾多,有什么問(wèn)題容易在論壇上面得到幫助。如果學(xué)習(xí)EJB的話(huà),推薦使用Jboss,不僅僅是因?yàn)樗荗pen Source的,主要是配置比較簡(jiǎn)單,使用方便。比如說(shuō)對(duì)于連接數(shù)據(jù)庫(kù),對(duì)于常用的MySQL,Oracle,MS SQL等等都提供了Sample Config文件,直接拿過(guò)來(lái)做些小改動(dòng)扔到Deploy目錄下就可以用DataSource了,部署J2EE應(yīng)用也簡(jiǎn)單,把整個(gè).ear或者.war扔到deploy下就可以了。唯一不方便的地方是從Jboss3.0開(kāi)始,它的文檔開(kāi)始收費(fèi)了。但是對(duì)于一些基本的配置,在網(wǎng)上還是非常容易找到的,畢竟它太流行了。至于Weblogic,也比較容易使用,不過(guò)比起Jboss來(lái)個(gè)頭大了很多,通過(guò)強(qiáng)大的管理界面使得一些常用的配置工作變得十分簡(jiǎn)單。和Jboss比起來(lái)它的文檔就太多了,簡(jiǎn)直是有點(diǎn)羅里八嗦,比如要部署一個(gè).ear文件,一般我們也就是直接扔到domain下的applications目錄下就會(huì)自動(dòng)deploy了,但是要看它的文檔可是長(zhǎng)篇大論,容易嚇著初學(xué)者,以為這又是什么高深的學(xué)問(wèn)。至于WebSphere,個(gè)人不推薦初學(xué)者使用,相比前倆個(gè)Server比較難使,而且狂吃?xún)?nèi)存。不過(guò)在企業(yè)級(jí)市場(chǎng)這個(gè)家伙表現(xiàn)不俗,畢竟是出生于IBM這樣的豪門(mén)。數(shù)據(jù)庫(kù)方面,目前常見(jiàn)的主要有PostgreSQL,MySQL,Oracle,MS SQL,DB2等等。前面兩個(gè)是開(kāi)源數(shù)據(jù)庫(kù),后面幾個(gè)基本上壟斷著大部分的數(shù)據(jù)庫(kù)市場(chǎng)。對(duì)于初學(xué)者用來(lái)做做EJB,JDBC的練習(xí),我推薦MySQL,理由還是很簡(jiǎn)單,開(kāi)源軟件不要錢(qián),個(gè)頭小使用方面,用戶(hù)眾多文檔齊全。下載地址/products/mysql/。PostgreSQL也可以考慮,不過(guò)國(guó)內(nèi)使用者遠(yuǎn)不如MySQL多,所以要在論壇上問(wèn)起問(wèn)題來(lái)就少方便一些了,下載地址/downloads/。至于后面那些比較重量級(jí)的數(shù)據(jù)庫(kù),為了做做練習(xí)而言就不用考慮了, 咱也花不起這個(gè)錢(qián)啊。學(xué)習(xí)完J2EE的這些具體技術(shù),這個(gè)時(shí)候進(jìn)行基本的J2EE開(kāi)發(fā)應(yīng)該是不成問(wèn)題了。此時(shí)應(yīng)該考慮提高自己的代碼質(zhì)量了。這里我強(qiáng)烈推薦Martin Fowler的,這本書(shū)不是一本非常實(shí)際的書(shū),作者完全是手把手地教你如何提高代碼質(zhì)量,從具體地代碼中告訴你什么是代碼的Bad Smell,如何去掉這些Bad Smell。不少書(shū)評(píng)是這么說(shuō)的,這本書(shū)對(duì)于初級(jí),中級(jí)的讀者幫助是立桿見(jiàn)影的。至少就我接觸到的幾個(gè)學(xué)習(xí)編程不久的程序員,編碼質(zhì)量在短期內(nèi)都有很大提高。當(dāng)然重構(gòu)(Refactoring)這一概念并不只針對(duì)Java語(yǔ)言的,它對(duì)所有OO語(yǔ)言都是適用的。重構(gòu)的概念是如此深入人心,以至于今天幾乎所有流行的IDE工具都有對(duì)重構(gòu)的支持。這里我還想再推薦一本。從C+過(guò)來(lái)的程序員都知道在C+領(lǐng)域的地位,至今還流傳著這樣的趣話(huà),C+程序員分為兩種,一種是讀過(guò)的,另一種是沒(méi)有讀過(guò)C+的。雖然這本在Java領(lǐng)域的影響也許沒(méi)有那么大,但對(duì)于Java程序員絕對(duì)有相當(dāng)?shù)闹笇?dǎo)價(jià)值。作者是Sun公司的Joshua Bloch,java Collection framework的設(shè)計(jì)者。作者站在JDK設(shè)計(jì)者的角度向你介紹他的Best Practice,應(yīng)該這樣做而不應(yīng)該那樣做,對(duì)于JDK中某些API設(shè)計(jì)的缺陷他也毫不袒護(hù)的指出。Java語(yǔ)言之父James Gosling為此書(shū)寫(xiě)的前言是這么說(shuō)的“I sure wish I had had this book ten years ago。 Some might think that I dont need any Java books, but I need this one”。這本書(shū)會(huì)讓你覺(jué)得原來(lái)你對(duì)Java還是有很多東西不了解的。舉個(gè)例子來(lái)說(shuō),對(duì)象的equals方法,我們認(rèn)為它很簡(jiǎn)單,也許你每天都在為你新寫(xiě)的Class重載這個(gè)方法,但是你在重載的時(shí)候注意過(guò)“自反”,“對(duì)稱(chēng)”,“傳遞”這些必須要考慮的因素,你是否同時(shí)還小心謹(jǐn)慎的重載了hashcode這個(gè)方法?如果沒(méi)有,建議你要讀一下這本書(shū)。讀完這本書(shū),你會(huì)覺(jué)得離Java的距離更近了。上面兩本書(shū)都出過(guò)中文版,后面一本還有兩個(gè)版本的中文版,第一次翻譯的比較差一點(diǎn),后來(lái)機(jī)械工業(yè)出版社又委托潘愛(ài)民先生重新翻譯了一遍。同一本書(shū)在同一個(gè)出版社連續(xù)被翻譯了兩次也說(shuō)明國(guó)內(nèi)出版界對(duì)這本書(shū)還是比較重視的。這個(gè)階段,在看書(shū)的同時(shí),可以結(jié)合著學(xué)習(xí)一些優(yōu)秀的開(kāi)源項(xiàng)目的源代碼。這些開(kāi)源項(xiàng)目的代碼風(fēng)格,注釋都是值得借鑒的。實(shí)在太懶也別忘了手頭上還有個(gè)Jdk的源代碼。其實(shí)也不用刻意去找源代碼,在實(shí)際的J2EE項(xiàng)目開(kāi)發(fā)中,基本上都會(huì)用到一些優(yōu)秀的開(kāi)源項(xiàng)目。Framework可能會(huì)用到Spring,Struts,Log機(jī)制基本上都會(huì)JarkartaCommons Log或者Log4j,單元測(cè)試會(huì)大多會(huì)用Junit,結(jié)合項(xiàng)目閱讀一下其中的一些源代碼,既可以提高自己又對(duì)項(xiàng)目會(huì)有所幫助,說(shuō)不定因此而得到PM的賞識(shí)呢。一舉兩得,何樂(lè)而不為呢。呵呵,有點(diǎn)扯遠(yuǎn)了。過(guò)了初學(xué)者階段,該學(xué)會(huì)如何找到適合自己的Java書(shū)籍了。歷經(jīng)數(shù)十載,今天的Java技術(shù)已經(jīng)變的如此之龐雜,我相信即使窮凈一個(gè)人畢生之精力也不可能把Java所有的相關(guān)技術(shù)都學(xué)通,何況新技術(shù)還在層出不窮地推出,3年之前誰(shuí)會(huì)知道Struts會(huì)成為Web框架事實(shí)上的工業(yè)標(biāo)準(zhǔn)。2年之前誰(shuí)會(huì)知道Hibernate會(huì)在今天獨(dú)領(lǐng)風(fēng)騷。既然已經(jīng)不能指望一次性把java技術(shù)的方方面面都學(xué)個(gè)通,在實(shí)際中也只能是需要什么技術(shù)再學(xué)習(xí)什么技術(shù)了。而能否選擇一本好的參考書(shū)籍帶來(lái)的就是事半功倍和事倍工半的效果。所以我覺(jué)得花點(diǎn)時(shí)間放在選擇書(shū)籍上面還是很值得的,否則你在后面只會(huì)花更多的時(shí)間。下面我談?wù)勛约哼x擇書(shū)籍的一些經(jīng)驗(yàn),不一定正確。首先看作者,像上面提到的那些書(shū)的作者,都是業(yè)界鼎鼎大名的,選擇他們的書(shū)一般錯(cuò)不了。大家看的書(shū)多了,自己胸中自然也會(huì)有一個(gè)list,哪些作者是信得過(guò)的。二看出版社,計(jì)算機(jī)書(shū)籍方面,Oreilly,Addison-Wesley都是公認(rèn)比較好的出版社。對(duì)于目前比較流行的Java技術(shù),Oreilly的系列是不錯(cuò)的選擇。另外我還會(huì)去看看Amazon網(wǎng)站(/)的書(shū)評(píng),一般小于3星級(jí)的書(shū)我都不會(huì)考慮。還有一個(gè)好去處theserverside,/的書(shū)評(píng),這里的書(shū)評(píng)比較有趣,往往都有很激烈的爭(zhēng)論,里面經(jīng)常會(huì)看到一些名人在發(fā)言。我要向所有Java學(xué)習(xí)者推薦,如果我的收藏夾里面只能存放兩個(gè)網(wǎng)站,我會(huì)選擇java.sun和theserverside。在這里你可以了解最新的Java動(dòng)態(tài),可以學(xué)習(xí)第一手的Java資料,可以看到Java高手們(里面不乏業(yè)界大腕)激烈辯論。到此階段,Java Developer的基本功底應(yīng)該算是打好了吧,往后就是不斷學(xué)習(xí)嘍。結(jié)束這一段之前,最后再介紹一本書(shū)Oreilly的,因?yàn)槲矣X(jué)得多線(xiàn)程編程屬于Java基本功,每一個(gè)想學(xué)好Java的人都應(yīng)該好好掌握。提高篇在這個(gè)階段應(yīng)該從軟件架構(gòu),F(xiàn)ramework層次上來(lái)學(xué)習(xí)了。作為面向?qū)ο蟮氖ソ?jīng), 這本書(shū)是不得不推薦的。不用再多說(shuō)了,這本在面向?qū)ο箢I(lǐng)域地位完全是屬于教父級(jí)別的。不管你學(xué)習(xí)的是什么OO語(yǔ)言,不管你現(xiàn)在是用.Net還是J2EE開(kāi)發(fā),這本書(shū)都是你進(jìn)階之路上的必讀之書(shū)。而則專(zhuān)門(mén)針對(duì)于J2EE來(lái)討論設(shè)計(jì)模式,書(shū)中Sun Java Center的資深設(shè)計(jì)師描述了J2EE關(guān)鍵技術(shù)的模式。最佳實(shí)踐,設(shè)計(jì)策略和經(jīng)過(guò)驗(yàn)證的解決方案。對(duì)于每一個(gè)希望成為J2EE 架構(gòu)師或者設(shè)計(jì)師,這本書(shū)值得一讀。學(xué)習(xí)設(shè)計(jì)模式的時(shí)候,建議是結(jié)合實(shí)際的源代碼來(lái)看,比如看看Junit源代碼,你可以看到很多設(shè)計(jì)模式優(yōu)雅的實(shí)現(xiàn),作者之一Erich Gamma本身就是的作者。至于J2EE的設(shè)計(jì)模式,Sun還開(kāi)辟了專(zhuān)門(mén)的空間/blueprints/patterns/,里面有對(duì)常用模式的討論又提供了詳細(xì)的源代碼樣例。正如Grady Booch所說(shuō),模式對(duì)于普遍問(wèn)題提供了通用的解決方案,利用模式就等于擁有一個(gè)強(qiáng)大的專(zhuān)家隊(duì)伍。如果你還沒(méi)有學(xué)習(xí),現(xiàn)在就開(kāi)始吧。此外對(duì)于面向?qū)ο蠓椒ㄕ?,極限編程的思想也應(yīng)該有所了解/。對(duì)于J2EE項(xiàng)目的具體實(shí)施,Rod Johnson的也很有價(jià)值,該書(shū)以作者豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)向我們展示如何用盡可能簡(jiǎn)單的解決方案構(gòu)建J2EE 應(yīng)用,書(shū)中作者第一次提出這樣的觀點(diǎn),很多時(shí)候,J2EE應(yīng)用完全沒(méi)有必要用到EJB,對(duì)于言必稱(chēng)EJB的廣大J2EE開(kāi)發(fā)者來(lái)說(shuō),怎么說(shuō)也有點(diǎn)驚世咳俗的味道。當(dāng)然,作為Servlet和JDO兩個(gè)專(zhuān)家組的成員,這可不是作者信口胡騶的。今天風(fēng)靡Java世界的Spring框架最初便是源于此書(shū),而IOC,AOP等概念更是被時(shí)下的java開(kāi)發(fā)者掛在嘴邊。最后,作為對(duì)Java的深入學(xué)習(xí),Java技術(shù)的各個(gè)Specification也有必要一讀。暫時(shí)就寫(xiě)到這里吧。一個(gè)牛人給java初學(xué)者的建議(1)2008年03月03日 星期一 20:41給初學(xué)者之一:淺談java及應(yīng)用 學(xué)java不知不覺(jué)也已經(jīng)三年了 從不知java為何物到現(xiàn)在一個(gè)小小的j2ee項(xiàng)目經(jīng)理 雖說(shuō)不上此道高手,大概也算有點(diǎn)斤兩了吧 每次上網(wǎng),泡bbs逛論壇,沒(méi)少去java相關(guān)的版面 總體感覺(jué)初學(xué)者多,高手少,精通的更少 由于我國(guó)高等教育制度教材陳舊,加上java自身發(fā)展不過(guò)十年左右的時(shí)間 還有一個(gè)很重要的原因就是java這門(mén)語(yǔ)言更適合商業(yè)應(yīng)用 所以高校里大部分博士老師們對(duì)此語(yǔ)言的了解甚至不比本科生多 在這種環(huán)境下,很多人對(duì)java感到茫然,不知所措,不懂java能做什么 即便知道了java很有用,也不清楚該從哪里入手 所以就有了 java入門(mén)難 這一說(shuō)法 ok,那我們就從java到底能做什么聊起 先說(shuō)什么是java java是一種面向?qū)ο笳Z(yǔ)言,真正的面向?qū)ο?,任何函?shù)和變量都以類(lèi)(class)封裝起來(lái) 至于什么是對(duì)象什么是類(lèi),我就不廢話(huà)了 關(guān)于這兩個(gè)概念的解釋任何一本面向?qū)ο笳Z(yǔ)言的教材里面都有 知道了什么是java,那自然就會(huì)對(duì)java能干什么感興趣 在說(shuō)java能做什么之前,先說(shuō)java作為一個(gè)真正面向?qū)ο笳Z(yǔ)言的優(yōu)點(diǎn) 首先第一個(gè),既然是真正的面向?qū)ο?,那就要做到徹底的封裝 這是java和c+最大的不同,java所有的源碼以及編譯后的文件都以類(lèi)的形式存在 java沒(méi)有所謂的類(lèi)外部定義,所有的函數(shù)(方法)以及變量(屬性)都必須在類(lèi)內(nèi)部定義 這樣就不會(huì)出現(xiàn)一個(gè)類(lèi)被切割成這里一塊那里一塊的情況,c+就可以,不是么? 這樣做使得整個(gè)程序的結(jié)構(gòu)異常清晰,明了 其次第二個(gè),最讓人歡呼雀躍的是完全屏蔽了指針,同時(shí)引入了垃圾回收機(jī)制 任何一個(gè)寫(xiě)過(guò)c/c+代碼的人,都會(huì)對(duì)內(nèi)存管理深?lèi)和唇^ 因?yàn)檫@使得我們不能把主要精力放在我們關(guān)心的事情上 而需要考慮計(jì)算機(jī)內(nèi)部的一些事情,作為一個(gè)軟件工程師 我想沒(méi)有一個(gè)人愿意把大量的時(shí)間花在內(nèi)存管理上,畢竟我們不是電子工程師 此時(shí)java的優(yōu)勢(shì)體現(xiàn)出來(lái)了,它完全屏蔽了內(nèi)存管理 也就是說(shuō),如果你用java寫(xiě)程序,寫(xiě)出來(lái)的任何一個(gè)程序內(nèi)存上的開(kāi)銷(xiāo),都不受你控制 乍一看,似乎你受到了束縛,但實(shí)際上不是這樣 因?yàn)殡m然你的程序無(wú)法對(duì)內(nèi)存進(jìn)行管理,降低了一定的速度 但你的程序會(huì)非常非常的安全,因?yàn)槟銦o(wú)法調(diào)用一個(gè)空指針 而不像以前寫(xiě)c的時(shí)候那樣,成天因?yàn)榭罩羔樁鴵?dān)驚受怕 當(dāng)然,如果你深入了解這一行,就會(huì)發(fā)現(xiàn)java其實(shí)也無(wú)法保證程序不去調(diào)用空的指針 但是它會(huì)在最大程度上避免空指針的調(diào)用 這已經(jīng)很好了,安全,這是java的最突出的優(yōu)點(diǎn) 第三個(gè),虛擬機(jī)跨平臺(tái),這是java最大的特點(diǎn),跨平臺(tái) 可能所有人都知道windows,但是不是所有人都知道unix 和java一樣,很多人都不知道unix這種操作系統(tǒng)干什么用 我不想多說(shuō)unix的應(yīng)用,這不是主要,但是我要說(shuō),大部分小型機(jī) 工作站,都跑在unix一族的操作系統(tǒng)上,比如linux/solaris unix比起windows有一個(gè)最顯著的特點(diǎn),穩(wěn)定,這就好比思科和華為 思科的機(jī)器慢但穩(wěn)定,華為的機(jī)器快但不穩(wěn)定,作為服務(wù)器這一端來(lái)說(shuō) 要的皇怯卸囁歟 俏榷 評(píng)nix在服務(wù)器端還是非常有市場(chǎng)的 而且很重要的windows不安全,在ms的宣傳中我想所有人都很少看到安全二字 因?yàn)閣indows操作系統(tǒng)針對(duì)的是pc用戶(hù),pc死機(jī)就死機(jī)咯,大不了重啟 瘟95最經(jīng)常冒出來(lái)的就是藍(lán)屏,在服務(wù)器這一端上因?yàn)閙s沒(méi)有自己的芯片 所以要做系統(tǒng)有些力不從心啊。扯遠(yuǎn)了,那么java可以做到在windows上編譯 一個(gè)牛人給java初學(xué)者的建議(2)2008年03月03日 星期一 20:42那么說(shuō)到這里,java能做什么逐漸清晰起來(lái) 剛才說(shuō)到了,java程序有一個(gè)的特點(diǎn)是安全 這個(gè)安全是針對(duì)你的系統(tǒng)來(lái)說(shuō)得,系統(tǒng)在跑了java程序之后會(huì)特別地穩(wěn)定 而且還能跨平臺(tái),那么很明顯,java主要應(yīng)用于除了windows操作系統(tǒng)以外所有的平臺(tái) 比如手機(jī),服務(wù)器 想想看,如果你寫(xiě)的程序要跑在手機(jī)上,而手機(jī)有多少款用的是windows? 就算有,那如果你用c/c+,是不是要針對(duì)每一款手機(jī)寫(xiě)一套程序呢? 累死,那跨平臺(tái)的java就不用,做到編譯一次,隨時(shí)運(yùn)行 同樣,在服務(wù)器這一端,如果我想給一個(gè)網(wǎng)絡(luò)門(mén)戶(hù)站點(diǎn),比如sina 寫(xiě)一個(gè)應(yīng)用程序,pc的性能肯定無(wú)法滿(mǎn)足sina這樣大站點(diǎn)并發(fā)數(shù)量的要求 那么它就需要買(mǎi)服務(wù)器,那么服務(wù)器ms沒(méi)有市場(chǎng),而且windows很不安全 那么十之八九會(huì)買(mǎi)一個(gè)sun/ibm的機(jī)器,或者h(yuǎn)p,但不管是誰(shuí)的機(jī)器 它裝的操作系統(tǒng)也不會(huì)是windows,因?yàn)閣indows太不安全了,而且多核的支持太差了 這個(gè)有空再說(shuō),那么如果你要寫(xiě)一個(gè)程序在這樣的機(jī)器上跑 難道我們就在這個(gè)機(jī)器上做開(kāi)發(fā)么?當(dāng)然不可能,一般程序員開(kāi)發(fā)用的都是pc,windows 那么該怎么辦?寫(xiě)一個(gè)程序,然后再拿到服務(wù)器上去編譯,去調(diào)試? 肯定不可能,所以我們就希望找到一個(gè)語(yǔ)言,編譯完生成程序之后 在pc上調(diào)試,然后直接移植到服務(wù)器上去,那么此時(shí),我們就會(huì)毫不猶豫地選擇java 因?yàn)樵诳缙脚_(tái)以及安全性來(lái)說(shuō),java永遠(yuǎn)是第一選擇 ok,下面說(shuō)java的缺點(diǎn) 一慢,這其實(shí)是一種誤區(qū),這就好比goto語(yǔ)句一樣 java也拋棄了指針,雖然看上去似乎變慢了,但是在這個(gè)兩三年硬件性能就能翻番的年代 速度已經(jīng)不是我們關(guān)心的問(wèn)題了,而且對(duì)于企業(yè)級(jí)的應(yīng)用來(lái)說(shuō) 沒(méi)有什么比安全穩(wěn)定更重要的,換句話(huà)說(shuō),我們可以忍受慢,但是不能忍受死機(jī)和藍(lán)屏 而且越大型的應(yīng)用,這種慢的劣勢(shì)體現(xiàn)得越模糊 因?yàn)楫?dāng)系統(tǒng)項(xiàng)目越做越大,任何一個(gè)環(huán)節(jié)做不好都可能影響全局的情況下 安全尤其重要,而且就像goto語(yǔ)句一樣 這種過(guò)分追求速度的主張會(huì)給系統(tǒng)開(kāi)發(fā)和糾錯(cuò)以及維護(hù)帶來(lái)無(wú)可挽回甚至不可避免的損失 把內(nèi)存交給計(jì)算機(jī)去管理吧,這種代價(jià)值得 我們做的不是pc游戲,沒(méi)必要把內(nèi)存的那一點(diǎn)點(diǎn)消耗當(dāng)親爹 二難看,又是一個(gè)誤區(qū),很多人甚至拿出java swing控件畫(huà)出的界面來(lái)說(shuō) 呵呵,其實(shí)java不是不能畫(huà)得好看,IDEA就是java寫(xiě)的IDE,挺漂亮的 但為什么難看呢,是因?yàn)閟wing控件它本身就是unix時(shí)代的產(chǎn)物,swing控件貼近unix界面 老外看unix界面其實(shí)挺順眼的,他們就是吃u(píng)nix飯長(zhǎng)大的 而unix又是吃百家飯的,不像ms那么唯利是圖,所以不怎么對(duì)中國(guó)人友好 加上我國(guó)又沒(méi)有公司在做操作系統(tǒng),所以看上去是不怎么順眼 其實(shí)玩過(guò)unix的人都知道,unix對(duì)中文的支持一直不怎么好 三我還沒(méi)想到,其他人補(bǔ)充一個(gè)牛人給java初學(xué)者的建議(3)2008年03月03日 星期一 20:44給初學(xué)者之二:從JDK說(shuō)起在知道了java有什么優(yōu)點(diǎn),能做什么之后 就該說(shuō)一下java該如何去學(xué)了 在說(shuō)java如何去學(xué)之前,有必要把java的幾個(gè)大方向做一個(gè)簡(jiǎn)單說(shuō)明 早在五年前,嗯,應(yīng)該說(shuō)是六年前,也就是99年的時(shí)候 sun公司做出了一個(gè)決定,將java應(yīng)用平臺(tái)做一個(gè)劃分 畢竟在不同領(lǐng)域,語(yǔ)言應(yīng)用特性是有區(qū)別的 針對(duì)不同領(lǐng)域內(nèi)的應(yīng)用,sun公司可以發(fā)布相關(guān)高端標(biāo)準(zhǔn)來(lái)統(tǒng)一規(guī)范代碼 這三大塊就是J2SE,J2EE以及J2ME 這個(gè)舉措今天看來(lái)無(wú)疑是非常了不起的 正是由于這次革命性的發(fā)展,使java從一種小打小鬧游戲性的語(yǔ)言 發(fā)展成為今天企業(yè)級(jí)應(yīng)用的基礎(chǔ) 這里要特別說(shuō)明一下J2SE J2EE J2ME中2的意思 其實(shí)2就是英文單詞to的諧音,就是to的意思 而不是second edition,當(dāng)然java 2本身版本號(hào)就是1.2,也有點(diǎn)2nd edition的味道 說(shuō)點(diǎn)題外的,sun公司發(fā)布的java版本很有意思 雖然總是寫(xiě)是1.X但其實(shí)外界對(duì)這種版的說(shuō)法也就是X.0 比如java 2,其實(shí)就是java 1.2 1.3其實(shí)就是3.0,1.4就是4.0,現(xiàn)在所說(shuō)的5.0 其實(shí)就是1.5 只是以前我們更習(xí)慣叫1.X而已 可能到了5.0以后,就全改叫X.0而不是1.X了 所以以后聽(tīng)到別人說(shuō)java 5.0,千萬(wàn)別驚訝,其實(shí)就是1.5 在這三個(gè)J2*E中J2SE是基礎(chǔ),就是java 2的標(biāo)準(zhǔn)版(java 2 standard edition) 也就是最基礎(chǔ)的java語(yǔ)言部分,無(wú)論學(xué)什么java技術(shù),J2SE都是必須掌握的 要使用J2SE就必須安裝JDK(java development kit) JDK在sun公司的主頁(yè)上可以免費(fèi)下載,下載后需要安裝,具體安裝流程看教材 JDK包含有五個(gè)部分:核心API,集成API,用戶(hù)界面API,發(fā)布技術(shù)還有java虛擬機(jī)(JVM) 一個(gè)牛人給java初學(xué)者的建議(4)2008年03月03日 星期一 20:45先說(shuō)運(yùn)行環(huán)境,運(yùn)行環(huán)境最主要要說(shuō)的就是java虛擬機(jī)(JVM) 前面我們說(shuō)過(guò)java是跨平臺(tái)的語(yǔ)言,那么如何做到跨平臺(tái)呢?畢竟每種操作系統(tǒng)都是不同的 java的設(shè)計(jì)者們提出了一個(gè)虛擬機(jī)的概念 在操作系統(tǒng)之上建立一個(gè)統(tǒng)一的平臺(tái),這個(gè)平臺(tái)必須實(shí)現(xiàn)某些功能以支持程序的運(yùn)行 如下圖: - | program | - | JVM | - | UNIX | Windows | Linux | Solaris |. - 程序員所寫(xiě)的每一個(gè)程序都先運(yùn)行在虛擬機(jī)上 所有操作都必須經(jīng)過(guò)虛擬機(jī)才能和操作系統(tǒng)交互 這樣做不僅統(tǒng)一了所有操作系統(tǒng),同時(shí)也保證了操作系統(tǒng)的安全 要死機(jī)的話(huà),死的是虛擬機(jī)(JVM)而操作系統(tǒng)并不會(huì)受此影響 而我們所說(shuō)的java運(yùn)行環(huán)境指的主要是JVM,其他的不說(shuō)了,省略 下面說(shuō)說(shuō)JDK(java development kit)的API,其實(shí)用JDK來(lái)包括運(yùn)行環(huán)境以及開(kāi)發(fā)工具 個(gè)人感覺(jué)是不恰當(dāng)?shù)?,因?yàn)檫@三個(gè)單詞僅能說(shuō)明開(kāi)發(fā)工具,也就是幾個(gè)標(biāo)準(zhǔn)的API 而沒(méi)有讓人感覺(jué)到有運(yùn)行環(huán)境的意思在里面,這是題外 那么什么是API? 簡(jiǎn)單地說(shuō)就是Application Programming Interface,應(yīng)用程序編程接口 在java里面,就是一些已經(jīng)寫(xiě)好了的類(lèi)打成的包 這又要解釋什么是類(lèi)什么是包了,簡(jiǎn)單說(shuō)一下,包就是類(lèi)的集合 一個(gè)包包含零個(gè)或多個(gè)類(lèi),嗯,具體的可以去看書(shū) 這些類(lèi)是java的基礎(chǔ)類(lèi),常用的類(lèi),可以簡(jiǎn)單理解成java的工具集 最后說(shuō)一下JDK的發(fā)布技術(shù),其實(shí)按我的理解,講白了就是編譯器 將.java文件轉(zhuǎn)換成.class文件的一種技術(shù) 這三部分組成了JDK,有了JDK,就可以開(kāi)發(fā)出J2SE應(yīng)用軟件了 最原始的只要用一個(gè)記事本寫(xiě)幾行代碼就可以了 但一般來(lái)說(shuō)我們會(huì)使用效果比較好的開(kāi)發(fā)工具,也就是IDE 在J2SE這一塊,特別推薦JCreator這款I(lǐng)DE sun公司的產(chǎn)品,與JDK結(jié)合得幾乎是天衣無(wú)縫,非常適合初學(xué)者使用 教材方面中文的推薦電子工業(yè)出版社出版的java教程初級(jí)與高級(jí)篇各一本 還有就是21天學(xué)通java雖然有人說(shuō)21天系列是爛書(shū),但個(gè)人感覺(jué) 對(duì)于j2se,這本書(shū)翻譯得已經(jīng)很不錯(cuò)了,基本沒(méi)有什么語(yǔ)法錯(cuò)誤,語(yǔ)句也很通順 最后要說(shuō)的就是thinking in java 這本書(shū)自然很經(jīng)典,說(shuō)得比較細(xì),只是我覺(jué)得不太適合初學(xué)者,其實(shí)也不難 初學(xué)者直接看也不成問(wèn)題,但個(gè)人感覺(jué)還是找本教材也就是前面推薦的兩款來(lái)看比較好 基本概念的理解還是用教材的,畢竟thinking in java有的版本翻譯得很爛 而且個(gè)人建議還是看原版比較好,當(dāng)然這幾本都看最好了,但如果沒(méi)時(shí)間 至少精讀其中一本,然后再看其他兩本就可以,其實(shí)三本書(shū)內(nèi)容也差不多 但看問(wèn)題的角度方式以及面向的讀者也都不同,嗯,怎么說(shuō)呢,找適合自己的吧 最后要說(shuō)的是 由于虛擬機(jī)的存在,J2SE的大多數(shù)軟件的使用會(huì)比一般桌面軟件慢一些 效果不盡如人意,現(xiàn)在大概只有swing控件還在使用吧,其它沒(méi)怎么聽(tīng)說(shuō) J2EE&J2ME 這是java應(yīng)用的重中之重,如果想拿高薪,最好把J2EE學(xué)好 記得以前在csdn上看過(guò)一個(gè)調(diào)查,月薪上萬(wàn)的程序員主要從事哪方面的工作 十個(gè)中有八個(gè)是做J2EE的,其他兩個(gè)一個(gè)做J2ME,還有一個(gè)做嵌入式 也許有些夸張,但也從某一方面說(shuō)明J2EE人才的稀缺以及應(yīng)用的廣泛 所以如果想學(xué)java,只精通j2se是永遠(yuǎn)不夠的,至少還需要時(shí)間去了解其它兩個(gè)J2*E給初學(xué)者之三:java企業(yè)級(jí)應(yīng)用之硬件篇總算講到企業(yè)級(jí)應(yīng)用了,內(nèi)容開(kāi)始逐漸有趣起來(lái)java企業(yè)級(jí)應(yīng)用分為硬件篇和軟件篇重點(diǎn)在軟件,硬件是外延,嚴(yán)格地說(shuō)與java沒(méi)有必然聯(lián)系但是,由于java是網(wǎng)絡(luò)語(yǔ)言,不了解硬件的一些基礎(chǔ)知識(shí)軟件知道再多也沒(méi)什么用,不要上了戰(zhàn)場(chǎng)還不知道為什么而打仗硬件是軟件的基礎(chǔ),在這個(gè)前提下,有必要專(zhuān)門(mén)花一點(diǎn)點(diǎn)篇幅來(lái)聊一下硬

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論