java

java (程序設計語言)
編輯
 
Java是一種能夠撰寫跨 平臺 應用 軟件的面向對象的 程序 設計 語言,是由 Sun Microsystems公司於1995年5月推出的Java程序設計語言和 Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具備卓越的通用性、高效性、平臺移植性和 安全性,普遍應用於我的 PC數據中心遊戲控制檯、 科學 超級計算機移動電話互聯網,同時擁有全球最大的開發者專業社羣。在全球雲計算和 移動互聯網的產業環境下,Java更具有了顯著優點和廣闊前景。
中文名
爪哇
外文名
Java
開發公司
Sun Microsystems
現公司
Oracle(收購了Sun公司)

目錄

1簡介php

  起源   組成   體系   優點

2基本概念html

3基本語法前端

4Java關鍵字java

5歷史發展python

  名字來源   語言起源   發展歷史   最新版本

6特色程序員

  語言特徵   主要特性   差別   優劣勢

7相關技術web

  主要服務   框架服務   開發工具   Java IDE

8架構設計正則表達式

  概念   平臺構架

9發展前景數據庫

  貢獻及影響   Java模擬器
 
 

1簡介

起源

Java是由 Sun Microsystems公司於 1995年5月推出的Java面向對象程序設計 語言(如下簡稱Java語言)和Java 平臺的總稱。由 James Gosling和同事們共同研發,並在1995年正式推出。用Java實現的 HotJava瀏覽器(支持Java applet)顯示了Java的魅力: 跨平臺、動態的 WebInternet計算。今後,Java被普遍接受並推進了 Web的迅速發展,經常使用的 瀏覽器均支持 Javaapplet。另外一方面,Java 技術也不斷更新。(2010年 Oracle公司收購了 SUN) [1]

組成

Java由四方面組成:
●Java 編程語言
●Java 文件格式
●Java 虛擬機( JVM)

體系

Java分爲三個體系JavaSE( J2SE)(Java2 Platform Standard Edition,java平臺標準版),JavaEE( J2EE)(Java 2 Platform,Enterprise Edition,java平臺 企業版),JavaME( J2ME)(Java 2 Platform Micro Edition,java平臺微型版)。

優點

與傳統 程序不一樣,Sun 公司在推出 Java 之際就將其做爲一種開放的 技術。全球數以萬計的 Java 開發 公司被要求所設計的 Java 軟件必須相互 兼容。「Java 語言靠羣體的力量而非公司的力量」是 Sun公司的口號之一,並得到了廣大軟件 開發商的認同。這與 微軟公司所倡導的注重精英和封閉式的模式徹底不一樣。
Sun 公司對 Java 編程語言的解釋是:Java  編程語言是個 簡單面向對象分佈式、解釋性、健壯、安全與系統無關、可移植、高性能、 多線程和動態的語言。
Java 平臺是基於 Java 語言的平臺。這樣的平臺很是流行。所以 微軟公司推出了與之競爭的 .NET平臺以及模仿 JavaC#語言。

2基本概念

抽象類:規定一個或多個 抽象方法的類別自己必須定義爲 abstract抽象類只是用來派生子類,而不能用它來建立對象。
final類:又稱「最終類」,它只能用來建立對象,而不能被 繼承,與抽象類恰好相反,並且抽象類與最終類不能同時修飾同一個類。
:Java中的包是相關類和接口的 集合,建立包須使用關鍵字package。
多態類:在java中,對象變量是多態的。而java中不支持多重繼承。
接口:Java中的接口是一系列方法的聲明,是一些方法特徵的集合,一個接口只有方法的特徵沒有方法的實現,所以這些方法能夠在不一樣的地方被不一樣的類實現,而這些實現能夠具備不一樣的行爲(功能)。
Java中的每個類都是從Object類擴展而來的。
object類中的 equaltoString方法。
equal用於測試一個對象是否同另外一個對象相等。
toString返回一個表明該對象的字符串,每個類都會從Object類繼承該方法,有些類重寫了該方法,以便返回當前狀態的正確表示。
(toString 方法是一個很重要的方法)
通用編程:任何類類型的全部值均可以同object類型的 變量來代替。
封裝:就是把數據和行爲結合起在一個包中,並對對象使用者隱藏數據的實現過程,一個對象中的數據叫他的 實例字段(instance field)。
重載:當多個方法具備相同的名字而含有不一樣的參數時,便發生重載。 編譯器必須挑選出調用哪一個方法進行編譯。
重寫:也可稱爲方法的「覆蓋。」在Java中,子類可繼承父類中的方法,而不須要從新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想做必定的修改,這就須要採用方法的重寫。值得注意的是,子類在從新定義父類已有的方法時,應保持與父類徹底相同的方法頭 聲明
數組列表: ArrayList 動態數組列表,是一個類庫,定義在 java.util包中,可自動調節數組的大小。
class類 object類中的getclass方法返回 class類型的一個實例,程序啓動時包含在 main方法的類會被加載, 虛擬機要加載他須要的全部類,每個加載的類都要加載它須要的類。 [2]

3基本語法

編寫Java程序時,應注意如下幾點: [1]
  • 大小寫敏感:Java是大小寫敏感的,這就意味着標識符Hello與hello是不一樣的。
  • 類名:對於全部的類來講,類名的首字母應該大寫。若是類名由若干單詞組成,那麼每一個單詞的首字母應該大寫,例如 MyFirstJavaClass 。
  • 方法名:全部的方法名都應該以小寫字母開頭。若是方法名含有若干單詞,則後面的每一個單詞首字母大寫。
  • 源文件名:源文件名必須和類名相同。當保存文件的時候,你應該使用類名做爲文件名保存(切記Java是大小寫敏感的),文件名的後綴爲.java。(若是文件名和類名不相同則會致使編譯錯誤)。
  • 主方法入口:全部的Java 程序由 public static void main(String args[])方法開始執行。

4Java關鍵字

