Java EE的歷史(轉(zhuǎn))

轉(zhuǎn)自公眾號碼農(nóng)翻身惰匙。

前言:
昨天下午有同學(xué)問我Java EE是干什么用的,能開發(fā)什么系統(tǒng)署恍, 我在QQ中敲了很多字,掰扯了半天蜻直,終于給他整明白了盯质。
我突然意識在其實很多初學(xué)者對Java EE的來龍去脈并去清楚, 大家并不知道為什么會出現(xiàn)這個技術(shù)概而, 要解決什么問題呼巷。 所以就寫了這篇文章介紹下Java EE的歷史。


先把時間扯的遠(yuǎn)一點赎瑰, 94年我上高中的時候王悍, 見過親戚家有過電腦, 很好奇餐曼, 雖然上面都是一些單機桌面程序压储, 根本上不了網(wǎng)鲜漩, 但是一個小小的掃雷程序就足以吸引很多眼球了。

后來上了大學(xué)集惋, 接觸電腦越來越多孕似, 局域網(wǎng)已經(jīng)普及, 互聯(lián)網(wǎng)開始抬頭刮刑,這時候C/S (Client-Server )結(jié)構(gòu)的程序開始出現(xiàn)了喉祭,例如QQ, 棋牌類游戲, 還有著名的PowerBuilder 開發(fā)的MIS(管理信息系統(tǒng))雷绢, 都是典型的客戶端-服務(wù)器結(jié)構(gòu), 程序運行在個人的電腦上泛烙,和服務(wù)器通信。

C/S 軟件界面可以整的很漂亮翘紊, 用戶體驗很好胶惰, 但是缺點也很明顯, 就是用戶必須要安裝客戶端霞溪, 并且需要升級客戶端來用新功能孵滞, 這樣就帶來兩個問題
(1) 服務(wù)器端發(fā)生變化, 一定要能兼容很多客戶端版本鸯匹,要不然有的客戶端軟件就運行不了了坊饶, 因為客戶不一定升級。
(2) 可能會出現(xiàn)DLL 地獄問題 -- 自己百度下啥是DLL 地獄殴蓬。

再后來Web大發(fā)展匿级, 速度快了, 帶寬也夠了染厅, 大家發(fā)現(xiàn)痘绎, Web頁面也能做的很漂亮了, 把程序放到服務(wù)器端肖粮, 用瀏覽器訪問多好孤页, 用戶也不用安裝,所有功能都是即時更新涩馆。
但是html只是靜態(tài)的行施,怎么才能變成動態(tài)的, 可交互的呢魂那?
CGI 技術(shù)出現(xiàn)了蛾号, CGI 允許web服務(wù)器調(diào)用外部的程序, 并把結(jié)果輸出到Web瀏覽器涯雅, 這樣就能根據(jù)用戶的操作生產(chǎn)不同的動態(tài)頁面了鲜结。
在我讀大學(xué)的年代, CGI 最常見的就是實現(xiàn)一個計數(shù)器, 看著自己的主頁訪問量慢慢的增長精刷,那種感覺是很爽的拗胜。
當(dāng)然,使用CGI 最苦逼的就是需要用程序輸出html , 那可是整個網(wǎng)頁的html , 不是其中的一個片段 贬养!
換句話說挤土, 程序員只能在代碼里寫html, 而不能在html里寫代碼 琴庵。 你可以想象一下用C 語言或者Perl 寫CGI腳本的程序員那種咬牙切齒的感覺误算。

舉個例子, 通過瀏覽器提交了用戶名/ 密碼, cgi 會這么做:
if (name=="liuxin" and password == "xxxx" ) {
println ("<html>");
println ("<head>");
println ("<title>歡迎</title>");
println ("</title>");
println("<body>")
println("<table>")
println("<tr><td>") ..... 我實在是寫不下去了迷殿,太崩潰了儿礼, 這是偽碼, 不要和我較勁...............
println("</td></tr>")
println("</table>")
println("</body>")
print("</html>")
}

這個時候我們賴以糊口的Java 在干嘛庆寺?
Java是Sun 發(fā)明的蚊夫, 當(dāng)然Sun 現(xiàn)在已經(jīng)被Oracle 收購了。
Java 其實是依靠Applet ,依靠互聯(lián)網(wǎng)才起家發(fā)達的懦尝, 大家在簡陋的頁面上突然看到當(dāng)時極為炫目的Applet 小動畫知纷, 立刻就震驚了。
但悲劇的是大家發(fā)現(xiàn)Applet 除了用來演示以外陵霉, 似乎沒有找到真正的用武之地琅轧。

瀏覽器還必須得裝個java 插件, 后來微軟為了阻止Java 還在自己瀏覽器IE中使壞 :-) 踊挠, 這個插件運行一直不太穩(wěn)定乍桂。

Java 看到CGI 技術(shù)發(fā)展的不錯, 自己也搞一個類似的吧效床, 這就是Servlet , 由于提供了一個request, response, session等支持, 用起來比CGI方便多了睹酌。
但是輸出html這一塊沒有任何改進, 還得程序員一句一句的輸出html.
06年我進IBM的時候發(fā)現(xiàn)有個項目是在用servlet 輸出頁面html ,完全沒用jsp剩檀, 我也就見怪不怪了憋沿, 這肯定是個90年代的遺留應(yīng)用。

