久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

InfoQ: Java,、.NET,為什么不合二為一,?

 ShangShujie 2007-08-02

十 二年之前,,Sun公司默默宣布了一種可以使網(wǎng)頁(yè)更動(dòng)感和更富有活力的編程語(yǔ)言及其環(huán)境。當(dāng)然,,目前Java語(yǔ)言已經(jīng)成為了一種普遍使用的工具,,不僅僅用于 為網(wǎng)頁(yè)添加更多的動(dòng)態(tài)效果,還包括創(chuàng)建和生成這些網(wǎng)頁(yè)(透過(guò)servlets和JSP技術(shù)),,提供一個(gè)用于事務(wù)性過(guò)程和商業(yè)邏輯的平臺(tái)(透過(guò)EJB技術(shù),, 即Enterprise Java Beans),訪問(wèn)消息系統(tǒng)(透過(guò)JMS技術(shù),即Java Message Service),,訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)(透過(guò)JDBC技術(shù)),,甚至于訪問(wèn)不同的主機(jī)(透過(guò)Java Connector API技術(shù))。但這個(gè)故事還遠(yuǎn)遠(yuǎn)沒(méi)有終結(jié),,每天,,以Java為中心的社區(qū)通過(guò)開(kāi)源的努力和大量的項(xiàng)目變得越來(lái)越強(qiáng)大,甚至于官方的Java平臺(tái)也不斷地通 過(guò)Java Community Process這樣一個(gè)開(kāi)放性的國(guó)際組織來(lái)進(jìn)行構(gòu)建,、成長(zhǎng)和對(duì)自身進(jìn)行增強(qiáng),。

