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信息

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

更多FreeMarker信息

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

更多Jamon信息

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

更多JDynamiTe信息

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

更多JByte信息

  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信息

  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源代碼或其它文本等。 二、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM