拉勾Java高薪訓練營11期比較Java開發(fā)

從去年到現(xiàn)在,從.NET轉(zhuǎn)向Java開發(fā)(只是因為項目原因,絕對與平臺好壞沒有關(guān)系)差不多有一年的時間了。通過這一年時間也有些感觸,想從幾個面比較一下這兩個平臺。希望能做到客觀公正。

語言

我原來是使用C#語言的,和現(xiàn)在的Java語言相比,現(xiàn)在的Java語言語法就停留在C# 2.0這個年代。語法結(jié)構(gòu)都非常傳統(tǒng),中規(guī)中矩。很突出的一點是,因為缺少對閉包的支持,有些用C#很容易做到的,用Java需要寫很多廢話代碼。

前幾天InfoQ上發(fā)表了一篇英國衛(wèi)報逐步采用Scala替換Java的文章里一句話用的很好:看Java的代碼很容易讓你只見樹木,不見森林。因為為了實現(xiàn)某個功能,你需要太多的支撐代碼,而實現(xiàn)功能的關(guān)鍵代碼卻迷失了。

舉個例子:我需要一個排好序的用戶列表,排序的依據(jù)是用戶名字。很簡單的需求對不。自然的代碼肯定是這樣的:

IList<User> users = …

users.OrderBy(user => user.Name);

而如果用Java實現(xiàn)同樣的功能你可能要這樣寫:

List<User> users = …

Collections.sort(users,new Comparator() {

public int compare(User left, User right) {

return left.getName().compareTo(right.getName());

}

});

第一:沒有擴展方法的支持,只有借助靜態(tài)的輔助類

第二:沒有閉包的支持,非要寫個難看的匿名類

其實我們只需要一個OrderBy,一看就明白,但現(xiàn)在多了這么多“無用”的代碼,反而核心的價值(order by)卻顯得不那么重要了。這還是一個很簡單的例子,在實際的項目中你會為此付出更多的代價,你要寫出一堆味同嚼蠟的代碼才能實現(xiàn)你想要的那個功能,而那個功能其實是很顯而易見。

所以在語言層面,Java沒有任何亮點,只覺得羅里羅嗦。

關(guān)于語言層面的比較,寫過很多,而且非常精彩。

不過Java也有那么很少幾個有點意思的小東西:比如靜態(tài)導入(腦袋提醒,這東西很早就在VB里出現(xiàn)了)、以及Java對Annotation的特殊支持讓我們可以做一個更有意思的事情。

概念滿天飛

做Java以來,讓我感觸最深的是在Java世界里概念滿天飛。ORM,IOC,AOP,這幾個在.NET的世界里也有,但沒見過這么濃的,但是如果你做Java應(yīng)用,你不熟悉這幾個你都不好意思出去跟人打招呼,所以除了學習Java本身外還有一大堆開源框架等著你研究。

還有什么View Model,Presentation Model,Validator,BRO(Business Rule Object),BPO(Business Process Object),BDD。關(guān)鍵是不僅是概念上存在這樣的名詞,它還大量的出現(xiàn)在代碼里。代碼里將概念描述得淋漓盡致,還規(guī)規(guī)矩矩?;蛟S我土老帽了,我開發(fā).NET三年有余,從來沒整這些玩意兒。但是我一點也不懷疑我的代碼難以閱讀,難以維護。

配置文件,你能再多一點么

我超級厭惡Spring的配置文件(雖然你說這只是個框架,但貌似Java社區(qū)有這個趨向)。雖然Spring現(xiàn)在也增加了注解(Annotation)的支持,但是還有那么一些知道的和不知道的原因,項目中存在大量的配置文件。而且為了“模塊性”,一個小小的配置文件又包含有幾個配置文件。有配置controller的,有配置DAO的,有配置service的。額,還有那該死的Hibernate的hbm文件。我想,系統(tǒng)的復雜性就是這么一點一點的堆積而來的。

ASP.NET的配置文件一度也有變得更臃腫的趨勢,但最后還是大大瘦身(.NET 4.0里默認的web.config很小了)。而且Attribute在.NET的第一個版本就出現(xiàn)了,很多可配置的東西都提供了Attribute的API和XML的API,所以沒有歷史遺留包袱。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容