Java已死?九百萬程序員說不
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/5/23 10:06:25 ] 推薦標(biāo)簽:
Java沒死,事實(shí)上它擁有足夠的能量讓你的應(yīng)用跑起來。那些對(duì)Java吹毛求疵人頻繁地聚焦在一些小眾問題上,總是和其他技術(shù)或者語言做些不公平的對(duì)比,這些語言并沒有像Java一樣得到廣泛應(yīng)用及長(zhǎng)遠(yuǎn)的歷史。
現(xiàn)在的小孩都能學(xué)Java,它在Web和企業(yè)開發(fā)中廣泛被采用,特別是近些年更是有了些讓人驚訝的改善,一些新特性正在籌備中。即使拋開這些新的特性,Java仍然很酷,應(yīng)用的廣泛性、JVM平臺(tái)背后卓越的設(shè)計(jì)、清晰的語法、擁有豐富的工具和庫文件構(gòu)成的生態(tài)系統(tǒng)。Oracle說有超過9,000,000 Java開發(fā)者(億萬的應(yīng)用和設(shè)備用戶),所以為什么我會(huì)聽到諸如“Java正在被淘汰中”,2007年開始,Java已經(jīng)淪為“21世紀(jì)的Cobol語言”的言論?
Java平臺(tái)是工程師的夢(mèng)想
首先是Java平臺(tái)的存在,HotSpot JVM是一項(xiàng)非凡的設(shè)計(jì),CLR(公共語言運(yùn)行庫)有了大量的優(yōu)化,Java應(yīng)用在性能上甚至可以與C相媲美,當(dāng)然還有其他可選的虛擬機(jī)供可用(如:JRockit,Zing),應(yīng)你的環(huán)境有特殊的需求而定。
再者,多種基于JVM的語言使得這個(gè)平臺(tái)更奇妙,如:Groovy,Jython,JavaFX,Scala,當(dāng)然還不局限于以上流行的語言。 Java現(xiàn)在包含有字節(jié)碼指令:invokedynamic和java.lang.invoke包,使得JVM構(gòu)建動(dòng)態(tài)語言更簡(jiǎn)單,現(xiàn)在已經(jīng)有超過50中基于JVM的語言。其中有意思的一個(gè)是php.reboot,它的目標(biāo)是保持php的哲學(xué)理念,但是移除了其中一些缺陷,而且它同樣能在Android中運(yùn)行。
Java是一門成熟的語言,并不適合“老人”
Java成為被批評(píng),抱怨,詛咒的靶子,我說這門語言還沒死,恰恰相反當(dāng)有人抱怨Java的時(shí)候正是推廣Java時(shí)機(jī)。人們總會(huì)做些奇怪的對(duì)比,好像仍然以為Java還是停留在1.4的版本,用記事本編寫、需要EJB2的支持、只能用來寫寫簡(jiǎn)單的留言板,然后把這些用來與一個(gè)高端框架甚至是CMS來對(duì)比。
作為Java程序員,這種對(duì)比對(duì)我來說沒有任何意義。更為明智的方法對(duì)比Java得理智地選擇競(jìng)爭(zhēng)對(duì)手,看看Java vs PHP、Python或者Ruby,或者用框架Play對(duì)比Ruby on Rails,SpringMVC vs Zend Framework,有鑒于此,我覺得Java似乎根本不適合老人。
Java 冗長(zhǎng)嗎?當(dāng)然
人們常說Java太?嗦了,減緩了運(yùn)行速度。批評(píng)者矛頭通常指向Java的強(qiáng)類型靜態(tài)語言特性,缺乏前沿技術(shù)在語言中,然而,我認(rèn)為他們是經(jīng)過深思熟慮的,而且這正是Java良好的特性。動(dòng)態(tài)語言在啟動(dòng)一個(gè)小項(xiàng)目時(shí)開始會(huì)覺得很受歡迎,但是可以考慮一下,在時(shí)髦框架及合適的工具(如:考慮用IDE代替記事本)下創(chuàng)建一個(gè)“Hello留言板”類型的應(yīng)用,Java很簡(jiǎn)單,只是10分鐘的事情,如果你想做個(gè)試驗(yàn)的話,使用Spring Roo再準(zhǔn)備一個(gè)秒表,如果有需要的話,F(xiàn)在可以開始繁瑣的CRUD了。
想象一下,你正為移動(dòng)運(yùn)營(yíng)商搭建一個(gè)系統(tǒng),運(yùn)行客戶登陸網(wǎng)站,你不得不在后臺(tái)調(diào)用各種子系統(tǒng)收集大量的數(shù)據(jù),Cool框架通常分解你的程序模塊而不需要匹配任何用戶模型。
Java是一門強(qiáng)類型靜態(tài)語言
強(qiáng)類型靜態(tài)語言有很多好處,我喜歡它簡(jiǎn)單的視覺外觀,我可以粗略看一段代碼知道是做什么的,它像是可視化的用英語反饋,語言非常易讀,字母混合成單詞仍然可讀。其它的一些好處是有強(qiáng)大的IDE支持,動(dòng)態(tài)語言在這點(diǎn)一直是弊端,大項(xiàng)目中有強(qiáng)大的IDE和工具支持是無價(jià)的。
批判者的觀點(diǎn)在Java在讀文件、轉(zhuǎn)換xml或迭代集合的時(shí)候缺乏表達(dá)力,但是你可以總是創(chuàng)建一個(gè)方法去處理這些常用的事例,或者是用FileUtils.readLines(),java語言上表達(dá)力的缺點(diǎn)有很多庫對(duì)其支持。在Java7中能看到一些優(yōu)雅的加強(qiáng)型功能,如自動(dòng)關(guān)閉資源、siwtch語句支持String、數(shù)字類型支持下劃線(強(qiáng)烈建議讀Coin項(xiàng)目)。Java8承諾了更多的東西(有意思的應(yīng)該是閉包)。Java是不是在任何方面都是那么的完美無缺呢?當(dāng)然不是,這是Java8、Java9在準(zhǔn)備階段的原因。我個(gè)人也不喜歡那些不太優(yōu)雅的核心API.是否的確將更多的事情留給平臺(tái)而不是語言本身?java核心包括API進(jìn)階設(shè)計(jì)跨度長(zhǎng)達(dá)20年,API的更新會(huì)破壞向后兼容性,有些設(shè)計(jì)太抽象,但有些還不夠抽象,有些太零碎,有些根本不可思議?纯雌涓(jìng)爭(zhēng)對(duì)手.NET,核心API做的很好,比如統(tǒng)一的通信API。Java8在Jigsaw項(xiàng)目的幫助下,會(huì)有所改變。
所以你值得擁有Java,正確地使用它,它是一門很棒的語言?氨菿lingon語言,它將繼續(xù)改善并不會(huì)很快消失。不應(yīng)把努力放在取代Java上,而是和其他JVM語言結(jié)合使用,這是明智的,但是對(duì)我的下一個(gè)Pet Clinic還是堅(jiān)持使用Java。
相關(guān)推薦
最新發(fā)布
性能測(cè)試之測(cè)試環(huán)境搭建的方法
2020/7/21 15:39:32軟件測(cè)試是從什么時(shí)候開始被企業(yè)所重視的呢?
2020/7/17 9:09:11Android自動(dòng)化測(cè)試框架有哪些?有什么用途?
2020/7/17 9:03:50什么樣的項(xiàng)目適合做自動(dòng)化?自動(dòng)化測(cè)試人員應(yīng)具備怎樣的能力?
2020/7/17 8:57:06幾大市面主流性能測(cè)試工具測(cè)評(píng)
2020/7/17 8:52:11RPA機(jī)器人能夠快速響應(yīng)企業(yè)需求,是怎么做到的?
2020/7/17 8:48:05Bug可以真正消滅嗎?為什么?
2020/7/17 8:43:03軟件測(cè)試基本概念是怎么來的?軟件測(cè)試生命周期的形成歷經(jīng)了什么?
2020/7/16 9:11:10