最后大家都受不了這種極為痛苦的輸出方式沪猴, 于是Sun 就弄了個JSP , 微軟也不甘示弱卤妒, 出了個ASP。
這下子Web開發(fā)出現(xiàn)了躍進字币,因為不管是JSP還是ASP, 都是所謂的 Server Page , 也就是說程序員終于可以把邏輯代碼和html混在一起了则披! 在也不用一行一行的輸出純html了。
當(dāng)然現(xiàn)在老師教導(dǎo)你洗出, jsp中不要有邏輯代碼士复, 但在當(dāng)時,這可是了不起的突破 。
我們可以先讓美工把頁面設(shè)計好阱洪, 然后把程序嵌入進去就行了便贵。

再后來出現(xiàn)了Struts, 使用MVC解決了職責(zé)劃分問題, Web 應(yīng)用邁向了新的臺階冗荸, 開始飛速發(fā)展承璃, 對于這種應(yīng)用,我們稱為 B/S 結(jié)構(gòu), 即Browser(瀏覽器)-Server (服務(wù)器) 蚌本。
C/S結(jié)構(gòu)的程序當(dāng)然不會消亡盔粹, 因為像聊天,視頻程癌,游戲等對性能舷嗡, 界面,用戶體驗要求很高嵌莉, 天然適合桌面程序?qū)崿F(xiàn)质欲。

為了支持更大浮禾,更復(fù)雜的應(yīng)用開發(fā)苛坚, 微軟為ASP 添加了實現(xiàn)業(yè)務(wù)邏輯的COM, COM+ 驾讲,訪問數(shù)據(jù)庫的ADO 等技術(shù)。
而Sun和Java 社區(qū)有更大的野心沿癞,他們提出了一套更大的援雇, 不同于傳統(tǒng)應(yīng)用開發(fā)的架構(gòu),專門用于滿足企業(yè)級開發(fā)的需求抛寝。
這些需求包括數(shù)據(jù)庫熊杨, 郵件, 消息盗舰,事務(wù)處理晶府, Java 對這些通用的需求做了抽象,形成了一些規(guī)范和標(biāo)準(zhǔn)钻趋,除了Servelt 和 JSP ,還有EJB, JMS , JDBC 等等川陆。
這些東西,Sun 把他們稱為J2EE 蛮位。
為啥不是Java EE ? 那個2是怎么回事较沪?
這完全是一種市場策略, 原來Java 的版本是1.1 失仁, 從1.2開始尸曼, Sun 稱之為為Java 2 平臺 , 以便告訴大家萄焦,這是一個突破性的技術(shù)平臺控轿。 實際上也確實有所突破冤竹, Java 被分成了 J2SE (標(biāo)準(zhǔn)版) , J2EE(企業(yè)版) 和J2ME(移動版) 茬射, 當(dāng)然移動版在手機上一直沒有發(fā)展起來鹦蠕, 直到Android的出現(xiàn)--這是后話了。
到了2005年在抛, Sun 又取消了那個 “2” 钟病, 于是就變成了 Java SE, Java EE, Java ME 了。

J2EE需要運行在一個叫應(yīng)用服務(wù)器的東西里刚梭, 這就是Weblogic, websphere , jboss, 也稱為應(yīng)用中間件肠阱。

J2EE發(fā)展的非常迅猛, 迅速統(tǒng)治了Web應(yīng)用開發(fā)市場望浩, 微軟的ASP只能偏居一隅了辖所, 后來推出.NET 才算扳回一城惰说。

我們走了漫長的路磨德, 終于來到你的面前, 現(xiàn)在你知道Java EE 是干啥的了吧 :-)

在后來的故事估計很多人都聽過了吆视,Java EE遠(yuǎn)遠(yuǎn)沒有宣傳的那么美好典挑, EJB, 尤其是Entity Bean 極為難用啦吧, 對業(yè)務(wù)代碼侵入性極強您觉, 在大家想拋棄而又沒有替代品的時候, 有一位大牛Rod Johnson如約而至授滓,他說我們不要這種臃腫琳水,低效,脫離現(xiàn)實的J2EE, 我們要靈活般堆,輕便在孝,輕量級的框架, 這就是Spring淮摔, 我們就有了依賴注入,AOP....
有位叫Gavin King的澳大利亞小伙子也是在忍受不了EJB的O/R Mapping , 自己整了一個Hibernate 私沮。
再加上更早出現(xiàn)的Struts, 我們Java 程序員終于過起了幸福的SSH生活。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末和橙,一起剝皮案震驚了整個濱河市仔燕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌魔招,老刑警劉巖晰搀,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異办斑,居然都是意外死亡外恕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吁讨,“玉大人髓迎,你說我怎么就攤上這事〗ㄉィ” “怎么了排龄?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長翎朱。 經(jīng)常有香客問我橄维,道長,這世上最難降的妖魔是什么拴曲? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任争舞,我火速辦了婚禮,結(jié)果婚禮上澈灼,老公的妹妹穿的比我還像新娘竞川。我一直安慰自己,他們只是感情好叁熔,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布委乌。 她就那樣靜靜地躺著,像睡著了一般荣回。 火紅的嫁衣襯著肌膚如雪遭贸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天心软,我揣著相機與錄音壕吹,去河邊找鬼。 笑死删铃,一個胖子當(dāng)著我的面吹牛耳贬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泳姐,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼效拭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胖秒?” 一聲冷哼從身側(cè)響起缎患,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阎肝,沒想到半個月后挤渔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡风题,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年判导,在試婚紗的時候發(fā)現(xiàn)自己被綠了嫉父。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡眼刃,死狀恐怖绕辖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情擂红,我是刑警寧澤仪际,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站昵骤,受9級特大地震影響树碱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜变秦,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一成榜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蹦玫,春花似錦赎婚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽额港。三九已至饺窿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間移斩,已是汗流浹背肚医。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留向瓷,地道東北人肠套。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像猖任,于是被迫代替她去往敵國和親你稚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

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