Java和.NET是台灣業界程式開發兩大主流,對於有心想以程式開發當作職業的人,你覺得該如何在這兩者之間選擇?或者你有什麼更好的建議?
iT邦小財神請大家來聊一聊囉。
問題到期時,回答獲得最多推的人,iT邦小財神將贈送儲值500元的iThome icash卡給這位人氣王哦。
詳細辦法快看每日一問活動頁
另外,還這些問題可以搶答:
每日一問女性IT人員在職場環境中,會被當成男生來用嗎?
每日一問瀏覽器「我的最愛」中,IT人都放了哪些網站?
每日一問IT人要如何才能拿到百萬年薪?
每日一問如果遇到態度不佳的使用者,你會如何處理呢?
每日一問甫出校園的IT人,該如何作好職涯規劃呢?
每日一問你用過價格高的嚇人的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問世以來,程式員都很關心的一個問題是「該學Java或.NET」。我也在掙扎,該「該繼續Java的研究,或者該開始準備培養.NET的知識」。
當然,最好是能兩者兼顧,但是每個人的時間都很有限,想要兼顧兩者,其實不太容易。資訊太多,時間太少,如果不能慎選適合的技術,只會平白浪費許多時間。
我著實花了不少時間在.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技術的公司已經增加了。
原文來自:MS net
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
個人覺得還是要看環境
說實話我是硬體的,但是有一點點的軟體,可是我現在的環境,逼我去學的是JAVA 跟LOTUSSCRIPT,學甚麼還是要應用到實踐面上,即使Jave或是.NET學得很好,也要有環境來實踐跟應用,不然就會成為伊卡吊詭(Icarus Paradox),把自己侷限在Java或是.NET裡。
學什麼都好, 只要深入的懂一種語言, 基礎打穩了, 要進入其他語言就不困難, 如果經驗不多, 最好是從.NET 著手, 支援比較充足, 進入的速度比較快, 經驗夠的人, 直接從 Java 入行是比較好的, 畢竟 .NET 的包袱頗重, 延習 VB6 及 C++ 的傳統下來, 感覺上在程式語法的規劃不夠清晰, 頗亂的, 不容易理解OO語言的精神, Java 的語法就沒有那麼多包袱, 由 Java 的語言來建立OO的觀念是比較理想的, 但是很多東西SDK是不支援的, 各家支援又不一致, 就必須要靠自己來, 對於初學者來說, 不只是困難重重的問題而已。
個人覺得該學的是物件導向設計程式的精神和設計的方式.
每種語言的基礎都跳脫不了變數/運算子/迴圈/邏輯運算....等基礎, 這方面應該沒什麼難度和差異, 頂多就是每種語言的不同特性(像是python特殊的list表示方式), 這些花點時間熟悉應該就能上手. API則多使用和多看文件, 畢竟每種語言的API命名和參數都不同, 再來挑個好用的IDE工具(.net應該只有一種能挑), 和熟悉一些framework, 把這些東西都用的順手, 也算達到了完成第一階段了
接下來的是跟語言無關的部分, 也是值得花時間投資的部分(同時也是經驗的累積, 但要累積這樣的經驗, 也得自己能到達這個境界才行), 這部分是可以套用在任何語言上的, 就是轉換自己的思維成物件導向設計的概念, 配合某些領域累積的經驗(domain know-how), 然後逐漸的將這些東西融合在一起, 若能導出一些pattern來符合各種情況更好....如果能做到這樣, 我想使用java或是.net, 學習曲線應該也不高了
Java..NET.都是一樣的.凡是與網路相關的你都一定要學.不然你無法作一個真正的網路工作人員.尤其是網路上的作業系統.你一定要懂.不然你無法掌控網路上的所有應用工作.一般的程度.你必須知道網路的工作程序.網路是由網站驅動的.不是由網頁直接驅動的.WATER.0911115854.( macosorawater@pchome.com.tw ). http://www.macosorawater.pchome.com.tw .小禮.Thanks. 11111111 .
建議是先學Java, 有Java的基礎, 學.Net其實很快, Java可以應用的產業很廣, 從Desktop application(support Windows, Linux, Mac OS), Web application(也是support Windows,Linux,Mac OS), J2ME手機, Google的Android官發開發語言也是Java, .Net大概只能在MicroSoft的平台, .Net跨平台雖然有solution(Mono)可是還不太成熟, 所以從Java的支援度, 可想像Java的重要性, Google在找人才時, 至少要會C/C++/Java. 看到這裡您心中應該對Java會有些心動. 至於會Java是否可以找到好工作, 我認為這就看自己的功力了.
這種問題從 .Net 推出之後就一直困擾著想要從事或已經從事程式開發的人,對資深的Developer來說,程式語言不是問題,因萬變不離其宗;獨孤九劍就那麼九式,但使劍的人真的非用劍不可嗎?招式瞭然於心又何必在乎手裡拿的是什麼?
如果你是企業內部的開發人員,你會有選擇性嗎? 不管用哪一種語言,是不是最後都要跟資料庫打交道? 那資料庫的 Store Procedured 要不要會?
老闆要的東西,.Net or Java? Who cares!! 專心把工作做好再說吧
山不在高,有仙則名;水不在深,有龍則靈
我看Java 與 .NET
文/黃忠成
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)已漸漸成為主流,程式設計師應該多多攝取這
方面的知識,才能因應未來的市場需求,在職場上取得一席之地。
我是浙江宁波的,我个人也是做dotnet开发的!
其实你不应该在java和dotnet之间徘徊的,两个平台都是不错的!
java一般会针对大型的开发项目,dotnet的话,可以说是大小通吃!
我的建议是,只要你学的深,没必要去在意是那个平台的!
希望你早日成为编程高手!
能學到那一種都好, 兩種都學豈不更佳? 但如果您忒喜歡某一種,就認真去學, 學成精, 各有各的發展市場, 就像 Unix 與 Windows 作業系統, 沒有說那一種會幹掉那一種, 都會才會提昇自己的價值啊,不是嗎?? 呵呵..