本文為:Java系列教程 001:Java 是什么?及 Java 語(yǔ)言的特點(diǎn)
?正文共:3599 字 6 圖
預(yù)計(jì)閱讀時(shí)間: 9 分鐘
Java 是近 10 年來(lái)計(jì)算機(jī)軟件發(fā)展過(guò)程中的傳奇,其在眾多開(kāi)發(fā)者心中的地位可謂 “愛(ài)不釋手”,與其他一些計(jì)算機(jī)語(yǔ)言隨著時(shí)間的流逝影響也逐漸減弱不同,Java 隨著時(shí)間的推移反而變得更加強(qiáng)大。
從首次發(fā)布開(kāi)始,Java 就躍到了 Internet 編程的前沿。
后續(xù)的每一個(gè)版本都進(jìn)一步鞏固了這一地位。
如今,Java 依然是開(kāi)發(fā)基于 Web 的應(yīng)用程序的最佳選擇。
此外,Java 還是智能手機(jī)變革的推手,Android 編程采用的就是 Java 語(yǔ)言。
PS:(2019-07-30注)目前已經(jīng)換成 Kotlin 了。詳情可查看:http://t.cn/EoKGAyJ
一、什么是 Java 語(yǔ)言
簡(jiǎn)單地說(shuō),Java 是由 Sun Microsystems 公司于 1995 年推出的一門(mén)面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。
2010 年 Oracle 公司收購(gòu) Sun Microsystems,之后由 Oracle 公司負(fù)責(zé) Java 的維護(hù)和版本升級(jí)。
其實(shí),Java 還是一個(gè)平臺(tái)。
Java 平臺(tái)由 Java 虛擬機(jī)(Java Virtual Machine,JVM)和 Java 應(yīng)用編程接口(Application Programming Interface,API)構(gòu)成。
Java 應(yīng)用編程接口為此提供了一個(gè)獨(dú)立于操作系統(tǒng)的標(biāo)準(zhǔn)接口,可分為基本部分和擴(kuò)展部分。在硬件或操作系統(tǒng)平臺(tái)上安裝一個(gè) Java 平臺(tái)之后,Java 應(yīng)用程序就可運(yùn)行。
Java 平臺(tái)已經(jīng)嵌入了幾乎所有的操作系統(tǒng)。
這樣 Java 程序只編譯一次,就可以在各種系統(tǒng)中運(yùn)行。
Java 應(yīng)用編程接口已經(jīng)從 1.1x 版本發(fā)展到 1.2 版本。
常用的 Java 平臺(tái)基于 Java 1.6,目前企業(yè)都逐漸將版本切換到了Java 1.8,最新版本為 Java 12。
Java 發(fā)展至今,就力圖使之無(wú)所不能。
按應(yīng)用范圍,Java 可分為 3 個(gè)體系,即 Java SE、Java EE 和 Java ME。
下面簡(jiǎn)單介紹這 3 個(gè)體系。
1. Java SE
Java SE(Java Platform Standard Edition,Java 平臺(tái)標(biāo)準(zhǔn)版)以前稱(chēng)為 J2SE,它允許開(kāi)發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實(shí)時(shí)環(huán)境中使用的 Java 應(yīng)用程序。Java SE 包含了支持 Java Web 服務(wù)開(kāi)發(fā)的類(lèi),并為 Java EE 提供基礎(chǔ),如 Java 語(yǔ)言基礎(chǔ)、JDBC 操作、I/O 操作、網(wǎng)絡(luò)通信以及多線(xiàn)程等技術(shù)。下圖 所示為 Java SE 的體系結(jié)構(gòu)。
2. Java EE
Java EE(Java Platform Enterprise Edition,Java 平臺(tái)企業(yè)版)以前稱(chēng)為 J2EE。企業(yè)版本幫助開(kāi)發(fā)和部署可移植、健壯、可伸縮且安全的服務(wù)器端 Java 應(yīng)用程序。
Java EE 是在 Java SE 基礎(chǔ)上構(gòu)建的,它提供 Web 服務(wù)、組件模型、管理和通信 API,可以用來(lái)實(shí)現(xiàn)企業(yè)級(jí)的面向服務(wù)體系結(jié)構(gòu)(Service Oriented Architecture,SOA)和 Web 2.0 應(yīng)用程序。
3. Java ME
Java ME(Java Platform Micro Edition,Java 平臺(tái)微型版)以前稱(chēng)為 J2ME,也叫 K-JAVA。
Java ME 為在移動(dòng)設(shè)備和嵌入式設(shè)備(比如手機(jī)、PDA、電視機(jī)頂盒和打印機(jī))上運(yùn)行的應(yīng)用程序提供一個(gè)健壯且靈活的環(huán)境。
Java ME 包括靈活的用戶(hù)界面、健壯的安全模型、豐富的內(nèi)置網(wǎng)絡(luò)協(xié)議以及對(duì)可以動(dòng)態(tài)下載的聯(lián)網(wǎng)和離線(xiàn)應(yīng)用程序。
基于 Java ME 規(guī)范的應(yīng)用程序 只需編寫(xiě)一次就可以用于許多設(shè)備,而且可以利用每個(gè)設(shè)備的本機(jī)功能。
二、Java 語(yǔ)言的特點(diǎn)
Java 語(yǔ)言的風(fēng)格很像 C 語(yǔ)言和 C++ 語(yǔ)言,是一種純粹的面向?qū)ο笳Z(yǔ)言,它繼承了 C++ 語(yǔ)言面向?qū)ο蟮募夹g(shù)核心,但是拋棄了 C++ 的一些缺點(diǎn),比如說(shuō)容易引起錯(cuò)誤的指針以及多繼承等,同時(shí)也增加了垃圾回收機(jī)制,釋放掉不被使用的內(nèi)存空間,解決了管理內(nèi)存空間的煩惱。
Java 語(yǔ)言是一種分布式的面向?qū)ο笳Z(yǔ)言,具有面向?qū)ο蟆⑵脚_(tái)無(wú)關(guān)性、簡(jiǎn)單性、解釋執(zhí)行、多線(xiàn)程、安全性等很多特點(diǎn),下面針對(duì)這些特點(diǎn)進(jìn)行逐一介紹。
1. 面向?qū)ο?/h5>
Java 是一種面向?qū)ο蟮恼Z(yǔ)言,它對(duì)對(duì)象中的類(lèi)、對(duì)象、繼承、封裝、多態(tài)、接口、包等均有很好的支持。
為了簡(jiǎn)單起見(jiàn),Java 只支持類(lèi)之間的單繼承,但是可以使用接口來(lái)實(shí)現(xiàn)多繼承。使用 Java 語(yǔ)言開(kāi)發(fā)程序,需要采用面向?qū)ο蟮乃枷朐O(shè)計(jì)程序和編寫(xiě)代碼。
2. 平臺(tái)無(wú)關(guān)性
平臺(tái)無(wú)關(guān)性的具體表現(xiàn)在于,Java 是 “一次編寫(xiě),到處運(yùn)行(Write Once,Run any Where)” 的語(yǔ)言,因此采用 Java 語(yǔ)言編寫(xiě)的程序具有很好的可移植性,而保證這一點(diǎn)的正是 Java 的虛擬機(jī)機(jī)制。
在引入虛擬機(jī)之后,Java 語(yǔ)言在不同的平臺(tái)上運(yùn)行不需要重新編譯。
Java 語(yǔ)言使用 Java 虛擬機(jī)機(jī)制屏蔽了具體平臺(tái)的相關(guān)信息,使得 Java 語(yǔ)言編譯的程序只需生成虛擬機(jī)上的目標(biāo)代碼,就可以在多種平臺(tái)上不加修改地運(yùn)行。
3. 簡(jiǎn)單性
Java 語(yǔ)言的語(yǔ)法與 C 語(yǔ)言和 C++ 語(yǔ)言很相近,使得很多程序員學(xué)起來(lái)很容易。
對(duì) Java 來(lái)說(shuō),它舍棄了很多 C++ 中難以理解的特性,如操作符的重載和多繼承等,而且 Java 語(yǔ)言不使用指針,加入了垃圾回收機(jī)制,解決了程序員需要管理內(nèi)存的問(wèn)題,使編程變得更加簡(jiǎn)單。
4. 解釋執(zhí)行
Java 程序在 Java 平臺(tái)運(yùn)行時(shí)會(huì)被編譯成字節(jié)碼文件,然后可以在有 Java 環(huán)境的操作系統(tǒng)上運(yùn)行。
在運(yùn)行文件時(shí),Java 的解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過(guò)程中需要加入的類(lèi)在連接階段被載入到運(yùn)行環(huán)境中。
5. 多線(xiàn)程
Java 語(yǔ)言是多線(xiàn)程的,這也是 Java 語(yǔ)言的一大特性,它必須由 Thread 類(lèi)和它的子類(lèi)來(lái)創(chuàng)建。
Java 支持多個(gè)線(xiàn)程同時(shí)執(zhí)行,并提供多線(xiàn)程之間的同步機(jī)制。任何一個(gè)線(xiàn)程都有自己的 run() 方法,要執(zhí)行的方法就寫(xiě)在 run() 方法體內(nèi)。
6. 分布式
Java 語(yǔ)言支持 Internet 應(yīng)用的開(kāi)發(fā),在 Java 的基本應(yīng)用編程接口中就有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口,它提供了網(wǎng)絡(luò)應(yīng)用編程的類(lèi)庫(kù),包括 URL、URLConnection、Socket 等。
Java 的 RIM 機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。
7. 健壯性
Java 的強(qiáng)類(lèi)型機(jī)制、異常處理、垃圾回收機(jī)制等都是 Java 健壯性的重要保證。
對(duì)指針的丟棄是 Java 的一大進(jìn)步。
另外,Java 的異常機(jī)制也是健壯性的一大體現(xiàn)。
8. 高性能
Java 的高性能主要是相對(duì)其他高級(jí)腳本語(yǔ)言來(lái)說(shuō)的,隨著 JIT(Just in Time)的發(fā)展,Java 的運(yùn)行速度也越來(lái)越高。
9. 安全性
Java 通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java 提供了一個(gè)安全機(jī)制以防止惡意代碼的攻擊。
除了 Java 語(yǔ)言具有許多的安全特性以外,Java 還對(duì)通過(guò)網(wǎng)絡(luò)下載的類(lèi)增加一個(gè)安全防范機(jī)制,分配不同的名字空間以防替代本地的同名類(lèi),并包含安全管理機(jī)制。
Java 語(yǔ)言的眾多特性使其在眾多的編程語(yǔ)言中占有較大的市場(chǎng)份額,Java 語(yǔ)言對(duì)對(duì)象的支持和強(qiáng)大的 API 使得編程工作變得更加容易和快捷,大大降低了程序的開(kāi)發(fā)成本。
Java 的 “一次編寫(xiě),到處執(zhí)行” 正是它吸引眾多商家和編程人員的一大優(yōu)勢(shì)。
三、學(xué)習(xí) Java 的最佳途徑
學(xué)習(xí) Java 之前,先別急,靜下心來(lái)好好想想下面的問(wèn)題。
你對(duì)學(xué)習(xí) Java 是否有足夠興趣?
你是否能靜下心來(lái)堅(jiān)持不懈地學(xué)習(xí)?
以上是兩個(gè)容易回答但絕對(duì)不應(yīng)該忽略的問(wèn)題。如果確信自己對(duì) Java 感興趣,而且又有吃苦的準(zhǔn)備,那才可能學(xué)好 Java。
如果具備這兩個(gè)條件,初學(xué)者需要注意的主要有如下幾點(diǎn)。
不要看太多的書(shū),先找本相對(duì)基礎(chǔ)的書(shū)系統(tǒng)地學(xué)習(xí)。很多程序開(kāi)發(fā)人員工作了很久也只是熟悉部分基礎(chǔ)而已,所以沒(méi)有必要花費(fèi)精力全面了解 Java 的每個(gè)細(xì)節(jié)。
初學(xué)時(shí)不要去死記語(yǔ)法。在剛接觸 Java 語(yǔ)言時(shí),掌握好基礎(chǔ)語(yǔ)法,并大概了解一些功能即可。借助開(kāi)發(fā)工具的代碼輔助功能完成代碼的錄入,這樣可以更快地進(jìn)入學(xué)習(xí)狀態(tài)。
多實(shí)踐,多思考,多請(qǐng)教。僅讀懂書(shū)中的內(nèi)容和技術(shù)是不行的,必須動(dòng)手編寫(xiě)程序代碼、運(yùn)行代碼,并分析運(yùn)行過(guò)程,從而對(duì)學(xué)習(xí)內(nèi)容有整體的認(rèn)識(shí)。用自己的方式思考問(wèn)題,通過(guò)編寫(xiě)代碼來(lái)提高編程思路。平時(shí)多和其他人溝通技術(shù)問(wèn)題,提高自己的技術(shù)和見(jiàn)識(shí)。
遇到問(wèn)題,首先嘗試自己解決。這樣可以提高自己對(duì)程序的調(diào)試能力,并對(duì)常見(jiàn)問(wèn)題有一定了解,明白出錯(cuò)的原因,甚至舉一反三地解決其他相關(guān)聯(lián)的錯(cuò)誤問(wèn)題。
不要急躁,遇到技術(shù)問(wèn)題,必須冷靜對(duì)待,不能讓思維混亂,保持清醒的頭腦才能分析和解決各種問(wèn)題。
了解設(shè)計(jì)模式。開(kāi)發(fā)程序必須編寫(xiě)程序代碼,這些代碼必須具有高度的可讀性,這樣編寫(xiě)的程序才有調(diào)試和維護(hù)的價(jià)值。學(xué)習(xí)一些設(shè)計(jì)模式,能夠很好地把握項(xiàng)目的整體結(jié)構(gòu)。
多閱讀別人的源代碼,多査閱資料。不但要看懂別人的程序代碼,還要分析作者的編程思想和設(shè)計(jì)模式,最好能為己所用。