一:Java 是什么
通常我們認為,Java 是:
一種計算機編程語言
一種軟件開發平台
一種軟件運行平台
一種軟件部署環境什么意思呢,分別解釋一下。
1:Java 是一種計算機編程語言
1.1:語言
要准確地給語言下一個定義很困難,對我們來說也沒有必要,但是大家都知道漢語、英語等是語言。語言是用來干什么的呢?很明顯語言是用來交流的,比如大家現在看這些文字,其實就是我們通過這些文字在交流。
1.2:計算機編程
所謂計算機編程就是:把我們的要求和想法,按照能夠讓計算機看懂的規則和約定,編寫出來的過程,就是編程。編程的結果就是一些計算機能夠看懂並能夠執行和處理的東西,我們把它叫做軟件或者程序。事實上,程序就是我們對計算機發出的命令集(指令集)。
1.3:Java 是一種計算機編程語言
我們說Java 是一種計算機編程語言,首先是說:Java 是一種語言,也就是Java 是用來交流的,那么用來誰和誰交流呢?很明顯就是人和計算機交流了,換句話說把我們的要求和想法用Java 表達出來,那么計算機能看懂,就能夠按照我們要求運行,而這個過程就是我們說的使用Java 編程,所以我們講Java 是一種計算機編程語言。
為了讓計算機看懂,Java 會有一系列的規則和約定,這些就是Java 的語法。
2:Java 是一種軟件開發平台
2.1:什么是軟件開發
可以簡單地理解為:編程的結果是軟件或者程序,而編程的過程就是軟件開發。軟件開發的基本步驟包括:需求分析、概要設計、詳細設計、編碼、測試、維護等階段。
2.2:什么是開發平台
在軟件開發的過程中,我們需要很多的工具來輔助我們的工作,不可能什么都從頭自己做。我們把編程的環境和相應的輔助工具統稱為開發環境,開發平台就是用來提供這個開發環境的。
2.3:Java 是一種開發平台
Java 不單純是一個編程的語言,它自身提供了一系列開發Java 所需要的環境和工具,來進行編譯、解釋、文檔生成、打包等,比如:javac.exe 、java.exe 等等,這些我們后面會講到,現在不明白也沒有關系。所以我們講Java 是一個開發平台
3:Java 是一種軟件運行平台
3.1:什么是軟件的運行平台
如同我們需要陽光、空氣、水和食物才能正常存活一樣,軟件最終要能夠運行,也需要一系列的外部環境,來為軟件的運行提供支持,而提供這些支持的就是運行平台。
3.2:Java 是一種運行平台
Java 本身提供Java 軟件所需要的運行環境,Java 應用可運行在安裝了JRE(Java Runtime Environment) 的機器上,所以我們說Java 是一個運行平台。
JRE:Java Runtime Environment,Java 運行環境。
4:Java 是一種軟件部署環境
4.1:什么是軟件的部署
簡單地講,部署就是安裝,就是把軟件放置到相應的地方,並且進行相應的配置(一般稱作部署描述),讓軟件能夠正常運行起來。
4.2:Java 是一種軟件部署環境
Java 本身是一個開發的平台,開發后的Java 程序也是運行在Java 平台上的。也就是說,開發后的Java 程序也是部署在Java 平台上的,這個尤其在后面學習JEE(Java 的企業版)的時候,體現更為明顯。
二:Java 能干什么
Java 能做的事情很多,涉及到編程領域的各個方面。
1:桌面級應用:尤其是需要跨平台的桌面級應用程序。
先解釋一下桌面級應用:簡單的說就是主要功能都在我們本機上運行的程序,比如word 、excel 等運行在本機上的應用就屬於桌面應用。
2:企業級應用
先解釋一下企業級應用:簡單的說就是大規模的應用,一般使用人數較多,數據量較大,對系統的穩定性、安全性、可擴展性和可裝配性等都有比較高的要求。
這是目前Java 應用最廣泛的一個領域,幾乎一枝獨秀。包括各種行業應用,企業信息化,也包括電子政務等,領域涉及:辦公自動化OA,客戶關系管理CRM,人力資源HR,企業資源計划ERP 、知識管理KM、供應鏈管理SCM 、企業設備管理系統EAM 、產品生命周期管理PLM 、面向服務體系架構SOA 、商業智能BI、項目管理PM、營銷管理、流程管理WorkFlow 、財務管理……等等幾乎所有你能想到的應用。
3:嵌入式設備及消費類電子產品
包括無線手持設備、智能卡、通信終端、醫療設備、信息家電(如數字電視、機頂盒、電冰箱)、汽車電子設備等都是近年以來熱門的Java 應用領域,尤其是手機上的Java 應用程序和Java 游戲,更是普及。
4:除了上面提到的,Java 還有很多功能:如進行數學運算、顯示圖形界面、進行網絡操作、進行數據庫操作、進行文件的操作等等。
三:Java 有什么
Java 體系比較龐雜,功能繁多,這也導致很多人在自學Java 的時候總是感覺無法建立全面的知識體系,無法從整體上把握Java 的原因。在這里我們先簡單了解一下Java 的版本。
具體的Java 體系知識結構,將在后面詳細講述。
Java 分成三種版本,分別是Java 標准版(JSE) 、Java 微縮版(JME) 和Java 企業版(JEE),每一種版本都有自己的功能和應用方向。
1:Java 標准版: JSE(Java Standard Edition)
JSE(JavaStandardEdition) 是Sun 公司針對桌面開發以及低端商務計算解決方案而開發的版本,例如:我們平常熟悉的Application 桌面應用程序。這個版本是個基礎,它也是我們平常開發和使用最多的技術,Java 的主要的技術將在這個版本中體現。本書主要講的就是JSE 。
2:Java 微縮版:JME(Java Micro Edition)
JME(Java ,Micro Edition) 是對標准版JSE 進行功能縮減后的版本,於1999 年6 月由Sun Microsystems 第一次推向Java 團體。它是一項能更好滿足Java 開發人員不同需求的廣泛倡議的一部分。Sun Microsystems 將JME 定義為“一種以廣泛的消費性產品為目標的高度優化的Java 運行時環境,包括尋呼機、移動電話、可視電話、數字機頂盒和汽車導航系統。”
JME 是致力於消費產品和嵌入式設備的開發人員的最佳選擇。盡管早期人們對它看好而且Java 開發人員團體中的熱衷人士也不少,然而,JME 最近才開始從其影響更大的同屬產品JEE 和JSE 的陰影中走出其不成熟期。
JME 在開發面向內存有限的移動終端(例如尋呼機、移動電話)的應用時,顯得尤其實用。因為它是建立在操作系統之上的,使得應用的開發無須考慮太多特殊的硬件配置類型或操作系統。因此,開發商也無須為不同的終端建立特殊的應用,制造商也只需要簡單地使它們的操作平台可以支持JME 便可。
3:Java 企業版:JEE(Java Enterprise Edition)
JEE(Java Enterprise Edition) 是一種利用Java 平台來簡化企業解決方案的開發、部署和管理相關的復雜問題的體系結構。JEE 技術的基礎就是核心Java 平台或Java 平台的標准版,JEE 不僅鞏固了標准版中的許多優點,例如“編寫一次、隨處運行”的特性、方便存取數據庫的JDBC API 、CORBA 技術以及能夠在Internet 應用中保護數據的安全模式等等,同時還提供了對EJB(Enterprise JavaBeans) 、JavaServletsAPI 、JSP(JavaServer Pages) 以及XML 技術的全面支持。其最終目的就是成為一個能夠使企業開發者大幅縮短投放市場時間的體系結構。
JEE 體系結構提供中間層集成框架來滿足無需太多費用而又需要高可用性、高可靠性以及可擴展性的應用的需求。通過提供統一的開發平台,JEE 降低了開發多層應用的費用和復雜性,同時提供對現有應用程序集成強有力支持,完全支持Enterprise Java Beans ,有良好的向導支持打包和部署應用,添加了目錄支持,增強了安全機制,提高了性能。
JEE 是對標准版進行功能擴展,提供一系列功能,用來解決進行企業應用開發中所面臨的復雜的問題。具體的我們會放到后面JEE 的課程去講。
4:三個版本之間的關系
JEE 幾乎完全包含JSE 的功能,然后在JSE 的基礎上添加了很多新的功能。JME 主要是JSE 的功能子集,然后再加上一部分額外添加的功能。
如下圖所示:
Java 的API 類庫之中有一組所謂的核心類(CoreClass,即java.*),在核心類之外還有所謂的擴充類(ExtendedClass,即javax.*) 。根據對這兩種類的支持程度,進而區分出幾種不同的Java 版本。
我們必須以Java Standard Edition(JSE) 作為基准,這個版本做了所有Java 標准規格之中所定義的核心類,也支持所有的Java 基本類。JSE 定位在客戶端程序的應用上。
從JSE 往外延伸,其外面為Java Enterprise Edition(JEE),此版本除了支持所有的標准核心類外,而且還增加了許多支持企業內部使用的擴充類,支持Servlet/JSP 的javax.servlet.* 類、支持Enterprise Java Bean 的javax.ejb.* 類。當然,JEE 必定支持所有的Java 基本類。JEE 定位在服務器端(server-side) 程序的應用上。
從JSE 向內看,是JavaMicro Edition(JME),它所支持的只有核心類的子集合,在JME CLDC 的規格之中,只支持java.lang.* 、java.io.* 、以及java.util.* 這些類。此版本也增加了一些支持“微小裝置”的擴充類,如javax.microedition.io.* 類。然而,此版本並不支持所有的Java 基本類,就標准的JMECLDC,也就是能在PalmOS 上執行的KVM(KVirtualMachine) 來說,它就不支持屬於浮點數(float、double) 的Java 基本類。JME 定位在嵌入式系統的應用上。
最里層,還有一個Java 的SmartCard 版本,原本在Java 的文件之中並沒有這樣定義,但是將它畫在JME 內部是很合理的。因為SmartCard 版本只支持java.lang.* 這個核心類,比起JME 所支持的核心類更少,但它也有屬於自己的擴充類,如javacard.* 、javacardx.* 這些類。SmartCard 版本只支持Boolean 與Byte這兩種Java基本類,此版本定位在SmartCard 的應用上。
四:Java 技術三大特性
1:虛擬機
Java 虛擬機JVM(Java Virtual Machine)在Java 編程里面具有非常重要的地位,約相當於前面學到的Java 運行環境,虛擬機的基本功能如下:
1.1 尋找和裝載class 文件
1.2 class文件的運行環境
1.3 進行運行期間垃圾回收
1.4 提供與硬件交互的平台
虛擬機是Java 平台無關的保障,正是因為有虛擬機這個中間層,Java 才能夠實現與平台無關。虛擬機就好比是一個Java 運行的基本平台,所有的Java 程序都運行在虛擬機上.
2:垃圾回收
在程序運行的過程中,存在被分配了的內存塊不再被需要的情況,那么這些內存塊對程序來講就是垃圾。產生了垃圾,自然就需要清理這些垃圾,更為重要的是需要把這些垃圾所占用的內存資源,回收回來,加以再利用,從而節省資源,提高系統性能。
在C,C++ 或其它語言中,程序員負責釋放內存。有時,這是一件很困難的事情。因為你並不總是事先知道內存應在何時被釋放。當在系統中沒有能夠被分配的內存時,可導致程序癱瘓,這種程序被稱作具有內存漏洞。
Java 編程語言解除了程序員釋放內存的責任。它可提供一種系統級線程以跟蹤每一次內存的分配情況。在Java 虛擬機的空閑周期,垃圾收集線程檢查並釋放那些可被釋放的內存。垃圾收集在Java 技術程序的生命周期中自動進行,它解除了釋放內存的要求,這樣能夠有效避免內存漏洞和內存泄露
3:代碼安全
Java 如何保證編寫的代碼是安全可靠的呢?
(1):第一關:編寫的代碼首先要被編譯成為class 文件,如果代碼寫得有問題,編譯期間就會發現,然后提示有編譯錯誤,無法編譯通過。
(2):第二關:通過編譯關后,在類裝載的時候,還會進行類裝載檢查,把本機上的類和網絡資源類相分離,在調入類的時候進行檢查,因而可以限制任何“特洛伊木馬”的應用。
(3):第三關:類裝載后,在運行前,還會進行字節碼校驗,以判斷你的程序是安全的。
(4):第四關:如果你的程序在網絡上運行,還有沙箱(Sand Box)的保護,什么是沙箱呢?就是如果你的程序沒有獲得授權,只能在沙箱限定的范圍內運行,是不能夠訪問本地資源的,從而保證安全性。
五:閑話Java
1:Java 歷史
在上世紀90 年代初,sun 公司有一個叫做Green 的項目,目的是為家用消費電子產品開發一個分布式代碼系統,這樣就可以對家用電器進行控制,和它們進行信息交流。詹姆斯·高斯林(JamesGosling)等人基於C++ 開發一種新的語言Oak(Java 的前身)。Oak 是一種用於網絡的精巧而安全的語言。Sun 公司曾依此投標一個交互式電視項目,但結果是被SGI 打敗,Sun 打算拋棄Oak。隨着互聯網的發展,Sun 看到了Oak 在計算機網絡上的廣闊應用前景,於是改造Oak,在1995 年5 月以“Java”的名稱正式發布,從此Java 走上繁榮之路。
當然提到Java 歷史,不得不提的一個故事就是Java 的命名。開始“Oak”的命名是以項目小組辦公室外的樹而得名,但是Oak 商標被其他公司注冊了,必須另外取一個名字,傳說有一天,幾位Java 成員組的會員正在討論給這個新的語言取什么名字,當時他們正在咖啡館喝着Java( 爪哇)咖啡,有一個人靈機一動說就叫Java 怎樣,得到了其他人的贊同,於是,Java 這個名字就這樣傳開了。當然對於傳說,了解一下就好了,不必過於認真。
2:Java 大事記
作為學習Java 的人士,對Java 歷史上發生的大事件有一個了解是應該的。
JDK(Java Software Develop Kit):Java 軟件開發工具包。JDK 是Java 的核心,包括了Java 運行環境,一系列Java 開發工具和Java 基礎的類庫。目前主流的JDK 是Sun 公司發布的JDK,除了Sun 之外,還有很多公司和組織都開發了自己的JDK,例如IBM 公司開發的JDK,BEA 公司的Jrocket,還有GNU 組織開發的JDK 等等。
時間 |
事件 |
1995 年5 月23 日 |
Java 語言誕生 |
1996 年1 月 |
第一個JDK—JDK1.0 誕生 |
1997 年2 月18 日 |
JDK1.1 發布 |
1998 年12 月8 日 |
Java2 企業平台J2EE 發布 |
1999 年6 月 |
Sun 發布Java 三個版本:標准版J2SE,企業版J2EE,微型版J2ME |
2004 年9 月30 日 |
JavaSE5.0 發布 |
2006 年12 月 |
JavaSE6.0 發布 |
3:Java 特點
簡單地說,Java 具有如下特點:簡單的、面向對象、平台無關、多線程、分布式、安全、高性能、可靠的、解釋型、自動垃圾回收等特點。
這里只解釋一下平台無關和分布式,其余的在后面會逐步接觸到。
3.1:平台無關
所謂平台無關指的是:用Java 寫的程序不用修改就可在不同的軟硬件平台上運行。這樣就能實現同樣的程序既可以在Windows 下運行,到了Unix 或者Linux 環境不用修改就直接可以運行了。Java 主要靠Java 虛擬機(JVM)實現平台無關性。
平台無關性就是一次編寫,到處運行:Write Once, Run Anywhere
3.2:分布式
分布式指的是:軟件由很多個可以獨立執行的模塊組成,這些模塊被分布在多台計算機上,可以同時運行,對外看起來還是一個整體。也就是說,分布式能夠把多台計算機集合起來就像一台計算機一樣,從而提供更好的性能。
4:Java 標准組織——JCP
JCP(Java Community Process) 是一個開放的國際組織,成立於1995 年,主要職能是發展和更新Java 技術規范、參考實現(RI)、技術兼容包(TCK)。Java 技術和JCP 兩者的原創者都是SUN 計算機公司。組織成員可以提交JSR(Java Specification Requests),通過討論、認可、審核以后,將進入到下一版本的規范里面。
也就是說JCP 是目前Java 技術發展事實上的控制者和領導者。