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

2020-12-13 騰訊網

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中默認的Cache

ProviderRedis:一個key-value存儲系統Shiro:Apache Shiro是Java的一個安全框架,旨在簡化身份驗證和授權

相關焦點

  • 十大受歡迎的程式語言你pick哪一個?
    但是根據2019年Stack Overflow開發者調查,Python是最頂級的面向對象程式語言之一,在最受歡迎的頂級程式語言列表中排名第二;在StackOverflow Developer調查中也被公認為最需要的程式語言;更是在GitHub上第二活躍的程式語言。這麼多的榮譽,可以說是C位「出道」了。
  • 日常疑惑:編程學Java還是學C語言?
    這兩門程式語言都是IT行業的寵兒,Java與和C語言各自的技術特點、應用方向上有所不同,沒有伯仲之分,所以這也讓初學者們覺得很難選:應該選擇哪個做為入門語言呢?從學習的難易度上來說,java語言比C語言要簡單。
  • JetBrains:2020年程式語言排名 Java最受歡迎
    IDE工具開發商JetBrains基於2萬名開發者,對程式語言的最新情況進行了統計描摹。就受歡迎程度而言,Java高居第一位,但在使用人數上,JavaScript則名列榜首。歡迎程度的統計方法是,讓參與的開發者選出三種立即覺得必要的語音,最後算結果。
  • 月入過萬的程式語言PHP、Python、Java到底該選擇哪一個
    是太陽系最好的語言php?還是在編程江湖名稱響噹噹的Python?還是很早就玩起對象模式的java?同學們是不是已經一頭霧水了呢?下面我們來分析下各個語言的優劣勢說到php,大家第一反應是「世界上最好的語言」,沒毛病,它就是啊,php是開發最快速的語言,很多中小型創業公司首選的第一語言。別的語言還在搭架構,php開發的項目已經上線了,what?
  • 為什麼Java語言比CPP競爭編程要慢?
    為什麼Java語言比CPP競爭編程要慢? 最重要的因素是開始競爭性編程時選擇合適的語言。通常,我們選擇語法簡短,執行速度非常快或我們熟悉的語言,並且我們知道特定語言的所有工作模式,無論是Java還是C ++。
  • JetBrains 2020 年開發者生態系統狀況報告,JAVA 最受歡迎的語言
    到 2020 年初,他們對 19696 名開發人員進行了調查,這些反饋幫助 JetBrains 確定了有關工具,技術,程式語言以及開發世界許多其他令人興奮方面的最新趨勢。內容重點:JAVA:是最流行的主要程式語言。
  • 最適合單片機編程的高級語言,除了C語言,別無選擇!
    單片機為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python,VC等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不能不能,而是不合適。
  • 軟體程式語言這麼多,為什麼淄博小夥伴選擇Java呢
    04|R、Matlab等等,後面兩種主要是做一些輔助工作,你可以看到,Java才是最主流的開發語言! 02|IOS:Object-C、swfit 03|Andriod:java 總之,Java在網際網路公司最流行,需求人數也最多 那麼現在選擇哪種語言,已經不難決定了吧,Java就業相當廣泛,工資也是絕對拿得起。
  • 北大青鳥建大IT學院:JAVA為什麼能成為世界第一大程式語言?
    Java就是那個常常在TIOBE程式語言排行榜上霸佔第一名的軟體程式語言,是當今世界上第一大程式語言。那麼Java為什麼能成為世界第一大程式語言呢?1、Java的誕生Java誕生於20世紀90年代。3、JAVA的網際網路基因--為網際網路而生Java最初被用來參加幾個機頂盒項目的競標,但不幸失敗,而此時網際網路又開始興起並在全球範圍內普及起來,於是Java即刻投身到網際網路應用的開發,Java以跨平臺的優勢迅速在網際網路中站穩腳跟。
  • 程式語言那麼多,選擇學習C語言的三大理由!
    都2020年了,為什麼大學裡教的第一門語言還是C?最近在網上看到很多同學都在吐槽這個問題。程式語言那麼多,C語言到底有何優勢值得大家選擇呢?首先作為一門已經問世50年的老語言了,C語言已經很老了,但不可否認的是它仍然很能打,無論是曾經風靡一時的java還是現在火熱的python,在風口過後,屹立不倒的還是C語言。根據最新的TOIBE排名,C語言高居榜首,而且縱觀近20年程式語言的排名變化,C語言也一直都是前三甲,這充分說明了它的江湖地位!
  • 百萬開發者最需要的程式語言
    對於很多想通過學習程式語言,進入IT行業發展的人來說,最大的困難是不知從何入手?不知道應該選擇哪門程式語言?有人告訴你要學java,因為現在用的人比較多;也有人告訴你要先學python,簡單易學,它是人工智慧時代的首選語言;有人會告訴你先學習JavaScript,掌握他便可無敵。
  • 2020年最流行的10種程式語言是什麼?
    新技術和創新技術項目對於組織迅速擴大規模極為寶貴。技術是通過程式語言來實現的,技術領域中有600多種程式語言。程式語言的命令和識別每年都在變化。此外,新的程式語言還具有引人注目的特性和功能。為了促進軟體開發服務和Web應用程式的需求,以下急需提及的十大最受歡迎的程式語言。1.
  • Spark程式語言之scala
    scala能夠繼續使用java的部分語法。scala具有自己特有的語法:增強,函數式編程,偏函數,函數的柯裡化高階函數,將函數作為參數傳遞等。2.Spark架構由scala語言編寫。3.Scala語言的特點:Scala是以一門以java虛擬機JVM為運行環境的將面向對象,函數式編程結合在一起的靜態類型程式語言。
  • JAVA高並發網絡編程之BIO堵塞網絡編程
    上次說了網絡編程都是有作業系統統一的API的,每個語言有對它的實現,這次來一起說說通過java原生的socket編程完成BIO的網絡編程。
  • ...就要說HTML就是一門程式語言!只有外行才說它是超文本標記語言!
    目前程式語言很多,很多感興趣編程的新手都不知道如何入手,到底是選擇學習當下熱門程式語言還是選擇多年發展穩定的程式語言; 如果選擇入門編程順利將來對自己的職業生涯有著重要的作用,有些人在中途就放棄,可能是不感興趣,或許太難學了。
  • java、php、python誰更容易學習呢?
    IT開發是公認的高薪行業吸引了很多人的加入,目前市場上受歡迎的程式語言很多,其中java是老牌程式語言,擁有很高的市場佔有率,php被看做是Web後端開發的主要語言,而python隨著人工智慧時代的到來而備受關注。
  • 程式語言那麼多,為什麼學Java的人佔比最大?
    Java一直都是穩居排行榜第一的語言,在未來10年Java都會是最熱門的語言之一,因為Java技術具有卓越的通用性、高效性、安全性和平臺移植性,它可以跨平臺的應用到不同的領域,工作需求足夠大。 為什麼選擇學習Java程式語言?
  • 大數據入門:Java和Scala編程對比
    在學習大數據之初,很多人都會對程式語言的學習有疑問,比如說大數據編程主要用什麼語言,在實際運用當中,大數據主流編程是Java,但是涉及到Spark、Kafka框架,還需要懂Scala。今天的大數據入門分享,我們就來對Java和Scala這兩門語言的編程做個對比。
  • 「零基礎學JAVA」基礎篇 第二章 JAVA編程初體驗
    JAVA【零基礎學編程】系列今天給大家帶來基礎篇 第二章 JAVA編程初體驗本節的部分編碼操作需要先安裝JDK開發工具01程序開發三步走1.首先,我們需要編寫源程序2.然後,通過編譯器來將我們寫的代碼「翻譯」成電腦可以聽懂的語言
  • 原創】Java並發編程系列01|開篇獲獎感言
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫為什麼要學並發編程我曾聽一個從事15年開發工作的技術人員說過並發編程是Java語言的重要特性之一,它能使複雜的代碼變得更簡單,從而極大地簡化複雜系統的開發。並發編程可以充分發揮多處理器系統的強大計算能力,隨著處理器數量的持續增長,如何高效的並發變得越來越重要。