下面列出了Java保留字。這些保留字不能用於常量、變量、和任何標識符的名稱。 [1]
Java關鍵字
關鍵字
描述
abstract
抽象方法,抽象類的修飾符
assert
斷言條件是否知足
boolean
布爾數據類型
break
跳出循環或者label代碼段
byte
8-bit 有符號數據類型
case
switch語句的一個條件
catch
和try搭配撲捉異常信息
char
16-bit Unicode字符數據類型
class
定義類
const
未使用
continue
不執行循環體剩餘部分
default
switch語句中的默認分支
do
循環語句,循環體至少會執行一次
double
64-bit雙精度浮點數
else
if條件不成立時執行的分支
enum
枚舉類型
extends
表示一個類是另外一個類的子類
final
表示一個值在初始化以後就不能再改變了
表示方法不能被重寫,或者一個類不能有子類
finally
爲了完成執行的代碼而設計的,主要是爲了程序的健壯性和完整性,不管有沒有異常發生都執行代碼。
float
32-bit單精度浮點數
for
for循環語句
goto
未使用
if
條件語句
implements
表示一個類實現了接口
import
導入類
instanceof
測試一個對象是不是某個類的實例
int
32位整型數
interface
接口,一種抽象的類型,僅有方法和常量的定義
long
64位整型數
native
表示方法用非java代碼實現
new
分配新的類實例
package
一系列相關類組成一個包
private
表示私有字段,或者方法等,只能從類內部訪問
protected
表示字段只能經過類或者其子類訪問
子類或者在同一個包內的其餘類
public
表示共有屬性或者方法
return
方法返回值
short
16位數字
static
表示在類級別定義,全部實例共享的
strictfp
浮點數比較使用嚴格的規則
super
表示基類
switch
選擇語句
synchronized
表示同一時間只能由一個線程訪問的代碼塊
this
表示調用當前實例
或者調用另外一個構造函數
throw
拋出異常
throws
定義方法可能拋出的異常
transient
修飾不要序列化的字段
try
表示代碼塊要作異常處理或者和finally配合表示是否拋出異常都執行finally中的代碼
void
標記方法不返回任何值
volatile
標記字段可能會被多個線程同時訪問,而不作同步
while
while循環

5歷史發展編輯

名字來源

Java是 印度尼西亞 爪哇島英文名稱,因盛產 咖啡而聞名。 Java語言中的許多庫類 名稱,多與咖啡有關:如 JavaBeans咖啡豆)、 NetBeans(網絡豆)以及ObjectBeans(對象豆)等等。 SUN和JAVA的標識也正是一杯正冒着熱氣的咖啡。 [3]

語言起源

