程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 寫給在Java和.net中徘徊的新手

寫給在Java和.net中徘徊的新手

編輯:關於JAVA
 在很多網站上
    網友都會問一個相同的問題
    到底是學Java還是.Net,個有個的見解

 

自從.Net問世以來,程序員都很關心的一個問題是「該學Java或.NET」。我也在掙扎,該「該繼續Java的研究,或者該開始准備培養.Net的知識」。

 

最好是能兩者兼顧,但是每個人的時間都很有限,想要兼顧兩者,其實不太容易。投入在.Net的時間越多,所能花費在Java的時間自然就少了,反之亦然。在信息爆炸的時代,重要的不是信息的取得,而是信息的抉擇。信息太多,時間太少,如果不能慎選適合的技術,只會平白浪費許多時間,斫喪自己的競爭力。

 

開發效率方面:

 

對我們來說選擇開發工具的最需要衡量的就是這一因素:

 

表現層開發:J2EE這方面非常欠缺,把這一任務丟給了應用服務器廠商和編程人員,不象.Net擁有很牛的.Net Studio,不過Jbuilder 6已經出來了,支持EJB2.0 也不算太落後,但一直沒有解決方案的就是頁面用戶控件(當然Turbine的Action Event也算一種),缺乏可視化設計和Servlet應用程序框架生成。我期望的一種方式是具有象.Net Studio一樣的可以所見即所得的編輯模板(Template),綁定用戶按鈕事件處理。目前可以通過Javascript庫,模板庫及宏庫略微緩解一下Servlet的開發。ASP .Net和Servlet都支持動態更新表現層。

 

二 XML支持能力:

 

.Net一直叫囂的就是我集成了XML和Web Service,但JDK1.4也搞出了XML規范,這方面已經差不多了,不過.Net的易用性好得很,而且就此一家,程序員不必費心思選組件或產品。

 

在采用XML和XSLT的開發模式中:微軟的SQL Server 2000直接提供了HTTP Query到XML數據的功能,不過我用dbXML也能做得這一點嘛,還適用於大多數的主流RDBMS,更牛!這種開發模式應該是未來的方向。

 

三 理解的兩者本質

 

Java是綁定於一種語言的跨系統的平台,是一個有多家供應商提供競爭性產品的規范。

.Net是綁定於一種系統的多語言平台,是一個規范性較弱的壟斷性產品。

 

一個是規范一個是產品,本來就不同。於是.net的發言人說,規范和產品沒得比,要比就比具體產品。但,Java天生是規范,這不是Java的錯,.Net生來是迎戰Java的,孤軍奮戰是他的命。

 

隨便問一個稍有頭腦的Java程序員,Java最大的好處是什麼,他會毫不猶豫地告訴你:“簡潔”。Java為Internet而生,也為自己“簡單易用並提高生產效率”的理念而活。

 

Java討人喜歡,因為他把家底亮出來,鼓勵大家發揮聰明才智幫他進步。那麼多開源項目,都在競爭中求發展,對Java的發展貢獻巨大。Java作為規范,吸收成果不計出身,善於否定自己、自我揚棄的優點有目共睹。EJB3.0就是一例,EJB是Java 2企業版(即J2EE)的殺手锏,在企業級應用中廣受推崇,占據大型企業應用的高端市場。但EJB2.x也因其不易開發、部署受到批評。新近通過的EJB 3.0幾乎是對EJB2.x的全盤否定,丟棄了重量級的EJB2.x,引入輕量級開源項目Hibernate的設計理念,公布不久就獲得多方支持。為了理想,Java不惜付出代價,要不然哪有Highway帖子裡.Net設計師的評價:“Java發展到現在,還能相對那麼緊湊精干,不容易!”

 

.Net不同,出生於老牌商人世家,什麼理念啦,原則啦,對商人來說不重要。重要的是要保住市場,搶占市場。

 

他的主人以操作系統雄霸桌面電腦,曾經對互聯網不屑一顧。當終於發現自己犯了原則錯誤,不得不迎頭趕上時,.net應運而生。.Net世交多,要盡量保持親戚關系,還要讓親戚的支持者原Windows平台開發人員保住飯碗,象EJB3.0那種過河拆橋痛下殺手的事情還沒干過。新功能要加,歷史物件也要留。但他和自家親戚關系緊密,外人從親戚家拐個彎就到他家,自在,沒有陌生感,也沒有路費。人留住了,市場就留住了。至於跨平台,有違家族利益,不符合祖訓,所以理論上的跨平台,他不打算認真對待。但中小企業應用的市場,他占住了。

 

