java學習總結——你的前世今生
一、背景
JAVA語言最開始只是Sun電腦(Sun MicroSystems)公司在1990年12月開始研究的一個內部項目。Sun電腦公司的一個叫做帕特里克·諾頓的工程師被公司自己開發的C++和C 語言編譯器搞得焦頭爛額,因為其中的API極其難用。帕特里克決定改用NeXT,同時他也獲得了研究公司的一個叫做“Stealth計劃”的項目的機會。
在這個項目中,團隊最初考慮使用C++語言,但是很多成員包括Sun的首席科學家比爾?喬伊,發現C++和可用的API在某些方面存在很大問題。
工作小組使用的是內嵌類型平臺,可以用的資源極其有限。很多成員發現C++太復雜以至很多開發者經常錯誤使用。他們發現C++缺少垃圾回收系統,還有可移植的安全性、分布程序設計、和多線程功能。最后,他們想要一種易于移植到各種設備上的平臺。
根據可用的資金,喬伊決定開發一種集C語言和Mesa語言大成的新語言,在一份報告上,喬伊把它叫做“未來”,他提議Sun公司的工程師應該在C++的基 礎上,開發一種面向對象的環境。最初,高斯林試圖修改和擴展C++的功能,他自己稱這種新語言為C++ ++ --,但是后來他放棄了。他將要創造出一種全新的語言,被他命名為“Oak”(橡樹),以他的辦公室外的橡樹命名。
1994年6、7月間,在經歷了一場歷時三天的頭腦風暴的討論之后,約翰·蓋吉、詹姆斯·高斯林、比爾·喬伊、帕特里克·諾頓、韋恩·羅斯因和埃里克·斯 庫米,團隊決定再一次改變了努力的目標,這次他們決定將該技術應用于萬維網。作為原型,帕特里克·諾頓寫了一個小型萬維網瀏覽器,WebRunner,后 來改名為HotJava。同年,Oak改名為Java。商標搜索顯示,Oak已被一家顯卡制造商注冊,因此團隊找到了一個新名字。
這個名字是在很多成員常去的本地咖啡館中杜撰出來的。一種比較可信的說法是這個名字是出于對咖啡的喜愛,所以以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技術。
二、發展
1、概念
是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。
Java不同于一般的編譯語言和直譯語言。它首先將源代碼編譯成字節碼,然后依賴各種不同平臺上的虛擬機來解釋執行字節碼,從而實現了“一次編寫,到處運行”的跨平臺特性。
Java 編程語言是個簡單、面向對象、分布式、解釋性、健壯、安全與系統無關、可移植、高性能、多線程和動態的語言。
2、組成
Java編程語言,即語法。
Java文件格式,即各種文件夾、文件的后綴。
Java虛擬機(JVM),即處理*.class文件的解釋器。
Java應用程序接口(Java API)。
#p#
3、優點
(1)Java是目前使用最為廣泛的網絡編程語言之一。
它具有簡單,面向對象,穩定,與平臺無關,解釋型,多線程,動態等特點。
(2)簡單
Java 語言簡單是指這門語言既易學有好用。如果你學習過 C++語言,你會感覺 Java很眼熟,因為 Java中許多基本語句的語法和 C++一樣,像常用的循環語句,控制語句等和 C++幾乎一樣,但不要誤解為 Java 是 C++的增強版,Java 和 C++是兩種完全不同的語言,他們各有各的優勢,將會長期并存下去,Java 語言和 C++語言已成為軟件開發者應當掌握的語言。如果從語言的簡單性方面看,Java要比 C++簡單,C++中許多容易混淆的概念,或者被Java棄之不用了,或者以一種更清楚更容易理解的方式實現,例如,Java不再有指針的概念。
(3)面向對象
基于對象的編程更符合人的思維模式,使人們更容易編寫程序。在實際生活中,我們每時每刻都與對象在打交道。我們可以用共有的屬性和功能給出一個概念 ,如機動車類。一個具體的轎車就是機動車類的一個實例 對象 .
Java 語言與其它面向對象語言一樣,引入了類的概念,類是用來創建對象的模板,它包含被創建的對象的狀態描述和方法的定義。
(4)與平臺無關
跨平臺是 Java 語言最大的優勢。其它語言編寫的程序面臨的一個主要問題是 操作系統的變化,處理器升級以及核心系統資源的變化,都可能導致程序出現錯誤或無法運行。Java的虛擬機成功地解決了這個問題,Java編寫的程序可以 在任何安裝了 Java虛擬機 JVM 的計算機上正確的運行,Sun公司實現了自己的目標 “一次寫成,處處運行”。
(5)解釋型
我們知道C,C++等語言,都是只能對特定的CPU芯片進行編譯,生成機器代碼,該代碼的運行就和特定的CUP有關。
Java不像C++,它不針對特定的CPU芯片進行編譯,而是把程序編譯為稱做字節碼的一個“中間代碼”。字節碼是很接近機器碼的文件,可以在提供了 Java 虛擬機 JVM 的任何系統上被解釋執行。
Java的字節碼經過仔細設計,很容易便能使用JIT 即時編譯方式 編譯技術將字節碼直接轉化成高性能的本地機器碼,Sun 公司在 Java 2發行版中提供了這樣一個字節碼編譯器——JIT(Just In Time),它是Java虛擬機的一部分。Java運行系統在提供JIT的同時仍具有平臺獨立性,因而“高效且跨平臺”對Java來說不再矛盾。
如果把 Java 的程序比做“漢語”的話,字節碼就相當于“世界語”,世界語不和具體的“國家”關,只要這個“國家”提供了“翻譯”,就可以再快速地把世界語翻譯成本地語言。
(6)多線程
Java 的特點之一就是內置對多線程的支持。多線程允許同時完成多個任務。實際上多線程使人產生多個任務在同時執行的錯覺,因為,目前的計算機的處理器在同一時刻 只能執行一個線程,但處理器可以在不同的線程之間快速地切換,由于處理器速度非常快,遠遠超過了人接收信息的速度,所以給人的感覺好象多個任務在同時執 行。C++沒有內置的多線程機制,因此必須調用操作系統的多線程功能來進行多線程程序的設計。
(7)安全
當你準備從網絡上下載一個程序時,你最大的擔心是程序中含有惡意的代碼,比如試圖讀取或刪除本地機上的一些重要文件,甚至該程序是一個病毒程序等。當你使用支持Java的瀏覽器時,你可以放心地運行Java的小應用程序 Java Applet ,不必擔心病毒的感染和惡意的企圖,Java小應用程序將限制在 Java運行環境中,不允許它訪問計算機的其它部分。
(8)動態
Java 程序的基本組成單元就是類,有些類是自己編寫的,有一些是從類庫中引入的,而類又是運行時動態裝載的,這就使得Java 可以在分布環境中動態地維護程序及類庫,而不像 C++那樣,每當其類庫升級之后,相應的程序都必須重新修改,編譯。
4、缺點
開發周期長,代碼量大,對程序員的技術要求高
有人說,對于一個大型項目,如果用java來作,可能需要9個月,并且可能需要翻閱10本以上的書,但如果用ruby來作,3個月,3本書就足夠了,而.net也不過3,4本書足以,這就是區別。
比性能,微軟曾做過一個例子,就是同一個項目用java和.net來作,結果開發周期,.net是java的一半,代碼量java是.net的三倍。
三、比較
Java編程語言的風格十分接近C語言、C++語言。
Java是一個純粹的面向對象的程序設計語言,它繼承了 C++語言面向對象技術的核心。Java舍棄了C語言中容易引起錯誤的指針(以引用取代)、運算符重載(operator overloading)、多重繼承(以接口取代)等特性,增加了垃圾回收器功能,用于回收不再被引用的對象所占據的內存空間,使得程序員不用再為內存管 理而擔憂。
在 Java 1.5 版本中,Java 又引入了泛型編程(Generic Programming)、類型安全的枚舉、不定長參數和自動裝/拆箱等語言特性。
總結:無論java還是.Net,他們都是編程語言的一種,編程的關鍵不是語言,而是思想,一旦 你有了思想,那你編的程序就有了靈魂,不管是什么語言到了你的手里都會是你的工具而已,他們的價值是能盡快幫助你實現你想要的目標。但是如果你沒有了思 想,那就像是海里的帆船失去了船帆,是很難到打海的另一邊的。所以,讓我們去學習語言中的思想,讓我們去掌握編程的靈魂。