來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-27 17:50:06
什么是半靜態(tài)語言呢?全新的基于JVM的腳本語言是Groovy和Scala。這兩門語言現(xiàn)在都越來越流行,不同的是,Groovy是動態(tài)腳本語言,而是Scala是靜態(tài)語言,那什么是半靜態(tài)語言呢?本文將由阿里巴巴技術(shù)部中文站架構(gòu)師何坤(Raymond He)系統(tǒng)地向大家介紹這篇《詳解半靜態(tài)語言原理及價值》。
引言
動態(tài)類型語言在企業(yè)開發(fā)和互聯(lián)網(wǎng)領(lǐng)域應(yīng)用廣泛,如Ruby ,Velocity, Python等。 動態(tài)類型語言在運行時進行類型推斷,以解釋方式執(zhí)行,修改即生效,開發(fā)靈活性高;而靜態(tài)類型語言(如:Java,C/C+/C++) 在執(zhí)行前做類型檢查,需要編譯運行,對于互聯(lián)網(wǎng)前端開發(fā)不夠靈活。
因此,許多大型互聯(lián)網(wǎng)站選擇 Freemarker, Velocity這樣的動態(tài)模板語言作為頁面開發(fā)語言,在一定程度上滿足了前端敏捷開發(fā)的需求。
然而,對于大型電子商務(wù)網(wǎng)站,不僅具有一般互聯(lián)網(wǎng)需求頻繁變更的特點,更顯著特點則是業(yè)務(wù)繁多,業(yè)務(wù)模型和業(yè)務(wù)關(guān)系復(fù)雜。 因此,在此類應(yīng)用開發(fā)中,Velocity 的開發(fā)也遇到了一些的問題。
前端模板開發(fā)問題
1、降低軟件質(zhì)量
Velocity是弱類型動態(tài)語言,運行時才能檢查出類型錯誤。由于動態(tài)類型等特點,有的錯誤在遇到特定參數(shù)時,才能激發(fā)執(zhí)行路徑,軟件質(zhì)量不能很好的保證。
2、測試成本高
由于無法像靜態(tài)語言一樣,在運行前進行類型檢查,因此軟件的測試周期長,測試成本高。
3、開發(fā)不敏捷
缺乏一些敏捷開發(fā)功能如IDE內(nèi)實時驗證、代碼提示、代碼重構(gòu)等。雖然能修改即生效,但對于企業(yè)級開發(fā),效率較低。
4、維護性差
對于一個大型系統(tǒng),在重構(gòu)業(yè)務(wù)模型(Java Model)或代碼時, 無法知道哪些Velocity模板會受到影響;常常需要花費大量時間搜索相關(guān)模板,然后修改、測試。例如:筆者所在公司的一個基礎(chǔ)產(chǎn)品升級,由于受影響模板眾多,重構(gòu)復(fù)雜,項目評估達上千人日。
這些動態(tài)語言天生的缺點在企業(yè)級和大型網(wǎng)站應(yīng)用中非常突出,嚴(yán)重的影響了開發(fā)質(zhì)量和開發(fā)效率。因此,在技術(shù)上亟待一種新的高質(zhì)量、高效率的開發(fā)技術(shù)。
靜態(tài)語言的優(yōu)勢
綜合考慮后,我們發(fā)現(xiàn)動態(tài)類型語言(Dynamic Language)“解釋執(zhí)行方式和修改即生效”的最大之一優(yōu)點仍是不能舍棄的。必須從問題出發(fā),找到一條平滑的線路來解決問題。
遇到上述問題時,我們不由自主的會贊美Java的優(yōu)點:
1、靜態(tài)語法和靜態(tài)類型實時檢查。
如果賦值類型不匹配,方法不存在,參數(shù)類型錯誤等信息能馬上在IDE中顯示;
2、代碼提示:
調(diào)用屬性,方法時能代碼提示,開發(fā)非常高效;
3、代碼熱鏈接:
通過變量和類名熱鏈接到對應(yīng)的Java類;
4、代碼重構(gòu):
修改一個Java類時,受影響的Java代碼會被實時重新驗證,馬上會顯示紅色的錯誤; 更強大的是重構(gòu),對Java類,方法敏性重命名,會自動修改所有相關(guān)代碼中對它的引用。
全程面授,不高薪都難
申請成功后,我們將在24小時內(nèi)與您聯(lián)系
招生熱線: 4008-0731-86 / 0731-82186801
學(xué)校地址: 長沙市天心區(qū)團結(jié)路6號
Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有
湘ICP備14017520號-3