Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立性和可移植性、多線程、動態性等特點[2]。Java可以編寫桌面應用、Web應用、分布式系統和嵌入式系統應用[3]。
外國名字
Java 語言(壹種計算機語言,尤用於創建網站)
現在的公司
神諭
發射時間
1995年5月
快的
航行
編程開發
語言特點
操作原理
語言基礎
語言標準
語言規範
技術應用
學習指南
帕斯卡求值
發展歷史
90年代,硬件領域出現了單片機系統。這種低成本的系統壹出現,立刻引起了自動控制領域人士的關註,因為它可以大大提高消費電子產品(如電視機頂盒、面包烤箱、手機等)的智能化程度。).為了搶占市場先機,孫公司在1991成立了名為格林的項目組。帕特裏克、詹姆斯·高斯林(james gosling)、邁克·謝裏丹(Mike Sheridan)和其他幾位工程師壹起在加州門洛帕克(Menlo Park)沙丘路(Dune Road)的壹個小工作室裏開發新技術,專門研究計算機在家用電器中的嵌入式應用。
Java語言(壹種計算機語言,尤用於創建網站)
因為C++的優勢,項目組的研究人員首先考慮用C++編寫程序。然而,對於硬件資源極其匱乏的單片系統來說,C++程序過於復雜和龐大。此外,由於消費電子產品使用的嵌入式處理器芯片種類繁多,如何讓編寫的程序跨平臺運行也是壹個難題。為了解決困難,他們首先著眼於語言開發,假設了壹種結構簡單、滿足嵌入式應用需求的硬件平臺架構,並為其制定了相應的規範,其中定義了這種硬件平臺的二進制機器碼指令系統(也就是後來成為“字節碼”的指令系統),這樣在語言開發成功後,半導體芯片廠商就可以開發生產這種硬件平臺。對於新語言的設計,Sun公司的人員並沒有開發壹種全新的語言,而是根據嵌入式軟件的要求對C++進行了改造,去掉了壹些不實用、影響安全性的組件,並結合嵌入式系統的實時性要求,開發了壹種面向對象的語言,叫做Oak。
由於開發Oak語言時沒有運行字節碼的硬件平臺,為了在開發時對這種語言進行實驗研究,他們在現有軟硬件平臺的基礎上,按照自己指定的規範,用軟件搭建了壹個操作平臺。整個系統比C++簡單,沒有太大區別。1992年夏天,Oak語言開發成功時,科研人員向硬件廠商演示了綠色操作系統、Oak編程語言、類庫及其硬件,說服他們使用Oak語言生產硬件芯片,但硬件廠商對此並沒有很大的熱情。因為他們認為在大家對Oak language壹無所知的情況下生產硬件產品風險太大,Oak language因為缺乏硬件支持無法進入市場,所以壹直擱置。
在1994的六七月期間,經過三天的討論,團隊決定再次改變他們努力的目標,這次他們決定將這項技術應用到萬維網上。他們認為,隨著馬賽克瀏覽器的到來,互聯網正在向他們在有線電視網絡中看到的高度互動的前景演變。作為原型,帕特裏克諾頓寫了壹個小的網絡瀏覽器WebRunner。[4]
1995,互聯網的蓬勃發展給了奧克壹個機會。為了讓死板單調的靜態網頁變得“靈活”,業界迫切需要壹種軟件技術來開發壹種程序,可以通過網絡傳播,跨平臺運行。因此,世界各大IT公司都投入了大量的人力、物力和財力。這時,孫公司想起了擱置已久的橡樹,重新審視用軟件編寫的實驗平臺。因為它是根據嵌入式系統的硬件平臺架構編寫的,所以體積很小,特別適合網絡上的傳輸系統。Oak也是壹種簡化語言,程序非常小,適合在網絡上傳輸。Sun公司最早推出了可以嵌入網頁並隨web Applet壹起在網絡上傳輸的Applet(Applet是壹種將小程序嵌入網頁中執行的技術),並將Oak改名為Java(申請註冊商標時發現Oak已經被人使用,想了壹系列名字,最後用了壹個Java字,是提議者在喝壹杯Java咖啡時無意中提到的)。5月23日,Sun公司在Sun world大會上正式發布了Java和HotJava瀏覽器。IBM、蘋果、DEC、Adobe、HP、Oracle、Netscape、微軟等各大公司都停止了相關的開發項目,購買Java許可證,為自己的產品開發相應的Java平臺。[5] [6]
1996 1.0,Sun公司發布了第壹個Java開發工具包(JDK 1.0),這是Java發展的壹個重要裏程碑,標誌著Java成為壹個獨立的開發工具。9月份,用Java技術制作了大約83,000個網頁。5438年6月+10月,Sun公司發布了第壹款面向Java平臺的JIT編譯器。
1997 2月,JDK 1.1問世,在隨後的三周內,就達到了22萬的下載量。4月2日,Java One大會召開,參會人數超過1萬人,創下了當時世界同類會議的紀錄。9月,Java開發人員連接社區的成員超過6.5438億。
1998 12.8,第二代Java平臺J2EE企業版發布。1999年6月,Sun公司發布了三個版本的第二代Java平臺(簡稱Java 2):J2ME(Java 2 Micro Edition),用於移動、無線、資源有限的環境;J2SE(Java 2 Standard Edition,Java 2平臺的標準版本),應用於桌面環境;J2EE(Java 2Enterprise Edition,Java 2 platform的企業版)應用於基於Java的應用服務器。Java 2平臺的發布是Java發展過程中最重要的裏程碑,標誌著Java應用普及的開始。
4月27日,1999,熱點虛擬機發布。HotSpot虛擬機在發布時是作為JDK 1.2的插件提供的,後來成為JDK 1.3之後所有版本Sun JDK的默認虛擬機[7]。
2000年5月,JDK1.3、JDK1.4、J2SE1.3相繼發布。幾周後,他們得到了蘋果公司的Mac OS X工業標準的支持。2001年9月24日,J2EE1.3發布。2002年2月26日,J2SE1.4發布。從此,Java的計算能力有了很大的提高。與J2SE1.3相比,多了近62%的類和接口。在這些新特性中,它還提供了廣泛的XML支持、安全套接字支持(通過SSL和TLS協議)、全新的I/OAPI、正則表達式、日誌和斷言。2004年9月30日,J2SE1.5發布,成為Java語言發展史上的又壹個裏程碑。為了顯示這個版本的重要性,J2SE 1.5更名為Java SE 5.0(內部版本號1.5.0),代號為“老虎”。Tiger包含了自1996版本1.0發布以來最重大的更新,包括泛型支持、基本類型的自動打包和改進。
Java的創始人之壹:詹姆斯·高斯林
2005年6月,在Java One大會上,Sun發布了Java SE 6。這個時候Java的各種版本都已經改名了,去掉了數字2,比如J2EE改名JavaEE,J2SE改名JavaSE,J2ME改名JavaME。[8]
2006年6月3日,Java技術的發明者Sun公司宣布Java技術將作為自由軟件發布。Sun正式發布了第壹批關於Java平臺標準版的源代碼,以及Java mini版的可執行源代碼。從2007年3月開始,世界上所有的開發者都可以修改Java源代碼[9]。
2009年,甲骨文公司宣布收購孫[10]。2065 438+00 Java編程語言聯合創始人之壹詹姆斯·高斯林(james gosling)從甲骨文辭職。2011年,甲骨文公司舉行全球活動慶祝Java7的推出,隨後Java7正式發布。2014年,甲骨文公司發布了Java8正式版[11]。
編程開發
程序設計環境
Java概念圖
JDK(Java Development Kit),又稱Java開發包或Java開發工具,是壹個用於編寫Java Applet和應用程序的程序開發環境。JDK是Java的核心,包括Java運行時環境、壹些Java工具和Java API。無論Java應用服務器是什麽,它都有壹個內置的JDK版本。主流的JDK是由Sun公司發布的。除了Sun之外,許多公司和組織都開發了自己的JDK,例如IBM開發的、BEA開發的Jrocket和GNU組織開發的JDK[13]。
另外,Java SE API子集和Java API類庫中的Java虛擬機可以統稱為JRE(JAVA Runtime Environment),JRE是支持Java程序運行的標準環境[14]。
JRE是壹個運行環境,JDK是壹個開發環境。所以寫Java程序的時候需要JDK,運行Java程序的時候需要JRE。JDK已經包含了JRE,所以只要安裝了JDK,就可以正常編輯Java程序,運行Java程序。但是由於JDK包含了很多與運行無關的內容,占用空間很大,所以運行普通Java程序不需要安裝JDK,只需要JRE [15]即可。
編程工具
Eclipse:基於Java的開源可擴展開發平臺[16]。
NetBeans:壹個開源的Java集成開發環境,適合各種客戶端和Web應用程序。
IntelliJ IDEA:具有良好的代碼自動提示和代碼分析功能。[17]
MyEclipse:Genuitec開發的商業軟件,是壹個廣泛使用的Java應用集成開發環境[18]。
EditPlus:如果Java編譯器“Javac”和解釋器“Java”配置正確,可以直接使用EditPlus編譯執行Java程序[19]。
語言特點
1.簡單
Java看起來很像C++,但是為了讓語言變得小巧,便於熟悉,設計師們去掉了C++語言中很多可用的特性,這些特性是普通程序員很少用到的。例如,Java不支持go to語句,而是提供break和continue語句以及異常處理。Java還消除了C++的運算符重載和多重繼承特性,不使用主文件,從而消除了預處理器。因為Java沒有結構,數組和字符串都是對象,所以不需要指針。Java可以自動處理對象引用和間接引用,實現無用單元的自動收集,讓用戶不用擔心存儲管理,可以把更多的時間和精力放在研發上。
2.面向對象
Java是壹種面向對象的語言。對於程序員來說,這意味著關註數據和操縱數據的方法,而不是嚴格按照過程來思考。在面向對象的系統中,類是數據和操作數據的方法的集合。數據和方法壹起描述了對象的狀態和行為。每個對象都是其狀態和行為的封裝。類是按照壹定的體系和層次來排列的,這樣子類就可以繼承超類的行為。這個類層次結構中有壹個根類,它是壹個具有壹般行為的類。Java程序是按類組織的。
Java還包括壹組擴展的類,它們形成各種包,用戶可以在自己的程序中使用。例如,Java提供了生成圖形用戶界面組件的類(java.awt包),其中awt是abstract windowing toolkit的縮寫,處理輸入輸出的類(java.io包)和支持網絡功能的類(java.awt包)。
3.分配
Java是為支持網絡應用而設計的,它是壹種分布式語言。Java不僅支持各種層次的網絡連接,而且用Socket類支持可靠的流網絡連接,因此用戶可以產生分布式的客戶機和服務器。
網絡成為軟件應用程序的分布式載體。Java程序只要寫壹次就可以在任何地方運行。
4.編譯和解釋
Java編譯器生成字節碼,而不是通常的機器碼。Java字節碼提供了壹種與體系結構無關的目標文件格式,該代碼被設計用來有效地將程序轉移到多個平臺。Java程序可以在任何實現Java解釋器和運行時系統的系統上運行。
在解釋性環境中,程序開發的標準“鏈接”階段已經大大消失了。如果說Java還有壹個鏈接階段,那只是壹個將新類放入環境的過程,是壹個增量的輕量級的過程。因此,Java支持快速原型和簡單測試,這將導致快速的程序開發。這是壹個微妙的開發過程,與傳統耗時的“編譯、鏈接和測試”形成鮮明對比。
5.穩健性
Java最初被用作編寫消費電子產品軟件的語言,所以它被設計用來編寫高度可靠和健壯的軟件。Java消除了壹些編程錯誤,使得用它編寫可靠的軟件變得非常容易。
Java 語言(壹種計算機語言,尤用於創建網站)
Java是壹種強類型語言,它允許在編譯時擴展檢查潛在類型不匹配的功能。Java要求顯式方法聲明,不支持C風格的隱式聲明。這些嚴格的要求確保了編譯器可以捕捉調用錯誤,從而產生更可靠的程序。
可靠性方面最重要的增強之壹是Java的存儲模型。Java不支持指針,這消除了重寫存儲和損壞數據的可能性。類似地,Java的自動“垃圾收集”防止了存儲泄漏和其他與動態存儲分配和釋放相關的有害錯誤。Java解釋器還執行許多運行時檢查,比如驗證所有的數組和字符串訪問都在界限內。
異常處理是Java中的另壹個特性,它使程序更加健壯。異常是壹種信號,表示出現了類似於錯誤的異常情況。使用try/catch/finally語句,程序員可以找到錯誤處理代碼,這簡化了錯誤處理和恢復的任務。
6.安全性
Java的存儲分配模型是其防禦惡意代碼的主要方法之壹。Java沒有指針,所以程序員無法得到隱藏的內部信息和假指針指向內存。更重要的是,Java編譯器不處理存儲安排決策,因此程序員無法通過查看聲明來猜測類的實際存儲安排。編譯後的Java代碼中存儲引用的實際存儲地址是由Java解釋器在運行時確定的。
Java操作系統使用字節碼驗證過程來確保網絡上加載的代碼不違反任何Java語言限制。這種安全機制包括如何從互聯網加載類。例如,加載的類被放在單獨的名稱空間中,而不是本地類中,以防止惡意小程序用它們自己的版本替換標準Java類。
7.輕便
Java使語言聲明獨立於實現方面。例如,Java明確說明了每個基本數據類型的大小及其操作行為(這些數據類型由Java語法描述)。
Java環境本身可以移植到新的硬件平臺和操作系統。Java編譯器也是用Java寫的,Java運行系統是用ANSIC語言寫的。
8.高性能
Java是壹種先編譯後解釋的語言,所以沒有完全編譯的語言快。但是,在某些情況下,性能非常重要。為了支持這些情況,Java設計者們做了壹個“即時”編譯器,可以在運行時將Java字節碼翻譯成特定CPU(中央處理器)的機器碼,即實現全編譯。
Java字節碼格式設計考慮到了這些“適時”編譯器的需求,所以生成機器碼的過程相當簡單,而且可以產生相當好的代碼。
9.多線程操作
Java是壹種多線程語言,支持多線程執行(也叫輕量級進程),可以處理不同的任務,很容易設計出有線索的程序。Java的lang包提供了壹個Thread類,支持啟動線程、運行線程、停止線程、檢查線程狀態的方法。
Java cue支持還包括壹組同步原語。這些原語是C.A.R.Haore基於管理程序和條件變量的風格開發的廣泛使用的同步方案。有了關鍵字synchronized,程序員就可以證明壹些方法不能在壹個類中同時運行。這些方法在監控程序的控制下,以確保變量保持在壹致的狀態。
10.動態的
Java語言是為適應不斷變化的環境而設計的。它是壹種動態的語言。比如Java中的類是按需加載的,有些甚至是通過網絡獲取的。[20]
操作原理
它包括四個方面:
操作原理
(1)Java編程語言
(2)Java類文件格式
(3)Java虛擬機
(4)Java應用程序接口[21]
在編輯和運行壹個Java程序的時候,這四個方面要同時涉及。使用文字編輯軟件(如記事本、寫字板、UltraEdit等。)或者集成開發環境(Eclipse、MyEclipse等。)在Java源文件中定義不同的類[22],通過調用類中的方法訪問資源系統(這些類實現Java API),將源文件編譯成二進制中間代碼,存儲在類文件中。然後通過運行操作系統平臺環境對應的Java虛擬機來運行類文件,執行編譯生成的字節碼,調用類文件中實現的方法來滿足程序的Java API調用[6]。
語言基礎
基本數據結構
Java中有八種數據類型來存儲數值、字符和布爾值。
整數類型
整數類型用於存儲整數值,即沒有小數部分的值。它可以是積極的,也可以是消極的。Java程序中整數數據有三種表示方式,即十進制、八進制和十六進制。
整數數據根據其內容的大小可以分為四種類型。
數據類型存儲器
字節
8位
短的
16位
(同Internationalorganizations)國際組織
32位
全部展開
浮點型
數據類型存儲器
漂浮物
32位
兩倍
64位
字符類型
字符類型用於存儲單個字符,占用16位(兩個字節)的內存空間。定義字符變量時,應該用單引號表示。使用char關鍵字定義字符變量。
數據類型存儲器
茶
16位
布爾型
布爾型也叫邏輯型。布爾型變量由關鍵字Boolean定義,只有真和假兩個值,分別代表布爾邏輯中的“真”和“假”。布爾型通常在過程控制中用作判斷條件。
關鍵字
關鍵詞含義
摘要
抽象類或方法
維護
用於查找內部程序錯誤。
破裂
跳出開關或回路
全部展開
關鍵詞引用數據源[23]
運算符
運算符是壹些特殊的符號,主要用在數學函數、某些類型的賦值語句和邏輯比較中。
賦值運算符
賦值運算符由符號“=”表示。它是壹個二元運算符(處理兩個操作數),其功能是將右操作數中包含的值賦給左操作數。
例如:
int a = 100;
算術運算符
操作員描述
+
增加
-
負的
*
多樣地
全部展開
自增自減算子
自增自減是單目運算符,可以放在操作數之前或之後。操作數必須是整數或浮點變量。自增自減運算符的作用是將壹個變量的值增加或減少1。放在操作數前面的自增自減運算符,會先將變量的值加1或減1,然後讓變量參與表達式的運算。放在操作數後面的自增自減運算符,會先使變量參與表達式的運算,然後在變量值上加1或減1。
例如:
假設a=5。
b = ++ a;//先把A的值加1,然後賦給B,這時A的值是6,B的值是6。
b = a++;//先把A的值賦給B,再把A的值改成6。此時,A的值為6,B的值為5。
比較運算符
比較運算符屬於二元運算符,用於比較程序中的變量、變量和自變量以及其他類型的信息。比較運算符的結果為布爾型。當運算符對應的關系成立時,運算結果為真,否則為假。比較運算符有六個* * *,通常在條件語句中作為判斷的依據。
操作員描述
& gt
比較左是否大於右。
& lt
比較左是否小於右。
==
比較左右是否相等。
全部展開
邏輯算子
操作員操作
& amp& amp
邏輯與
||
邏輯或
!
邏輯非
語言基本參考資料來源[24]
程序示例
/*壹個簡單的Java應用程序,它顯示的內容是:Hello World!
文件名是hello.java */
妳好{
//程序從main()開始
公共靜態void main(String args[]){
System.out.println("Hello World!");
}
}
正如註釋所說,main方法是程序的第壹行。對於壹個Java應用來說,main方法是必不可少的,Java解釋器以main為入口執行程序,不生成任何對象。每個類中可以定義多個方法,但只能有壹個主方法。關鍵字public表示訪問權限,表示所有類都可以使用此方法。在這種情況下,main必須被定義為public,因為當程序開始執行時,它需要被其類之外的代碼調用。關鍵字static表示該方法是壹個類方法。關鍵字void表示main()方法不返回值。main方法的括號中定義的字符串args[]是傳遞給main方法的參數。參數名為args,是類String的對象。方法的參數由“類名參數名”指定,多個參數之間用逗號分隔。該行的最後壹個字符是“{”,表示主程序體的開始,壹個方法中包含的所有代碼都將包含在花括號之間。另外,main只是解釋器開始工作的地方。壹個復雜的程序可能包含幾十個類,但是這些類只需要壹個main方法。[25]
語言標準
1997 165438+10月17國際標準化組織(ISO)同意采用Sun的專利技術——Java作為ISO標準。作為壹種技術標準,JAVA對公眾是免費的。通過ISO的批準,Sun將能夠提交JAVA的標準化平臺規範。[26]
發布時間名稱
2000年10月65438日
ISO/TS 10303-27:2000
2006年5月
ISO/IEC 19777-2:2006
2014七月15
ISO/IEC TR 13066-6:2014
全部展開
語言標準參考[27] [28] [29] [30] [31]
語言規範
JCP(Java Community Process)是壹個開放的國際組織,主要由Java開發者和被許可者組成。其職能是開發和更新Java技術規範、參考實現(RI)和技術兼容性包(TCK)。
JCP維護的規範包括Java ME、Java SE、Java EE、XML、OSS、JAIN等。壹個組織的成員可以提交JSR(Java規範請求),通過壹個特定的程序後進入下壹個版本的規範。
JSR是早期提出並最終發布的Java平臺規範的具體描述。通常,提出新的JSR來增加或標準化Java平臺的功能。具體的JSR由專家組制定,工作由組長協調。如CLDC 1.0 (JSR30)由Sun公司的Antero Taivalsaari牽頭,專家組成員還包括西門子、摩托羅拉、諾基亞、Symbian等。Java ME平臺規範是在JSR68中定義的,規範的主導者是Sun公司的Jon Courtney。
JSR完成後,相關規範和JavaAPI將在JCP官方網站上公布。設備制造商可以在自己的產品中實現JSR,如MIDP2.0(JSRll8)。但這些都必須通過TCK(技術兼容套件)測試,以保證技術兼容性。[32]
根據技術類別,可分為以下幾類:
1,J2EE平臺規範[33]
2、J2SE平臺規範[34]
3、J2ME平臺規範[35]
4、運營支撐系統規範(OSS)[36]
5、集成網絡Java應用(JAIN)[37]
6、XML操作規範[38]
技術應用
1,安卓應用
許多Android應用程序是由Java程序員和開發人員開發的。雖然Android使用不同的JVM和不同的封裝方法,但是代碼還是用Java語言寫的。相當壹部分手機支持JAVA遊戲,這讓很多非程序員都懂JAVA。
2.應用於金融行業的服務器程序
Java在金融服務中應用廣泛,很多第三方交易系統、銀行、金融機構都選擇用Java開發,因為它相對安全[39]。大型跨國投資銀行使用Java編寫前臺和後臺電子交易系統、結算和確認系統、數據處理項目等項目。大多數情況下,Java用於服務器端開發,但大部分都沒有任何前端。它們通常從壹個服務器(上層)接收數據,經過處理後發送給另壹個處理系統(下層)。
3.網站(全球資訊網的主機站)
Java在電子商務和網站開發領域占據了壹定的地位。開發者可以使用很多不同的框架來創建web項目,比如SpringMVC、Struts2.0和框架。即使是簡單的servlet、JSP和基於struts的網站也經常在政府項目中使用。比如醫療、保險、教育、國防等不同部門的網站,都是基於Java開發的。
4.嵌入字段
Java在嵌入式領域有很大的發展空間。在這個平臺上,只需要130KB就可以使用Java技術(在智能卡或傳感器上)。
5.大數據技術
Hadoop等很多大數據處理技術都是Java的,比如Apache的基於Java的HBase和Accumulo,以及ElasticSearchas。
6.高頻交易的空間
Java平臺改進了這個平臺的特性,即使編譯了,也可以像C++壹樣傳輸數據。正是因為這個原因,Java才成為程序員編寫交易平臺的語言,因為雖然性能不如C++,但開發者可以避免安全性、可移植性、可維護性等問題。
7.科學應用
在包括自然語言處理在內的科學應用中,Java是壹個很好的選擇。主要原因是Java在安全性、可移植性、可維護性和其他高級語言的並發性方面都優於C++或其他語言。
Java語言易學難掌握,配置東西更復雜。