Java:一個帝國的誕生(請仔細(xì)看完,你會感嘆這是一個奇跡)

C語言帝國的統(tǒng)治

現(xiàn)在是公元1995年, C語言帝國已經(jīng)統(tǒng)治了我們20多年, 實在是太久了。

1972年, 隨著C語言的誕生和Unix的問世, 帝國迅速建立統(tǒng)治, 從北美到歐洲, 從歐洲到亞洲, 無數(shù)程序員臣服在他的腳下。

帝國給我們提供了極好的福利:貼近硬件, 運行極快, 效率極高。

使用這些福利, 程序員們用C 開發(fā)了很多系統(tǒng)級軟件,操作系統(tǒng), 編譯器, 數(shù)據(jù)庫,網(wǎng)絡(luò)系統(tǒng).....

但是帝國也給我們安上了兩個沉重的枷鎖: 指針和內(nèi)存管理

雖然指針無比強(qiáng)大, 能直接操作內(nèi)存, 但是帝國卻沒有給我們工具去做越界的檢查, 導(dǎo)致很多新手程序員輕易犯錯。

至于內(nèi)存管理, 帝國更完全是放任的態(tài)度: 你自己分配的空間, 自己去釋放 !

更要命的是這些問題在編譯期發(fā)現(xiàn)不了, 在運行時才會突然暴露, 常常讓我們手忙腳亂, 昏天黑地去調(diào)試。

我們的大量時間和寶貴的精力都被浪費在小心翼翼的處理指針和內(nèi)存分配上。

每個程序員都被這兩個東西搞的焦頭爛額!

帝國宣稱的可移植性騙了我們,他宣稱我們在一個機(jī)器上寫的程序, 只要在另外一個機(jī)器上編譯就可以了, 實際上不是這樣。 他要求我們盡量用標(biāo)準(zhǔn)的C函數(shù)庫。其次,如果遇到了一些針對特定平臺的調(diào)用, 需要對每個平臺都得寫一份 ! 有一點點小錯誤,都會導(dǎo)致編譯失敗。

在這里還是要推薦下我自己建的Java學(xué)習(xí)裙:574加上253再加上075,群里都是學(xué)Java開發(fā)的,如果你正在學(xué)習(xí)Java ,小編歡迎你加入,大家都是軟件開發(fā)黨,不定期分享干貨(只有Java軟件開發(fā)相關(guān)的),包括我自己整理的一份2018最新的Java進(jìn)階資料和高級開發(fā)教程,歡迎進(jìn)階中和進(jìn)想深入java的小伙伴

1982年,帝國又推出了一門新的語言C++, 添加了面向?qū)ο蟮墓δ?,兼容C, 有靜態(tài)類型檢查, 性能也很好。

但是這門新的語言實在是太復(fù)雜了, 復(fù)雜到比我聰明的多的人都沒有辦法完全掌握這門語言,它的很多特性復(fù)雜的讓人吃驚。

C++在圖形領(lǐng)域和游戲上取得了一些成功, 但是我一直學(xué)不好它。

2

反抗

我決定反抗這個龐大的帝國, 我偷偷的帶領(lǐng)著一幫志同道合的兄弟離開了,我們要新建一塊清新自由的領(lǐng)地。

為了吸引更多的程序員加入我們, 我們要建立一個新的語言,這個語言應(yīng)該有這樣的特性:

語法有點像C , 這樣大家容易接受

沒有C語言那樣的指針

再也不要考慮內(nèi)存管理了, 實在受不了了

真正的可移植性, 編寫一次, 到處運行

面向?qū)ο?/p>

類型安全

還有,我們要提供一套高質(zhì)量的類庫, 隨語言發(fā)行。

我想把這個語言命名為C++-- , 即C++減減, 因為我想在C++的基礎(chǔ)上改進(jìn),把它簡化。

后來發(fā)現(xiàn)不行, 設(shè)計理念差別太大。

干脆重啟爐灶。

我看到門口的一棵橡樹, 就把這個語言叫做Oak。

但是后來發(fā)布的時候, 發(fā)現(xiàn)Oak已經(jīng)被別人用了, 我們討論很久, 最終決定把這門新的語言叫做 Java。

為了實現(xiàn)跨平臺, 我們在操作系統(tǒng)和應(yīng)用程序之間增加了一個抽象層: Java 虛擬機(jī)