Java平臺和 語言最開始只是 SUN公司在1990年12月開始研究的一個內部項目。 SUN公司的一個叫作帕特里克·諾頓的 工程師被本身開發的 C和C語言 編譯器搞得焦頭爛額,由於其中的 API極其難用。帕特里克決定改用 NeXT,同時他也得到了研究 公司的一個叫作「Stealth 計劃」的項目的機會。
「Stealth 計劃」後來更名爲「Green計劃」,JGosling( 詹姆斯·高斯林
《Java》之父——詹姆斯·高斯林

《Java》之父——詹姆斯·高斯林

和麥克·舍林丹也加入了帕特里克的工做小組。他們和其餘幾個工程師一塊兒在 加利福尼亞州 門羅 帕克市沙丘路的一個小工做室裏面研究開發新技術,瞄準下一代 智能家電(如微波爐)的 程序設計,SUN公司預料將來科技將在家用電器領域大顯身手。團隊最初考慮使用C 語言,可是不少成員包括 SUN的首席科學家比爾·喬伊,發現C 和可用的 API在某些方面存在很大問題。
工做小組使用的是內嵌類型平臺,能夠用的 資源極其有限。不少成員發現C 太複雜以致不少開發者常常錯誤使用。他們發現C 缺乏 垃圾回收系統,還有可移植的安全性、分佈 程序設計、和多線程功能。最後,他們想要一種易於移植到各類設備上的 平臺
根據可用的資金,比爾·喬伊決定開發一種集 C語言和Mesa語言搭成的新語言,在一份報告上,喬伊把它叫作「將來」,他提議 SUN公司的工程師應該在C 的基礎上,開發一種 面向對象的環境。最初,高斯林試圖修改和擴展C 的功能,他本身稱這種新語言爲C --,可是後來他放棄了。他將要創造出一種全新的語言,被他命名爲「Oak」( 橡樹),以他的辦公室外的樹而命名。
就像不少開發新技術的 祕密的工程同樣,工做小組沒日沒夜地工做到了1992年的夏天,他們可以演示新平臺的一部分了,包括Green操做系統,Oak的 程序設計語言,類庫,和其硬件。最初的嘗試是面向一種類PDA設備,被命名爲Star7,這種設備有鮮豔的圖形 界面和被稱爲「Duke」的 智能代理來幫助用戶。1992年12月3日,這臺設備進行了展現。
同年11月,Green計劃被轉化成了「FirstPerson有限公司」,一個SUN公司的全資子公司,團隊也被從新安排到了帕洛 阿爾託。FirstPerson團隊對建造一種高度互動的設備感興趣,當 時代華納發佈了一個關於電視機頂盒的徵求提議書時(Request for proposal),FirstPerson改變了他們的目標,做爲對徵求意見書的響應,提出了一個機頂盒平臺的提議。可是有線電視業界以爲FirstPerson的平臺給予用戶過多地控制權,所以FirstPerson的投標敗給了SGI。與 3DO公司的另一筆關於機頂盒的交易也沒有成功,因爲他們的平臺不能在電視工業產生任何效益,公司再並回SUN公司。
Java應用、Java結構體

Java應用、Java結構體

1994年六、7月間,在經歷了一場歷時三天的 頭腦風暴的討論以後,約翰·蓋吉、 詹姆斯·高斯林、比爾·喬伊、帕特里克·諾頓、韋恩·羅斯因和埃裏克·斯庫米,團隊決定再一次改變了努力的目標,此次他們決定將該技術應用於 萬維網。他們認爲隨着Mosaic 瀏覽器的到來, 因特網正在向一樣的高度互動的 遠景演變,而這一遠景正是他們在有線 電視網中看到的。做爲原型,帕特里克·諾頓寫了一個小型萬維網 瀏覽器,WebRunner,後來更名爲HotJava。同年,Oak更名爲Java。商標搜索顯示,Oak已被一家 顯卡製造商註冊,所以團隊找到了一個新名字。這個名字是在不少成員常去的本地咖啡館中杜撰出來的。名字是否是首字母縮寫還不清楚,很大程度上來講不是。雖然有人聲稱是開發人員名字的組合:James Gosling( 詹姆斯·高斯林)Arthur Van Hoff(阿瑟·凡·霍夫)Andy Bechtolsheim(安迪·貝克托克姆),或「Just Another Vague Acronym」(只是另一個含糊的縮寫)。還有一種比較可信的說法是這個名字是出於對咖啡的喜好,因此以Java 咖啡來命名。類文件的前四個字節若是用十六進制閱讀的話,分別爲「CA FE BA BE」,就會拼出兩個單詞「CAFE BABE」( 咖啡寶貝)。
1994年10月, HotJava和Java平臺爲公司高層進行演示。1994年,Java 1.0a版本已經能夠提供下載,可是Java和HotJava瀏覽器的第一次公開發布倒是在1995年5月23日SunWorld大會上進行的。SUN公司的科學指導約翰·蓋吉宣告 Java技術。這個發佈是與網景公司的執行副總裁 馬克·安德森的驚人發佈一塊兒進行的,宣佈網景將在其瀏覽器中包含對 Java的支持。1996年1月,Sun公司成立了Java業務 集團,專門開發Java技術。
(詳細的歷史介紹,能夠參考資料:)

發展歷史

1995年5月23日,Java語言誕生
1996年1月,第一個 JDK-JDK1.0誕生
1996年4月,10個最主要的 操做系統供應商申明將在其產品中嵌入JAVA 技術
1996年9月,約8.3萬個 網頁應用了JAVA技術來製做
1997年2月18日,JDK1.1發佈
1997年4月2日, JavaOne會議召開,參與者逾一萬人,創當時全球同類會議規模之紀錄
1997年9月,JavaDeveloperConnection社區成員超過十萬
1998年2月, JDK1.1被下載超過2,000,000次
1998年12月8日,JAVA2企業平臺 J2EE發佈
1999年6月, SUN公司發佈Java的三個版本:標準版(JavaSE,之前是J2SE)、企業版(JavaEE之前是J2EE)和微型版(JavaME,之前是J2ME)
2000年5月8日,JDK1.3發佈
2000年5月29日,JDK1.4發佈
2001年6月5日, NOKIA宣佈,到2003年將出售1億部支持Java的手機
2001年9月24日,J2EE1.3發佈
2002年2月26日,J2SE1.4發佈,自此Java的計算能力有了大幅提高
2004年9月30日18:00PM,J2SE1.5發佈,成爲Java語言發展史上的又一 里程碑。爲了表示該版本的重要性,J2SE1.5改名爲Java SE 5.0
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各類版本已經改名,以取消其中的數字「2」:J2EE改名爲Java EE,J2SE改名爲Java SE,J2ME改名爲Java ME
2006年12月,SUN公司發佈JRE6.0
2009年04月20日, 甲骨文74億美圓收購 Sun。取得java的 版權
2010年11月,因爲甲骨文對於Java社區的不友善,所以 Apache揚言將退出 JCP
2011年7月28日,甲骨文發佈java7.0的正式版。

最新版本

甲骨文的Java總架構師馬克·雷納德在2011年JavaOne大會上爲你們透露了Java 8的新功能,同時也談到了一些關於Java 9的計劃。
Java8 將會包含不少新特性,有如 Lambdas, Jigsaw 模塊化等等,而首個里程碑版將於本月末發佈,詳細的時間表以下:
M1: April 24, 2012
M2: June 14, 2012
M3: July 30, 2012
從M1-GA的發展過程

從M1-GA的發展過程

M4: September 11, 2012
M5: November 26, 2012
M6: January 30, 2013 (Recommended Feature Complete date)
GA: September 2013

6特色

語言特徵

Java 編程語言的風格十分接近 C語言C++語言。Java是一個純粹的面向對象的程序設計語言,它繼承了 C++語言面向對象技術的核心。Java捨棄了C語言中容易引發錯誤的 指針(以引用取代)、運算符 重載(operator overloading)、 多重繼承(以接口取代)等特性,增長了 垃圾回收器功能用於回收再也不被引用的對象所佔據的內存空間,使得程序員不用再爲內存管理而擔心。在 Java 1.5 版本中,Java 又引入了 泛型編程(Generic Programming)、類型安全的 枚舉、不定長參數和自動裝/拆箱等語言特性。
Java不一樣於通常的 編譯執行計算機語言和 解釋執行計算機語言。它首先將 源代碼編譯成二進制 字節碼(bytecode),而後依賴各類不一樣平臺上的虛擬機來解釋執行字節碼。從而實現了「一次編譯、處處執行」的跨平臺特性。不過,每次的執行編譯後的字節碼須要消耗必定的時間,這同時也在必定程度上下降了 Java 程序的性能。
編輯Java源代碼能夠使用任何無格式的純文本編輯器,在Windows操做系統上能夠使用微軟記事本( Notepad)、 EditPlus等程序,在Linux平臺上可以使用vi工具等。
在記事本中輸入以下代碼:
1
2
3
4
5
6
7
public class HelloWorld {
     //Java程序的入口方法,程序將從這裏開始執行
     public static void main(String[] args) {
     //向程序臺打印一條語句
     System.out.println( "Hello world!" );
     }
}
Java三層架構與MVC結構圖示

Java三層架構與MVC結構圖示

編輯上面的Java文件時,注意程序中粗體字標識的單詞,Java程序嚴格區分大小寫。將上面文本保存爲 HelloWorld.java,該文件就是Java程序的源程序。
編寫好Java程序的源代碼後,接下來應該編譯該Java源文件來生成字節碼了。

主要特性

Java語言是易學的。Java語言的語法與 C語言C++語言很接近,使得大多數程序員很容易學習和使用Java。另外一方面,Java丟棄了 C++中不多使用的、很難理解的、使人迷惑的那些特性,如操做符 重載多繼承、自動的 強制類型轉換。特別地,Java語言不使用 指針,而是引用。並提供了自動的廢料收集,使得程序員沒必要爲 內存管理而擔心。
Java語言是強制面向對象的。Java語言提供類、 接口和繼承等原語,爲了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,並支持類與接口之間的實現機制( 關鍵字爲implements)。Java語言全面支持 動態綁定,而 C++語言只對 虛函數使用 動態綁定。總之,Java語言是一個純的 面向對象程序設計語言。
Java語言是分佈式的。Java語言支持 Internet應用的開發,在基本的Java應用 編程接口中有一個網絡應用編程接口(java net),它提供了用於 網絡應用編程的類庫,包括 URL、URLConnection、 Socket、ServerSocket等。Java的 RMI(遠程方法激活)機制也是開發分佈式應用的重要手段。
Java語言是健壯的。Java的 強類型機制、異常處理、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
Java語言是安全的。Java一般被用在網絡環境中,爲此,Java提供了一個安全機制以防 惡意代碼的攻擊。除了Java語言具備的許多 安全特性之外,Java對經過網絡下載的類具備一個安全防範機制(類ClassLoader),如分配不一樣的名字空間以防替代本地的同名類、 字節代碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。
Java語言是體系結構中立的。Java程序(後綴爲java的文件)在Java平臺上被編譯爲體系結構中立的 字節碼格式(後綴爲class的文件),而後能夠在實現這個Java平臺的任何系統中運行。這種途徑適合於異構的網絡環境和軟件的分發。
Java語言是可移植的。這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本 數據類型的長度。Java系統自己也具備很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用 ANSI C實現的。 [4]
Java語言是解釋型的。如前所述,Java程序在Java平臺上被編譯爲字節碼格式,而後能夠在實現這個Java平臺的任何系統中運行。在運行時,Java平臺中的Java 解釋器對這些字節碼進行解釋執行,執行過程當中須要的類在聯接階段被載入到運行環境中。
Java是性能略高的。與那些解釋型的高級 腳本語言相比,Java的性能仍是較優的。
Java語言是原生支持多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來建立。一般有兩種方法來建立線程:其一,使用型構爲Thread(Runnable)的構造子將一個實現了 Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類建立的對象即爲線程。值得注意的是Thread類已經實現了Runnable接口,所以,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的 代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字爲 synchronized)。
Java語言是動態的。Java語言的設計目標之一是適應於動態變化的環境。Java程序須要的類可以動態地被載入到運行環境,也能夠經過網絡來載入所須要的類。這也有利於 軟件的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。
Java語言的優良特性使得Java應用具備無比的健壯性和 可靠性,這也減小了應用系統的維護費用。Java對對象技術的全面支持和Java平臺內嵌的API能縮短應用系統的開發時間並下降成本。Java的編譯一次,處處可運行的特性使得它可以提供一個隨處可用的開放結構和在多平臺之間傳遞信息的低成本方式。特別是Java企業應用編程接口(Java Enterprise APIs)爲企業計算及 電子商務應用系統提供了有關技術和豐富的類庫。

