欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
從Java到Ruby——我的最近一次技術(shù)轉型
這里所涉及到的都是與軟件開(kāi)發(fā)有關(guān)的技術(shù),感覺(jué)很有必要總結一下我從業(yè)以來(lái)所使用過(guò)的開(kāi)發(fā)技術(shù)以及所經(jīng)歷過(guò)的幾次技術(shù)轉型。

1996年7月-1999年10月3年時(shí)間一直使用C語(yǔ)言編寫(xiě)電信協(xié)議軟件,算作我的C語(yǔ)言時(shí)代。其中還使用過(guò)一段時(shí)間SDL語(yǔ)言和基于SDL的代碼自動(dòng)生成工具(瑞典Telelogic公司的SDT)。
2000年3月-2000年10月7個(gè)多月時(shí)間使用Perl語(yǔ)言做網(wǎng)站開(kāi)發(fā),算作我的Perl語(yǔ)言時(shí)代。后來(lái)轉向了使用Java和JSP,用了兩個(gè)月。
2001年2月-2001年8月6個(gè)月時(shí)間使用JavaScript做DHTML開(kāi)發(fā),還使用ColdFusion做網(wǎng)站開(kāi)發(fā)。
2001年12月-2001年6月7個(gè)月時(shí)間使用C語(yǔ)言做企業(yè)級郵件服務(wù)器開(kāi)發(fā)。
2002年8月之后做開(kāi)發(fā)一直使用Java語(yǔ)言至今,算作我的Java語(yǔ)言時(shí)代,算算已經(jīng)快5年了。

在我使用過(guò)的這些語(yǔ)言中,有3種語(yǔ)言對我的影響最大,那就是C、Perl和Java。當然JavaScript對我的影響也很大,不過(guò)對于整體的應用軟件開(kāi)發(fā)來(lái)說(shuō),JavaScript并不是一個(gè)主角。

現在我正在經(jīng)歷一次新的技術(shù)轉型,從Java語(yǔ)言轉向Ruby語(yǔ)言和Rails框架。

如果說(shuō)以前的幾次技術(shù)轉型都是因為工作的變動(dòng)而導致的,那么這一次技術(shù)轉型則是我自己主動(dòng)發(fā)起的,因為我感覺(jué)Ruby代表著(zhù)應用軟件開(kāi)發(fā)技術(shù)(注意限定詞 “應用軟件”)的未來(lái)。Ruby是一種比Java更加先進(jìn)的應用軟件開(kāi)發(fā)語(yǔ)言,最重要的是它能夠帶來(lái)極高的開(kāi)發(fā)效率,而且不會(huì )影響代碼的可讀性和可維護性。

一年多以前我對Java還抱有一些幻想,認為Java社區如果有更好的框架,開(kāi)發(fā)效率一定會(huì )追上Rails。今年5月我讀了 Bruce A. Tate的《超越Java》這本書(shū),希望從專(zhuān)家那里了解一下Java語(yǔ)言和Java社區到底出了什么問(wèn)題。這本書(shū)打消了我的幻想,讓我理解了Java最大的問(wèn)題在于靜態(tài)類(lèi)型對開(kāi)發(fā)效率造成的嚴重影響。聯(lián)想到我去年下半年做的那個(gè)廣告發(fā)布平臺,我對此深有感觸。我當時(shí)所采用的框架是Spring MVC+Spring IoC+Hibernate+FreeMarker+SiteMesh,按理說(shuō)在Java開(kāi)發(fā)領(lǐng)域,這套組合的開(kāi)發(fā)效率應該算是比較高的了。然而實(shí)際的開(kāi)發(fā)進(jìn)度遠遠低于我的預期,我作出第一個(gè)版本的時(shí)間差不多是預計時(shí)間的兩倍。當然因為資金的缺乏,大部分時(shí)間都只有我一個(gè)人在做開(kāi)發(fā),什么都要親自動(dòng)手,困難確實(shí)很多。不過(guò)我認為主要的問(wèn)題還是在于Java語(yǔ)言做Web開(kāi)發(fā)的笨拙。

