Java (計算機編程語言)

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優(yōu)雅的思維方式進行復雜的編程[1]? 。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態(tài)性等特點[2]? 。Java可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序等[3]? 。

中文名 爪哇 外文名Java 俗? ? 語 咖啡 現公司 Oracle 推出時間 1995年5月


JAVA

20世紀90年代,硬件領域出現了單片式計算機系統(tǒng),這種價格低廉的系統(tǒng)一出現就立即引起了自動控制領域人員的注意,因為使用它可以大幅度提升消費類電子產品(如電視機頂盒、面包烤箱、移動電話等)的智能化程度。Sun公司為了搶占市場先機,在1991年成立了一個稱為Green的項目小組,帕特里克、詹姆斯·高斯林、麥克·舍林丹和其他幾個工程師一起組成的工作小組在加利福尼亞州門洛帕克市沙丘路的一個小工作室里面研究開發(fā)新技術,專攻計算機在家電產品上的嵌入式應用。

由于C++所具有的優(yōu)勢,該項目組的研究人員首先考慮采用C++來編寫程序。但對于硬件資源極其匱乏的單片式系統(tǒng)來說,C++程序過于復雜和龐大。另外由于消費電子產品所采用的嵌入式處理器芯片的種類繁雜,如何讓編寫的程序跨平臺運行也是個難題。為了解決困難,他們首先著眼于語言的開發(fā),假設了一種結構簡單、符合嵌入式應用需要的硬件平臺體系結構并為其制定了相應的規(guī)范,其中就定義了這種硬件平臺的二進制機器碼指令系統(tǒng)(即后來成為“字節(jié)碼”的指令系統(tǒng)),以待語言開發(fā)成功后,能有半導體芯片生產商開發(fā)和生產這種硬件平臺。對于新語言的設計,Sun公司研發(fā)人員并沒有開發(fā)一種全新的語言,而是根據嵌入式軟件的要求,對C++進行了改造,去除了留在C++的一些不太實用及影響安全的成分,并結合嵌入式系統(tǒng)的實時性要求,開發(fā)了一種稱為Oak的面向對象語言。

由于在開發(fā)Oak語言時,尚且不存在運行字節(jié)碼的硬件平臺,所以為了在開發(fā)時可以對這種語言進行實驗研究,他們就在已有的硬件和軟件平臺基礎上,按照自己所指定的規(guī)范,用軟件建設了一個運行平臺,整個系統(tǒng)除了比C++更加簡單之外,沒有什么大的區(qū)別。1992年的夏天,當Oak語言開發(fā)成功后,研究者們向硬件生產商進行演示了Green操作系統(tǒng)、Oak的程序設計語言、類庫和其硬件,以說服他們使用Oak語言生產硬件芯片,但是,硬件生產商并未對此產生極大的熱情。因為他們認為,在所有人對Oak語言還一無所知的情況下,就生產硬件產品的風險實在太大了,所以Oak語言也就因為缺乏硬件的支持而無法進入市場,從而被擱置了下來。

1994年6、7月間,在經歷了一場歷時三天的討論之后,團隊決定再一次改變了努力的目標,這次他們決定將該技術應用于萬維網。他們認為隨著Mosaic瀏覽器的到來,因特網正在向同樣的高度互動的遠景演變,而這一遠景正是他們在有線電視網中看到的。作為原型,帕特里克·諾頓寫了一個小型萬維網瀏覽器WebRunner。[4]

1995年,互聯(lián)網的蓬勃發(fā)展給了Oak機會。業(yè)界為了使死板、單調的靜態(tài)網頁能夠“靈活”起來,急需一種軟件技術來開發(fā)一種程序,這種程序可以通過網絡傳播并且能夠跨平臺運行。于是,世界各大IT企業(yè)為此紛紛投入了大量的人力、物力和財力。這個時候,Sun公司想起了那個被擱置起來很久的Oak,并且重新審視了那個用軟件編寫的試驗平臺,由于它是按照按照嵌入式系統(tǒng)硬件平臺體系結構進行編寫的,所以非常小,特色適用于網絡上的傳輸系統(tǒng),而Oak也是一種精簡的語言,程序非常小,適合在網絡上傳輸。Sun公司首先推出了可以嵌入網頁并且可以隨同網頁在網絡上傳輸的Applet(Applet是一種將小程序嵌入到網頁中進行執(zhí)行的技術),并將Oak更名為Java(在申請注冊商標時,發(fā)現Oak已經被人使用了,再想了一系列名字之后,最終,使用了提議者在喝一杯Java咖啡時無意提到的Java詞語)。5月23日,Sun公司在Sun world會議上正式發(fā)布Java和HotJava瀏覽器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微軟等各大公司都紛紛停止了自己的相關開發(fā)項目,競相購買了Java使用許可證,并為自己的產品開發(fā)了相應的Java平臺。[5-6]

1996年1月,Sun公司發(fā)布了Java的第一個開發(fā)工具包(JDK 1.0),這是Java發(fā)展歷程中的重要里程碑,標志著Java成為一種獨立的開發(fā)工具。9月,約8.3萬個網頁應用了Java技術來制作。10月,Sun公司發(fā)布了Java平臺的第一個即時(JIT)編譯器。

1997年2月,JDK 1.1面世,在隨后的3周時間里,達到了22萬次的下載量。4月2日,Java One會議召開,參會者逾一萬人,創(chuàng)當時全球同類會議規(guī)模之紀錄。9月,Java Developer Connection社區(qū)成員超過10萬。

1998年12月8日,第二代Java平臺的企業(yè)版J2EE發(fā)布。1999年6月,Sun公司發(fā)布了第二代Java平臺(簡稱為Java2)的3個版本:J2ME(Java2 Micro Edition,Java2平臺的微型版),應用于移動、無線及有限資源的環(huán)境;J2SE(Java 2 Standard Edition,Java 2平臺的標準版),應用于桌面環(huán)境;J2EE(Java 2Enterprise Edition,Java 2平臺的企業(yè)版),應用于基于Java的應用服務器。Java 2平臺的發(fā)布,是Java發(fā)展過程中最重要的一個里程碑,標志著Java的應用開始普及。

1999年4月27日,HotSpot虛擬機發(fā)布。HotSpot虛擬機發(fā)布時是作為JDK 1.2的附加程序提供的,后來它成為了JDK 1.3及之后所有版本的Sun JDK的默認虛擬機[7]? 。

2000年5月,JDK1.3、JDK1.4和J2SE1.3相繼發(fā)布,幾周后其獲得了Apple公司Mac OS X的工業(yè)標準的支持。2001年9月24日,J2EE1.3發(fā)布。2002年2月26日,J2SE1.4發(fā)布。自此Java的計算能力有了大幅提升,與J2SE1.3相比,其多了近62%的類和接口。在這些新特性當中,還提供了廣泛的XML支持、安全套接字(Socket)支持(通過SSL與TLS協(xié)議)、全新的I/OAPI、正則表達式、日志與斷言。2004年9月30日,J2SE1.5發(fā)布,成為Java語言發(fā)展史上的又一里程碑。為了表示該版本的重要性,J2SE 1.5更名為Java SE 5.0(內部版本號1.5.0),代號為“Tiger”,Tiger包含了從1996年發(fā)布1.0版本以來的最重大的更新,其中包括泛型支持、基本類型的自動裝箱、改進的循環(huán)、枚舉類型、格式化I/O及可變參數。

2005年6月,在Java One大會上,Sun公司發(fā)布了Java SE 6。此時,Java的各種版本已經更名,已取消其中的數字2,如J2EE更名為JavaEE,J2SE更名為JavaSE,J2ME更名為JavaME。[8]

2006年11月13日,Java技術的發(fā)明者Sun公司宣布,將Java技術作為免費軟件對外發(fā)布。Sun公司正式發(fā)布的有關Java平臺標準版的第一批源代碼,以及Java迷你版的可執(zhí)行源代碼。從2007年3月起,全世界所有的開發(fā)人員均可對Java源代碼進行修改[9]? 。

Java創(chuàng)始人之一:詹姆斯·高斯林

Java創(chuàng)始人之一:詹姆斯·高斯林

2009年,甲骨文公司宣布收購Sun[10]? 。2010年,Java編程語言的共同創(chuàng)始人之一詹姆斯·高斯林從Oracle公司辭職。2011年,甲骨文公司舉行了全球性的活動,以慶祝Java7的推出,隨后Java7正式發(fā)布。2014年,甲骨文公司發(fā)布了Java8正式版[11]? 。