用Java寫的程序都跑在虛擬機(jī)上, 除非個別情況, 都不用看到操作系統(tǒng)。



一鳴驚人

為了吸引更多的人加入我們的新領(lǐng)地, 我們決定搞一個演示, 向大家展示Java 的能力。

出世未久的Java其實還遠(yuǎn)不完善。 搞點什么好呢?

我們把眼光盯上了剛剛興起的互聯(lián)網(wǎng), 1995年的網(wǎng)頁簡單而粗糙, 缺乏互動性。 于是我們在瀏覽器上弄了個小插件, 把java 運行環(huán)境放了上去。

然后在上面開發(fā)了一個圖形界面的程序(Applet), 讓它看起來美輪美奐, 震撼人心。

每一個看到他的程序員都會發(fā)出“Wow”的驚嘆 !為之傾倒。

Java 活了!

通過Applet , 無數(shù)的程序員看到了Java這門語言,了解了這門語言特性以后, 很多無法忍受C帝國暴政的程序員, 很快加入了我們, 我們的領(lǐng)地開始迅速擴(kuò)大。

連C語言帝國里的一些商業(yè)巨頭也紛紛來和我們合作, 其中就包括Oracle , 微軟這樣的巨頭 , 微軟的頭領(lǐng)Bill Gates還說 :這是迄今為止設(shè)計的最好的語言!

但是Bill Gates非常的不地道, 買了我們的Java 許可以后,雖然在自家的瀏覽器上也支持Applet, 但是他們卻偷偷的試圖修改Java , 想把Java綁死在自家的操作系統(tǒng)上賺錢, Java會變的不可移植。

這是我們難于忍受的, 我們和微軟發(fā)起了一場曠日持久的游擊戰(zhàn)爭, 逼著微軟退出了Java領(lǐng)域, 開發(fā)了自己的.NET , 這是后話。

4

開拓疆土

從1995年到1997年,我們依靠 Java 不斷的攻城略地, 開拓疆土,我們王國的子民不斷增加, 達(dá)到了幾十萬之眾, 已經(jīng)是一個不可忽視的力量了。

但是大家發(fā)現(xiàn), Java除了Applet, 以及一些小程序之外, 似乎干不了別的事情。

C帝國的人還不斷的嘲笑我們慢, 像個玩具。

到了1998年, 經(jīng)過密謀, 我們Java 王國決定派出三只軍隊向外擴(kuò)展:

Java 2 標(biāo)準(zhǔn)版(J2SE): 去占領(lǐng)桌面

Java 2 移動版(J2ME): 去占領(lǐng)手機(jī)

Java 2 企業(yè)版(J2EE): 去占領(lǐng)服務(wù)器

其中的兩只大軍很快敗下陣來。

J2SE 的首領(lǐng)發(fā)現(xiàn), 開發(fā)桌面應(yīng)用的程序員根本接受不了Java, 雖然我們有做的很優(yōu)雅的Swing 可以開發(fā)界面, 但是開發(fā)出的界面非常難看, 和原生的桌面差距很大。 尤其是為了運行程序還得安裝一個虛擬機(jī), 大家都受不了。

J2ME也是, 一直不受待見, 當(dāng)然更重要的原因是喬布斯還沒有重新發(fā)明手機(jī), 移動互聯(lián)網(wǎng)還沒有啟動。

失之東隅,收之桑榆, J2EE趕上了好時候, 互聯(lián)網(wǎng)大發(fā)展, 大家忽然發(fā)現(xiàn), Java簡直是為寫服務(wù)器端程序所發(fā)明的!

強(qiáng)大, 健壯, 安全, 簡單, 跨平臺 !

在J2EE規(guī)范的指導(dǎo)下, 特別適合團(tuán)隊開發(fā)復(fù)雜的大型項目。

我們授權(quán)BEA公司第一個使用J2EE許可證, 推出了Weblogic, 憑借其集群功能, 第一次展示了復(fù)雜應(yīng)用的可擴(kuò)展性和高可用性。

這個后來被稱為中間件的東西把程序員從事務(wù)管理,安全管理,權(quán)限管理等方面解放出來, 讓他們專注于業(yè)務(wù)開發(fā)。 這立刻捕獲了大量程序員的心。

