Java模板引擎 HTTL

 

HTTL(Hyper-Text Template Language)是一個高性能的開源JAVA模板引擎,適用於動態HTML頁面輸出,可替代JSP頁面,指令和Velocity類似。html

簡潔友好的模板語法

語法儘量符合HTML和JAVA開發者的直覺,指令和老牌的Velocity相似,但改進了Velocity中不符合直覺的地方。 只保留最基本的條件迭代控制指令,渲染過程不容許修改原始數據,防止模板帶過多業務邏輯。默認使用HTML註釋語法,避免干擾原生HTML頁面。git

<html>

    <body>

        <!--#if(books)-->

        <table>

            <!--#for(Book book : books)-->

            <tr>

                <td>${book.title}</td>

            </tr>

            <!--#end-->

        </table>

        <!--#end-->

    </body>

</html>


改進Velocity不符合直覺的地方:github

  • 指令中的變量不用加$符,如:#if(a == b),而不像Velocity那樣:#if($a == $b),加$有點廢話,容易忘寫。
  • ${x}當變量爲null時,輸出空白串,而不像Velocity那樣:輸出源碼${x},若是用$!{x},感嘆號容易忘記寫。
  • 支持在輸出時進行表達式計算,如:${i + 1},而不像Velocity那樣:要先#set($j = $i + 1)到一個臨時變量。
  • 採用更直觀的方式,調用靜態工具方法,如:${"a".toChar},而不像Velocity那樣:$(Tool.toChar("a"))。

詳細語法,以及Velocity對比,請參見:語法 & 對比性能優化

精益求精的性能優化

將模板編譯成JAVA字節碼運行,並使用強類型推導,減小運行期反射和轉型, 渲染速度接近Java硬編碼輸出,比Velocity等其它模板引擎快一個數量級。 比JSP也快,由於JSP只有Scriptlet是編譯的,Tag和EL是解釋執行的,而HTTL是全編譯的。函數

模板引擎性能測試

測試用例和環境,以及優化策略,請參見:性能 & 優化工具

高質量的設計與實現

模板自描述,在模板內聲明入參變量類型,並基於入參類型推導模板內全部變量類型,使IDE能方便的實現變量方法補全提示, 對開發過程友好。出錯信息精肯定位行列,並顯示出錯位置先後相關內容。採用微核+插件體系,全部環節都可擴展,方便集成和二次開發。性能

測試覆蓋率

 

嚴格確保質量,請放心使用,HTTL在發佈前已作:單元測試

  • 全部語法指令函數模板單元測試,確保全部模板指令的解析和執行正確。
  • 性能對比基準測試,確保性能接近Java硬編碼輸出,高出其它引擎一個數量級。
  • 長時間運行穩定性測試,確保不出現FullGC,內存溢出,死鎖,CPU佔滿,抖動等。
  • 內存佔用和CPU耗時Profiler分析,確保不出現非預期的內存和CPU瓶頸。
  • Web應用集成測試,確保在SpringMVC,Struts,Webx等集成中可用。
  • 環境兼容性測試,確保在Liunx,Windows,OSX,JDK1.5,1.6,1.7等環境可用。
  • FindBugs代碼問題檢測,確保不出現空指針,資源未關閉等明顯錯誤。
  • JDepend分包依賴檢測,確保分包依賴的合理性。
相關文章
相關標籤/搜索