「轉(zhuǎn)載」Java : 一個(gè)帝國(guó)的誕生

轉(zhuǎn)載自 微信公眾號(hào) 碼農(nóng)翻身 不用于商業(yè)宣傳 版權(quán)歸原作者所有 侵權(quán)刪

1 C語(yǔ)言帝國(guó)的統(tǒng)治

現(xiàn)在是公元1995年奏甫, C語(yǔ)言帝國(guó)已經(jīng)統(tǒng)治了我們20多年, 實(shí)在是太久了症副。

1972年店雅, 隨著C語(yǔ)言的誕生和Unix的問(wèn)世, 帝國(guó)迅速建立統(tǒng)治贞铣, 從北美到歐洲闹啦, 從歐洲到亞洲, 無(wú)數(shù)程序員臣服在他的腳下辕坝。

帝國(guó)給我們提供了極好的福利:貼近硬件窍奋, 運(yùn)行極快, 效率極高酱畅。

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

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

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

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

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

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

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

帝國(guó)宣稱的可移植性騙了我們橡类,他宣稱我們?cè)谝粋€(gè)機(jī)器上寫(xiě)的程序, 只要在另外一個(gè)機(jī)器上編譯就可以了芽唇, 實(shí)際上不是這樣顾画。 他要求我們盡量用標(biāo)準(zhǔn)的C函數(shù)庫(kù)。其次匆笤,如果遇到了一些針對(duì)特定平臺(tái)的調(diào)用研侣, 需要對(duì)每個(gè)平臺(tái)都得寫(xiě)一份 ! 有一點(diǎn)點(diǎn)小錯(cuò)誤炮捧,都會(huì)導(dǎo)致編譯失敗庶诡。

1982年,帝國(guó)又推出了一門(mén)新的語(yǔ)言C++, 添加了面向?qū)ο蟮墓δ芘乜危嫒軨, 有靜態(tài)類型檢查末誓, 性能也很好。

但是這門(mén)新的語(yǔ)言實(shí)在是太復(fù)雜了书蚪, 復(fù)雜到比我聰明的多的人都沒(méi)有辦法完全掌握這門(mén)語(yǔ)言喇澡,它的很多特性復(fù)雜的讓人吃驚。

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

2 反抗

我決定反抗這個(gè)龐大的帝國(guó), 我偷偷的帶領(lǐng)著一幫志同道合的兄弟離開(kāi)了为流,我們要新建一塊清新自由的領(lǐng)地呕屎。

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

語(yǔ)法有點(diǎn)像C 秀睛, 這樣大家容易接受
沒(méi)有C語(yǔ)言那樣的指針
再也不要考慮內(nèi)存管理了, 實(shí)在受不了了
真正的可移植性静汤, 編寫(xiě)一次琅催, 到處運(yùn)行
面向?qū)ο?br> 類型安全
還有,我們要提供一套高質(zhì)量的類庫(kù)虫给, 隨語(yǔ)言發(fā)行藤抡。

我想把這個(gè)語(yǔ)言命名為C++-- , 即C++減減, 因?yàn)槲蚁朐贑++的基礎(chǔ)上改進(jìn)抹估,把它簡(jiǎn)化缠黍。

后來(lái)發(fā)現(xiàn)不行, 設(shè)計(jì)理念差別太大药蜻。

干脆重啟爐灶瓷式。

我看到門(mén)口的一棵橡樹(shù)替饿, 就把這個(gè)語(yǔ)言叫做Oak。
但是后來(lái)發(fā)布的時(shí)候贸典, 發(fā)現(xiàn)Oak已經(jīng)被別人用了视卢, 我們討論很久, 最終決定把這門(mén)新的語(yǔ)言叫做 Java廊驼。

為了實(shí)現(xiàn)跨平臺(tái)据过, 我們?cè)诓僮飨到y(tǒng)和應(yīng)用程序之間增加了一個(gè)抽象層: Java 虛擬機(jī)

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

