




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