差別

熟悉 C語言C++語言的讀者必定想搞清楚這個問題,實際上,Java確實是從 C語言和C++語言繼承了許多成份,甚至能夠將Java當作是 類C語言發展和 衍生的產物。好比Java語言的變量聲明,操做符 形式,參數傳遞, 流程控制等方面和 C語言C++語言徹底相同。儘管如此,Java和 C語言C++語言又有許多差異,主要表以下幾個方面:
(1) Java中對內存的分配是動態的,它採用面向對象的機制,採用運算符new爲每一個對象分配內存空間,並且,實際內存還會隨程序運行狀況而改變。程序運行中 Java系統自動對內存進行掃描,對長期不用的空間做爲」垃圾」進行收集,使得系統資源獲得更充分地利用.按照這種機制,程序員沒必要關注內存管理問題,這使Java程序的編寫變得簡單明瞭,而且避免了因爲內存管理方面的差錯而致使系統出問題。而C語言經過malloc()和free()這兩個庫函數來分別實現分配內存和釋放內存空間的,C++語言中則經過運算符new和delete來分配和釋放內存。在C和C++這種機制中,程序員必須很是仔細地處理內存的使用問題。一方面,若是對己釋放的內存再做釋放或者對不曾分配的內存做釋放,都會形成死機;而另外一方面,若是對長期不用的或再也不使用的內存不釋放,則會浪費系統資源,甚至所以形成資源枯竭。
(2) Java不在全部類以外定義全局變量,而是在某個類中定義一種公用靜態的變量來完成全局變量的功能。
(3) Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯的功能。
(4) Java不支持頭文件,而C語言和C++語言中都用頭文件來聲明類的原型、全局變量、庫函數等,這種採用頭文件的結構使得系統的運行維護至關繁雜。
(5) Java不支持宏定義。Java只能使用關鍵字final來定義常量。
(6) Java對每種數據類型都分配固定長度。好比,在Java中,int類型老是32位的,而在C語言和C++語言中,對於不一樣的平臺,同一個數據類型分配不一樣的字節數,一樣是int類型,在PC機中爲二字節即16位,而在VAX-11中,則爲32位。這使得C語言形成不可移植性,而Java則具備跨平臺性(平臺無關性)。
(7) 類型轉換不一樣。在C語言和C++語言中,可經過指針進行任意的類型轉換,經常帶來不安全性,而在Java中,運行時系統對對象的處理要進行類型相容性檢查,以防止不安全的轉換。
(8) 結構和聯合的處理。Java中根本就不容許相似C語言的結構體(struct)和聯合體(union)包含結構和聯合,全部的內容都封裝在類裏面。
(9) Java再也不使用指針。指針使 C語言C++語言中最靈活,也最容易產生錯誤的數據類型。由指針所進行的內存地址操做常會形成不可預知的錯誤,同時經過指針對某個內存地址進行顯式類型轉換後,能夠訪問一個C++中的私有成員,從而破壞安全性。而Java用「引用」的方式,對指針進行徹底地控制,程序員不能直接進行任何指針操做。
(10)避免平臺依賴。Java語言編寫的類庫能夠在其它平臺的Java應用程序中使用,而不像C++語言必須運行於單一平臺。
(11)在B/S開發方面,Java要遠遠優於C++。

優劣勢

優點:Java適合團隊開發, 軟件工程能夠相對作到規範。因爲Java語言自己的極其嚴格語法的特色,Java語言沒法寫出結構混亂的程序。這將強迫程序員的代碼軟件結構的規範性。這是一個很難比擬的優點。
劣勢:j2ee的架構很完美,初版軟件能夠作滿意,可是很不適合互聯網模式的持續不斷修改。互聯網軟件工程管理上的不足,持續的修修補補致使架構的破壞。

7相關技術

主要服務