因為資金的缺乏,我今后要做一些自己感興趣的東西,注定仍然只會(huì )有很少的人參與(2、3個(gè)人),Java這樣笨拙的語(yǔ)言可能會(huì )使我付出雙倍的代價(jià)。

當然,Java語(yǔ)言仍然在發(fā)展和變化,但是它變的越來(lái)越復雜,越來(lái)越缺乏一致性,最終很可能會(huì )發(fā)展成為像C++那么復雜的一種語(yǔ)言。Java越來(lái)越不適合Web應用的開(kāi)發(fā)了(我說(shuō)的比較謹慎是因為這個(gè)領(lǐng)域是我最熟悉的),是到需要尋找一種新的開(kāi)發(fā)語(yǔ)言的時(shí)候了。

Rod Johnson確實(shí)很偉大,在參與翻譯了《J2EE without EJB》之后,我至今仍然對Rod Johnson對于JavaEE的偉大貢獻深感敬意。但是Spring是從企業(yè)應用環(huán)境成長(cháng)起來(lái)的,它對于面向Internet的Web應用來(lái)說(shuō),仍然是太重了。而Web 應用的很多重要的需求(例如對Ajax的支持、對REST的支持等等),Spring并沒(méi)有解決。做企業(yè)應用,Spring仍然是很好的選擇,然而做Web應用,Spring,甚至是Java語(yǔ)言本身,都不是很好的選擇。為何在Web應用開(kāi)發(fā)技術(shù)方面,PHP最終占據了第一的份額,這是很值得思考的。

我們以前做網(wǎng)站開(kāi)發(fā)從Perl語(yǔ)言轉向了Java語(yǔ)言,主要的原因有以下這些:
1. Perl開(kāi)發(fā)的應用代碼量大了之后很難維護。我自己寫(xiě)過(guò)一個(gè)4、500行的復雜Perl程序,過(guò)了兩個(gè)月后再讀居然都讀不懂了。
2. Perl這個(gè)工具最初是設計用來(lái)取代bash、awk、sed等工具的,因為L(cháng)arry Wall覺(jué)得這些工具還不夠強大靈活。Perl最初并不是設計用來(lái)作為一種全功能的應用軟件編程語(yǔ)言的。
3. Perl對面向對象編程支持的并不好。
4. 對于Web開(kāi)發(fā)來(lái)說(shuō),Perl的資源(開(kāi)發(fā)框架、開(kāi)發(fā)庫)沒(méi)有Java豐富,很多功能需要自己來(lái)開(kāi)發(fā)。
5. CGI開(kāi)發(fā)與支持session的Servlet/JSP開(kāi)發(fā)相比太原始,開(kāi)發(fā)難度太大。

所以我們有非常充足的理由轉向Java語(yǔ)言。還有一個(gè)不大好開(kāi)口的理由就是,做Java開(kāi)發(fā)當時(shí)似乎是成為一個(gè)專(zhuān)業(yè)程序員的標志,純粹的面子問(wèn)題,當然Java程序員的就業(yè)前景也要好的多。

但是轉向Java之初最強烈的感覺(jué)就是Java做一些與文本處理相關(guān)的工作非常麻煩,沒(méi)有Perl快捷,而這些工作對于開(kāi)發(fā)Web應用來(lái)說(shuō)是很常見(jiàn)的。當時(shí) Java核心類(lèi)庫甚至還不支持正則表達式,需要下載學(xué)習其他的開(kāi)發(fā)包,直到JDK1.4之后Java核心類(lèi)庫才開(kāi)始支持正則表達式。不過(guò)JSP這樣與 ASP、PHP類(lèi)似的服務(wù)器頁(yè)面技術(shù)是比CGI要先進(jìn)一代的技術(shù),所以開(kāi)發(fā)效率還是比寫(xiě)Perl CGI有所提高。