於是呢,Java陣營繼續為理想而戰,.Net陣營繼續為市場而戰,各得所需,都忙得不亦樂乎。

 

四 站在用戶的立場上

 

雖然Java和.Net奮斗的目標不同,但是都是B/S結構軟件市場的生力軍。

 

Java對大中小型系統都適用,只要搭配不同的操作系統、應用服務器等等,大到銀行綜合信息系統、全國全省的統一應用系統,小到手機游戲,Java可以大小通吃,來者不拒。尤其是中國政府的重要系統,全沒有.Net的份,為啥?你不給我看家底,我怎麼知道你有沒有留了後門,改天偷偷溜進我家?

 

.Net照顧中小型應用毫無問題,而且開發速度快,作為用戶,付了錢很快能看到回報,當然歡喜。大型應用麼,.net是不是真的支撐不了,我不知道,但諸如Windows不穩定不安全的評論由來已久,.Net建構於這些親戚的基礎上,壞事就脫不了干系。

 

系統交貨早,功能實現,運行穩定,安全性不出纰漏,用戶就滿意。

 

跨不跨操作系統,這個考量不重要,哪有沒事整天換操作系統的用戶?

 

五 站在開發商的立場上

 

Java還是.Net?繼續頭疼。

 

跨平台對開發商是一個巨大的誘惑。一次開發,多個平台使用,降低了遷移成本,有利。但Java的開發工具沒有.net順手,對編碼人員的要求比.Net要高。

 

.Net培訓成本低,上手快。尤其如果開發人員以前都是做Windows開發的話,轉型成本低得讓老板眉開眼笑。

 

最重要的決定力量是市場。開發商所定位的市場用戶的需求和開發上在技術上的歷史積累,決定了開發商最終的策略。

 

六 站在從業人員的立場上

 

從業人員被市場所驅動,反過來也引導市場。

 

Java起手的過程比較漫長。Java開發者要做很多DIY工作,才能寫出第一個像樣的程序。DIY多了,對於從業的基礎素質,必有提高。

 

.net入門快,Windows最大的好處“可視化”在.net延續,集成環境好,單步調試強,這是Java團隊中下至程序員上達項目經理歷來羨慕的地方。做慣了Windows和.Net下的開發,難免覺得Java下的開發調試實在比較原始:代碼大多要一行一行寫,單步調試很多時候不可能。

 

但Java人員的付出也有回報。我還記得當年Pascal編程課和Unix操作系統帶給我的思維沖擊,那門編程課應該更准確地說成“結構化編程――pascal”。Pascal強調的結構化編程帶來了非結構化語言如Fortran之流無法比擬的美和樂趣,Unix崇尚的“小即是美”、“沒有消息就是好消息”深入我心。在軟件開發這一生產過程中,除了得到維持生計所需的報酬,同時能得到美的享受和滿足的心情,實為天賜。Java從業者樂於談論Java的美,這一點上比.Net有福。

 

結束語

 

就服務端市場來講,Java目前在技術先進性上有絕對優勢。應用系統需要各個層面的框架(framework),Java都有大量已完成或正在進行的開源項目幫助開發人員更好地完成自己的任務。諸如struts/JSF類的框架,.Net沒有對應物,而且Java在揚棄的同時保持著相對的穩定。

 

.Net開發效率差不多是Java的三倍(經驗數據),致命的誘惑。在Java放棄的客戶端程序上,.net是老大,但在服務端,.net還是個小弟弟,有待成長。微軟最初想要構建一個新的技術來回應J2EE,但發現一己之力還辦不到。於是匆匆祭出com/com+,被絕大多數程序員評為“丑陋繁雜,遲早會被替換掉”。什麼時候替換呢?這一替換對應用的影響有多大呢?微軟的新操作系統對.Net又會有多大影響?拭目以待。

 

繞來繞去的意思是,我不覺得兩個平台有截然的高下之分。在這個互動的世界上,不想被淘汰的競爭者始終保持警惕,努力學習對手的優點。Java的努力之一就是提供更易用的工具幫助開發人員快速輕松地開發Web應用程序。而.Net的當務之急是改進架構,完善框架。

 

還是那句話:沒有最好的技術,只有對於具體項目來說最適用的技術。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved