java開源模板引擎

  Velocity 
Velocity是一個基於java的模板引擎(template engine)。它容許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。 當Velocity應用於web開發時,界面設計人員能夠和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員能夠只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。Velocity將java代碼從web頁面中分離出來,這樣爲web站點的長期維護提供了便利,同時也爲咱們在JSP和PHP以外又提供了一種可選的方案。 Velocity的能力遠不止web站點開發這個領域,例如,它能夠從模板(template)產生SQL和PostScript、XML,它也能夠被看成一個獨立工具來產生源代碼和報告,或者做爲其餘系統的集成組件使用。Velocity也能夠爲Turbine web開發架構提供模板服務(template service)。Velocity+Turbine提供一個模板服務的方式容許一個web應用以一個真正的MVC模型進行開發。 【 VeloEclipse  :Velocity在Eclipse平臺下的一個輔助開發插件】

更多Velocity信息javascript

  FreeMarker 
FreeMarker容許Java servlet保持圖形設計同應用程序邏輯的分離,這是經過在模板中密封HTML完成的。模板用servlet提供的數據動態地生成 HTML。模板語言是強大的直觀的,編譯器速度快,輸出接近靜態HTML頁面的速度。 【 FreeMarker Eclipse PluginFreeMarker IDE:Eclipse平臺下的輔助開發工具】

更多FreeMarker信息php

  Jamon 
Jamon是一個Java文本模板引擎,用於生成動態HTML, XML,或任何基於文本的內容。它有一個豐富的功能集,支持封裝,參數化,功能分解,表達邏輯重用。模板聲明它們要求生成的參數,包括動態模板內容("fragments"),並被翻譯成帶有公有方法的Java類,它的符號反映了在模板中聲明的參數。

更多Jamon信息html

  JDynamiTe 
JDynamiTe是一個把PHP模板技術移植到Java的一個開源項目。JDynamiTe模板用註釋(BEGIN-END)標記動態塊,用{}標記佔位變量。JDynamiTe模板不包含任何邏輯,是「所見即所得」的模板技術,可以在普通的HTML瀏覽器或編輯器正確顯示。

更多JDynamiTe信息java

  JByte 
JByte基於java的模板引擎。它一般用於把Jsp或Servlet轉換成HTML,也能夠轉換成其它格式好比:XML,RTF,WML,e-mail text,原代碼, 配置文件。

更多JByte信息web

  Tea 
Tea Trove 是一個組開放源代碼項目(Tea,TeaServlet,Kettle,BeanDoc,Trove)的集合。由Walt Disney Internet小組開發,它這些技術成功運用在許多著名的網站上如ESPN.com, Movies.com, ABCNews.com 和 Disney.com. 其中的Tea是一個簡單又強大的模板語言。它一般使用TeaServlet來產生動態頁面。

更多Tea信息設計模式

  Jxp 
Jxp(Java scripted page)包含一個Java腳本處理器和一個模板引擎,它支持同時具有文本和Java代碼的模板文件。它包含一個剖析器和一個結構處理器,剖析器用於將腳本內容轉化爲特定的結構,結構處理器將處理這些特定的結構內容轉換爲常規代碼,並經過API函數在產品中輸出。

更多Jxp信息api

  StringTemplate 
StringTemplate一個能夠生成原代碼,web頁面,emails和其它任何須要有格式的文本輸出。StringTemplate已應用在爲jGuru.com與antlr.org網站產生web頁面。

更多StringTemplate信息數組

  Better Templates for Everybody 
一個讓數據知道如何插入到模板中適當的位置,模板能夠從靜態的文件或Java servlets來建立。

更多Better Templates for Everybody信息瀏覽器

  Canvas 
Canvas是一個基於Groovy腳本語言模板生成器。它使用相似於Velocity Java API來綁定變量並容許在你的模板中使用Groovy腳本表達式。

更多Canvas信息緩存

  Guglhupf XTE 
