java的前生今世

從最初的可移植,安全,健壯,可用於網絡的語言的承諾開始,Java已成爲Internet開發的分解平臺。對Internet有利的對Intranet有利,因此正在或已經移植了許多應用程序以使其可用於Web。今天,您幾乎可以在任何地方找到Java。罕見的平臺不支持它。大多數提供虛擬機選擇。Java在小型設備,大型機,電視,個人計算機,各種服務器(嵌入式或其他)上運行。

開放的社區流程使想法得以實現。標準API如此廣泛,以至於很少有軟件問題不能直接用Java有效解決。在極少數情況下,需要使用本機代碼,但是JNI提供了有效的網關。在需要特殊圖形功能的地方,可以使用Swing,2D和3D API。J2EE涵蓋了從數據庫訪問到動態頁面控制,對象關係映射,目錄服務和高性能解決方案的所有內容。

前進的道路很誘人。如此之多,以至於今年研究首次宣佈,與美國市場上的其他語言相比,更多的招聘信息將Java經驗作爲決定性因素。調查告訴我們,大多數《財富》 2000強公司現在都在運營中進行Java開發。業內觀察家告訴我們,資金充裕,前景光明。

所有證據都表明成功。JavaOne的參與者已經超過25,000。圍繞Java開展的貿易展覽比以往任何時候都多。炒作仍然存在,但事實遠遠超過宣傳。Java成功的故事比比皆是。已經出現了致力於構建Java工具,提供培訓和諮詢的整個行業。

程序員喜歡Java。實際上,很少遇到遇到任何使用Java進行過項目的人,而這些人沒有確定他們比其他語言更喜歡它。發揮最新的理想-模式,UML,重構和極限編程-併爲認真的創新和愉快的時光做好準備。

Java顯然是獨特的。編程語言從未如此有效地跨越平臺和操作系統邊界。因此,Java已經在極大地改變世界。在使用Java之前,認爲我們可以使用專有方法進行語言開發來橋接平臺是很荒謬的。每次我們嘗試時,本機擴展都會遇到麻煩。

簡單性是使技術無處不在的關鍵。X.500是一個偉大的想法,試圖做太多事情。失敗了 LDAP是X.500的簡化版,實際上是即時成功的。SGML試圖處理無盡的文檔結構變體,但失敗了。XML是另一種簡化,幾乎每個人都容易採用。這些成功案例的重點是滿足基本要求的簡單設計,而不是一次嘗試做所有事情。

過度設計(由委員會)解決方案的另一個示例是CORBA;它試圖做太多。幾乎所有已部署CORBA解決方案的人都只使用了規範的一部分,通常必須應用專有擴展才能使功能正常運行。最終結果是一千種CORBA變體,其中很少能夠相互通信(儘管情況確實有所改善)。

Java與早期語言之間最根本的區別是Sun設法正確使用了大多數語言,成功地實現了80/20規則。其他語言的比例更大,爲40/60,在該語言並非“真正爲之設計”的領域中完全失敗。Java傾向於通過非常鬆散地耦合到環境來解決更廣泛的問題。

爲了更直觀地瞭解情況,我們將快速回顧一下JavaOne在過去幾年中的一些競選承諾和重大事件,並瞭解哪些預測是有先見之明的,而哪些僅是未兌現的承諾。

JavaOne 1996年

John Gage在1996年的第一次JavaOne會議上有幾句話要說。引用Arthur van Hoff的話說:“ Arthur會說出設計團隊的口頭禪:‘如果您要這樣做,那就做對吧。’ 這導致了語言設計中的每個簡化決策。”

關於同一主題,“還有第二個準則。避免不必要的差異,因爲我們的目標是無處不在。還有那個小惡魔-生活在我們所有人中的那個小史蒂夫·喬布斯(Steve Jobs)–“除非我有所不同,否則我無法賺錢,”你知道,你必須打擊那個惡魔。這些是Java即將取得成功的早期關鍵。“我們正在嘗試構建某種東西,以使其在底層無處不在,而創新則在其之上。”

多年來,來自許多不同領域(尤其是微軟,IBM,HP和其他一些領域)的壓力很大,這可能使Java走上了一條不同的道路,但Sun設法成功地抵制了對Java基本設計的專有更改,並且早期願景的核心。

鑑於對喬布斯(Steve Jobs)的直言不諱,他在今年的JavaOne上亮相,承諾Mac OS10將成爲世界上最好的Java交付工具,這有點諷刺。

麻省理工學院計算機科學實驗室萬維網聯盟主任蒂姆·伯納斯-李(Tim Berners-Lee)提出了幾點意見。

他說:“面向對象的程序在全球化時變得可行,這使我感到很有趣。超文本距萬維網已經存在很長時間了,但是當這些超文本鏈接只能指向本地磁盤上的某個位置時,它並不是很令人興奮。通過Web使其走向全球,突然變得非常令人興奮。”

而且,“當您可以繼承不認識的人所寫的東西時,全球化環境中的面向對象編程會突然變得非常令人興奮,他們只是從他們那裏找到了文檔,但是您的主頁’讀過。”

這些都是有見地的評論。如果沒有網絡的全球化影響以及Java的網絡就緒性,Java的採用曲線將大爲不同。

蒂姆還說:“如果您想將該COBOL編譯爲Java字節代碼並通過網絡發送;然後,不,沒有人會反對。沒關係。我們在那裏有很大的靈活性,因此我們在編程語言和字節碼之間具有靈活性,這非常有趣。”

儘管您可以將COBOL編譯爲字節碼當然是可能的並且很有趣,但是以前的語言中有太多專有的本機元素,因此無法使其成爲有效的選擇。而且,如果沒有面向對象的思維方式,最終的代碼將退化爲龐大的main方法,幾乎​​無法提供任何方式,可重用性或可維護性。

Berners-Lee的最後評論:“因此,它們會帶來一點點新的Java類,以便您可以在不需要繁重的操作系統的輕量級環境中很快運行Java應用程序和Java Applet。更換操作系統。您真的不需要操作系統。”

好的,所以我們還沒有爲此做好準備,儘管在信息設備市場中這種說法可能更準確。到目前爲止,操作系統市場是完整的,並且沒有被Java平臺納入的危險。對於OS公司而言,Java仍然只是另一種編程語言,儘管他們現在肯定必須在其平臺上交付Java。

JavaSoft總裁Alan Baratz博士在1996年曾這樣說:“我今天上午宣佈了一系列公告。其中包括:JavaOS,新的HotJava產品,對基本Java開發人員工具包的增強,我們稱爲“ JavaBeans”的項目(我沒有給出這個名稱),然後是新的在線開發人員支持計劃。”

JavaOS似乎是一種失敗,是一種很好的學習體驗,但目前僅此而已。實際上,看起來更好的選擇是在其上放置JVM的小型Linux內核。HotJava是一個很好的概念證明,但實際上從來都不是商業瀏覽器。

另一方面,JavaBean是對我們編寫軟件的方式的根本改進。當然,在1996年,沒有人知道採用它會花費很長時間。即使在今天,Enterprise JavaBeans仍需要一些基本改進。該主題演講中介紹的早期JavaBeans仍在等待前向兼容的序列化格式。

巴拉茨繼續說:“最後,是國際化。大約兩週前,我有機會訪問了日本,每一次會議所傳達的最重要的信息就是國際化和本地化。這項工作也進展順利。”

這是即將發生的事情的預兆。在今年的JavaOne上,國際知名度很明顯,大約50%的與會者來自國外。Java的國際化和本地化支持是首屈一指的,並且在許多方面都是典範。最初對該語言的Unicode支持是關鍵。

斯科特·麥克尼(Scott McNeely)仍在兌現諾言,但在1996年,他說:“我們並不是要絕對取代個人電腦。有足夠的時間。”

最近,我們還沒有發現PC銷量出現任何放緩。實際上,如果有的話,Java可能在增加PC銷售方面發揮了作用。跨平臺的Java解決方案大量湧入了過去被跨平臺Java解決方案牢牢佔據的本機應用程序空間,從而降低了過去僅在大型計算機上運行的高端應用程序的進入門檻。

Scott的另一條評論:“在此網絡終端上獲得媒體報道的最佳方法是將其稱爲500美元的終端。” 不幸的是,500美元的終端仍然是終端,而不是PC。

一個大故事是“ Corel正在用Java編寫WordPerfect Office Suite。” 這絕對是一個有趣的故事。它教導說,不建議在不仔細考慮應用程序體系結構的情況下移植到Java。

Corel在編程時間和精力上進行了不可思議的投資,但最終以早期採用者的身份在市場上失敗了。Java尚未爲複雜的GUI應用程序做好準備。從那以後,StarSuite證明Java更適合開發完整的辦公套件,因此Corel的想法是正確的,但是執行力很差,而且當事情變得艱難時,他們似乎沒有耐力。

麥克尼利(McNeely)開車領養“酷!現在該開始用Java重寫舊應用程序了。” 好主意!但是大多數遺留數據庫仍然沒有被替換。基於Java和EJB的應用程序已與舊系統並行安裝;向客戶提供新的功能集,但很少取代現有的投資。這在很大程度上是由於這些系統中數據庫模式的悲慘狀態以及難以移植大量現有功能而不失去過程中的重要功能的困難。

事實證明,將這些怪獸留在原地,打開並行Java應用程序來訪問這些數據庫會更容易,該應用程序可以訪問這些數據庫,並隨着時間的推移將舊數據移動到新結構中。這種方法可以防止大量停機或傳統系統(通常是關鍵任務實現)的中斷。目標仍然存在,但時間表並不那麼緊迫。

這是關鍵詞:“到處寫一次”。我們都知道這一點。在開發中,我們稱之爲“一次編寫,到處測試”,而在操作中,我們稱之爲“編寫一次,到處調試”。與以前的替代方案相比,這是一個好問題。

可移植性是真實的,兩位作者都可以從經驗談起,包括以最小的努力在大型平臺上移動大型Java應用程序的項目。其中之一是一個150k行的EJB解決方案,該解決方案僅需1.5個工作日即可從一個應用程序服務器/數據庫/操作系統遷移到另一套完全不同的系統。

找一個供應商說“哦,是的。。。它在另一個平臺上運行得很好!也許我們可以給我的客戶同樣的演示,他似乎也喜歡購買您的產品,只是爲了看看他們的想法。” 經過這樣的聲明,供應商支持水平似乎急劇上升。

JavaOne 1997年

Swing是1997年的縮寫。JamesGosling說:“它將具有豐富的預定義組件集,可以完全自定義,將簡化商業GUI開發,並創建開放的組件市場。所有GUI組件將可以互操作。程序員應該能夠從Mac到PC到任何其他來回切換任何GUI的外觀。”

大多數情況都是正確的,但是開放組件市場纔剛剛開始興起,還沒有像這些聲明所暗示的那樣成功。隨着Java 1.3的發佈,Swing幾乎達到了最佳狀態。Swing成功的祕訣是它不會對用戶造成非本地的外觀。取而代之的是,它提供了這種選擇,在其他跨平臺GUI解決方案均失敗的情況下成功。

戈斯林還談到了PersonalJava和EmbeddedJava。“ EmbeddedJava旨在減少內存使用量–適用於字節碼小得多且ROM和RAM需求少的小型設備。在諸如工業控制器,尋呼機,路由器,交換機或任何需要少於0.5 MB ROM的設備之類的產品中,EmbeddedJava也將很有用。”

另一個重要的公告是“ 100%認證計劃”。不幸的是,100%Java的定義過於寬鬆而無用。如果標準假設本地代碼的Java包裝已足夠,您怎麼能稱呼“純Java”?這種方法破壞了認證的目的,並使其失敗。

遠程方法調用於1997年問世,它引入了Java序列化並啓用了Internet上的遠程對象調用。顯然,這是使Java如此龐大的許多小事情之一。

JavaOne 1998年

1998年,他們聲稱“寫一次,隨處運行”的承諾實際上是有效的。抱歉。到處仍然是一次編寫,測試和調整。但是我們將把它放在任何其他選擇之上。

戈斯林說:“但是在1.1版本中,所有這些JIT都問世了。” 這既是詛咒,又是祝福。隨着時間的流逝,實現問題將解決,但仍然會出現零星的問題,具體取決於您所運行的供應商和平臺,尤其是在多線程解決方案中。儘管如此,這仍然是Java性能方面的一大進步,並且產生了巨大的變化。

一個大故事是“國際標準組織最近批准了我們提交的Java技術規範。” 不幸的是,這後來被撤回了。

當然,這是一個爭論不休的話題,因此我們將發表煽動性的評論,認爲到目前爲止Sun一直在掌權。他們已經實施了一個開放式流程,該流程具有響應性並且受社區驅動。Java並不是嚴格的開放標準,但是Sun表現得很仁慈,使該過程成功了。在擁有明確的所有者的情況下,他們避免了按委員會設計的問題(不要寫這個,這只是我們的意見)。

這個人很樂觀,“ Java JumpStart的工作方式是作爲企業IS組織,您可以在CD上購買它並將其安裝在服務器上。所有虛擬機將繼續連接到您的每臺服務器。然後,您可以將Project Java Activator與Java應用程序結合使用。” 可悲的是,自動寫入任何Microsoft平臺充滿了危險。鑑於市場份額,JumpStart的採用從未成功。

引入RMI / IIOP作爲通信基礎,而Java命名目錄接口(JNDI)是Enterprise Java的另一本壘打。1998年,作爲技術預覽,首次引入了Enterprise JavaBeans。這是Sun最重要的貢獻之一,它鞏固了跨平臺接口,而不是發明新的解決方案。

JavaOne 1999年

在1999年,重點放在服務器端Java:“我也看到我們專注於服務器端。” 他們說。Sun可能已經轉移到服務器端,但是對於開發人員來說,這是一場全力以赴的事情。

Jini是一種真正革命性的技術,可能與IP的誕生一樣重要。Jini通過允許服務和設備在網絡上相互查找來擴大傳輸層。設備領域的供應商支持非常迅速,Sun專注於這一角度,但是開發人員花了一段時間纔看到軟件服務的優勢。這就是基尼的真正力量所在。JavaOne 2000上Jini成功案例的數量應足以證明。如果您持懷疑態度,請稍等。

Sun於1999年與Palm Ones達成協議,將Palm Pilots遍及整個JavaOne。您可以以200美元的價格購買它們,因此它們無處不在。KVM使爲信息設備編寫Java應用程序成爲可能,而這正是該鎮的話題。K虛擬機是正確的火車,在正確的軌道上,只需要一點馬力。

1999年,J2EE取得了新的進展。使用EJB會話管理的持久性的開發人員獲得了即時價值。那些使用容器管理的持久性的人繼續掙扎。如果部署使用佈局合理的數據庫,則只需進行少量調整即可。遺留數據庫領域中的承諾仍未實現。

JMS也是在1999年引入的,一個偉大的想法仍在等待成熟,另一個成功的規範定義了接口而不是給定的解決方案。現在很難區分好的供應商和壞的供應商,很難弄清楚如何調整其實現,也不清楚它們最大的優點和缺點是什麼。儘管如此,JMS是一項成功的技術,仍在等待大型應用程序迫使供應商處理真正的密集負載情況。

JavaOne 2000

今年的重點是增加現有技術的價值。大多數會議都圍繞J2EE解決方案,GUI開發和Jini成功案例進行。

特別值得注意的是Jiro的引入,它是一種利用Jini來完成工作的分佈式管理基礎結構。Jiro是一個分層的解決方案,可讓您插入現有協議和管理工具,以多種方式將事物捆綁在一起。這是一項值得關注的技術,儘管現在說它將有多成功還爲時過早。

宣佈“ J2EE將在任何其他應用程序服務器上運行”。是的,儘管它在某些情況下會更好,但這絕對是您想要的。選擇合適的供應商,您就在天堂。選擇錯誤的供應商,您隨時可以移至其他供應商。遠離任何特定於供應商的解決方案。

Linux支持無處不在。唯一的缺點是增加了龐大的用戶社區,但這正是您想要的問題。蒂姆·奧雷利(Tim O’Reilly)在那裏發掘開源的美德,而Sun將許多許可證捐贈給了Apache組。他們甚至宣佈將使其最近收購的幾個產品開源,包括Forte和StarOffice,這兩個都是非常重要的應用程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章