編程開發(fā)編輯

編程環(huán)境

Java概念圖

Java概念圖

JDK(Java Development Kit)稱為Java開發(fā)包或Java開發(fā)工具,是一個編寫Java的Applet小程序和應用程序的程序開發(fā)環(huán)境。JDK是整個Java的核心,包括了Java運行環(huán)境(Java Runtime Envirnment),一些Java工具和Java的核心類庫(Java API)。不論什么Java應用服務器實質都是內置了某個版本的JDK。主流的JDK是Sun公司發(fā)布的JDK,除了Sun之外,還有很多公司和組織都開發(fā)了自己的JDK,例如,IBM公司開發(fā)的JDK,BEA公司的Jrocket,還有GNU組織開發(fā)的JDK[13]? 。

另外,可以把Java API類庫中的Java SE API子集和Java虛擬機這兩部分統(tǒng)稱為JRE(JAVA Runtime Environment),JRE是支持Java程序運行的標準環(huán)境[14]? 。

JRE是個運行環(huán)境,JDK是個開發(fā)環(huán)境。因此寫Java程序的時候需要JDK,而運行Java程序的時候就需要JRE。而JDK里面已經包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運行Java程序。但由于JDK包含了許多與運行無關的內容,占用的空間較大,因此運行普通的Java程序無須安裝JDK,而只需要安裝JRE即可[15]? 。

編程工具

Eclipse:一個開放源代碼的、基于Java的可擴展開發(fā)平臺[16]? 。

NetBeans:開放源碼的Java集成開發(fā)環(huán)境,適用于各種客戶機和Web應用。

IntelliJ IDEA:在代碼自動提示、代碼分析等方面的具有很好的功能。[17]

MyEclipse:由Genuitec公司開發(fā)的一款商業(yè)化軟件,是應用比較廣泛的Java應用程序集成開發(fā)環(huán)境[18]? 。

EditPlus:如果正確配置Java的編譯器“Javac”以及解釋器“Java”后,可直接使用EditPlus編譯執(zhí)行Java程序[19]? 。

語言特點編輯

1.簡單性

Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特征,并且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。Java能夠自動處理對象的引用和間接引用,實現自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發(fā)上。

2.面向對象

Java是一個面向對象的語言。對程序員來說,這意味著要注意應中的數據和操縱數據的方法(method),而不是嚴格地用過程來思考。在一個面向對象的系統(tǒng)中,類(class)是數據和操作數據的方法的集合。數據和方法一起描述對象(object)的狀態(tài)和行為。每一對象是其狀態(tài)和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。Java程序是用類來組織的。

