“跨界(cross over)在汽車界已然成風,將轎車、SUV、跑車和MPV等多種不同元素融為一體的混搭跨界車型,正在成為汽車設計領域的新趨勢。從個人而言,當包容、多元的審美要求和物質要求越來越強烈時,跨界代表了一種新銳的生活態度與審美方式的融合。有人說,這是我們內心深處的渴望,也是我們在短暫一生中盡量多嘗試應用不同體驗的方式———駕駛跨界車,演繹着一種新穎的生活方式。”
目前互聯網開始滲透到各行各業中,各互聯網之間的整合也是此起彼伏。大量整合、滲透互聯網如新浪和高德地圖,支付寶和基金,支付寶和快遞等的輕量型的跨界試水業務紛紛搶灘。如何來提供這種跨界業務形態的快速上線所需的開發效率和應對其所帶來的代碼膨脹,資源利用問題,Easyweb給出了一種解決方案,扎根業務平台,將重用邏輯宿主化,結合外界業務的WEB API,利用腳本語言快捷的進行原型開發,迅速孵化出各種輕型app。在業務運行過程中,許多極有可能被淘汰,剩下的開始逐步獨立成應用,Easyweb起到了一個孵化池的作用。
Java web框架發展到現在已經經歷了十幾年的歷史,如turbine,struts,webwork,spring mvc,struts2,webx等等。互聯網的網站形態從一開始的web1.0如門戶網站到web2.0如微博;信息流動方式從一開始門戶到用戶的單向流動到用戶和用戶間的雙向流動;用戶體驗上從整頁刷新到局部刷新;從與展示緊密相連的動作性操作到可被重復使用的web API(web service ,rest);從PC瀏覽器的網頁接口到手機app的純數據化接口,變化是如此地翻天覆地。顯然的,這些變化推動了web框架的發展,如考慮到REST 服務支持,tomcat 6到tomcat7從只支持GET,POST方法到對GET,POST,DELETE,PUT,HEAD等多種方法的支持;與此同時,Jdk的每次發布都會給web mvc框架帶來新的技術熱點,如spring3 mvc 的annotation 配置取代spring2 mvc原有的xml配置文件升級。現今跨界app也成了業界熱點之一。
最近由於業務需要學習了一個淘寶內部的框架,easyweb。Easyweb easy在什么地方呢:
一是開發效率高,上手easy.如語言簡練,比如寫一個判斷字符串非空,
Java寫法:
1:
2: s!=null&&s.length>0
groovy 寫法:
1: if(s)
另外則是熱部署,大型web項目規模動則幾百MB WAR,在其中作一次修改重新啟動一次需要幾分鍾時間。如果能進行熱部署,那么大大提高了開發調試的效率。
開發效率高是腳本語言groovy給java web框架帶來的禮物。JDK7對腳本語言進一步增強,從JSR 223到JSR292增加了invoke dynamic類型,采用了bootstrap方法來動態綁定方法,並在綁定過之后可以快速返回綁定方法,在性能上會得到大幅提升。
二是處理的問題域及其處理方法easy,只取request的攔截和模板渲染,其他通通不管。
三是開發的程序都是業務easy的輕型app.這些輕型app特點大多是共享依賴相同集合的jar和資源,業務上也比較輕量(幾個到幾十個頁面)。
easyweb整體結構:
1. easywebValve或類似的filter完成url的攔截,將某類url請求分發到easyweb的RequestProcessor;
2. 在RequestProcessor中初始化ThreadLocal變量context,將request,response,對應的app(app映射標識是url中的一部分,如/weibo/home.html映射到weibo app里)放入context中;
3. groovyEngine根據params(請求中的參數),groovy files(根據url映射找到對應的groovy文件)進行腳本調用,生成obj;
4. VelocityEngine將obj屬性填充到vm模板(這個也由Url映射可以得到),生成html頁面返回到客戶端。
綜上所述,如easyweb框架一樣可利用WEB API和腳本語言快速拼接輕型app適應跨界需求是以后java web 框架發展的新趨勢之一。
參考資料:
2.New JDK 7 Feature: Support for Dynamically Typed Languages in the Java Virtual Machine