全球专业中文经管百科,由121,994位网友共同编写而成,共计436,047个条目

Java

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

(重定向自JAVA)

目錄

什麼是Java

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

  Java具有簡單性、面向對象、分散式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程式、Web應用程式、分散式系統嵌入式系統應用程式等。

Java發展歷程

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

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

  由於在開發Oak語言時,尚且不存在運行位元組碼的硬體平臺,所以為了在開發時可以對這種語言進行實驗研究,他們就在已有的硬體和軟體平臺基礎上,按照自己所指定的規範,用軟體建設了一個運行平臺,整個系統除了比C++更加簡單之外,沒有什麼大的區別。1992年的夏天,當Oak語言開發成功後,研究者們向硬體生產商進行演示了Green操作系統、Oak的程式設計語言、類庫和其硬體,以說服他們使用Oak語言生產硬體晶元,但是,硬體生產商並未對此產生極大的熱情。因為他們認為,在所有人對Oak語言還一無所知的情況下,就生產硬體產品的風險實在太大了,所以Oak語言也就因為缺乏硬體的支持而無法進入市場,從而被擱置了下來。

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

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

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

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

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

  1999年4月27日,HotSpot虛擬機發佈。HotSpot虛擬機發佈時是作為JDK 1.2的附加程式提供的,後來它成為了JDK 1.3及之後所有版本的Sun JDK的預設虛擬機。

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

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

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

  2009年,甲骨文公司宣佈收購Sun。2010年,Java編程語言的共同創始人之一詹姆斯·高斯林從Oracle公司辭職。2011年,甲骨文公司舉行了全球性的活動,以慶祝Java7的推出,隨後Java7正式發佈。2014年,甲骨文公司發佈了Java8正式版。

Java編程開發

編程環境

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

  另外,可以把Java API類庫中的Java SE API子集和Java虛擬機這兩部分統稱為JRE(JAVA Runtime Environment),JRE是支持Java程式運行的標準環境。

  JRE是個運行環境,JDK是個開發環境。因此寫Java程式的時候需要JDK,而運行Java程式的時候就需要JRE。而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以編輯Java程式,也可以正常運行Java程式。但由於JDK包含了許多與運行無關的內容,占用的空間較大,因此運行普通的Java程式無須安裝JDK,而只需要安裝JRE即可。

編程工具

  Eclipse:一個開放源代碼的、基於Java的可擴展開發平臺

  NetBeans:開放源碼的Java集成開發環境,適用於各種客戶機和Web應用。

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

  MyEclipse:由Genuitec公司開發的一款商業化軟體,是應用比較廣泛的Java應用程式集成開發環境。

  EditPlus:如果正確配置Java的編譯器“Javac”以及解釋器“Java”後,可直接使用EditPlus編譯執行Java程式。

Java語言特點

  1.簡單性

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

  2.面向對象

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

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

  3.分佈性

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

  網路變成軟體應用的分佈運載工具。Java程式只要編寫一次,就可到處運行。

  4.編譯和解釋性

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

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

  5.穩健性

  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的線索支持也包括一組同步原語。這些原語是基於監督程式和條件變數風範,由C.A.R.Haore開發的廣泛使用的同步化方案。用關鍵詞synchronized,程式員可以說明某些方法在一個類中不能併發地運行。這些方法在監督程式控制之下,確保變數維持在一個一致的狀態。

  10.動態性

  Java語言設計成適應於變化的環境,它是一個動態的語言。例如,Java中的類是根據需要載入的,甚至有些是通過網路獲取的。

Java工作原理

  工作原理由四方面組成:

  (1)Java編程語言

  (2)Java類文件格式

  (3)Java虛擬機

  (4)Java應用程式介面

  當編輯並運行一個Java程式時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類,通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進位中間碼,存儲在class文件中,然後再通過運行與操作系統平臺環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文件中實現的方法來滿足程式的Java API調用。

Java語言基礎

  基本數據結構

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

  (一)整數類型

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

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

  (二)浮點類型

  (三)字元類型

  字元類型用於存儲單個字元,占用16位(兩個位元組)的記憶體空間。在定義字元型變數時,要以單引號表示。使用char關鍵字可定義字元變數。

  (四)布爾類型

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

  關鍵字

  運算符

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

  賦值運算符

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

  自增和自減運算符

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

  比較運算符

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

  邏輯運算符

Java語言標準

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

語言規範

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

  JCP維護的規範包括Java ME、Java SE、Java EE、XMLOSS、JAIN等。組織成員可以提交JSR(Java Specification Requests),通過特定程式以後,進入到下一版本的規範裡面。

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

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

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

  1、J2EE平臺規範

  2、J2SE平臺規範

  3、J2ME平臺規範

  4、運營支持系統規範(OSS)

  5、綜合網路的Java 應用(JAIN)

  6、XML 操作規範  

技術應用

  1、Android應用

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

  2、在金融業應用的伺服器程式

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

  3、網站

  Java 在電子商務領域以及網站開發領域占據了一定的席位。開發人員可以運用許多不同的框架來創建web項目,SpringMVC,Struts2.0以及frameworks。即使是簡單的 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語言評價

發展前景

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

  隨著IT產業的發展,許多企業中的電腦應用程式也在隨之轉型,企業中所應用的電腦模式逐漸向客戶端較小、伺服器隨之增大、資料庫的容量也在相應增加的方向轉變。此外,加上Java語言獨有的特點,根據其在各項伺服器中應用程式的開發所占有的優勢,企業版的J2SE為企業環境中電腦模式的應用提供了良好的平臺。

  Java語言為與資料庫聯繫緊密設計了Java servlet和SQL-J技術,以及JSP技術。隨著JSP技術的發展,使JAVA語言的網路應用更為實際化、更高效快捷,成為IT產業常用的技術。JSP以Java語言作為其伺服器端的使用語言,結合了JAVA SCRIPT等多種其他客戶端語言,使網路瀏覽器更為方便的展現。

  在遠程網路教學方面,由於JAVA改變了傳統的基於Microsoft Front Page或HTML語言製作的Web頁面形態,使網路遠程教學更加朝著動態、便捷化、安全化的方向發展,豐富了網路遠程教學的手段和覆蓋面。  

貢獻及影響力

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

相關條目

本條目對我有幫助3
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目投訴舉報

本条目由以下用户参与贡献

刘维燎,苏青荇.

評論(共0條)

提示:評論內容為網友針對條目"Java"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

打开APP

以上内容根据网友推荐自动排序生成

官方社群
下载APP

闽公网安备 35020302032707号