六年之前,微軟大張旗鼓地宣布了一系列嶄新的編程語(yǔ)言和應(yīng)用于各種開(kāi)發(fā)場(chǎng)景下的環(huán)境,。在此之后,,.NET已經(jīng)出現(xiàn)了兩個(gè)發(fā)行版本。每一個(gè)主要的發(fā)行 版本都會(huì)對(duì)運(yùn)行時(shí)和三款主流的語(yǔ)言(C#,,C++和Visual Basic)產(chǎn)生巨大的改變,,同時(shí)也會(huì)為客戶層和服務(wù)層帶來(lái)許多新特性,如事務(wù)的支持(System.Transactions),,泛型的支持(同時(shí)支持 C#和Visual Basic),,目錄服務(wù)支持,管理(WMI)等等,。這個(gè)故事也遠(yuǎn)遠(yuǎn)沒(méi)有終結(jié),,微軟甚至計(jì)劃將一系列新技術(shù)應(yīng)用到其下一個(gè)發(fā)行版本中(NetFX 3.0, 隨Vista發(fā)行)。一個(gè)急速增長(zhǎng)的社區(qū)也依然在不斷擴(kuò)大,,并用開(kāi)源和商業(yè)的新項(xiàng)目以及新構(gòu)想增強(qiáng)了.NET環(huán)境,。

在這幾年中,,在Java和.NET環(huán)境之間產(chǎn)生了大量的討論,大多數(shù)的討論都強(qiáng)烈地傾向于兩者中的一方,,這幾乎沒(méi)有產(chǎn)生任何作用,。畢竟,諸如“我的 編程語(yǔ)言比你的編程語(yǔ)言要好”或者“我的平臺(tái)比你的平臺(tái)運(yùn)行得要快”,,乃至于“你們很遜”這類的話題或許在雞尾酒會(huì)和小組會(huì)議上是一個(gè)你來(lái)我往的頗為有趣 的話題,,但是這些話題對(duì)于引導(dǎo)一個(gè)有意義的軟件開(kāi)發(fā)是沒(méi)有任何成效可言的。在經(jīng)歷了立場(chǎng)和姿態(tài)上的對(duì)立以及互相攻擊以后,,當(dāng)嘗試使.NET和Java共同 工作和對(duì)此進(jìn)行有意義的討論時(shí),,這些對(duì)話卻又轉(zhuǎn)向了一些諸如“Web服務(wù)”、“企業(yè)服務(wù)總線”或“面向服務(wù)的體系架構(gòu)”等繁雜的詞匯中,,而沒(méi)有任何實(shí)在的 展示,。當(dāng)越過(guò)這些高層的討論去關(guān)注底層的細(xì)節(jié)時(shí),對(duì)話中經(jīng)常出現(xiàn)的又是SOAP,、WSDL和WS協(xié)議,,或者通過(guò)消息交換數(shù)據(jù),或者在CLR中實(shí)現(xiàn)JVM,, 或者在JVM中實(shí)現(xiàn)CLR等,。

換句話說(shuō),來(lái)解釋這些流行的用語(yǔ)即“你大步邁進(jìn)并討論這如何去解決這個(gè)問(wèn)題,,但是卻從來(lái)沒(méi)有真正得討論為什么你要這樣做” 從歷史的角度看,,關(guān)于Java/.NET互操作性的討論降低到了體系結(jié)構(gòu)的次要位置,僅次于“按需”主題——也就是說(shuō)這種互操作的發(fā)生僅僅應(yīng)該在一個(gè)企業(yè) 同時(shí)使用.NET和Java系統(tǒng),,并且需要在它們之間進(jìn)行對(duì)話時(shí),。盡管如此,在這個(gè)討論中關(guān)于動(dòng)機(jī)問(wèn)題的討論被忽視了——為什么開(kāi)發(fā)人員想要同時(shí)使用 Java和.NET,?盡管可能不需要這樣做,。

從表面上看來(lái),這是一個(gè)危險(xiǎn)的主題,。因?yàn)椴皇怯捎趯?duì)某個(gè)平臺(tái)“不能”做什么的暗示而招致完全的義憤,就是任何關(guān)于某個(gè)平臺(tái)可能在某方面“優(yōu)于”另一 個(gè)平臺(tái)的說(shuō)法都會(huì)導(dǎo)致偏愛(ài)或無(wú)知的譴責(zé),。(這甚至忽略了一個(gè)基本的問(wèn)題,,即指出這里的“優(yōu)于”的定義是什么)。與其無(wú)視或躲避這個(gè)話題,,不如直接面對(duì)它,。 這樣的譴責(zé)和批評(píng)是不應(yīng)該被忽略的,事實(shí)上我們應(yīng)該歡迎它們,,并將其作為一個(gè)大討論的一部分,,這個(gè)大討論將解答何時(shí)、何地以及如何做出這些決策。盡管這 樣,,我們認(rèn)為開(kāi)放式的討論,,時(shí)刻檢查思想,允許讀者形成自己的,、批判的觀點(diǎn)依然非常重要,。

本文作為關(guān)于Java/.NET互操作性主題系列文章中的一篇,也正是基于此觀點(diǎn)進(jìn)行的,。

* * *

當(dāng)在大腦中思索什么是Java和.NET都做的好的方面時(shí),,有好幾個(gè)場(chǎng)景會(huì)浮現(xiàn)于我們的腦海并值得我們向前探索。

Office客戶端,,J2EE服務(wù)器

微軟的Office產(chǎn)品,,無(wú)論好壞,即使在有電腦的歷史以來(lái)不是最流行(這里所說(shuō)的流行是指安裝在更多的電腦主機(jī)上)的軟件平臺(tái),,也必然是最流行的 軟件平臺(tái)之一,。目前,Office產(chǎn)品已經(jīng)迎來(lái)了第二個(gè)十年,,作為一個(gè)強(qiáng)大的平臺(tái),,用戶可以輸入,維護(hù)和查看廣泛的,、不同來(lái)源的數(shù)據(jù),。對(duì)于那些目前依賴于 J2EE后臺(tái)服務(wù)器的用戶來(lái)說(shuō),既然有相當(dāng)數(shù)量的數(shù)據(jù),,那么將這些數(shù)據(jù)轉(zhuǎn)入Office平臺(tái)來(lái)實(shí)現(xiàn)更加簡(jiǎn)單的管理和考察將是一個(gè)很好的考量,。更讓人感興趣 的是來(lái)考察Office平臺(tái)利用過(guò)程無(wú)關(guān)的通信工具、實(shí)現(xiàn)利用Spring或其他輕型Java容器中業(yè)已實(shí)現(xiàn)的商業(yè)邏輯的方式,。

