楠木軒

Java:一個失敗專案的副產品,再次出世,變身最受歡迎的程式語言

由 時愛蘭 釋出於 科技

20世紀90年代初期,在硬體領域發生了一件大事,那就是32位微控制器和使用FLASH儲存的微控制器的橫空出世。鑑於單片式計算機系統未來的良好市場,創建於1982年的Sun公司為了搶佔市場先機,在1991年成立了一個稱為 “Green”的專案小組。由詹姆斯.高斯林及其他幾名工程師一起組成的這個小組開始研究開發新技術,專攻計算機在家電產品上的嵌入式應用。專案的最終成果之一是基於C++語言的新的程式語言Oak。1995年隨著網際網路的蓬勃發展,Sun公司終於想起了那個被擱置起來很久的專案成果——Oak語言,並將其改名為Java後公佈於世!

引言

20世紀90年代初期,在硬體領域發生了一件大事,那就是32位微控制器和使用FLASH儲存的微控制器的橫空出世。這種價格低廉的單片式計算機系統一出現就立即引起了自動控制領域人員的注意,因為使用這種系統可以大幅度提升消費類電子產品——如電視機頂盒、麵包烤箱、行動電話等——的智慧化程度。

鑑於單片式計算機系統未來的良好市場,創建於1982年的Sun公司為了搶佔市場先機,在1991年成立了一個稱為 “Green”的專案小組。由詹姆斯.高斯林及其他幾名工程師一起組成的這個小組開始研究開發新技術,專攻計算機在家電產品上的嵌入式應用。

由此,一個偉大的、卻最終失敗了的專案拉開了帷幕,但最後充分印證了“失敗是成功之母”的傳世名言。說其偉大,是因為其最終孵化出了一門在十年後,長期雄霸最受歡迎程式語言榜首的程式語言,這就是今天的主角—— Java語言。

Java是一門面向物件程式語言,具有簡單性、面向物件、分散式、健壯性、安全性、平臺獨立與可移植性、多執行緒、動態性等特點。在應用上,Java可以編寫桌面應用程式、Web應用程式、分散式系統和嵌入式系統應用程式等。

Java語言作為靜態面向物件程式語言的代表,極好地實現了面向物件理論,允許程式設計師以優雅的思維方式進行復雜的程式設計。

Oak語言

Sun公司的“Green”專案小組成員首要的工作,是確定在單片式計算機系統的環境下進行程式設計所採取的語言,由於C++語言所具有的優勢,被確定為第一選擇。然而在後續的工作中,卻遇到了重重阻撓,拿IT界的習慣說法就是踩了無數的坑。

最關鍵的兩個問題是:單片式計算機系統的硬體資源的匱乏和消費電子產品所採用的嵌入式處理器晶片的種類繁雜導致的平臺差異。為了解決困難,最終決定改變工作計劃,開始著手研發適合未來應用場景的程式語言。

小組成員首先確定了硬體平臺的規範,假設了一種結構簡單、符合嵌入式應用需要的硬體平臺體系結構,這其中就包括後來被稱為“位元組碼”的二進位制機器碼指令系統。他們的設想是未來語言開發成功後,能有半導體晶片生產商開發和生產這種硬體平臺,以便以新語言開發的程式可以通用於其上。

這種新語言最終被命名為“Oak”,是一種面向物件的程式語言。Oak語言是基於C++語言,根據嵌入式軟體的要求進行相應的改造後形成,具備更實用、更安全、更符合實時性要求的特點。

由於執行位元組碼的硬體平臺還不存在,為了建立Oak語言的試驗和研究環境,就在已有的硬體和軟體平臺基礎上,按照所制定的規範,用軟體建設了一個模擬的執行平臺。

時間進入了1992年的夏天,Oak語言終於開發完成。但這些研究者們在向硬體生產商演示他們的執行平臺、Oak的程式設計語言、類庫和其硬體時,遭遇了滑鐵盧。Oak語言也就因為缺乏硬體的支援而無法進入市場,從而被擱置了下來。

隨著技術的進步,以及全球資訊網(網際網路的前身)的快速發展,在1994年6、7月間,專案組經歷了三天的討論之後,決定將專案前期的成果應用於全球資訊網。當年年底,詹姆斯.高斯林在矽谷召開的“技術、教育和設計大會”上,首次展示了Oak程式。到1995年時,專案組真正的機會到來了。

Java出世

1995年網際網路的蓬勃發展,使得市場急需一種可以透過網路傳播並且能夠跨平臺執行的程式。在此情況下,Sun公司終於想起了那個被擱置起來很久的專案成果——Oak語言,重新對其進行審視,發現其精簡的風格、小體量的特點,非常適合在網路上傳輸。

於是,Sun公司首先推出了可以嵌入網頁,並且可以隨同網頁在網路上傳輸的Applet(後來的Java小程式),並將Oak語言進行專利註冊,此時卻發現該名稱已被註冊。隨後,Sun將Oak改名為Java(源於討論Oak新名稱時,提議者在喝一杯Java咖啡時對咖啡的無意評論),並於5月23日,在Sun world會議上正式釋出Java和HotJava瀏覽器。