我做了一段時(shí)間JSP 開(kāi)發(fā),發(fā)現全部代碼都混在頁(yè)面中問(wèn)題很多,于是開(kāi)始學(xué)習Java Web開(kāi)發(fā)的Model1和Model2,并且接觸到了當時(shí)剛剛興起的Struts。不過(guò)因為工作轉換,并沒(méi)有深入使用Struts。后來(lái)我用了半年 ColdFusion之后,就不愛(ài)使用JSP了。JSP的開(kāi)發(fā)效率雖然比Perl CGI高一些,但是比起ColdFusion來(lái)說(shuō)還是要低很多。JSP開(kāi)發(fā)后來(lái)逐漸轉向基于custom tag的開(kāi)發(fā)方式,并且最終出現了JSTL,在我看來(lái)是一種對ColdFusion的模仿。Java社區后來(lái)出現了n多的MVC框架、n多的IoC框架、 n多的ORM框架?!禞2EE核心模式》所提倡的標準的三層架構至今仍然被當作鐵律來(lái)遵循,過(guò)多的層次帶來(lái)了巨大的靈活性,同時(shí)也帶來(lái)了巨大的復雜性。除了JavaEE之外,我還沒(méi)有看到其他的服務(wù)器端開(kāi)發(fā)技術(shù)如此強調三層架構或者多層架構。一般來(lái)說(shuō),分出MVC就足夠了。而JavaEE開(kāi)發(fā)不僅要在 Web表現層中分出MVC,還要在M中再分出業(yè)務(wù)層和持久層。這個(gè)分層的設計,是做JavaEE開(kāi)發(fā)很難實(shí)現Martin Fowler在《企業(yè)應用架構模式》中提倡的充血的domain model的一個(gè)主要原因。另外Java語(yǔ)言本身的靜態(tài)類(lèi)型所造成的笨拙和無(wú)法避免的重復代碼也是一個(gè)主要的原因,如果不強調分層,并且真的實(shí)現充血的 domain model,那么一個(gè)類(lèi)中包含的代碼量會(huì )顯得太多太復雜了。

Java社區中的一些廠(chǎng)商目前在大力追捧JSF和EJB3,但是我并不認為JSF和EJB3或者將兩者集成在一起的JBoss Seam能夠拯救JavaEE。復雜性才是JavaEE最大的問(wèn)題,JBoss Seam成功的關(guān)鍵在于它能否成功地掩蓋JSF和EJB3的復雜性,使得學(xué)習成本降低到與Rails相當的級別。不過(guò)即使它能夠做到,將來(lái)開(kāi)發(fā)者還是要面對Java語(yǔ)言本身的靜態(tài)類(lèi)型所造成的開(kāi)發(fā)效率低下。我并不認為JBoss Seam有機會(huì )在開(kāi)發(fā)效率上超越Rails。另外一個(gè)值得關(guān)注的框架是Grails,它是基于動(dòng)態(tài)語(yǔ)言Groovy的,嚴格來(lái)說(shuō)不能算是Java社區的框架。不過(guò)由于它基于Spring、Hibernate、SiteMesh,所以也可以看作是Java框架的進(jìn)一步發(fā)展。在開(kāi)發(fā)效率方面Grails也不大可能超越Rails。除了開(kāi)發(fā)框架本身,還需要考慮眾多外圍工具的支持和社區的規模,在這些方面Grails不可能達到Rails的水平。還有一個(gè)RIFE呢,雖然我完全不了解它,不過(guò)看來(lái)它受到的關(guān)注很少。一個(gè)幾乎完全被忽視的框架,成功的前景估計很渺茫。Wicket我認為是不值得考慮的,現在我們應該把目光僅僅投向那些full stack框架上,建造一個(gè)更加精巧的Web MVC框架解決不了根本的問(wèn)題,對開(kāi)發(fā)效率的提升是有限的。Cetia4和Restlet也是兩個(gè)很有趣的框架,特別是它們能夠支持REST開(kāi)發(fā),代表了 Java Web開(kāi)發(fā)框架的未來(lái)。Google的Guice是一個(gè)很有可能取代Spring的輕量級IoC框架,前景似乎不錯。不過(guò)Cetia4、Restlet、Guice這些框架和Wicket一樣,并不是full stack框架,對開(kāi)發(fā)效率的提升是有限的。