在2006年8月發(fā)行的MSDN雜志發(fā) 表了數(shù)篇關(guān)于Office開(kāi)發(fā)的文章(并為此強(qiáng)烈建議任何對(duì)于Office編程能力不熟悉的人將此作為背景材料),,在以“使用Office作為一個(gè)開(kāi)發(fā)平 臺(tái)的須知”為題的一篇文章中,用一個(gè)圖表展示了Office平臺(tái)的全部能力,。這里我們沒(méi)有卷帙浩繁地列出完全名單,,而是用一塊區(qū)域簡(jiǎn)單列出Office可 以與Java平臺(tái)進(jìn)行良好互動(dòng)的幾點(diǎn)特性:

  • 外部自動(dòng)化。由于COM自動(dòng)化技術(shù)的強(qiáng)大,,COM自動(dòng)化的后繼者,, Visual Studio Tools for Office (VSTO),這個(gè)主要的Office,,包括Word,、Excel、 Outlook 和其他應(yīng)用程序等,,組件可以被外部的應(yīng)用程序接口所驅(qū)動(dòng),,因此,,各種Office文檔就可以通過(guò)一些通用語(yǔ)言從外部創(chuàng)建。拿Excel的強(qiáng)大的圖表和計(jì)算 功能或者Word的強(qiáng)大的編輯和拼寫(xiě)檢查功能來(lái)說(shuō),,考慮在Java應(yīng)用程序如何結(jié)合這些功能來(lái)實(shí)現(xiàn)何種新功能將十分有趣,,在服務(wù)器上(如一個(gè)Web應(yīng)用程 序可以驅(qū)動(dòng)Word來(lái)創(chuàng)建一個(gè)顧客郵件或者打印由J2EE服務(wù)器傳入的包含特定數(shù)據(jù)元素的報(bào)告文本,就像使用Velocity引擎填充模板生成HTML的 方式一樣),,或者是在客戶端,,利用Eclipse富客戶端平臺(tái),一個(gè)已經(jīng)實(shí)現(xiàn)可以作為COM自動(dòng)化組件的宿主(事實(shí)上,,Eclipse可以在一個(gè)安裝有 Office的Windows操作系統(tǒng)里創(chuàng)建Word文檔),。當(dāng)用戶僅僅需要查看Word文檔而不是創(chuàng)作Word文檔時(shí),這就顯得尤其重要,。微軟提供了一 個(gè)免費(fèi)的Word查看程序,,如果Java的Web應(yīng)用程序負(fù)責(zé)創(chuàng)建Word文檔,然后通過(guò)HTTP協(xié)議在網(wǎng)絡(luò)上傳送,,這樣就可以提供一個(gè)比HTML更加豐 富的格式,。

  • 插件。Office也可以提供插件 功能,,一些軟件組件作為插件在Office的內(nèi)部運(yùn)行,,通常的情形是將它們自身作為一個(gè)主菜單項(xiàng)或者一個(gè)上下文菜單。一個(gè).NET組件可以將其自身注冊(cè)為 一個(gè)Excel電子表格應(yīng)用程序插件,,使用一些形式的Java互聯(lián)技術(shù)(Web服務(wù),,遠(yuǎn)程調(diào)用工具包或其他過(guò)程內(nèi)宿主)來(lái)連接Java的商業(yè)組件用于驗(yàn) 證、數(shù)據(jù)獲取或存儲(chǔ),。比如,,很多公司使用Excel作為一個(gè)發(fā)票和/或會(huì)計(jì)解決方案,而且他們可能使用了一些Java組件作為一個(gè)簡(jiǎn)單的進(jìn)出公司會(huì)計(jì)系統(tǒng) 的方式,。這個(gè)會(huì)計(jì)系統(tǒng)一般是龐大的,、基于Java技術(shù)的一個(gè)應(yīng)用程序包,運(yùn)行在一個(gè)企業(yè)級(jí)的服務(wù)器上,,通過(guò)EJB中的會(huì)話Bean提供的Java連接器進(jìn) 行訪問(wèn),。

  • Excel用戶自定義函數(shù)。Excel 在其計(jì)算引擎中已經(jīng)提供調(diào)用用戶自定義函數(shù)功能有非常久的時(shí)間了,,從歷史來(lái)看,,這些函數(shù)必然是使用非托管的(原始C++)代碼編寫(xiě)而成,這些代碼為應(yīng)用程 序帶來(lái)了危險(xiǎn)的不穩(wěn)定性,。創(chuàng)建一個(gè)Excel中的用戶自定義函數(shù)為應(yīng)用程序服務(wù)器中業(yè)已存在的商業(yè)邏輯進(jìn)行一個(gè)簡(jiǎn)單的包裝——比如一個(gè)存貨支票調(diào)用 Excel表格模板來(lái)生成一個(gè)訂購(gòu)單——可以提供給對(duì)大多數(shù)Excel用戶來(lái)說(shuō)Excel不曾給過(guò)的強(qiáng)大的在線體驗(yàn)。

  • 智能標(biāo)記,。智 能標(biāo)記是微軟為文檔中的一些小方框所起的新名稱,,這寫(xiě)文檔中的小方框包含一個(gè)箭頭,,一般位于感興趣的內(nèi)容旁邊。在文檔中,,智能標(biāo)記經(jīng)常會(huì)被配置和自定義特 殊的元素,,比如說(shuō)在Word的自動(dòng)糾錯(cuò)中,如果Word認(rèn)為出現(xiàn)了一個(gè)打印錯(cuò)誤,,那么在被糾正的單詞上方懸停鼠標(biāo)就會(huì)出現(xiàn)一個(gè)智能標(biāo)記,,在沒(méi)有出現(xiàn)真正的 錯(cuò)誤的情況下,允許用戶選擇取消這個(gè)糾正,。智能標(biāo)記就是插件的一種形式,,因此其他幫助用戶彌補(bǔ)客戶端和企業(yè)服務(wù)之間裂痕的可視化輔助組件也可以使用此種形 式。