3 一鳴驚人

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

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

我們把眼光盯上了剛剛興起的互聯(lián)網(wǎng)原朝, 1995年的網(wǎng)頁(yè)簡(jiǎn)單而粗糙, 缺乏互動(dòng)性彻消。 于是我們?cè)跒g覽器上弄了個(gè)小插件竿拆, 把java 運(yùn)行環(huán)境放了上去。

然后在上面開(kāi)發(fā)了一個(gè)圖形界面的程序(Applet)宾尚, 讓它看起來(lái)美輪美奐丙笋, 震撼人心。

每一個(gè)看到他的程序員都會(huì)發(fā)出“Wow”的驚嘆 煌贴!為之傾倒御板。

Java 活了!

通過(guò)Applet , 無(wú)數(shù)的程序員看到了Java這門(mén)語(yǔ)言牛郑,了解了這門(mén)語(yǔ)言特性以后怠肋, 很多無(wú)法忍受C帝國(guó)暴政的程序員, 很快加入了我們淹朋, 我們的領(lǐng)地開(kāi)始迅速擴(kuò)大笙各。

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

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

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

4 開(kāi)疆拓土

從1995年到1997年豹储,我們依靠 Java 不斷的攻城略地贷盲, 開(kāi)拓疆土,我們王國(guó)的子民不斷增加颂翼, 達(dá)到了幾十萬(wàn)之眾晃洒, 已經(jīng)是一個(gè)不可忽視的力量了。

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

C帝國(guó)的人還不斷的嘲笑我們慢呻疹, 像個(gè)玩具。

到了1998年筹陵, 經(jīng)過(guò)密謀刽锤, 我們Java 王國(guó)決定派出三只軍隊(duì)向外擴(kuò)展:
Java 2 標(biāo)準(zhǔn)版(J2SE): 去占領(lǐng)桌面
Java 2 移動(dòng)版(J2ME): 去占領(lǐng)手機(jī)
Java 2 企業(yè)版(J2EE): 去占領(lǐng)服務(wù)器

其中的兩只大軍很快敗下陣來(lái)。

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

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

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

強(qiáng)大, 健壯谐宙, 安全烫葬, 簡(jiǎn)單, 跨平臺(tái) !

在J2EE規(guī)范的指導(dǎo)下搭综, 特別適合團(tuán)隊(duì)開(kāi)發(fā)復(fù)雜的大型項(xiàng)目垢箕。

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

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

很快Java 王國(guó)的子民就達(dá)到數(shù)百萬(wàn)之眾修档。

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

當(dāng)然IBM利用java 獲得了非吃合浚可觀的效益, 軟件+硬件+服務(wù) 三駕馬車(chē)滾滾向前系宜, 把IBM推向了一個(gè)新的高峰照激。

5 帝國(guó)的誕生

大家也沒(méi)有想到,除了商業(yè)巨頭以外盹牧, 程序員們也會(huì)對(duì)Java王國(guó) 這么熱愛(ài)俩垃, 他們基于Java 開(kāi)發(fā)了巨多的平臺(tái)抽高,系統(tǒng)纷责,工具,例如:

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

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

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

開(kāi)發(fā)工具: Eclipse, Netbean,intellij idea, Jbuilder
啄清。。俺孙。辣卒。等等等等。睛榄。荣茫。。

并且絕大部分都是開(kāi)源的 场靴!

微軟眼睜睜的看著服務(wù)器端的市場(chǎng)被Java 王國(guó)占據(jù)啡莉, 豈能善罷甘休港准? 他們趕緊推出.NET來(lái)對(duì)抗, 但我們已經(jīng)不在乎了咧欣, 因?yàn)樗南到y(tǒng)是封閉的浅缸,所有的軟件都是自家的:
開(kāi)發(fā)工具是Visual Studio, 應(yīng)用服務(wù)器是IIS, 數(shù)據(jù)庫(kù)是SQL Server,只要你用.NET魄咕,基本上就會(huì)綁定微軟衩椒。

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