很快Java 王國的子民就達(dá)到數(shù)百萬之眾。

榜樣的力量是無窮的, 很快其他商業(yè)巨頭也紛紛入場, 尤其是IBM,在Java 上瘋狂投入,不僅開發(fā)了自己的應(yīng)用服務(wù)器 Websphere, 還推出了Eclipse這個極具魅力的開源開發(fā)平臺。

當(dāng)然IBM利用java 獲得了非??捎^的效益, 軟件+硬件+服務(wù) 三駕馬車滾滾向前, 把IBM推向了一個新的高峰。

5

帝國的誕生

大家也沒有想到,除了商業(yè)巨頭以外, 程序員們也會對Java王國 這么熱愛, 他們基于Java 開發(fā)了巨多的平臺,系統(tǒng),工具,例如:

構(gòu)建工具: Ant,Maven, Jekins

應(yīng)用服務(wù)器: Tomcat,Jetty, Jboss, Websphere, weblogic

Web開發(fā): Struts,Spring,Hibernate, myBatis

開發(fā)工具: Eclipse, Netbean,intellij idea, Jbuilder

。。。。等等等等。。。。

并且絕大部分都是開源的 !

微軟眼睜睜的看著服務(wù)器端的市場被Java 王國占據(jù), 豈能善罷甘休? 他們趕緊推出.NET來對抗, 但我們已經(jīng)不在乎了, 因為他的系統(tǒng)是封閉的,所有的軟件都是自家的:

開發(fā)工具是Visual Studio, 應(yīng)用服務(wù)器是IIS, 數(shù)據(jù)庫是SQL Server,只要你用.NET,基本上就會綁定微軟。

另外他們的系統(tǒng)只能運行在Windows服務(wù)器上, 這個服務(wù)器在高端市場的占有率實在是太低了。

2005年底, 一個新的王國突然崛起, 他們號稱開發(fā)效率比java 快5-10倍, 由此吸引了大批程序員前往加盟。

這個新的王國叫做Ruby on Rails, 它結(jié)合了PHP體系的優(yōu)點(快速開發(fā))和Java體系的優(yōu)點(程序規(guī)整), 特別適合快速的開發(fā)簡單的Web網(wǎng)站。

雖然發(fā)展很快, 但沒有對Java 王國產(chǎn)生實質(zhì)性的威脅, 使用Ruby on Rails搭建大型商業(yè)系統(tǒng)的還很少。

除了Ruby on Rails ,還有PHP, Python , 都適合快速開發(fā)不太復(fù)雜的Web系統(tǒng)。 但是關(guān)鍵的,復(fù)雜的商業(yè)系統(tǒng)開發(fā)還是Java 王國的統(tǒng)治之下。 所以我們和他們相安無事。

2006年, 一只叫Hadoop的軍隊讓Java王國入侵了大數(shù)據(jù)領(lǐng)域, 由于使用Java 語言, 絕大多數(shù)程序員在理解了Map/Reduce , 分布式文件系統(tǒng)在Hadoop中的實現(xiàn)以后, 很快就能編寫處理處理海量數(shù)據(jù)的程序, Java 王國的領(lǐng)地得到了極大的擴(kuò)展。

2008年, 一個名叫Android 的系統(tǒng)橫空出世, 并且隨著移動互聯(lián)網(wǎng)的爆發(fā)迅速普及, 運行在Android之上的正是Java !

Java 王國在Google的支持下, 以一種意想不到的方式占領(lǐng)了手機(jī)端, 完成了當(dāng)年J2ME 壯志未酬的事業(yè) !

到今年為止, 全世界估計有1000萬程序員加入了Java王國,它領(lǐng)土之廣泛, 實力之強(qiáng)大, 是其他語言無法比擬的。

Java 占據(jù)了大部分的服務(wù)器端開發(fā),尤其是關(guān)鍵的復(fù)雜的系統(tǒng), 絕大多數(shù)的手機(jī)端, 以及大部分的大數(shù)據(jù)領(lǐng)域。

一個偉大的帝國誕生了。

這個帝國能生存多久? 誰會摧毀這個龐大的帝國呢?

我不知道, 你呢?更多編程方面的干貨分享請關(guān)注薇信工宗號:程序員大牛!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容