Guglhupf XTE(XML Transformation Engine:XML轉換引擎) 是一組用來轉換XML文件的工具。它提供了一種比XSLT更簡單的方式來轉換XML。XTE不一樣於XSLT與Velocity這樣的XML轉換工具,它們都用特殊的語言來處理XML文件輸入,而後把目標數據做爲輸出陳述.而XTE是以相反的方式進行它的模板是已經寫在輸出格式上的,而輸入處理命令則是寫在特殊的註釋塊中.它的模板文件採用Java代碼編寫.

更多Guglhupf XTE信息

  WebMacro 
WebMacro是一種Java開源的模板語言。對於表現web頁面,它比JSP,PHP,與ASP效率更高。WebMacro是一些大網站後臺的頁面生成技術。

更多WebMacro信息

  Viento 
Viento是一個用Java開發的模板語言。它在語句構成上不少情形下有點類於Velocity 。

更多Viento信息

  Jostraca 
Jostraca是一個代碼生成工具包。它的模板可以使用相似於JSP的語法來編寫。 CodeGenClipse是一個把該代碼生成器集成到Eclipse v3.1.2+中的插件。

更多Jostraca信息

  LSP 
LSP是一種基於XML技術的高級Web模板語言。LSP提供強大和易於使用視圖邏輯,但可以保持商業邏輯與模板相脫離。LSP直接編譯成Java字節碼以便提升執行效率。

更多LSP信息

  JLoom 
JLoom是一個採用相似於JSP語法的模板引擎。參數能夠是任何Java類型,甚至是泛型(generic)。JLoom還提供一個Eclipse插件來輔助開發。

更多JLoom信息

  MiniTemplator 
MiniTemplator是一個簡潔的模板引擎。定義模板文件中的變量和塊的語法很是簡單,支持塊嵌套塊。對於MiniTemplator的使用,其提供良好、完整文檔支持。

更多MiniTemplator信息

  CommonTemplate 
CommonTemplate是一個模板引擎,用於解釋CTL模板語言,可在多種運行時環境下使用;其主要目標是做爲JSP,ASP.Net等的替代方案,以保證用簡單的語法,良好的結構,不混雜業務邏輯的方式書寫頁面;也能夠做爲動態文本生成工具,生成HTML、XML、Mail、Java源代碼或其它文本等。 2、CommonTemplate特性: 1.只有一個語法規則:$指令名{表達式},使用更簡單,更統一。 2.支持語法外套,能夠在Dreamwear下正常使用WYSWYG,而且語法外套也是可擴展的。 3.微核理念,高度可擴展,除了核心API,其它邏輯相關處理都是外置的,包括全部指令及表達式,標準的 for, if, else 等指令,以及 + - * / 等表達式,都可被替換。 4.使用主控迭代器模式替代傳統的被動訪問器模式,引擎只負責將模板解析成指令樹,其它全部處理均由擴展指令自身完成,給擴展指令以最大的控制權。(相似於StAX與SAX的區別) 5.對已有不可變類(String,Number,Date等),屬性擴展,採用open class思想。(相似javascript的prototype) 6.支持宏引用及模板繼承,更有利於模板組件化。 7.內置的國際化支持,國際化信息處理更方便。 8.多種優化措施,性能更優:     (1) 採用針對特定語法寫的低級專有DFA解析器解析,試驗代表比使用通用抽象的BNF語法體系解析(Java中通常用JavaCC或AntLR)要快,由於BNF爲了通用,考慮了太多因素,致使其效率下降,固然,BNF在處理複雜語法(好比要解析C/C++/Java等語法時)頗有優點,但CommonTemplate的語法很是簡單且統一,因此使用專有的低級解析器是比較好的選擇。     (2) 解析結果被表示成一個線程安全(不變類級)的指令樹,單個實例能夠在多線程中任意重複使用,避免使用重複解析或克隆等性能損耗。     (3) 解析結果能夠在內存中緩存起來,以減小解析次數及IO量,而且緩存策略是可擴展的。(已內置實現了NONE, STRONG, SOFT, FIFO, LRU, MRU, OSCACHE, EHCACHE等緩存策略)

更多CommonTemplate信息

  RTFTemplate 
RTFTemplate是一個RTF to RTF引擎。它可以將RTF模板與來自Java對象的數據相結合,生成新的RTF文檔。

更多RTFTemplate信息

  Jtpl 
Jtpl是一個用於Java Servlet的模板引擎,利用它可以實現HTML代碼與Java代碼分開存儲。與其它擁有複雜語法的模板引擎相比,Jtpl使用一種很是簡單的模板語法。全部處理過程(循環,判斷等邏輯)和變量都在Java代碼中實現。便於更好地將佈局與代碼相分離,並且不須要學習新的複雜語法。

更多Jtpl信息

  VMC Injection 
VMC Injection是一個Java開源模板引擎,利用它能夠很容易將任何Java數據結構(如:JDBBC、POJO、HashMap等)注入到文本(HTML/XML等)模板中。

更多VMC Injection信息

  Japid 
Japid-Play是一個擁有與Java硬編碼相同性能和速度的Java板模板引擎。模板語法與Play! Web開發框架模板語言類似。Japid是一個通用的模板引擎,適用於任何Java應用程序來渲染任意Java對象。此外它還提供一個專門用於Play!框架的適配器。Japid主要目標是用在基於Play!開發而且擁有大流量的網站中。爲了達到這個目標,Japid將基於html的標籤文件轉換成乾淨的Java源代碼以便讓渲染工做可以達到接近採用Java硬編碼的速度。Japid其它高級特性包括:擁有相似於site-mesh佈局功能,可使用標籤(Tag),模板能夠有層級關係,內容緩存,服務器端Include等。使用這些高級功能並不會下降Japid的性能。

更多Japid信息

  Hapax 
Hapax是一個簡單,但強大的文本模板引擎,適用來在 Java代碼中構建文本輸出。模板語法和Google的ctemplate類似。 Hapax.png

更多Hapax信息

  Xtempore 
Xtempore是一個輕級量、模塊化、強大基於XML的模板語言和工具集。用於將一個Java對象模型結合XML文檔模板生成另外一個新的XML文檔。
收錄時間:2010-12-22 23:45:25

更多Xtempore信息

  Thymeleaf 
Thymeleaf是一個XML/XHTML/HTML5模板引擎,用於展現數據和生成基於文本的文件。它還提供一個模塊用於與Spring MVC集成做爲視圖層使用。
Thymeleaf.jpg 收錄時間:2011-04-19 20:44:32

更多Thymeleaf信息

  smarty4j 
smarty4j是一個smarty for java的模板引擎,該引擎是將smarty模板從php上移植過來,須要asm-3.0.jar。
收錄時間:2011-04-21 11:22:00

更多smarty4j信息

  Google XML Pages 
GXP是一個模板系統用於生成XML/SGML標籤(大部分常常是HTML)。
  • 支持多種語言(包括Java&JavaScript; C++開發中)。
  • 支持運行期從新編譯。
  • 編譯時類型檢查和部分標記驗證。
  • 類型自動識別,減小了XSS漏洞的機會
  • 易於使用的國際化支持
  • 方便的參數傳遞/模塊化系統
  • 很是輕量的運行系統
收錄時間:2011-04-30 21:25:48

更多Google XML Pages信息

  Cambridge  
Cambridge是一個用於在Java程序中生成html/xml標籤的模板引擎。 它擁有高度可擴展和高性能的特色。

Cambridge模板是純html/xml文檔,所以能夠直接在瀏覽器中查看或在其它Html編輯器中可視化編輯而不會產生錯誤。

Cambridge能夠在獨立的Java程序中使用,也能夠與Servlets和其它流行Web框架如:Spring Mvc、Struts, Play Framework、JAX-RS等集成使用。

收錄時間:2011-05-29 10:16:42

更多Cambridge 信息

  Aluminum 
Aluminum是一個強大和靈活的模板引擎。它可用於生成文檔,但還能夠用於作更多複雜的任務。Aluminum能夠單獨使用,也能夠在servlet環境中使用。
收錄時間:2011-06-15 08:54:19

更多Aluminum信息

  Django模板語言的JAVA移植版 Jangod 