Office同樣為那些使用了綱領(lǐng)性元素的組件和文檔提供了一些部署的支持,,因此在很多情況下,,在這些組件內(nèi)進(jìn)行功能的升級(jí)就像到一個(gè)共享下載服務(wù) 器發(fā)布一些東西一樣簡(jiǎn)單。顯然,,一個(gè)主要的考慮是使用Office將出現(xiàn)許可費(fèi)帶來(lái)的成本,,但幸運(yùn)的是,大多數(shù)商業(yè)環(huán)境應(yīng)該都已經(jīng)部署了Office環(huán) 境,,減少了顯著增加的費(fèi)用,。

Spring和J2EE容器中的Windwos工作流

Windows工作流是微軟在“NetFX 3.0”發(fā)行版本中的發(fā)行的一個(gè)新框架,它將隨著Windows Vista操作系統(tǒng)被同時(shí)安裝,。工作流的目的是提供一個(gè)方法,,這個(gè)方法使得商業(yè)過(guò)程功能——或許是一個(gè)小規(guī)模的應(yīng)用,比如網(wǎng)站中網(wǎng)頁(yè)的交互,,或許是一個(gè)大 規(guī)模的應(yīng)用,,比如簽署一個(gè)保險(xiǎn)協(xié)議的主要過(guò)程——可以被非開(kāi)發(fā)人員創(chuàng)建、查看,、跟蹤和編輯等,。工作流的開(kāi)發(fā)人員(或者是傳統(tǒng)的.NET開(kāi)發(fā)人員,或者是領(lǐng) 域?qū)<遥┦褂靡粋€(gè)類似流圖表工具的環(huán)境設(shè)計(jì)工作流,,這些工作流由一些活動(dòng)組成,,這些活動(dòng)表示過(guò)程當(dāng)中的一個(gè)個(gè)邏輯步驟。這個(gè)環(huán)境將會(huì)隨Visual Studio一起被普遍提供,,但是也可以在一些其他自定義的應(yīng)用程序中存在,,同樣也允許公司將工作流的設(shè)計(jì)者完全剝離出傳統(tǒng)的程序員工具之外。工作流設(shè)計(jì) 的結(jié)果就是一個(gè)格式化的XML文檔或代碼,,然后使用工作流編譯器將其編譯成一個(gè).NET類,,這個(gè)類將由工作流運(yùn)行時(shí)處理,運(yùn)行于各種環(huán)境之中,,包括 ASP.NET,,控制臺(tái)應(yīng)用程序或者是一個(gè)擁有圖形用戶接口的應(yīng)用程序等,。工作流可以是串行的或是由外界狀態(tài)改變驅(qū)動(dòng)的,甚至可以跨越很長(zhǎng)的時(shí)間間隔,。

