開著跑車換輪胎,這樣的情形您能想象嗎?
最近,一段拍攝于沙特阿拉伯的視頻就記錄了這樣的超牛特技。地址給大家分享一下:http://www.douban.com/group/topic/52087839。從短片中可以看到,這輛汽車在沙漠中前進,一名男性就站在車門外,在幾個大轉彎之后,汽車成功地側翻了約45度,僅靠2個輪子貼在地上行駛著。畫面顯示五個戴著頭巾的男子探身從一輛正在行駛的銀色跑車里爬出來,司機像F1賽車手那樣讓車子側立起來,僅靠車身一側的兩個車輪行駛,他們則很麻利地更換了懸空的另一側兩個車輪。五名男子接下來的表現讓人大跌眼鏡——完成換輪胎特技表演后,他們并不急于回到車內,而是一臉興奮的擊掌和揮手慶祝,過路司機目瞪口呆地看完表演后紛紛加速超了過去。
據了解,這種汽車絕技表演在阿拉伯十分流行,運用兩輪貼地面行駛的超高難度技巧,考驗著駕駛者與乘客間的絕佳默契。在Java框架使用中,你能體驗這種默契感嗎?
帶著思考,我們自然要聯想到Java應用中比較常見的熱部署。熱部署是在不重啟Java虛擬機的前提下,能自動偵測到class文件的變化,更新運行時class 的行為。Java類是通過Java虛擬機加載的,某個類的class文件在被classloader加載后,會生成對應的Class對象,之后就可以創建該類的實例。大多數基于Java的應用服務器,包括EJB服務器和Servlet容器,都支持熱部署。類裝入器不能重新裝入一個已經裝入的類,但只要使用一個新的類裝入器實例,就可以將類再次裝入一個正在運行的應用程序。
Tiny框架就是這樣一部超牛的賽車,它支持在不停止應用的情況下,增加或刪除業務單元。
Tiny構建者認為,一個完整的框架可能需要有許許多多個部分組成,但是對于實際應用的用戶來說,它可能只需要其中的一部分功能。構架一定要有這種能力,可以由使用者進行點菜式,使用,避免只要用一點點功能,就要引入許許多多的內容。
TinyVFS把對各種各樣的的文件系統的訪問封裝成統一的應用程序接口,這大大的簡化了應用程序本身代碼的復雜度。通過業務單元管理器,可以在不停止其它業務單元的情況下,增加新的業務單元,或把已經安裝的業務單元停止或下卸載。這里所謂的業務單元,就是用來實現某種業務功能的完整集合,它包含了相關的Java Class文件、配置文件、媒體文件、界面展現文件(甚至支持把Jsp文件也放在Jar包中)等。利用業務單元,程序員可以進行軟件開發、測試、發布,大大方便了業務的設計與發布。而且,業務單元之間也可以有依賴關系,如果某業務單元依賴的業務單元不存在或被停止時,則此業務單元也會被停止。
開著車換輪胎,使用Tiny來應用,這種靈活性還體現在多個地方。
(1)Tiny流程的執行位置十分靈活,可以從流程的任意節點開始執行,流程可重入的特性可以實現頁面流、工作流等功能。
(2)Tiny模板引擎是一個基于Java技術構建的模板引擎,它具有體量小、性能高和擴展易的特點。適合于所有通過文本模板生成文本類型內容的場景,如:XML、源文件、HTML等等,可以說,它的出現就是為了替換Velocity模板引擎而來,因此在指令集上在盡量與Velocity接近的同時,又擴展了一些Velocity不能很好解決問題的指令與功能,在表達多方面則盡量與java保持一致,所以非常的易學易用。
(3)不管對象是否是在Spring等容器中托管,都可以使用緩沖邏輯,實現了緩沖邏輯無容器要求。
在UI引擎的組件包中,每個UI組件都是一個Jar工程,使得UI組件的集成由框架自動進行,而不必程序員進行干預。UI組件自發現功能,避免了大量配置工作。
(4)支持BigPipe模式。利用Web服務器和瀏覽器之間的并行執行能力,BigPipe首先把網頁分解成多個可調用的Pagelet。多個Pagelet并行的在服務器端生成、網絡傳輸、瀏覽器展現,從而大大提升展現效率與效果。
(5)在穩定性方面,Tiny框架是立足于在需要穩定、安全要求非常高的應用環境中使用的,因此其穩定性就是框架構建者首要思考目標,核心部分只使用經過充驗證及廣泛應用的第三方包。
總之,在這種靈活性基礎上,Tiny正在形成一個成熟的開源生態圈,包含了Tiny框架、Tiny開源組件、Tiny商業組件、Tiny技術支持、Tiny咨詢、Tiny培訓等,具有較強市場競爭力和可持續發展的體系,展現了一種新的軟件產業發展模式。