Jangod是一個Java模板引擎,一種語法相似於 Django的模板語言。爲了凸顯JAVA特性,故把「D」拉到後面,取名Jangod。

內建經常使用標籤:

  1. Extends 當前模板擴展的父模板
  2. Block 模板繼承的可替代單元
  3. Include 載入其它模板做爲本模板的一個片斷
  4. If…else 條件判斷邏輯求值
  5. For 按特定的順序循環一個數據集合
  6. Cycle 輪流輸出一組變量的其中一個
  7. Ifchanged 檢查變量當前值與上次存儲的值是否發生變化
  8. Set 把一個語法運算結果保存到一個新的變量中

內建過濾器:

  1. Default 設置空值的默認輸出內容
  2. Contain 集合或字符串是否包含某個元素或子串
  3. Length 取集合元素個數或字符串長度
  4. Reverse 倒序排列集合元素(若是集合有序的)
  5. Random 從集合中隨機取一個元素
  6. Equal 邏輯相等判斷
  7. And 邏輯與運算
  8. Or 邏輯或運算
  9. Not 真假值取反
  10. Date 格式化時間變量
  11. Abs 取變量的絕對值
  12. Divisible 判斷變量是否被整除
  13. Add 進行變量的加法運算
  14. Multiply 進行變量的乘法運算
  15. Divide 進行變量的除法運算
  16. Escape html特殊字符轉義
  17. Lower 把字符串都轉換成小寫。
  18. Upper 把字符串都轉換成大寫
  19. Truncate 按必定長度截取字符串
  20. Cut 去除字符串中的特定子串

引擎特色:

  1. 智能的強容錯模板解析
  2. 巧妙使用過濾器處理各類複雜的語法運算
  3. 各類特性的數據容器
  4. 自定義標籤和過濾器
Django是一個開放源代碼的Web應用框架,由 Python寫成。採用了MVC的軟件設計模式,即模型M,視圖V和控制器C。
收錄時間:2011-08-13 08:10:01

更多Django模板語言的JAVA移植版 Jangod信息

  httl 
在07的時候,寫過一個模板引擎,當時叫CommonTemplate,後來功能愈來愈多,性能卻愈來愈差,在金大爲發給我性能對比結果後,看到慘不忍睹的差距,就打算拋棄原設計進行重寫,但因工做忙,就擱置了,最近看溫少發了幾個EL和JSON的解析器,有點手癢,就抽了個周未,拿出來再改了改,主要將模板改爲了字節碼編譯,並簡化了語法及縮小使用範圍,只針對HTML場景使用,並將名稱改爲了HTTL,名字含義是把HTML中的M(Marker)改爲了T(Template),放在GoogleCode上:http://code.google.com/p/httl,性能和Java硬編碼輸出模板內容差很少,比Velocity/FreeMarker等快10倍左右。

語法方面的區別:  發現基於文本指令的,基於HTML標籤的,基於HTML註釋的,都有很多模板引擎實現,  爲了標新立異以及使用的直觀性,HTTL採用基於HTML屬性的指令。
選型方面的區別:

  • Velocity採用JavaCC編譯成AST樹,解釋執行。
  • FreeMarker相似,只是採用FreeCC。
  • Smarty4j採用ASM生成字節碼。
  • HTTL採用先將模板轉譯成Java代碼,再由JDK或Javassist編譯成字節碼。

性能測試:

  • 模板內循環顯示100行數據。
  • 每模板各運行一萬次。
  • 模板大小約800字符。
  • 模板每次運行輸出內容約27K字符。

測試結果: 

Engine Compile Run TPS
Freemarker 125ms 16,934ms 590t/s
Velocity 110ms 19,278ms 518t/s
Smarty4j 78ms 21,653ms 461t/s
Httl 547ms 2,077ms 4,814t/s
Java 0ms 2,016ms 4,960t/s

更多信息參見:  http://code.google.com/p/httl 
HTTL缺省使用Jdk的javax,tools編譯字節碼,須要500ms左右,若是換成Javassist編譯,編譯時間能夠降到200ms左右,但字節碼執行效率略差一點,若是想換成Javassist,只需在httl.properties中加入。 注:Javassist不支持1.5的語法,因此要設置java.version=1.4 