從事實(shí)上看,,工作流運(yùn)行時(shí)是被設(shè)計(jì)為易用于各種應(yīng)用環(huán)境和上下文之中,一個(gè)最直接的想法就是使用一些連接技術(shù)將工作流應(yīng)用于Spring(或其他 J2EE容器)中,,比如可能是工作流運(yùn)行時(shí)支撐Spring容器創(chuàng)建自定義的活動(dòng),,以用于調(diào)用Spring中的Bean類執(zhí)行商業(yè)功能,也可能是在 Spring的Bean中支撐工作流運(yùn)行時(shí),,來(lái)執(zhí)行對(duì)Spring接受的遠(yuǎn)程調(diào)用進(jìn)行響應(yīng)的功能,。特別是在第二種情況下,終端用戶可以設(shè)計(jì)業(yè)務(wù)過(guò)程并將其 執(zhí)行于傳統(tǒng)的企業(yè)服務(wù)器中,。同樣,,工作流的狂熱愛(ài)好者已經(jīng)描述了工作流可以如何被應(yīng)用,以來(lái)結(jié)構(gòu)化ASP.NET應(yīng)用程序中網(wǎng)頁(yè)的導(dǎo)航,,這樣一種方式不同 于Structs的action映射文件,。在servlet容器中支撐工作流來(lái)完成同樣的目標(biāo)是另一種可行的辦法,同樣也在servlet和JSP網(wǎng)頁(yè)之 間提供了一種可見(jiàn)的“流”,,而非目前占據(jù)此位置的晦澀的XML語(yǔ)法,。

WPF客戶端到Java服務(wù)

本節(jié)將會(huì)描述最后一個(gè),但肯定不是最不重要的場(chǎng)景,而且它有可能成為將.NET和Java在一起使用時(shí)最富有挑戰(zhàn)的場(chǎng)景:在Java強(qiáng)大和可擴(kuò)展的 服務(wù)提供的數(shù)據(jù)模型之上(可能是Spring,EJB,,或一些組合),,使用新的WPF技術(shù)來(lái)提供一個(gè)豐富而強(qiáng)大的用戶界面。WPF所宣稱的基于xaml的 編程模型,,標(biāo)志著相較于近一個(gè)時(shí)期以來(lái)典型的UI編程模型的重大改變,,而且在許多方面都讓人很容易地產(chǎn)生復(fù)雜的用戶界面,這種技術(shù)超出了Swing或 SWT目前所能夠?qū)崿F(xiàn)的,。另外,由于xaml是一種基于文本的格式,,因此可以動(dòng)態(tài)生成XAML并將其下載到客戶端執(zhí)行,就像現(xiàn)在的HTML一樣,。

