Java和.NET是台灣業界程式開發兩大主流,對於有心想以程式開發當作職業的人,你覺得該如何在這兩者之間選擇?或者你有什麼更好的建議?
iT邦小財神請大家來聊一聊囉。
問題到期時,回答獲得最多推的人,iT邦小財神將贈送儲值500元的iThome icash卡給這位人氣王哦。
詳細辦法快看每日一問活動頁
另外,還這些問題可以搶答:
[每日一問](28)女性IT人員在職場環境中,會被當成男生來用嗎?
[每日一問](27)瀏覽器「我的最愛」中,IT人都放了哪些網站?
[每日一問](26)IT人要如何才能拿到百萬年薪?
[每日一問](25)如果遇到態度不佳的使用者,你會如何處理呢?
[每日一問](24)甫出校園的IT人,該如何作好職涯規劃呢?
[每日一問](23)你用過價格高的嚇人的IT產品嗎?
這個問題大有問題耶,雖然大家也大致上知道意思,但總覺得這樣比較有點怪。
首先,.net應該是指microsoft以他的common language runtime包裝好的程式庫,可以使用這個程式庫的語言有vb、c#、vc、甚至jscript、f#、j#等等。而Java就是一個語言而已。
如果要比較,c#是一個非常新穎的語言,微軟在他身上下了不少功夫,拿它跟java比我覺得可以比較,也各有優點。拿vc跟java比,也是各有擅場。
至於.net,我想沒東西可以跟他比,因為除了微軟,沒有一家在做這種萬有的程式庫。另一個好處是不用花錢。
java的library可以算另一種類型,有非常多的廠商開發非常多的東西,可以自取所需,有的要花錢,有的不用花錢。連執行java的虛擬機器都有許多廠商在做哪。除了sun的hotspot,至少還有ibm、bea、甚至開放源碼的例如apache.org的harmony或是gnu的gij等等。
到底要使用怎樣的技術,我想到頭來還是習慣以及願打願挨的問題,該學哪個?對初學者大概算是重要問題,但是如果已經熟悉十種語言,那只是多一個可以利用的工具罷了。另外通常更重要的還是專案的考量,有許多軟體並不是在windows作業系統上面跑的。到底要用哪個語言與技術平台,最後還不就是專案的需求罷了。
當然,最好是能兩者兼顧,但是每個人的時間都很有限,想要兼顧兩者,其實不太容易。資訊太多,時間太少,如果不能慎選適合的技術,只會平白浪費許多時間。
我著實花了不少時間在.NET上,對於.NET的認識越來越深。姑且不論我們對於微軟是褒是貶,單純就技術本身來看,.NET的確是很卓越的。
下面簡單地比較Java和.NET。
從技術的觀點
通常新的技術會比舊技術更好,因為新技術可以從舊技術學到優點,且新技術可以摒除舊技術的缺點。NET比Java誕生的時間晚了六年,許多方面都比Java先進,當然是無庸置疑。
我的意思並不是Java這六年停滯不前,事實上,Java一直在進步中,只是有許多縫縫補補、修修改改的地方。例如,XML是在這六年之間出現的技術,所以.NET對於XML的整合可以說是天衣無縫,但Java是後來才把XML整合進來,且整合的程度比不上.NET。
從歷史的觀點
瞭解近二十年的軟體產業發展史,你會發現微軟挫敗的機會很小,即使是在頭幾場戰役失敗,也會在整場戰爭中獲勝。換句話說,.NET挫敗的機會不大。在Office軟體大戰中,WordPerfect、Ami Pro、Lotus 123如今安在?在作業系統大戰中,OS/2也已經銷聲匿跡。在瀏覽器大戰中,Navigator如今只整剩下小小的疆土。你一定可以舉出更多這樣的例子。
從市調的觀點
分析機構如Meta Group和IDC皆預測,在Windows Server 2003推出之後,未來幾年市占率會大幅提高。我認為,在longhorn推出之後(2006年?),PC更是會全面.NET化。由於「精通」.NET知識可能需要費時兩三年以上,技術人員應該盡量提早學習.NET以為因應。
三年前(2000年)學習.NET恐怕有點太早,三年後(2006年)學習.NET恐怕有點太晚,而現在學習.NET正是時候,不會太早,也不會太晚。學會之後,可以立刻投入市場對於.NET技術的人力需求。
從行銷的觀點
任何人都不能否定微軟行銷功力的厲害。平面的行銷,包括在電子時報、IT資訊媒體,甚至連商業週刊等非資訊媒體,都看得到相關的廣告。動態的行銷,包括修練講座、產品發表會…等活動,直接接觸客戶。電子的行銷,包括MSDN中英文網站、微軟TechNet Flash新聞信…等,提供技術新知。
從銷售指標的觀點
關於某個城市的消費者物價指數,麥香堡指標(BigMac Index)是一個很有名也很簡易的評估指標。我也發明了一個類似的指標,稱為天瓏指標(TenLong Index),可以用來評估IT技術的熱門程度。天瓏書局是台灣最大的IT圖書門市,它的技術書籍銷售量,對於判斷技術的熱門程度,有一定程度的參考價值。
2002年全年和2003年上半年,天瓏書局在.NET書籍的銷售量都不高,但是在2003年下半年之後,.NET書籍已經有相當不錯的表現,這意味著最近準備採用.NET技術的公司已經增加了。
參考資料:http://www.zdnet.com.tw/enterprise/column/archive/0,2000089731,20085161,00.htm?&p=3
Java 平台和 .NET 主要有兩個層次上的明顯差異:基礎技術上的差異,以及基礎理念的差異。
技術上的差異
在結構部分,.NET是屬於第三代的網際網路,而Java是屬於第二代的網際網路。
第一代的網際網路只能瀏覽—僅提供靜態的資訊,人們只能使用瀏覽器來觀看靜態的網頁資訊(例如電子佈告欄)。
第二代的網際網路著重於與人們互動的應用程式—使用者可以建立自訂的購物籃或者自行訂閱入口頻道以獲取資或影響交易行為。
第三代的網際網路則網路上的應用程式可與其它應用程式產生互動—例如,你的連絡人管理程式(contact management)可與你的行事曆程式互動,並協助你排定與客戶在Toledo的會談,接下來行事曆程式會與班機預訂程式聯繫,這時侯你的全球使用者喜好設定(universal user preferences)將幫你預定合適的班機,接著與你的牙醫更改你當天早上的預約。而你只要直接與你的連絡人管理程式(contact management)連線,所有其它的應用程式都會與其它應用程式產生互動,為你做好妥善安排。
.NET是語言獨立的平台,開發人員可以自由選擇他們熟悉的程式語言來開發應用程式,並可以與其它程式語言開發的應用程式產生互動。反之,Java是一種特殊規格的語言,意即它不能提供開發人員語言的選擇性。Java元件 (Java beans) 更不能與其他的程式語言開發的應用程式相容。
.NET以XML與SOAP所為基礎開發的環境。以實際標準來監督實際標準架構。反之,Java沒有任何正式標準架構,而是完全由個別單一的廠商,昇陽(Sun)所擁有和控制。
· .NET的設計是用來讓企業可以完全掌控利用其現有的資料,無需分化或取代,而Java則要這麼做。運算系統分類與資料儲存、IT資源的稀少性與市場即時性的壓力都是現實的因素,然而.NET把這些因素都考慮在內了。
理念的差異
打從一開始的時侯,當微軟董事長比爾蓋茲表達出「每家每戶的桌上都要有電腦」的願景時時,微軟即將其思考核心放在每個人都要使用電腦上。這個思考核心以今日公司的新願景來闡述,即是「透過功能強大軟體服務,讓每個使用者無論在任何時間、任何地點,以任何裝置都能夠即時取得所需要的資訊以達事半功倍的效果。」,而發展.NET的目的正是在使這個願景夢想成真。
在微軟的願景中,電腦操作要簡單、售價要合理,從小朋友到銀行的出納員乃至於退休的銀髮族都會使用電腦來使生活更為方便,軟體則必須便宜且豐富,並不斷更新,讓每個人都付得起而且願意使用。
開發人員的需求也一直占有相當重要的部份。早期在Microsoft BASIC時代,他們是微軟的最早的顧客及愛用者,從那時起,開發人員的數量便不斷成長。微軟瞭解開發人員對於問題都有不同的解決方式,對於應用程式也有不同的優先考慮。 在微軟的眼中,他們必須要選擇他們所專精的語言,無論COBOL、SmallTalk、LISP、BASIC、C、 C++、Eiffel、Prolog、Pascal或其他的語言。他們都必須利用最好的工具來符合他們的需求,並花時間建立新的應用程式,讓人們可以獲得更多的效能,過更好的生活。相反的,他們不應該花太多的時間一次又一次地重覆寫著相同的應用程式,這樣的做法只是一直在執行過時的軟體而已,一點利益也沒有。簡而言之,微軟對程式開發人員的最大支援是能創造最高產質,使得他們能夠建立更新更好的應用程式。
另一種完全相反的觀念是,無論它是否可運用在處理手邊棘手的問題,或是是否可以迎合開發人員的偏好或技巧,程式設計者都希望使用單一的程式語言來開發產品。開發出的應用程式都期待著能被建置在大型、昂貴的電腦上面運作,而事實上,這些設備所需的價格絕不是一般小型企業或個人所能負擔起的。程式設計者去依其習性去鑽研程式某種程式語言以利其解決問題的做法已經不妥當了。反之,想要繼續在這樣的觀點下發展的程式設計者需要專精一種特定的程式語言─一種來自一個大公司(昇陽,Sun)的特別的概念下的語言,其公司的核心事業是架構在賣價格昂貴、專為少數族群設計的伺服器,而不是創造價格合理、適用大眾的電腦。這就是Java代表的意義。
追根究底之後,Java與.NET最大的不同點是源於一個簡單的問題:電腦是要給所謂菁英份子使用或是給每個人使用?
所以 .NET +1
參考資料:http://www.bonny.com.tw/bbs/redirect.php?tid=11126&goto=lastpost
說實話我是硬體的,但是有一點點的軟體,可是我現在的環境,逼我去學的是JAVA 跟LOTUSSCRIPT,學甚麼還是要應用到實踐面上,即使Jave或是.NET學得很好,也要有環境來實踐跟應用,不然就會成為伊卡吊詭(Icarus Paradox),把自己侷限在Java或是.NET裡。
每種語言的基礎都跳脫不了變數/運算子/迴圈/邏輯運算....等基礎, 這方面應該沒什麼難度和差異, 頂多就是每種語言的不同特性(像是python特殊的list表示方式), 這些花點時間熟悉應該就能上手. API則多使用和多看文件, 畢竟每種語言的API命名和參數都不同, 再來挑個好用的IDE工具(.net應該只有一種能挑), 和熟悉一些framework, 把這些東西都用的順手, 也算達到了完成第一階段了
接下來的是跟語言無關的部分, 也是值得花時間投資的部分(同時也是經驗的累積, 但要累積這樣的經驗, 也得自己能到達這個境界才行), 這部分是可以套用在任何語言上的, 就是轉換自己的思維成物件導向設計的概念, 配合某些領域累積的經驗(domain know-how), 然後逐漸的將這些東西融合在一起, 若能導出一些pattern來符合各種情況更好....如果能做到這樣, 我想使用java或是.net, 學習曲線應該也不高了
其實學什麼語言都無所謂,能解問題最重要 XD
以下是有感而發
那天在BBS上看到python呼叫console command,然後再去承接stdout,真是簡單,再搭配regular expression一起使用,真的很方便
java和.net要做到類似的功能,不會這麼精簡和直覺。同樣的,python若要寫windows視窗程式,開發的速度也不會有vb/vb.net那麼直覺和方便。某些龐大複雜的企業邏輯,需要能夠跨平台,又有良好的開發工具和線上資源,且要導入物件導向開發方式,除了java還有其他的選擇嗎?
所以啦,各有各的市場,掌握學習的方法和跳脫語言的層次比較重要。於 2008-05-17 19:15:04 補充
MaoYang
如果你是企業內部的開發人員,你會有選擇性嗎? 不管用哪一種語言,是不是最後都要跟資料庫打交道? 那資料庫的 Store Procedured 要不要會?
老闆要的東西,.Net or Java? Who cares!! 專心把工作做好再說吧
山不在高,有仙則名;水不在深,有龍則靈
[-隱藏]
回應 jamesjan:
文/黃忠成
Java 與.NET 之戰正熱,我最常聽到的問題是,程式設計師該選擇那一邊呢?
亦或是那一邊才是王道呢?唔⋯我無法針對這些問題提供正確的答案,因為我
無法預知未來。就個人主觀而言,我不認為Java 會因.NET 的勝利而消失,
.NET 也不會因為Java 的勝出而失去其市場,這兩者都會持續存在很長一段時間,
單學那一種都不太可能會發生沒飯吃的窘境。就學生而言,除了開發平台外還有
很多更重要的東西要學,作業系統、OOP、Design Patterns、UML、Database、
分散式處理,這些知識對於一個程式設計師而言是必備的,不管日後學的是那種
語言、平台,他們在你的設計生涯中絕不會缺席。對在職的程式設計師來說,兩者
皆備當然是最好的情況,這可以使你未來的路更加寬敞,如果時間上不允許,那麼
單學一種也無不可。當由專案主導者角度來看這個問題時,挑選一邊站則成了一個
較複雜的問題,因為身為一個主導者必須負擔該專案的成敗。以目前兩者的發展情況
看來,Java 因為多年在Enterprise Application 領域的經營,其產品的功能性與穩定
性都較.NET 來的高,如果專案的性質是屬於這一類,時效上又較為吃緊,Java 不失為
是一個好選擇。.NET 在這方面雖然能見度不高,但其規畫的未來藍圖中也包含了這
一塊,只是目前這些Server 級產品仍然處於開發中,時效上來說對專案的影響不小。
倘若專案性質是屬於中小型的應用程式,又排除使用其它如VB、DELPHI、FoxPro
等工具,那麼.NET 則是一個不錯的選項,其優異的UI 反應速度及與Windows 的整合
度,可以較快速的建構出這類UI 比重較高的應用程式。另一種不得不談的是網站型
專案,這類型的選擇就較難了,Java 與.NET 在網站部份都勾勒出了相當不錯的藍圖,
其執行效率也在伯仲之間,唯一可以比較的大概是大型網站應用程式所依賴的後端
Server 功能。與Enterprise Application 相同,Java 在這領域所提供的方案較多,產品
成熟度與穩定性也高,.NET 則是需要等待後續的一系列Server 級產品上市才能論定。
前面所提的是指2 選1 的情況,如果資源上允許,整合這兩種平台也不是不可能,
Borland 公司近日所發表的Janeva 就可以實現以.NET 做為前端,連結上後端的
J2EE Server 或CORBA Server。事實上,我對於Java 與.NET 的看法很單純,兩者都是
相當不錯的開發平台,沒有什麼功能誰能做與不能做的問題,端看程式設計師的能力
與付出的努力而定,一旦選定一方做為主要開發平台,精實才是唯一的出路。拋開
開發平台來看軟體開發的趨勢,這些日子來分散式的應用及軟體設計學
(UML、MDA、Design Patterns)已漸漸成為主流,程式設計師應該多多攝取這
方面的知識,才能因應未來的市場需求,在職場上取得一席之地。
參考資料:http://www.dreams.idv.tw/~code6421/Doc/Java_Net.pdf
其实你不应该在java和dotnet之间徘徊的,两个平台都是不错的!
java一般会针对大型的开发项目,dotnet的话,可以说是大小通吃!
我的建议是,只要你学的深,没必要去在意是那个平台的!
希望你早日成为编程高手!
回應 :
請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數










