国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java能夠成為完美的技術(shù)平臺(tái)嗎?

2019-11-18 13:13:22
字體:
供稿:網(wǎng)友

  前言
  象許多在不斷發(fā)展的平臺(tái)/語言一樣,java讓很多程序員又愛又恨。當(dāng)然,當(dāng)然這不包括那些狂熱的Java愛好者,對于他們來說Java比.Net,LAMP或任何其他語言或平臺(tái)都要好,但是,我們還是不得不面對復(fù)雜的Swing,龐大的EJB規(guī)范等對硬件的額外要求以及J2ME的變化多端的實(shí)現(xiàn)方式等等等等。拋開以上這些Java的弱點(diǎn),我們可以說Java是一個(gè)完美的技術(shù)平臺(tái),那么Java到底有沒有成為一個(gè)完美的技術(shù)平臺(tái)的潛力呢?這篇文章將從兩個(gè)方面討論這一主題,開始,我會(huì)具體的告訴你什么是完美的技術(shù)平臺(tái)以及為什么Java平臺(tái)能夠成為完美的技術(shù)平臺(tái)。之后我會(huì)偏重于具體的解決方案,如何通過設(shè)計(jì)的優(yōu)化避免Java平臺(tái)的弱點(diǎn)。
  
  基礎(chǔ)
  首先,你為什么會(huì)關(guān)心Java是否是一個(gè)完美的沉下平臺(tái)?它現(xiàn)在不是也很好嗎?不,不是的。我相信在文章結(jié)束的時(shí)候,我將向你展示一些列Java中可修正的缺點(diǎn)。解決這些缺點(diǎn)會(huì)加快Java平臺(tái)的發(fā)展,提高整個(gè)開發(fā)平臺(tái)的性能,簡而言之,它將使Java不管在工業(yè)還是商業(yè)領(lǐng)域都成為一個(gè)實(shí)際上的技術(shù)標(biāo)準(zhǔn)---成為程序員的一個(gè)超級(jí)語言。什么才是完美的技術(shù)平臺(tái)?在我作進(jìn)一步說明之前,我應(yīng)該先定義一下我認(rèn)為的完美的技術(shù)標(biāo)準(zhǔn)是什么。簡單的講,我認(rèn)為完美的技術(shù)平臺(tái)應(yīng)該是這樣一個(gè)軟件系統(tǒng),它可以讓新手或高級(jí)開發(fā)人員都能使用,能夠編寫簡單的程序也可以編寫高級(jí)的應(yīng)用,它應(yīng)該能夠運(yùn)行在所有的硬件平臺(tái)或操作系統(tǒng)平臺(tái)上,并且應(yīng)該是本地化的操作或接近本地化的操作。
  
  定義這篇文章討論的范圍
  類似這篇文章的主題,事先定義一個(gè)范圍是很重要的。首先,我們不討論任何非Java的技術(shù)平臺(tái)。你也許會(huì)認(rèn)為這有些太狹隘了。我不這么想,這篇文章是要單獨(dú)的討論Java平臺(tái)的各個(gè)方面,并不是要和其他的語言平臺(tái)進(jìn)行比較。我的愛好在于那些為了完善Java平臺(tái)提出的具有建設(shè)性意義的觀點(diǎn)。假如可能,我希望其他技術(shù)平臺(tái)的支持者能夠發(fā)表類似的文章提出他們認(rèn)為最完美的技術(shù)平臺(tái)。另外,我在這里還假設(shè)Java語言已經(jīng)是各種技術(shù)平臺(tái)中最佳程序語言。并且我也不會(huì)討論最新的Java2平臺(tái)J2SE1.5,盡管在J2SE1.5中我可以感覺到其中的一些變化比如標(biāo)有” keeping up with the Joneses”的是把矛頭指向了C#語言。一個(gè)語言的穩(wěn)定與否至少需要將近8年的不斷驗(yàn)證才能證實(shí)它的最初設(shè)計(jì)是否是健壯的。參數(shù)化集合的實(shí)用行在JDK1.5中是顯而易見的,其中的一些新特性比如autoboxing, enumerations和 static imports引起了開發(fā)人員的廣泛關(guān)注。
  
  Java繼續(xù)了來自C和C++的健壯行,它一開始就被設(shè)計(jì)為一個(gè)面向?qū)ο蟮恼Z言,我認(rèn)為這是一個(gè)成為核心語言和優(yōu)秀平臺(tái)的要害所在。當(dāng)然這并不算什么先進(jìn)的思想因?yàn)閺淖钤绲腅iffel到Smalltalk都是面向?qū)ο蟮恼Z言,那么Java和他們之間有什么根本的不同嗎?Java和那些比如功能性編程語言象LISP、Haskell或象SQL這樣的可以通過語義來執(zhí)行的語言又有什么不同嗎?因?yàn)槲覀儗W(xué)習(xí)這些語言只需要一本手冊就可以了,但別興奮的太早,假如一個(gè)市場上主要的廠商比如SUN,HP或微軟想要把這些語言中的一種拿出來,并圍繞它開發(fā)他們的下一代技術(shù)平臺(tái),你會(huì)發(fā)現(xiàn)這個(gè)語言的不會(huì)再進(jìn)一步更新;我喜歡把Java作為一個(gè)平臺(tái)來看待;實(shí)際上Java作為一種語言來說在Java平臺(tái)中只是較少的一部分。也因此我會(huì)在下面介紹作為一個(gè)完美的技術(shù)平臺(tái)的重要特征。
  
  什么才是完美的平臺(tái)
  比較起來,對于這個(gè)主題來說可以講的很具體也可以講的很簡短概括,我選擇了后者。對此有愛好的讀者可能會(huì)注重到有關(guān)這個(gè)主題的具體討論很多詞匯后面都會(huì)有一個(gè)”ility”作為結(jié)尾,也明白它是ility矩陣(matrix)。在我看來作為一個(gè)完美的技術(shù)平臺(tái)應(yīng)該具備這些條件:便于開發(fā),而且提供多路訪問(詳見下面的討論)
  
  穩(wěn)定性,這體現(xiàn)它應(yīng)該便于客戶平臺(tái)的部署;還應(yīng)該是本地化模式的部署操作。
  必須具備可靠的性能和可測試性。
  基于開放的標(biāo)準(zhǔn)。
  
  Java符合這些標(biāo)準(zhǔn)嗎?
  到現(xiàn)在我已經(jīng)定義了一系列符合完美技術(shù)平臺(tái)的標(biāo)準(zhǔn)和特征,讓我們看看Java的成長過程是否符合上述的特征。
  
  我不得不痛苦的承認(rèn),開發(fā)Java程序并不輕易。相對簡單的項(xiàng)目還好,但假如項(xiàng)目不斷增長以至于變得越來越復(fù)雜就會(huì)不斷出現(xiàn)越來越多的問題。比如J2EE應(yīng)用就是這樣。因此在項(xiàng)目的開發(fā)中我程序員需要花更多的時(shí)間來跟蹤底層的問題,比如類引導(dǎo)(classloading)問題而不是解決實(shí)際的業(yè)務(wù)邏輯問題;還有令很多程序院頭疼的EJB(查看我過去的文章To EJB, Or Not To EJB?)通常情況下他們都是在清除一系列的警告信息,EJB也許想把負(fù)責(zé)的問題簡單花,但是它并沒有更貼近于現(xiàn)實(shí)中的持久化問題或業(yè)務(wù)邏輯的解決方案,這還與Java開發(fā)工具的不足有關(guān),坦率的說,微軟的Visual Studio在這方面比Java作的要好,Java需要學(xué)習(xí)。
  
  我曾經(jīng)提出過一個(gè)多層次訪問的想法,它答應(yīng)開發(fā)人員或者用戶可以工作在Java中的不同層次。比如核心開發(fā)人員可能使用emacs/vi的方式來以命令行調(diào)試器的方式開發(fā)和部署以Java為基礎(chǔ)的系統(tǒng),而業(yè)務(wù)分析師或最終用戶應(yīng)該能通過使用WYSIWYG這樣的工具來訪問和修改這個(gè)系統(tǒng)。 Java在這兩方面的開發(fā)并不是很輕易。當(dāng)然applet和JavaWeb Start技術(shù)在這方面提供了一定的幫助,當(dāng)這兩種技術(shù)也有自己的不足---運(yùn)行他們必須在客戶端安裝配置JRE。 Java平臺(tái)是想當(dāng)穩(wěn)定的,我已經(jīng)不記得上一次應(yīng)為Java本身的bug而給我?guī)砺闊┦鞘裁磿r(shí)候了。所以假如要作一個(gè)企業(yè)級(jí)應(yīng)用的話我寧愿選擇J2EE而不是.Net。 Java在服務(wù)器端的應(yīng)用是足夠穩(wěn)定和健壯的。Swing客戶端的應(yīng)用表現(xiàn)也不錯(cuò)但在執(zhí)行速度方面比起本地的應(yīng)用要差一些。由于對資源限制的原因比如移動(dòng)電話(或智能終端),在這里使用Java而不是用本地化的開發(fā)工具從實(shí)用性角度來說就顯得有些奢侈了。附加額外的MIDP比起直接調(diào)用本地的應(yīng)用造成了運(yùn)行時(shí)的性能損失。
  
  很明顯,Java有來自業(yè)界的主要軟件廠商的廣泛支持(除了微軟)。比如IBM,HP,Oracle已經(jīng)把他們自己的技術(shù)整合到了Java平臺(tái)上,這對關(guān)心Java的人來說是個(gè)好消息。還有更多的組織和團(tuán)體化大量的精力不斷的晚上Java,他們希望看到Java在移動(dòng)設(shè)備,PC,服務(wù)器等各個(gè)領(lǐng)域不斷的成長、進(jìn)步。
  
  優(yōu)點(diǎn)
  Java的優(yōu)勢在哪里?
  平臺(tái)支持:J2SDK已經(jīng)可以運(yùn)行在任何的操作系統(tǒng)和硬件平臺(tái)上,從金融機(jī)構(gòu)到娛樂設(shè)施,從科學(xué)研究到家用電腦都可以使用Java。 Java語言規(guī)范和Java運(yùn)行時(shí)規(guī)范的明確區(qū)分答應(yīng)研究人員可以通過運(yùn)行一個(gè)編譯器來產(chǎn)生程序語言的映射,而不必非要使用Java來編譯二進(jìn)制碼――也就是說它可以運(yùn)行在任何的虛擬機(jī)(VM)上。這一點(diǎn)在我后面要提到的Java戰(zhàn)略的改變非常重要。 Java是當(dāng)今企業(yè)級(jí)計(jì)算和應(yīng)用中相當(dāng)成熟和穩(wěn)定的平臺(tái)。微軟仍然在不斷的改進(jìn)他們的.Net,而且可能最后會(huì)象Java一樣好或者比Java好要好(但這只局限在Windows平臺(tái)上),但現(xiàn)在還作不到;另外,還有另一個(gè)競爭激烈的領(lǐng)域,那就是移動(dòng)設(shè)備。盡管在前面我們提到過Java在節(jié)省設(shè)備資源方面相對較差,但是不可否認(rèn)在這個(gè)領(lǐng)域它也占據(jù)著領(lǐng)導(dǎo)地位。 Java在學(xué)術(shù)界也獲得了強(qiáng)有力的支持。假如你在大學(xué)學(xué)習(xí)你會(huì)發(fā)現(xiàn)Java已經(jīng)成為多數(shù)科學(xué)研究和計(jì)算使用的首選語言。在大學(xué)中有越來越多的人在使用Java語言,越來越多的尖端學(xué)術(shù)研究完全使用Java語言;各個(gè)行業(yè)的公司都有很多的Java程序員在開發(fā)他們的項(xiàng)目。
  
  缺點(diǎn)
  現(xiàn)在我們來看看Java的缺點(diǎn):
  一個(gè)開發(fā)組織創(chuàng)建新的框架和組件庫幾乎總是在存在優(yōu)點(diǎn)的同時(shí)也存在著不足。一個(gè)優(yōu)秀的組件技術(shù)總是在不同的開發(fā)人員和組織間相互競爭和促進(jìn)中成長起來的。但是在這一過程中,卻使得用戶(這里特指開發(fā)人員)非常困惑。盡管Sun一直在忙于應(yīng)付,但是就到底是使用JDO還是EJB更好一直存在著爭論。的確,我們必須確定把哪一個(gè)繼續(xù)發(fā)展下去。現(xiàn)在我們能作的就是把這一個(gè)想法簡單的提交到JCP組織。比如,假如你是一個(gè)J2EE設(shè)計(jì)師,你能100%確定當(dāng)前哪一種才是完美的解決方案嗎?我不能,但我的觀點(diǎn)是“注重實(shí)際的方案就是完美的方案”。
  現(xiàn)在有一種觀點(diǎn)認(rèn)為Java過于復(fù)雜。有誰能完全了解Java從服務(wù)器到PDA各個(gè)方面的所有知識(shí)嗎?作為一個(gè)博大精深的語言,Java在人們生活的不同領(lǐng)域都無處不在,這不可避免的帶來了它的復(fù)雜性,但同時(shí)這也更值得開發(fā)人員在其平臺(tái)上使用Java來開發(fā)不同的應(yīng)用。Sun的一句明言就是“嘿,我們已經(jīng)給了你一個(gè)非常棒的核心技術(shù)。現(xiàn)在你可以用它來創(chuàng)建任何開發(fā)工具或健壯的產(chǎn)品”。其中非常活躍的Jini/Javaspaces就是一個(gè)例子。Sun自己把這一技術(shù)作為一個(gè)學(xué)術(shù)研究的工具,它幾乎沒有什么技術(shù)缺陷。實(shí)際上,基于JavaSpaces的編程模型也許是最簡單最強(qiáng)大的技術(shù)之一。
  Windows 家族集成了很多繁瑣的分布式客戶端平臺(tái)。除非與Java捆綁否則Windows技術(shù)永遠(yuǎn)無法避免這些缺點(diǎn)。當(dāng)然,隨著.Net的崛起,Java 在客戶端編程(thick-client)方面將失去了很多優(yōu)勢。
  我不認(rèn)為Sun為Java投入了足夠的財(cái)力。這給Java帶來了潛在的隱患,那么為什么Sun應(yīng)該繼續(xù)對Java平臺(tái)投資呢?我更樂意看到Sun通過大量的財(cái)力扮演一個(gè)“善意的獨(dú)裁者”,它將通過與象BEA,IBM,HP等這樣的公司而不是和開發(fā)人員或最終用戶一起合作來指導(dǎo)Java的未來。我擔(dān)心來自Sun對Java的動(dòng)搖。Sun公司的健壯穩(wěn)定的發(fā)展預(yù)示著Java的不斷完善;假如Sun出了問題那么Java的發(fā)展和完善也將受到影響。下面的圖示顯示了影響Java技術(shù)平臺(tái)的幾個(gè)方面。
  圖1顯示了高層的理想化的Java技術(shù)平臺(tái)。其中,由Sun及其合作伙伴控制的技術(shù)顯示為橙色,其他不屬于Sun的為綠色。
  
 Java能夠成為完美的技術(shù)平臺(tái)嗎?

  Java有哪些缺點(diǎn)
  無疑,我承認(rèn)Java平臺(tái)是有缺陷的,這必須指出。下面幾節(jié)將具體講述這些問題和戰(zhàn)略及戰(zhàn)術(shù)上的建議。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 弥渡县| 宜丰县| 花垣县| 湘西| 丹阳市| 舞钢市| 诏安县| 余姚市| 林西县| 资中县| 松桃| 周至县| 通渭县| 星座| 曲水县| 奉节县| 海宁市| 湖南省| 临西县| 苍南县| 镇远县| 博客| 遂平县| 泾川县| 锦州市| 翁源县| 长寿区| 南充市| 同仁县| 永城市| 新宾| 阿图什市| 广昌县| 昌平区| 山西省| 神木县| 中卫市| 墨竹工卡县| 平罗县| 金平| 万盛区|