Java還包括一個類的擴展集合,分別組成各種程序包(Package),用戶可以在自己的程序中使用。例如,Java提供產生圖形用戶接口部件的類(java.awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(java.io包)和支持網絡功能的類(java.net包)。

3.分布性

Java設計成支持在網絡上應用,它是分布式語言。Java既支持各種層次的網絡連接,又以Socket類支持可靠的流(stream)網絡連接,所以用戶可以產生分布式的客戶機和服務器。

網絡變成軟件應用的分布運載工具。Java程序只要編寫一次,就可到處運行。

4.編譯和解釋性

Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機器碼。Java字節(jié)碼提供對體系結構中性的目標文件格式,代碼設計成可有效地傳送程序到多個平臺。Java程序可以在任何實現了Java解釋程序和運行系統(tǒng)(run-time system)的系統(tǒng)上運行。

在一個解釋性的環(huán)境中,程序開發(fā)的標準“鏈接”階段大大消失了。如果說Java還有一個鏈接階段,它只是把新類裝進環(huán)境的過程,它是增量式的、輕量級的過程。因此,Java支持快速原型和容易試驗,它將導致快速程序開發(fā)。這是一個與傳統(tǒng)的、耗時的“編譯、鏈接和測試”形成鮮明對比的精巧的開發(fā)過程。

5.穩(wěn)健性

Java

Java

Java原來是用作編寫消費類家用電子產品軟件的語言,所以它是被設計成寫高可靠和穩(wěn)健軟件的。Java消除了某些編程錯誤,使得用它寫可靠軟件相當容易。

Java是一個強類型語言,它允許擴展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風格的隱式聲明。這些嚴格的要求保證編譯程序能捕捉調用錯誤,這就導致更可靠的程序。

可靠性方面最重要的增強之一是Java的存儲模型。Java不支持指針,它消除重寫存儲和訛誤數據的可能性。類似地,Java自動的“無用單元收集”預防存儲漏泄和其它有關動態(tài)存儲分配和解除分配的有害錯誤。Java解釋程序也執(zhí)行許多運行時的檢查,諸如驗證所有數組和串訪問是否在界限之內。

異常處理是Java中使得程序更穩(wěn)健的另一個特征。異常是某種類似于錯誤的異常條件出現的信號。使用try/catch/finally語句,程序員可以找到出錯的處理代碼,這就簡化了出錯處理和恢復的任務。

6.安全性

Java的存儲分配模型是它防御惡意代碼的主要方法之一。Java沒有指針,所以程序員不能得到隱蔽起來的內幕和偽造指針去指向存儲器。更重要的是,Java編譯程序不處理存儲安排決策,所以程序員不能通過查看聲明去猜測類的實際存儲安排。編譯的Java代碼中的存儲引用在運行時由Java解釋程序決定實際存儲地址。

Java運行系統(tǒng)使用字節(jié)碼驗證過程來保證裝載到網絡上的代碼不違背任何Java語言限制。這個安全機制部分包括類如何從網上裝載。例如,裝載的類是放在分開的名字空間而不是局部類,預防惡意的小應用程序用它自己的版本來代替標準Java類。

7.可移植性

Java使得語言聲明不依賴于實現的方面。例如,Java顯式說明每個基本數據類型的大小和它的運算行為(這些數據類型由Java語法描述)。

Java環(huán)境本身對新的硬件平臺和操作系統(tǒng)是可移植的。Java編譯程序也用Java編寫,而Java運行系統(tǒng)用ANSIC語言編寫。

8.高性能

Java是一種先編譯后解釋的語言,所以它不如全編譯性語言快。但是有些情況下性能是很要緊的,為了支持這些情況,Java設計者制作了“及時”編譯程序,它能在運行時把Java字節(jié)碼翻譯成特定CPU(中央處理器)的機器代碼,也就是實現全編譯了。

Java字節(jié)碼格式設計時考慮到這些“及時”編譯程序的需要,所以生成機器代碼的過程相當簡單,它能產生相當好的代碼。

9.多線索性

Java是多線索語言,它提供支持多線索的執(zhí)行(也稱為輕便過程),能處理不同任務,使具有線索的程序設計很容易。Java的lang包提供一個Thread類,它支持開始線索、運行線索、停止線索和檢查線索狀態(tài)的方法。

Java的線索支持也包括一組同步原語。這些原語是基于監(jiān)督程序和條件變量風范,由C.A.R.Haore開發(fā)的廣泛使用的同步化方案。用關鍵詞synchronized,程序員可以說明某些方法在一個類中不能并發(fā)地運行。這些方法在監(jiān)督程序控制之下,確保變量維持在一個一致的狀態(tài)。

10.動態(tài)性

Java語言設計成適應于變化的環(huán)境,它是一個動態(tài)的語言。例如,Java中的類是根據需要載入的,甚至有些是通過網絡獲取的。[20]

工作原理編輯

工作原理

工作原理

由四方面組成:

(1)Java編程語言

(2)Java類文件格式

(3)Java虛擬機

(4)Java應用程序接口[21]

當編輯并運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟件(例如記事本、寫字板、UltraEdit等)或集成開發(fā)環(huán)境(Eclipse、MyEclipse等)在Java源文件中定義不同的類[22]? ,通過調用類(這些類實現了Java API)中的方法來訪問資源系統(tǒng),把源文件編譯生成一種二進制中間碼,存儲在class文件中,然后再通過運行與操作系統(tǒng)平臺環(huán)境相對應的Java虛擬機來運行class文件,執(zhí)行編譯產生的字節(jié)碼,調用class文件中實現的方法來滿足程序的Java API調用[6]? 。

語言基礎編輯

基本數據結構

在Java中有8種數據類型來存儲數值、字符和布爾值。

整數類型

整數型用來存儲整數數值,即沒有小數部分的數值??梢允钦龜?,也可以是負數。整數數據在Java程序中有3種表示形式,分別為十進制、八進制和十六進制。

整型數據根據它所占內容大小的不同可分為4種類型。

數據類型 內存

byte 8位

short 16位

int 32位

long 64位

浮點類型

數據類型 內存

float 32位

double 64位

字符類型

字符類型用于存儲單個字符,占用16位(兩個字節(jié))的內存空間。在定義字符型變量時,要以單引號表示。使用char關鍵字可定義字符變量。

數據類型 內存

char 16位

布爾類型

布爾類型又稱邏輯類型,通過關鍵字boolean來定義布爾類型變量,只有只有true和false兩個取值,分別代表布爾邏輯中的“真”和“假”。布爾類型通常被用在流程控制中作為判斷條件。

關鍵字

關鍵字

含義

abstract

抽象類或方法

assert

用來查找內部程序錯誤

break 跳出一個switch或循環(huán)

byte 8位整數類型

case switch的一個分支

catch

捕獲異常的try塊子句

class 定義一個類類型

continue 在循環(huán)末尾繼續(xù)

default switch的缺省語句

do do/while循環(huán)最前面的語句

double 雙精度浮點數類型

else

if語句的else子句

enum

枚舉類型

extends

定義一個類的父類

final

一個常量,或不能覆蓋的一個類或方法

finally

try塊中總會執(zhí)行的部分

float

單精度浮點數類型

for

一個循環(huán)類型

if

一個條件語句

implements

定義一個類實現的接口

import

導入一個包

instanceof

測試一個對象是否是某個類的實例

int

32位整型數

interface

接口,一種抽象類型,僅有方法和常量的定義

long

64位長整數型

native

由宿主系統(tǒng)實現的一個方法

new

分配新的類實例

null

一個空引用

package

包含類的一個包

private

表示私有字段,或者方法等,只能從類內部訪問

protected

表示保護類型字段

public

表示共有屬性或者方法

return

從一個方法中返回

short

16位整數類型

static

這個特性是這個類特有的,而不屬于這個類的對象

strictfp

對浮點數計算使用嚴格的規(guī)則

super

超類對象或構造函數

switch

選擇語句

synchronized

對線程而言是原子的方法或代碼塊

this

當前類的一個方法或構造函數的隱含參數

throw

拋出一個異常

throws

一個方法可能拋出的異常

transient

標志非永久性的數據

try

捕獲異常的代碼塊

void

標記方法不返回任何值

volatile

標記字段可能會被多個線程同時訪問,而不做同步

while

一種循環(huán)

關鍵字參考資料來源[23]

運算符

運算符是一些特殊的符號,主要用于數學函數、一些類型的賦值語句和邏輯比較方面。

賦值運算符

賦值運算符以符號“=”表示,它是一個二元運算符(對兩個操作數作處理),其功能是將右方操作數所含的值賦給左方的操作數。

例如:

1

int a = 100;

算術運算符

運算符 說明

+ 加

- 減

* 乘

/ 除

% 取余數

自增和自減運算符

自增和自減是單目運算符,可以放在操作元之前,也可以放在操作元之后。操作元必須是一個整型或浮點型變量。自增、自減運算符的作用是使變量的值增1或減1。放在操作元前面的自增、自減運算符,會先將變量的值加1或減1,然后再使該變量參與表達式的運算。放在操作元后面的自增、自減運算符,會先使變量參與表達式的運算,然后再將該變量的值加1或減1。

例如:

假設a=5

1

2

b=++a;//先將a的值加1,然后賦值給b,此時a的值為6,b的值為6

b=a++;//先將a的值賦值給b,再將a的值變?yōu)?,此時a的值為6,b的值為5

比較運算符

比較運算符屬于二元運算符,用于程序中的變量之間,變量和自變量之間以及其他類型的信息之間的比較。比較運算符的運算結果是boolean型。當運算符對應的關系成立時,運算的結果為true,否則為false。比較運算符共有6個,通常作為判斷的依據用于條件語句中。

運算符 說明

> 比較左方是否大于右方

< 比較左方是否小于右方

== 比較左方是否等于右方

> = 比較左方是否大于等于右方

<= 比較左方是否小于等于右方

!= 比較左方是否不等于右方

邏輯運算符

運算符 作用

&& 邏輯與

|| 邏輯或

! 邏輯非

語言基礎參考資料來源[24]

程序舉例

1

2

3

4

5

6

7

8

9

/*一個簡單的Java應用程序,顯示內容:Hello World!

文件名為Hello.java*/

class Hello{

//程序開始于main()

public static void main(String args[]){

System.out.println("Hello World!");

}

}

main方法,正如注釋所說,這是程序開始執(zhí)行的第一行。對于一個Java應用程序來說,main方法是必需的,Java解釋器在沒有生成任何對象的情況下,以main作為入口來執(zhí)行程序。每個類中可以定義多個方法,但main方法只能有一個。關鍵字public表示訪問權限,指明所有的類都可以使用這一方法。本例中,main必須被定義為public類型,因為當程序開始執(zhí)行時它需要被它的類之外的代碼調用。關鍵字static指明該方法是一個類方法。關鍵字void指明main()方法不返回任何值。main方法圓括號中定義的String args[]是傳送給main方法的參數,參數名為args,它是類String的一個對象。方法的參數用“類名參數名”來指定,多個參數間用逗號分隔。該行的最后一個字符是“{”,它表示了main程序體的開始,一個方法中包含的所有代碼都將包括在這對花括號中間。另外,main僅是解釋器開始工作的地方,一個復雜的程序可能包含幾十個類,但這些類僅需要一個main方法。[25]

語言標準編輯

1997年11月17日,國際標準化組織(ISO)同意采納Sun公司的專利技術——Java作為ISO標準。JAVA作為一個技術標準供公眾無償使用。根據ISO的批準,Sun公司將可提交JAVA的標準化平臺規(guī)范。[26]

發(fā)布時間 名稱

2000年11月15 ISO/TS 10303-27:2000

2006年5月15 ISO/IEC 19777-2:2006

2014年7月15 ISO/IEC TR 13066-6:2014

2015年8月15

ISO 20210:2015

2016年3月15

ISO/IEC 30106-2:2016

語言標準參考資料[27-31]

語言規(guī)范編輯

JCP(Java Community Process)是一個開放的國際組織,主要由Java開發(fā)者以及被授權者組成,職能是發(fā)展和更新Java技術規(guī)范、參考實現(RI)、技術兼容包(TCK)。

JCP維護的規(guī)范包括Java ME、Java SE、Java EE、XML、OSS、JAIN等。組織成員可以提交JSR(Java Specification Requests),通過特定程序以后,進入到下一版本的規(guī)范里面。

JSR是早期提議和最終發(fā)布的Java平臺規(guī)范的具體描述。通常,一個新的JSR的提出是為了增加或者規(guī)范Java平臺的功能。某個具體的JSR由專家組共同來制定,工作由組長協(xié)調。例如,CLDC1.0(Connected Limited Device Configuration,JSR30)由Sun公司的Antero Taivalsaari擔任組長,同時專家組的成員還包括Siemens、Motorola、Nokia、Symbian等。Java ME平臺規(guī)范是在JSR68中定義的,規(guī)范組長是Sun公司的Jon Courtney。

JSR完成后,相關的規(guī)范及JavaAPI會在JCP的官方網站發(fā)布。設備制造商可以在自己的產品中實現某個JSR,如MIDP2.0(JSRll8)。但是這些都必須要通過TCK(Technology Compatibility Kit)測試以確保技術兼容性。[32]

按照技術類別可以分成以下幾類:

1、J2EE平臺規(guī)范[33]

2、J2SE平臺規(guī)范[34]

3、J2ME平臺規(guī)范[35]

4、運營支持系統(tǒng)規(guī)范(OSS)[36]

5、綜合網絡的Java 應用(JAIN)[37]

6、XML 操作規(guī)范[38]

技術應用編輯

1、Android應用

許多的 Android應用都是Java程序員開發(fā)者開發(fā)。雖然 Android運用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語言所編寫。相當一部分的手機中都支持JAVA游戲,這就使很多非編程人員都認識了JAVA。

2、在金融業(yè)應用的服務器程序

Java在金融服務業(yè)的應用非常廣泛,很多第三方交易系統(tǒng)、銀行、金融機構都選擇用Java開發(fā),因為相對而言,Java較安全[39]? 。大型跨國投資銀行用Java來編寫前臺和后臺的電子交易系統(tǒng),結算和確認系統(tǒng),數據處理項目以及其他項目。大多數情況下,Java被用在服務器端開發(fā),但多數沒有任何前端,它們通常是從一個服務器(上一級)接收數據,處理后發(fā)向另一個處理系統(tǒng)(下一級處理)。

3、網站

Java 在電子商務領域以及網站開發(fā)領域占據了一定的席位。開發(fā)人員可以運用許多不同的框架來創(chuàng)建web項目,SpringMVC,Struts2.0以及frameworks。即使是簡單的 servlet,jsp和以struts為基礎的網站在政府項目中也經常被用到。例如醫(yī)療救護、保險、教育、國防以及其他的不同部門網站都是以Java為基礎來開發(fā)的。

4、嵌入式領域

Java在嵌入式領域發(fā)展空間很大。在這個平臺上,只需130KB就能夠使用Java技術(在智能卡或者傳感器上)。

5、大數據技術

Hadoop以及其他大數據處理技術很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。

6、高頻交易的空間

Java平臺提高了這個平臺的特性和即使編譯,他同時也能夠像 C++ 一樣傳遞數據。正是由于這個原因,Java成為的程序員編寫交易平臺的語言,因為雖然性能不比C++,但開發(fā)人員可以避開安全性,可移植性和可維護性等問題。

7、科學應用

Java在科學應用中是很好選擇,包括自然語言處理。最主要的原因是因為Java比C++或者其他語言相對其安全性、便攜性、可維護性以及其他高級語言的并發(fā)性更好。[40]

學習指南編輯

考試

Sun公司的Java認證共有以下四種:Java程序員(SCJP)、Java開發(fā)員(SCJP)、Java Web組件的開發(fā)(SCWD)和Java2企業(yè)級設計師企業(yè)級技術(SCJA)。中國開展較為普遍的Java認證考試為前兩種,其中,Java程序員的認證考試以Sun公司指定的JavaSL-275為教材,考試號為310-025。Java開發(fā)員的認證考試以Sun指定的JavaSL-285為教材,機考部分的考試號為310-027。[41]

Sun Certified Java Programmer(SCJP)

Java 程序員認證,測試Java 程序設計的要領和能力,內容側重于Java 的語法及JDK(Java Development Kit)。

Sun Certified Java Developer(SCJD)

Java 開發(fā)員認證,進一步測試用Java 開發(fā)應用程序的能力。必須先完成一個程序設計的項目后,再回答與此項目相關的幾個問題。

Sun Certified Web Component Developer for Java 2Platform Enterprise Edition(SCWD)

Web 組件開發(fā)員認證,測試技術人員對Java Servlets 和JSP(Java Server Page)的程序開發(fā)技巧。

Sun Certified Enterprise Architect for J2EE Technology(SCAJ)

Java2 企業(yè)級設計師認證是Java 最高級的認證,測試對J2EE 架構及其他系統(tǒng)整合的相關技術經驗及能力。[42]

Sun公司定制的Java程序員課程的標準課件的培訓期為5天(30個學時)。培訓期間,講師使用Sun公司指定教材,全面系統(tǒng)地講述課程的內容,并根據各知識點所需要掌握的深度,有層次、有重點、有目的地指導學員的學習。同時,對各種題型的分析和講解更能幫助學員直觀、準確地了解java認證考試。[41]

教材

《Java從入門到精通(第3版)》:從初學者角度出發(fā),通過通俗易懂的語言、豐富多彩的實例,詳細介紹了使用Java語言進行程序開發(fā)需要掌握的知識[3]? 。

《Java編程語言(第3版)》:該書向熟悉基本編程概念的人講述Java編程語言。該書解釋了Java語言,但不是晦澀的正式介紹,也沒有覆蓋Java語言的所有方面[43]? 。

《瘋狂Java講義》:該書深入介紹了Java編程的相關方面,全書內容覆蓋了Java的基本語法結構、Java的面向對象特征、Java集合框架體系、Java泛型、異常處理、Java GUI編程、JDBC數據庫編程、Java注釋、Java的IO流體系、Java多線程編程、Java網絡通信編程和Java反射機制[44]? 。

《Java編程思想(第4版)》:以JDK5.0為基礎,在第3版的基礎上,添加了新的語言特性,并且對第3版的結構進行了調整,使得所有章節(jié)的安排更加遵照循序漸進的特點,同時每一章的內容在分量上也都更加均衡,這使讀者能夠更加容易地閱讀本書并充分了解每章所講述的內容[45]? 。

《Java經典實例(第2版)》:本書囊括了許多有用的信息。然而,由于所涉及的主題廣泛,不可能對所有主題都進行詳盡地闡述。因此,本書還提供了相關的web站點與參考書籍。這也是為了本書的目標讀者:想學習更多Java的人[46]? 。

《Java語言程序設計》:該書是清華大學出版社《普通高校本科計算機專業(yè)特色教材精選》叢書之一,也是普通高等教育“十一五” 國家級規(guī)劃教材。該教材以培養(yǎng)應用型計算機人才為目標,立足課程改革和教材創(chuàng)新,在總結作者多年來從事Java語言教學工作經驗的基礎上形成了教材的核心內容。本教材可為普通高等院校計算機專業(yè)學生學習使用,也適用于自學[47]? 。

語言評價編輯

發(fā)展前景

Java

Java

計算機的誕生及廣泛應用推動了IT領域的發(fā)展,但21世紀的計算機早已不是訪問INTERNET的唯一的途徑。各類更具信息化的電子產品逐漸進入IT領域,推動了PC時代的大發(fā)展。由于各種消費信息的急劇增加,傳統(tǒng)的客戶機的各方面條件均不如PC,PC的發(fā)展對服務器的應用管理體統(tǒng)也提出了更高標準。Java語言完全滿足了PC的條件,在減少內存,直接在各類電子產品中運行,在網絡中可被任何設備所識別,充分利用網絡資源等方面有所突破創(chuàng)新,為PC時代的發(fā)展創(chuàng)造了有力條件。

隨著IT產業(yè)的發(fā)展,許多企業(yè)中的計算機應用程序也在隨之轉型,企業(yè)中所應用的計算機模式逐漸向客戶端較小、服務器隨之增大、數據庫的容量也在相應增加的方向轉變。此外,加上Java語言獨有的特點,根據其在各項服務器中應用程序的開發(fā)所占有的優(yōu)勢,企業(yè)版的J2SE為企業(yè)環(huán)境中計算機模式的應用提供了良好的平臺。

Java語言為與數據庫聯(lián)系緊密設計了Java servlet和SQL-J技術,以及JSP技術。隨著JSP技術的發(fā)展,使JAVA語言的網絡應用更為實際化、更高效快捷,成為IT產業(yè)常用的技術。JSP以Java語言作為其服務器端的使用語言,結合了JAVA SCRIPT等多種其他客戶端語言,使網絡瀏覽器更為方便的展現。[48]

在遠程網絡教學方面,由于JAVA改變了傳統(tǒng)的基于Microsoft Front Page或HTML語言制作的Web頁面形態(tài),使網絡遠程教學更加朝著動態(tài)、便捷化、安全化的方向發(fā)展,豐富了網絡遠程教學的手段和覆蓋面。[49]

貢獻及影響力

Java 語言是一門隨時代快速發(fā)展的計算機語言程序,其深刻展示了程序編寫的精髓,加上其簡明嚴謹的結構及簡潔的語法編寫為其將來的發(fā)展及維護提供了保障。由于提供了網絡應用的支持和多媒體的存取,會推動Internet和企業(yè)網絡的Web的應用[50]? 。另外,為了保持Java的增長和推進Java社區(qū)的參與,Sun公司在Java One開發(fā)者大會上宣布開放Java核心源代碼,以鼓勵更多的人參與到Java社團活動中。來自Java社團和IBM等全球技術合作伙伴兩方面的支持,Java技術在創(chuàng)新和社會進步上繼續(xù)發(fā)揮強有力的重要作用[51]? ,并且隨著其程序編寫難度的降低使得更多專業(yè)人員將精力放置于Java語言的編寫與框架結構的設計中[48]? 。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容