收錄時間:2011-09-14 17:24:54

更多httl信息

  Beetl java模板引擎 

Beetl目前版本是2.0,大小650K,相對於其餘java模板引擎,具備功能齊全,語法直觀,性能超高,開發和維護模板有很好的體驗。是新一代的模板引擎。總得來講,它的特性以下:

  • 功能完備:同主流的java模板引擎相比,Beetl具備絕大多數功能。適用於各類應用場景,從對響應速度有很高要求的大網站到功能繁多的CMS管理系統都適合。Beetl自己還具備不少獨特功能來完成模板編寫和維護,這是其餘模板引擎所不具備的。

  • 很是簡單:相似Javascript語法和習俗,只要半小時就能經過半學半猜徹底掌握用法。拒絕其餘模板引擎那種非人性化的語法和習俗。

  • 超高的性能:Beetl 遠超過主流java模板引擎性能,並且消耗較低的CPU

  • 易於整合:Beetl能很容易的與各類web框架整合,如Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet等。

  • 支持模板單獨開發和測試,即在MVC架構中,即便沒有M和C部分,也能開發和測試模板。

  • 擴展和個性化:Beetl支持自定義方法,格式化函數,虛擬屬性,標籤,和HTML標籤. 同時Beetl也支持自定義佔位符和控制語句起始符號也支持使用者徹底能夠打造適合本身的工具包.

 

 

關於性能

經過與主流模板引擎Freemaker,Vecloity以及JSP對比,Beetl均遠高於前面三個,這是由於宏觀上,經過了優化的渲染引擎,IO的二進制輸出,字節碼屬性訪問加強,微觀上,經過一維數組保存上下文,合併靜態文本,經過重複使用字節數組來防止java頻繁的建立和銷燬數組,還使用模板緩存,運行時優化等方法。

 

 

 

獨特功能

Beetl有些功能是發展了10多年的模板引擎所不具有的,這些功能很是利於模板的開發和維護,以下

  1. 自定義佔位符和控制語句起始符號,這有利於減少模板語法對模板的傾入性,好比在html模板中,若是定義控制語句符號是,那麼,大部分模板文件都能同過瀏覽器打開。有的使用者僅僅採用了單個符號@ 以及回車換號做爲控制語句起始符號,這又能提升開發效率
  2. 可單獨測試的模板。無需真正的控制層和模型層,Beetl的模板就能夠單獨開發和測試
  3. 同時支持較爲鬆散的MVC和嚴格的MVC,若是在模板語言裏嵌入計算表達式,複雜條件表達式,以及函數調用有干涉業務邏輯嫌疑,你能夠禁止使用這些語法。
  4. 強大的安全輸出,經過安全輸出符號!,能在模板變量,變量屬性引用,for循環,佔位符輸出,try-catch中等各個地方提供安全輸出,保證渲染正常
  5. 模板變量:運行將模板的某一部分輸出像js那樣賦值個一個變量,稍後再處理。利用模板變量能完成很是複雜的頁面佈局(簡單的佈局可以使用layout標籤函數)
  6. 類型推測,能在運行的時候推測模板變量類型,從而優化性能,也能夠經過註解的方法顯示的說明模板變量屬性(這是非必須的,但有助於IDE自動提示功能)
  7. 可插拔的設計,錯誤信息提示,模板引擎緩存機制,模板資源管理,本地調用的安全管理器,嚴格MVC限制,模板引擎自己都有默認的實現,但又徹底能夠自定義以適合特定需求
  8. 加強的語法,如for-elsefor, select-case,安全輸出符號! 等,這些語法特別適合模板開發
  9. 性能超高,具備最快的模板解釋引擎,同時,又有較低的CPU消耗。適合各種模板引用,如CMS系統,超高訪問量的門戶系統

 

收錄時間:2014-07-11 21:00:06

更多Beetl java模板引擎信息

 

 

轉帖自:http://www.open-open.com/2_21.htm

相關文章
相關標籤/搜索