1. JDBC(Java Database Connectivity)提供鏈接各類關係 數據庫的統一接口,做爲數據源,能夠爲多種關係數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC爲工具/數據庫開發人員提供了一個標準的 API,據此能夠構建更高級的工具和接口,使數據庫開發人員可以用純Java API 編寫數據庫應用程序,同時,JDBC也是個商標名。
2. EJB(Enterprise JavaBeans)使得開發者方便地建立、部署和管理跨平臺的基於組件的企業應用。
3.Java RMI(Java Remote Method Invocation)用來開發分佈式Java應用程序。一個Java對象的方法能被遠程 Java虛擬機調用。這樣,遠程方法激活能夠發生在對等的兩端,也能夠發生在 客戶端和服務器之間,只要雙方的應用程序都是用Java寫的。
4.Java IDL(Java Interface Definition Language) 提供與CORBA(Common Object Request Broker Architecture)的無縫的互操做性。這使得Java能集成異構的商務信息資源。
5. JNDI(Java Naming and Directory Interface)提供從Java平臺到的統一的無縫的鏈接。這個接口屏蔽了企業網絡所使用的各類命名和目錄服務。
6. JMAPI(Java Management API)爲 異構網絡上系統、網絡和服務管理的開發提供一整套豐富的對象和方法。
7. JMS(Java Message Service)提供企業 消息服務,如可靠的 消息隊列、發佈和訂閱通訊、以及有關推拉(Push/Pull)技術的各個方面。
8. JTS(Java transaction Service)提供存取事務處理資源的開放標準,這些事務處理資源包括事務處理應用程序、事務處理管理及監控。
9. JMF(Java Media Framework API),她能夠幫助開發者把音頻、視頻和其餘一些基於時間的媒體放到Java應用程序或applet小程序中去,爲 多媒體開發者提供了捕捉、回放、編解碼等工具,是一個彈性的、跨平臺的多媒體解決方案。
10. Annotation(Java Annotation),在已經發布的JDK1.5(tiger)中增長新的特點叫Annotation。Annotation提供一種機制,將程序的元素如:類,方法,屬性,參數,本地變量,包和 元數據聯繫起來。這樣編譯器能夠將元數據存儲在Class文件中。這樣虛擬機和其它對象能夠根據這些 元數據來決定如何使用這些程序元素或改變它們的行爲。
在Java技術中,值得關注的還有 JavaBeans,它是一個開放的標準的組件體系結構,它獨立於平臺,但使用Java語言。一個JavaBean是一個知足JavaBeans規範的Java類,一般定義了一個現實世界的事物或概念。一個JavaBean的主要特徵包括屬性、方法和事件。一般,在一個支持JavaBeans規範的開發環境(如Sun Java Studio 和IBM VisualAge for Java)中,能夠可視地操做JavaBean,也能夠使用JavaBean構造出新的JavaBean。JavaBean的優點還在於Java帶來的可移植性。EJB (Enterprise JavaBeans) 將JavaBean概念擴展到Java服務端組件體系結構,這個模型支持多層的 分佈式對象應用。除了JavaBeans,典型的組件體系結構還有 DCOMCORBA,關於這些組件體系結構的深刻討論超出了本書的範圍。
11. javaFX Sun剛剛發佈了JavaFX技術的正式版,它使您能利用JavaFX 編程語言開發富互聯網應用程序(RIA)。JavaFX Script編程語言(如下稱爲JavaFX)是Sun微系統公司開發的一種declarative,staticallytyped(聲明性的、靜態類型) 腳本語言。JavaFX技術有着良好的前景,包括能夠直接調用Java API的能力。由於JavaFXScript是靜態類型,它一樣具備結構化代碼、重用性和封裝性,如包、類、繼承和單獨編譯和發佈單元,這些特性使得使用Java技術建立和管理大型程序變爲可能。
JavaFX從它2007年發佈以來,表現一直差強人意。Oracle收購了Sun以後,在JavaFX中投入了大量的精力進行推廣和更新。JavaFX比較出名的應用應該是在2010年溫哥華冬奧會上,調整了JavaFX中的不少概念,以及從新設計和實現了不少重要組件以後,獲得的就是如今的JavaFX 2.0。JavaFX 2.0的beta版已經發布,正式版則定於2010年第3季度發佈。JavaFX 2.0的新特性使得開發人員應該須要從新審視它在RIA開發領域中的位置。在不少狀況下,JavaFX 2.0也會是不錯的選擇。 [5]
12. JMX(Java Management Extensions,即Java管理擴展)是一個爲應用程序、設備、系統等植入
管理功能的框架。JMX能夠跨越一系列異構操做系統平臺、 系統體系結構和網絡傳輸協議,靈活的開發無縫
集成的系統、網絡和服務管理應用。
13. JPA(Java Persistence API),JPA經過JDK 5.0註解或XML描述對象-關係表的映射關係,並將運行期的實體 對象持久化到數據庫中。
14. JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一塊兒創建的一種 動態網頁技術標準。JSP技術有點相似ASP技術,它是在傳統的 網頁HTML文件(*.htm,*. html)中插入Java 程序段(Scriptlet)和JSP標記(tag),從而造成JSP文件(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其餘 操做系統上運行。

框架服務

Spring Framework 【Java開源J2EE框架】
Spring是一個解決了許多在J2EE開發中常見的問題的強大框架。Spring提供了管理 業務對象的一致方法而且鼓勵了注入對接口編程而不是對類編程的良好習慣。Spring的架構基礎是基於使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器做爲構建完關注全部架構層的完整解決方案方面是獨一無二的。Spring提供了惟一的數據訪問抽象,包括簡單和有效率的JDBC框架,極大的改進了效率而且減小了可能的錯誤。Spring的數據訪問架構還集成了 Hibernate和其餘O/R mapping解決方案。Spring還提供了惟一的事務管理抽象,它可以在各類底層事務 管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP框架,它給 POJOs提供了聲明式的事務管理和其餘 企業事務--若是你須要--還能實現你本身的 aspects。這個框架足夠強大,使得應用程序可以拋開EJB的複雜性,同時享受着和傳統EJB相關的關鍵服務。Spring還提供了能夠和IoC容器集成的強大而靈活的 MVCWeb框架。【SpringIDE:Eclipse平臺下一個輔助開發 插件】。
WebWork 【Java開源Web框架】
WebWork是由OpenSymphony組織開發的,致力於組件化和代碼重用的拉出式 MVC模式J2EE Web框架。WebWork目前最新版本是2.1,WebWork2.x前身是Rickard Oberg開發的WebWork,但WebWork已經被拆分紅了Xwork1和WebWork2兩個項目。Xwork簡潔、靈活功能強大,它是一個標準的Command模式實現,而且徹底從web層脫離出來。Xwork提供了不少核心功能:前端 攔截機(interceptor),運行時表單屬性驗證,類型轉換,強大的表達式語言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。WebWork2創建在Xwork之上,處理 HTTP的響應和請求。WebWork2使用ServletDispatcher將 HTTP請求的變成Action(業務層Action類),session(會話)application(應用程序)範圍的映射,request請求參數映射。WebWork2支持多視圖表示,視圖部分能夠使用JSP,Velocity,FreeMarker,JasperReports,XML等。在WebWork2.2中添加了對AJAX的支持,這支持是構建在DWR與Dojo這兩個框架的基礎之上。【EclipseWork:用於WebWork輔助開發的一個Eclipse插件】
Struts[6]【Java開源Web框架】
Struts是一個基於Sun J2EE平臺的MVC框架,主要是採用Servlet和JSP技術來實現的。因爲Struts能充分知足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、 自定義標籤和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再本身編碼實現全套MVC模式,極大的節省了時間,因此說Struts是一個很是不錯的應用框架。【StrutsIDE:用於Struts輔助開發的一個Eclipse插件】
Hibernate 【Java開源持久層框架】
Hibernate是一個開放 源代碼的對象關係映射框架,它對JDBC進行了很是輕量級的對象封裝,使得Java程序員能夠爲所欲爲的使用對象編程思惟來操縱數據庫。Hibernate能夠應用在任何使用JDBC的場合,既能夠在Java的客戶端程序實用,也能夠在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate能夠在應用EJB的J2EE架構中取代CMP,完成 數據持久化的重任。Eclipse平臺下的 Hibernate輔助開發工具:【Hibernate Synchronizer】【MiddlegenIDE】
JDiy  【Java極速開發框架. 開源】
JDiy是一款java極速開發框架,無需ORM,極少的代碼即可以完成數據庫的CRUD(增刪改查)
可同時用於javaEE或者javaSE開發環境;完美支持各大主流數據庫,如:MySQL, SQL Server, Oracle, DB2, PostgreSQL, SQLite;
同時JDiy內置一套精簡而不失強大的智能開發平臺(開發者登陸後,爲所欲爲地零代碼生成網站管理系統)

  
JFinal 【Java極速WEB+ORM框架】
jfinal是基於 Java 語言的極速 WEB + ORM 框架,其核心設計目標是開發迅速、代碼量少、學習簡單、功能強大、輕量級、易擴展、Restful。在擁有Java語言全部優點的同時再擁有ruby、python、php等動態語言的開發效率!主要特色1.MVC架構,設計精巧,使用簡單 2.遵循COC原則,零配置,無xml 3.首創Db + Record模式,靈活便利 4.ActiveRecord支持,使數據庫開發極致快速 5.自動加載修改後的java文件,開發過程當中無需重啓web server 6.AOP支持,攔截器配置靈活,功能強大 7.Plugin體系結構,擴展性強 8.多視圖支持,支持 FreeMarker、JSP、 Velocity9.強大的Validator後端校驗功能 10.功能齊全,擁有 struts2的絕大部分功能 11.體積小僅218K,且無第三方依賴
Quartz 【Java開源Job調度】
Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它能夠與J2EE與J2SE應用程序相結合也能夠單獨使用。Quartz能夠用來建立簡單或爲運行十個,百個,甚至是好幾萬個Jobs這樣複雜的日程序表。Jobs能夠作成標準的Java組件或EJBs。Quartz的最新版本爲Quartz 1.5.0。
Velocity 【Java開源 模板引擎
Velocity是一個基於java的 模板引擎(template engine)。它容許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。當Velocity應用於web開發時,界面設計人員能夠和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員能夠只關注頁面的顯示效果,而由java程序開發人員關注 業務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣爲web站點的長期維護提供了便利,同時也爲咱們在JSP和PHP以外又提供了一種可選的方案。Velocity的能力遠不止web站點開發這個領域,例如,它能夠從模板(template)產生SQL和PostScript、XML,它也能夠被看成一個獨立工具來產生 源代碼和報告,或者做爲其餘系統的集成組件使用。Velocity也能夠爲Turbine web開發架構提供模板 服務(template service)。Velocity+Turbine提供一個模板服務的方式容許一個web應用以一個真正的MVC模型進行開發。【VeloEclipse :Velocity在Eclipse平臺下的一個輔助開發插件】
IBATIS 【Java開源持久層框架】
使用 ibatis提供的ORM機制,對業務邏輯實現人員而言,面對的是純粹的Java對象,這一層與經過Hibernate 實現ORM 而言基本一致,而對於具體的 數據操做,Hibernate 會自動生成SQL 語句,而ibatis 則要求開發者編寫具體的 SQL語句。相對Hibernate等「全自動」ORM機制而言,ibatis 以SQL開發的工做量和數據庫移植性上的讓步,爲系統設計提供了更大的自由空間。做爲「全自動」ORM 實現的一種有益補充,ibatis 的出現顯得別具意義。
Compiere ERP&CRM 【Java開源 ERP 與CRM系統】
Compiere ERP&CRM爲全球範圍內的 中小型企業提供綜合型解決方案,覆蓋從客戶管理、供應鏈到財務管理的所有領域,支持多組織、多幣種、多 會計模式、多成本計算、多語種、多稅制等國際化特性。易於安裝、易於實施、易於使用。只須要短短几個小時,您就能夠使用申購-採購-發票-付款、報價-訂單-發票-收款、產品與訂價、資產管理、客戶關係、供應商關係、員工關係、經營業績分析等強大功能了。

開發工具

Eclipse 【Java開源開發工具】
Eclipse平臺是IBM向開放源碼社區捐贈的開發框架,它之因此出名並非由於IBM宣稱投入開發的資金總數 —4千萬美圓,而是由於如此巨大的投入所帶來的成果:一個成熟的、精心設計的以及可擴展的體系結構。
NetBeans IDE 是一個爲軟件開發者提供的自由、開源的 集成開發環境。您能夠從中得到您所須要的全部工具,用Java、C/C++ 甚至是Ruby 來建立專業的 桌面應用程序、企業應用程序、web 和移動應用程序。此IDE 能夠在多種平臺上運行,包括Windows、Linux、Mac OS X 以及Solaris;它易於安裝且很是方便使用。
XPlanner 【Java開源項目管理】
XPlanner 一個基於Web的XP團隊計劃和跟蹤工具。XP獨特的開發概念如iteration、user stories等,XPlanner都提供了相對應的的 管理工具,XPlanner支持XP開發流程,並解決利用XP思想來開發項目所碰到的問題。XPlanner特色包括:簡單的模型規劃,虛擬筆記卡(Virtual note cards),iterations、user stories與工做記錄的追蹤,未完成stories將自動迭代,工做時間追蹤,生成團隊效率,我的工時報表,SOAP 界面支持。
HSQLDB 【Java開源DBMS數據庫】
HSQLDB(Hypersonic SQL)是純Java開發的 關係型數據庫,並提供JDBC驅動存取數據。支持ANSI-92 標準SQL語法。並且他佔的空間很小。大約只有160K,擁有快速的數據庫引擎。
Liferay 【Java開源Portal門戶】
表明了完整的 J2EE應用,使用了Web、EJB以及JMS等技術,特別是其前臺界面部分使用Struts 框架技術,基於XML的portlet 配置文件能夠自由地動態擴展,使用了Web Services來支持一些遠程信息的獲取,使用Apache Lucene實現 全文檢索功能。
JetSpeed 【Java開源Portal門戶】
Jetspeed是一個開放源代碼的 企業信息門戶(EIP)的實現,使用的技術是Java和XML。用戶能夠使用瀏覽器,支持WAP協議的手機或者其它的設備訪問Jetspeed架設的信息門戶獲取信息。Jetspeed扮演着信息集中器的角色,它可以把信息集中起來而且很容易地提供給用戶。
JOnAS 【Java開源J2EE服務器】
JOnAS是一個開放源代碼的J2EE實現,在ObjectWeb協會中開發。整合了Tomcat或Jetty成爲它的Web容器,以確保符合Servlet 2.3和JSP 1.2規範。JOnAS服務器依賴或實現如下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail。
JFox3.0 【Java開源J2EE服務器】
JFox是Open Source Java EE Application Server,致力於提供輕量級的Java EE應用服務器,從3.0開始,JFox提供了一個支持模塊化的MVC框架,以簡化EJB以及Web應用的開發! 若是您正在尋找一個簡單、輕量、高效、完善的Java EE開發平臺,那麼JFox正是您須要的。

Java IDE

當今最流行的是 EclipseMyeclipseIntelliJJbuilderJdeveloperNetbeansJCreator等。

8架構設計

概念

軟件架構做爲一個概念,體如今技術和業務兩個方面。
從技術角度來講:軟件架構隨着技術的革新不斷地更新其內容,軟件架構創建於當前技術和一些基本原則的基礎之上。
基本原則: 分層原則、 模塊化原則、接口實現分離原則、細節隱藏原則、 依賴倒置原則

平臺構架

1、平臺
Java平臺由Java 虛擬機(Java Virtual Machine)和Java應用編程 接口(Application ProgrammingInterface、簡稱 API)構成。Java應用 編程接口爲此提供了一個獨立於 操做系統的標準接口,可分爲基本部分和擴展部分。在 硬件或操做系統平臺上安裝一個Java平臺以後,Java應用 程序就可運行。Java平臺已經嵌入了幾乎全部的操做系統。這樣Java程序能夠只編譯一次,就能夠在各類系統中運行。Java應用 編程接口已經從1.1x版發展到1.2版。經常使用的Java平臺基於Java1.5,最近版本爲Java1.7。
Java分爲三個體系JavaSE(Java2 Platform Standard Edition,java平臺標準版), JavaEE(Java 2 Platform,Enterprise Edition,java平臺企業版),JavaME(Java 2 Platform Micro Edition,java平臺微型版)。
2、Java SE
* Java SE(Java Platform,Standard Edition)。Java SE 之前稱爲J2SE。它容許開發和部署在 桌面服務器、嵌入式環境和實時環境中使用的Java 應用程序。Java SE 包含了支持Java Web 服務開發的類,併爲Java Platform,Enterprise Edition(Java EE)提供基礎。
3、Java EE
* Java EE(Java Platform,Enterprise Edition)。這個版本之前稱爲 J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的服務器端 Java 應用程序。Java EE 是在Java SE 的基礎上構建的,它提供Web 服務、 組件模型、管理和通訊API,能夠用來實現企業級的面向服務 體系結構(service-oriented architecture,SOA)和Web 2.0 應用程序。
4、Java ME
* Java ME(Java Platform,Micro Edition)。這個版本之前稱爲J2ME,也叫 K-JAVA。Java ME 爲在移動設備和嵌入式設備(好比手機、PDA、電視 機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環境。Java ME 包括靈活的用戶界面、健壯的安全模型、許多內置的網絡協議以及對能夠 動態下載的連網和離線應用程序的豐富支持。基於Java ME 規範的應用程序只需編寫一次,就能夠用於許多設備,並且能夠利用每一個設備的本機功能。

9發展前景

自從Sun被甲骨文收購之後,Java的發展前景就變得撲朔迷離起來,不少程序開發者都感到很迷惑。2010年4月9日,被稱爲 Java之父詹姆斯·高斯林又在我的博客上宣佈離開Oracle,這一事件更爲Java的 前景增長了一層迷霧。可是在進入5月份以後,一切開始變得明朗起來。
在Oracle的活動發佈網站上,連續發佈了多個關於Java的推廣活動。5月12日, Oracle主要產品負責人Dave Hofert將大談對JavaSE商業應用的改進和革新。根據宣傳資料,在此次演講中,DaveHofert將提到如下問題:商業版與社區版本之間平臺支持的差別。如何得到專家幫助,以幫助企業加強其Java應用。對於舊版本的安全修補問題。可以使用的發佈工具和更新。6月1八、1九、20、27日,將分別在 赫爾辛基斯圖加特布達佩斯倫敦舉行Oracle、Sun專家與用戶 見面會,在見面會上與用戶一塊兒探討Java的發展路線。主要討論的問題包括Oracle將如何繼續投資和改進Java技術,而且還會向用戶通報JavaSE、JavaME專家團隊的最新消息、JavaFX和JDK7最新的消息,以及OracleBerkeley DB的相關信息。5月3日,已經離開Oracle近一個月的Java之父詹姆斯·高斯林在他的博客上表達了對NetBeans 6.9 和 FX1.3發佈的關心。這兩個項目最新版本的發佈,能夠證實Oracle已經開始兌現當初的承諾。詹姆斯·高斯林在其早期的博客中,也透露了不會放棄Java事業,只是須要解決一些與Oracle之間的法律問題。這一切跡象代表,Oracle絕對不會輕易放棄Java這塊巨大的蛋糕,而且Oracle也開始逐漸學會了對 開源社區的尊重。首先在JDK的商業版本方面,Oracle將會繼續深刻挖掘Java的商業利益,與其固有產品進行更深刻的整合。在社區版本方面,Oracle將與Java開發者一塊兒探討和研發Java的技術。這裏須要特別提到的一個產品是Oracle BerkeleyDB,該產品是Oracle一直支持的一個開源非關係數據庫產品,在NoSQL大行其道的今天,若是Oracle可以將BerkeleyDB與Java進行深刻整合,將會爲Java帶來更多的活力和生命。從詹姆斯·高斯林的表現來看,他彷佛與Oracle之間已經達成某種諒解,而且有進一步合做的可能性。

貢獻及影響

1991年,Sun公司的James Gosling,Bill Joe等人,爲電視、控制烤麪包機等家用電器的交互操做開發了一個Oak(橡樹) 軟件,他是Java的前身。當時,Oak並無引發人們的注意,直到1994年,隨着 互聯網和3W的飛速發展,他們用Java編制了 HotJava瀏覽器,獲得了Sun公司首席執行官Scott McNealy的支持,得以研發和發展。因爲Oak商標已經被Oak Technology註冊,1995年Oak短暫改名爲Green,最後改名爲Java。Java的得名還有段小插曲呢,一天,Java小組成員正在喝咖啡時,議論給新語言起個什麼名字的問題,有人提議用Java(Java是 印度尼西亞盛產咖啡的一個島嶼),這個提議獲得了其餘成員的贊同,因而就採用Java來命名此新語言。很快Java被工業界承認,許多大公司如IBM Microsoft.DEC等購買了Java的使用權,並被 美國雜誌PC Magazine評爲1995年十大優秀科技產品。今後,開始了Java應用的新篇章。
Java的誕生是對傳統 計算機 模式的挑戰,對計算機 軟件開發和軟件產業都產生了深遠的影響:
(1)軟件4A目標要求軟件能達到任何人在任何地方在任什麼時候間對任何電子設備都能應用。這樣能知足軟件平臺上互相操做,具備可伸縮性和重用性並可即插即用等 分佈式計算模式的需求。
(2)基於構建開發方法的崛起,引出了 CORBA國際標準 軟件體系結構和多層應用體系框架。在此基礎上造成了Java.2平臺和 .NET平臺兩大派系,推進了整個IT業的發展。
(3)對軟件產業和 工業企業都產生了深遠的影響,軟件從以開發爲中心轉到了以服務爲中心。中間提供商,構件提供商, 服務器軟件以及諮詢服務商出現。企業必須重塑自我,B2B的電子商務將帶動整個新經濟市場,使企業得到新的價值,新的增加,新的商機,新的管理。
(4)對 軟件開發帶來了新的革命,重視使用第三方構件集成,利用平臺的基礎設施服務,實現開發各個階段的重要技術,重視開發團隊的組織和文化理念,協做,創做,責任,誠信是人才的基本素質。

Java模擬器

Java手機遊戲模擬器主要針對諾基亞S60系列手機以及其餘大屏手機(小屏遊戲也可運行,但不能全屏顯示),是一款很是簡單並且實用的JAVA遊戲模擬器,能夠正常運行絕大部分JAVA手機遊戲!注:暫不支持遊戲後綴名爲sis的遊戲。程序的使用是傻瓜式的,在電腦上安裝好之後,全部的遊戲jar文件都會和模擬器相關連,直接雙擊遊戲jar文件就能夠進入模擬器玩遊戲啦!電腦的小數字鍵盤和方向鍵就能夠直接控制遊戲,與模擬器的按鍵相對應,固然也能夠用鼠標直接點擊控制。

虛擬機

Java 虛擬機(Java Virtual Machine) 簡稱JVM Java虛擬機是一個想象中的機器,在實際的計算機上經過軟件模擬來實現。Java虛擬機有本身想象中的硬件,如處理器、堆棧、寄存器等,還具備相應的指令系統。
引入Java語言虛擬機後,Java語言在不一樣平臺上運行時不須要從新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就能夠在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。

內存模型

在處理器層面上,內存模型定義了一個充要條件,「讓當前的處理器能夠看到其餘處理器寫入到內存的數據」以及「其餘處理器能夠看到當前處理器寫入到內存的數據」。有些處理器有很強的內存模型,可以讓全部的處理器在任什麼時候候任何指定的內存地址上均可以看到徹底相同的值。而另一些處理器則有較弱的內存模型,在這種處理器中,必須使用內存屏障(一種特殊的指令)來刷新本地處理器緩存並使本地處理器緩存無效,目的是爲了讓當前處理器可以看到其餘處理器的寫操做或者讓其餘處理器能看到當前處理器的寫操做。這些內存屏障一般在lock和unlock操做的時候完成。內存屏障在高級語言中對程序員是不可見的。

相關消息

在宣佈修正Java嚴重0day漏洞的消息發出一天後,甲骨文公佈了Java SE 7u11更新,它包含了安全漏洞CVE-2013-0422的補丁,同時也改變了默認的Java安全級別設置,任何未簽名的Java Applet或Java Web Start應用程序運行時老是會被提示,這樣能夠防止惡意應用被下載,對用戶來講這可能會帶來的影響是須要多確認一下。

10其餘應用

Android是第一個內置支持Java的操做系統,Android應用程序使用Java語言編寫。Android開發水平的高低很大程度上取決於Java語言核心能力是否紮實。另一方面,3G應用每每會和企業級應用相互結合。所以,在3G—Android課程體系中將Android課程與Java EE課程緊密結合,以Android課程爲主,以Java EE課程爲輔,配合真實的企業級項目,不但能夠深刻掌握基於Android平臺的智能手機開發技術,更重要的是還系統掌握了智能移動終端與Java EE服務器端相結合的諸多領域商業的應用。
Java試圖經過新的方式解決軟件編寫的複雜性。不少人認爲Java語言作到了它承諾的一切。可是Java並非一門完美的語言。

總體性

並非全部的工程和環境須要企業級別的複雜性,好比一個簡單的我的網站或者獨自編程的程序師所寫的程序。這些程序師會發現Java的複雜管理對於本身要作的程序來講過於強大了。一些人以爲Java在面向對象上面作的沒有 RubySmalltalk純粹。可是最新出現的用Java實現的語言 Groovy解決了這些問題。
做爲一種已經建立的新技術,Java顯然綜合了不少語言的特性,好比C++、C語言、 Python等等。一些對於Java的評論認爲Java的不變性在動搖。

語言問題

有些程序師不喜歡原始類型(primitive type)和類(class)的分離,尤爲是那些曾經使用過 SmalltalkRuby的程序師。Java的代碼相對於其餘的代碼來講過於冗長,這與它的輕便化聲明相違背。
Java是一種單層繼承的語言。這也致使了程序師在試圖使用 多重繼承時候的不便,而不少語言均可以使用這個特性。可是Java能夠使用接口類,把 多重繼承可能致使的風險減小到最小。Java不支持 運算符重載,這是爲了防止 運算符重載使得代碼的功能變得不清晰。可是用Java實現的語言 Groovy能夠進行 運算符重載。過去Java對於文本的操做和其餘語言,好比 PerlPHP相比差的較多,但Java在1.4版本時候引入了 正則表達式

類庫問題

使用 Swing平臺編寫的帶有 GUI(圖形用戶接口)的程序和其餘原始程序很是不一樣。選用 AWT工具包編寫程序的程序師看到的都是原始接口,並且也沒法得到先進的GUI編程支持,若是使用的話,就要提供每一個平臺上面所需的API,這將是一項龐大的工程。Swing則是徹底用Java語言所寫的程序,避免了接口元素重複的問題,只使用全部平臺都支持的最基本的繪圖機制。可是不少用戶不知道如何在Java風格和Windows風格之間進行轉換,結果形成了Java程序的接口在不少程序中很是特殊。 蘋果電腦已經提供了優化過的Java運行時程序,包含了 Mac OS X的經典 Aqua接口風格。

性能問題

因爲Java 編譯器和虛擬機的不一樣對Java代碼的性能影響比語言自己的影響大的多,因此統一討論Java的程序的性能常常是有誤導性的。據IBM的數據,在一樣的硬件上2001年時的 IBM JDK版本的性能是1996年的JDK版本的十倍左右。即便是在同一時期,不一樣公司的JDK和 JRE的性能也不同,好比SUN、IBM、 BEA等公司都有本身開發的JDK和 JRE
Java語言的一些特性不可避免的有額外的性能代價。例如數組範圍檢查、運行時類型檢查等等;Java程序的性能還會由於不一樣的動態複雜性和垃圾處理機制使用的多少而各有不一樣。若是JVM的實現比較優化的話,那麼這些功能甚至能夠增長存儲器分配的性能。這和老是使用STL或者託管C++的程序的狀況相似。
Java的設計目的主要是安全性和可攜性,因此對於一些特性。好比對硬件架構和存儲器地址訪問的直接訪問都被去除了,若是須要間接調用這些底層功能的話,就須要使用 JNI(Java本地接口)來調用本地代碼。而間接訪問意味着頻繁調用這些特性時性能損失會很大, 微軟的.NET平臺也有這樣的問題。
 
 

太陽微系統(2010年被甲骨文公司收購)

軟件
 Solaris  StarOffice  Java Desktop System  Java
 JVM  Java API  JES  GlassFish
 網絡文件系統  JavaFX  NetBeans  Sun Grid Engine
 VirtualBox  MySQL  Sun Studio  
 
硬件
 SPARCstation  Sun Ultra series  Sun Enterprise  Sun Blade
 Sun Fire  SPARC Enterprise  UltraSPARC T1  UltraSPARC T2
 SPARC  JavaStation  Sun Ray  Project Blackbox
 Sun Grid      
 
教育與認證
 SCP  SCJP  SCJA  SCJD
 知名的昇陽電腦員工      
 

Java(甲骨文公司)

Java平臺
 Java 編程語言  JVM  Java ME  Java SE
 Java EE  Java Card    
 
昇陽電腦主要技術
 Squawk  JDK  OpenJDK  Java Virtual Machine
 JavaFX      
 
平臺技術
 Applet  Servlets  MIDlets  JSP
 Web Start (jnlp)      
 
主要的第三方技術
 JRockit  GNU Classpath  Kaffe  TopLink
 Apache Harmony  Struts  Spring Framework  Hibernate
 JBoss  Tapestry  Jazelle  
 
歷史
 歷史  批評  Java Community Process  昇陽電腦
 Free Java implementations      
 
主要編程語言
 Tcl/Java  Jython  JRuby  BeanShell
 Clojure  Groovy  Rhino  Scala
 Processing      
 
Java會議
 JavaOne
相關文章
相關標籤/搜索