根據上述分析,我現在對Java社區內部的創(chuàng )新能力已經(jīng)感到很失望了(很明顯我后知后覺(jué)了,感到失望的大有人在),這種持續了10年之久的創(chuàng )新能力似乎已經(jīng)逐漸枯竭。由于動(dòng)態(tài)類(lèi)型的腳本語(yǔ)言(Python、Ruby、JavaScript等等)這些年來(lái)取得了長(cháng)足的進(jìn)步,而且在Web開(kāi)發(fā)方面出現了一些killer級的框架,現在是將目光投向其他開(kāi)發(fā)語(yǔ)言的時(shí)候了。我的決定就是在今年下半年完全轉到Ruby和Rails這個(gè)平臺上面。從Java轉到 Ruby有幾個(gè)強有力的理由:
1. Rails可以讓單個(gè)開(kāi)發(fā)者在開(kāi)發(fā)效率方面接近自己能力的極限。我并不是一個(gè)完美架構的fans,熱衷于不寫(xiě)一行代碼,巨細無(wú)靡地分析各種架構優(yōu)劣直到腦神經(jīng)癱瘓。我熱衷的是解決用戶(hù)真正關(guān)心的問(wèn)題,用技術(shù)改善他們的生活,與用戶(hù)建立起良好的人際關(guān)系。
2. Rails框架對Ajax有更好的支持,通過(guò)使用RJS模板可以極大減輕一般情況下做Ajax開(kāi)發(fā)的復雜性,提高開(kāi)發(fā)的效率。
3. Rails框架對REST開(kāi)發(fā)提供了最好的支持。REST在Web開(kāi)發(fā)方面會(huì )越來(lái)越重要,全面支持REST就是未來(lái)所有語(yǔ)言Web開(kāi)發(fā)框架發(fā)展的方向。
4. JRuby 1.0對Rails的支持已經(jīng)很好,而且支持直接使用Java開(kāi)發(fā)的資源,所以現在是從Java轉到Ruby的一個(gè)適當的時(shí)機。

我已經(jīng)讀完了《Ruby for Rails中文版》,并且出了一個(gè)個(gè)人的勘誤?!稇肦ails進(jìn)行敏捷Web開(kāi)發(fā)》第2版我已經(jīng)讀了1/3,在一周之內可以全部讀完。這兩本書(shū)讀完之后,基本上已經(jīng)入門(mén)了。在入門(mén)階段我只準備讀這兩本書(shū),然后我會(huì )通過(guò)開(kāi)發(fā)來(lái)熟悉更多的技術(shù)。因為我對Perl、JavaScript和Java語(yǔ)言的熟悉,所以學(xué)習Ruby和Rails并沒(méi)有感覺(jué)有什么難度。事實(shí)上閱讀《應用Rails進(jìn)行敏捷Web開(kāi)發(fā)》第2版要比我閱讀《Struts實(shí)戰》之類(lèi)的書(shū)容易理解的多(同時(shí)也更加有趣味,我第一次沒(méi)有感覺(jué)犯困),到目前為止,一切都感覺(jué)很自然。Ruby在我看來(lái)就是Perl+JavaScript+Java,毫無(wú)疑問(wèn)是一門(mén)偉大的語(yǔ)言。很可惜晚學(xué)習了整整一年多,否則去年見(jiàn)到Martin Fowler的時(shí)候本應該問(wèn)他更多關(guān)于Ruby的問(wèn)題的。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Sawin軟件研發(fā)之窗:主動(dòng)程序員與被動(dòng)程序員
學(xué)什么編程語(yǔ)言比較好?
Web開(kāi)發(fā)技術(shù)的演變
動(dòng)態(tài)語(yǔ)言,別再說(shuō)不
什么是2016年最值得學(xué)習的編程語(yǔ)言?
從Java到Ruby:獻給引路人的策略_JAVA_軟件開(kāi)發(fā)_IT社區_IT人社區
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久