




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