WPF前臺(tái)與Java后臺(tái)之間通過(guò)WCF進(jìn)行對(duì)話將可能稱為一個(gè)典型的場(chǎng)景,。WCF是微軟的新的通信管道,使所有的分布式通信編程模式成為一個(gè)單一 的架構(gòu),。除了支持許多最新的WS-*規(guī)范,,WCF還通過(guò)多種途徑提供了用于通信的豐富的可擴(kuò)展性模型,包括通過(guò)REST格式(有時(shí)稱作普通XML,,或 POX),,甚至可能使用其他的通信媒介,比如UDP。Sun通過(guò)其Tango項(xiàng)目使得這個(gè)辦法更加可行,,作為一種特定的設(shè)計(jì)目標(biāo),,Tango項(xiàng)目可以與 WCF無(wú)縫集成,。

* * *

不言而喻,,以上這份列表是很難列出Java和.NET之間進(jìn)行可能的互操作的所有場(chǎng)景的。事實(shí)上,為了讓這篇文章處于一個(gè)可控的長(zhǎng)度,,在這兒我們忽略了下面幾種可能性:

  • 采用Eclipse的富客戶端平臺(tái)作為客戶端,,要么部署一個(gè)通過(guò)由DCOM向.NET/COM+通信的服務(wù)組件,要么部署一個(gè)WCF服務(wù),。

  • 在一臺(tái)部署了Excel計(jì)算引擎的Windows Server 2003機(jī)器中采用Swing客戶端和/或Java Web Start創(chuàng)造一種便攜式,、可下載、零部署客戶端應(yīng)用解決方案,。

  • 在一個(gè)SWT應(yīng)用程序中利用DirectX提供本地的3D效果(包括音效),。

  • 使用微軟的語(yǔ)音服務(wù)器,以提供交互式語(yǔ)音識(shí)別(IVR),,而“前臺(tái)”使用一個(gè)Swing或J2EE應(yīng)用,。

等等,等等,等等。

聽(tīng)起來(lái)好像這一切都是牽強(qiáng)和不合理的煽情,,就像在腦海里浮現(xiàn)出那幫擁有大量時(shí)間但卻沒(méi)有常識(shí)的營(yíng)銷人員所作的事,。當(dāng)Java擁有公式引擎時(shí)何必使用 Excel?當(dāng)我們擁有JAX-WS時(shí)何必使用WCF?當(dāng)我們擁有Java3D時(shí)何必使用WPF,?讓我們坦然的面對(duì)如下事實(shí):.NET能做的任何事,, Java都可以做到,反之亦然,。免得我們因?yàn)槠珢?ài)某項(xiàng)技術(shù)被指責(zé),。但我們也尤其須要坦白承認(rèn)的一個(gè)事實(shí)是:兩種平臺(tái)各有特殊的興趣領(lǐng)域,并且它們?cè)诟髯缘?領(lǐng)域做得都很好,。開(kāi)發(fā)人員愿意拋開(kāi)立場(chǎng)偏見(jiàn),,進(jìn)行開(kāi)明的討論,并發(fā)揮各自平臺(tái)的優(yōu)勢(shì)以導(dǎo)致一些更大的利益,?;蚴菍挿旱匾每?馬克斯的一句名言,“對(duì)每 一個(gè)項(xiàng)目而言,應(yīng)該根據(jù)自己的需要充分發(fā)揮其所需平臺(tái)的能力,?!保?From each platform, according to its abilities, to each project, according to its needs.)

查看英文原文:Java, .NET, But Why Together?

譯者簡(jiǎn)介:張立,博士研究生,,喜歡新技術(shù),,新思想。經(jīng)歷了一些企業(yè)級(jí)軟件開(kāi)發(fā)后,,逐漸將興趣轉(zhuǎn)向C#和JAVA 的企業(yè)級(jí)應(yīng)用,。同時(shí)對(duì)動(dòng)態(tài)語(yǔ)言的發(fā)展非常關(guān)注,,喜歡用Python進(jìn)行一些計(jì)算,對(duì)Ruby也傾注了一定的精力,。大部分時(shí)間在學(xué)校從事一些理論研究,,工作 之余關(guān)注開(kāi)源軟件的進(jìn)展。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多