至此,由失敗的嵌入式應用專案的副產品Oak,在更名為Java後開始被廣為人知,迅速在世界上流行起來。

當時IT界的巨頭公司,IMB、Apple、DEC、Adobe、HP、Oracle、Netscape和微軟等都紛紛停止了自己的相關開發專案,競相購買了Java使用許可證,併為自己的產品開發了相應的Java平臺。

1996年1月,Sun公司釋出了Java的第一個開發工具包(JDK 1.0),這是Java發展歷程中的重要里程碑,標誌著Java成為一種獨立的開發工具。同年10月,Sun公司釋出了Java平臺的第一個即時(JIT)編譯器。

1997年11月17日,國際標準化組織(ISO)同意採納Sun公司的專利技術——Java,作為ISO標準。JAVA作為一個技術標準開始供公眾無償使用。

1999年6月,Sun公司釋出了第二代Java平臺(簡稱為Java2),是Java發展過程中最重要的一個里程碑,標誌著Java的應用開始普及。

2006年11月13日,Java技術的發明者Sun公司宣佈,將Java技術作為免費軟體對外發布。Sun公司正式釋出有關Java平臺標準版的第一批原始碼,以及Java迷你版的可執行原始碼。從2007年3月起,全世界所有的開發人員均可對Java原始碼進行修改。在Java的發展史上,這是一個歷史性時刻。

2009年,Sun 公司被甲骨文公司收購。僅僅過了一年,被公認為“Java之父”的Java程式語言的共同創始人之一——詹姆斯·高斯林,從Oracle公司辭職。

結語

如果瞭解C語言的誕生,或者看過我關於C語言的的舊文(請看文末參看內容),對於Java的誕生是否有種似曾相識的感覺?是的,這兩種廣受歡迎的程式語言,都是歪打正著的產物。

這充分說明了一個偉大事物的誕生,並不在於其出世時的狀態,而是決定於其實質和其所處的時代。在軟體領域,目前有5000多種程式語言,它們可能專注於某個行業,也可能僅僅是用於某個專案,也可能存在於一時,但你無法忽視其所起的作用。一門受歡迎的程式語言,只是因為適應了潮流、適應了時代,在不斷的變化中獲得了新生。

Java 語言本身就是一門隨時代快速發展的計算機語言程式,其深刻展示了程式編寫的精髓,加上其簡明嚴謹的結構及簡潔的語法編寫,為其將來的發展及維護提供了保障。在當前的網路資訊化時代,Java語言在減少記憶體,可以直接在各類電子產品中執行,同時在網路中可被任何裝置所識別,以及充分利用網路資源等方面的突破創新,也讓Java的大行其道有了必然性。

由於Java核心原始碼的開源狀態,使得各個網際網路巨頭以及Java社群可以對Java提供完全的支援,出現了相當多的非常流行的框架結構,比如SpringMVC。使用這些成熟的框架,可以使得Java應用程式的編寫難度逐步降低,反過來又使得更多才華橫溢的程式設計師將精力放置於Java語言的完善與框架結構的設計中,形成了良性迴圈。

所有的這些,都使得Java技術在創新和社會進步上繼續發揮著強有力的重要作用。

附錄:

縮略語解釋:

  • JRE:Java執行環境(Java Runtime Environment)
  • JDK:Java開發包或Java開發工具(Java Development Kit)

常用程式設計工具:

  • Eclipse:一個開放原始碼的、基於Java的可擴充套件開發平臺 。
  • NetBeans:開放原始碼的Java整合開發環境,適用於各種客戶機和Web應用。
  • IntelliJ IDEA:在程式碼自動提示、程式碼分析等方面的具有很好的功能。
  • MyEclipse:由 Genuitec 公司開發的一款商業化軟體,是應用比較廣泛的Java應用程式整合開發環境。
  • EditPlus:如果正確配置Java的編譯器“Javac”以及直譯器“Java”後,可直接使用EditPlus編譯執行Java程式。

常用的十大Java框架:

  • Spring:一個輕量級的控制反轉(IoC)和麵向切面(AOP)的容器框架,主要用來解決企業應用開發的複雜性
  • SpringMVC:一種基於Java的實現了Web MVC設計模式的請求驅動型別的輕量級Web框架
  • Mybatis:支援普通 SQL查詢,儲存過程和高階對映的優秀持久層框架
  • Dubbo:一個分散式服務框架,致力於提供高效能和透明化的RPC(遠端過程呼叫協議)遠端服務呼叫方案,以及SOA服務治理方案
  • Maven:一個專案管理和構建自動化工具
  • RabbitMQ:用Erlang實現的一個高併發高可靠AMQP訊息佇列伺服器
  • Log4j:一個日誌處理框架
  • Ehcache:一個純Java的程序內快取框架,具有快速、精幹等特點,是Hibernate中預設的CacheProvider
  • Redis:一個key-value儲存系統
  • Shiro:Apache Shiro是Java的一個安全框架,旨在簡化身份驗證和授權

歡迎關注“夢想視角”!關注手機、數碼、科技、網際網路資訊!

請參看

C/C++的起源與發展故事,我是最牛的軟體程式語言,不接受反駁

軟體世界的緣起及現代程式語言的誕生,程式設計師群體有一位老祖母