2005年底毛萌, 一個(gè)新的王國(guó)突然崛起, 他們號(hào)稱開(kāi)發(fā)效率比java 快5-10倍喝滞, 由此吸引了大批程序員前往加盟阁将。

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

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

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

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

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

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

到今年為止吁脱, 全世界估計(jì)有1000萬(wàn)程序員加入了Java王國(guó)桑涎,它領(lǐng)土之廣泛, 實(shí)力之強(qiáng)大兼贡, 是其他語(yǔ)言無(wú)法比擬的攻冷。

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

一個(gè)偉大的帝國(guó)誕生了孵班。

這個(gè)帝國(guó)能生存多久涉兽? 誰(shuí)會(huì)摧毀這個(gè)龐大的帝國(guó)呢?

我不知道, 你呢篙程?


“碼農(nóng)翻身” 公共號(hào) : 由工作15年的前IBM架構(gòu)師創(chuàng)建枷畏,分享編程和職場(chǎng)的經(jīng)驗(yàn)教訓(xùn)。

長(zhǎng)按二維碼虱饿, 關(guān)注碼農(nóng)翻身

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拥诡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子氮发,更是在濱河造成了極大的恐慌渴肉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件爽冕,死亡現(xiàn)場(chǎng)離奇詭異仇祭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)颈畸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)乌奇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人眯娱,你說(shuō)我怎么就攤上這事礁苗。” “怎么了徙缴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵试伙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我娜搂,道長(zhǎng)迁霎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任百宇,我火速辦了婚禮考廉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘携御。我一直安慰自己昌粤,他們只是感情好既绕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著涮坐,像睡著了一般凄贩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袱讹,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天疲扎,我揣著相機(jī)與錄音,去河邊找鬼捷雕。 笑死椒丧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的救巷。 我是一名探鬼主播壶熏,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼浦译!你這毒婦竟也來(lái)了棒假?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤精盅,失蹤者是張志新(化名)和其女友劉穎帽哑,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體叹俏,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祝拯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了她肯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹰贵,死狀恐怖晴氨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情碉输,我是刑警寧澤籽前,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站敷钾,受9級(jí)特大地震影響枝哄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阻荒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一挠锥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侨赡,春花似錦蓖租、人聲如沸粱侣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)齐婴。三九已至,卻和暖如春稠茂,著一層夾襖步出監(jiān)牢的瞬間柠偶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工睬关, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诱担,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓共螺,卻偏偏與公主長(zhǎng)得像该肴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子藐不,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1C語(yǔ)言 帝國(guó)的統(tǒng)治現(xiàn)在是公元1995年匀哄, C語(yǔ)言帝國(guó)已經(jīng)統(tǒng)治了我們20多年, 實(shí)在是太久了雏蛮。 1972年涎嚼, 隨著...
    JAVA架構(gòu)師的圈子閱讀 325評(píng)論 4 6
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,070評(píng)論 25 707
  • TITLE: 編程語(yǔ)言亂燉 碼農(nóng)最大的煩惱——編程語(yǔ)言太多。不是我不學(xué)習(xí)挑秉,這世界變化快法梯! 有時(shí)候還是蠻懷念十幾、二...
    碼園老農(nóng)閱讀 5,318評(píng)論 2 35
  • 年底是辭職季犀概,不為年終獎(jiǎng)而折腰立哑,就是要換工作的人總是很多故事可以說(shuō)。 為什么可以理直氣壯的辭職?自身來(lái)看姻灶,我有能力...
    黃家小妞閱讀 354評(píng)論 0 0
  • 在碧綠的水中 它有兩種形態(tài) 沉 浮 也有兩個(gè)姿勢(shì) 拿起 放下 而我們的人生 也像茶一樣 沉?xí)r坦然 浮時(shí)淡然 要...
    瑋美絕倫閱讀 266評(píng)論 0 1