我試圖在工具之間做一個公平的比較,但它確實很難。
Xtext與代碼生成無關 - 它用於創建編輯器和分析器。
Xtend2被設計成Xpand的繼承者,它具有相似的語法 - 然而,它不是專門爲代碼生成而定製的,而是作爲一種通用語言,它也可以很好地用於代碼生成。其他代引擎的主要區別在於你在源代碼級別上工作(基本上,Xtend2轉換爲Java),並且你必須提供自己的引擎來驅動代 - 儘管當然可以使用Modeling Workflow Engine for這個原因 - 就像Xpand一樣。
Acceleo更適合簡單的代碼生成。它的語法基於用於代碼生成的OMG規範,並提供了用於開發代碼生成的全功能IDE。但是,如果在代碼生成過程中需要複雜的控制結構,它可能不是最好的解決方案。
關於M2T-JET,正如克里斯建議的那樣,除了非常具體的需求,我會投反對票。它的開發支持比較弱(例如它是編輯器),更多的基於這樣的想法,即有一個用於輸出的模板,而不是Xpand/Xtend/Acceleo的基於規則的更高級別的方法。這會在代碼生成過程中產生更好的性能,但是,這往往會導致難以理解模板。忽略此段,因爲它太負面。總而言之,如果您僅使用EMF模型,Acceleo和Xtend都可以成爲代碼生成的不錯選擇,您應該根據您(或您的團隊)的專業知識和您的更具體的需求在它們之間做出選擇。如果您需要同時支持EMF模型和其他數據源,那麼Acceleo不是最佳選擇;然而,JET和Xtend都沒有建立在你的輸入是EMF模型的事實上,而是提供了簡單的方法來調用任何可用的Java代碼。
好吧,你是對的 - 我很抱歉。我不想對JET產生負面影響。它的能力在那裏,只會讓我感覺使用起來更麻煩。我將該段標記爲已刪除。 –
將嘗試xtend,因爲sven efftinge也只是在Twitter上向我推薦。我知道我需要做一些工作來獲得模型作爲輸入,但在事物的宏偉計劃中,這可能不是很多工作。我在某處讀到XTend執行得比XP還快得多 –
@ChrisGerken我使用Acceleo生成Swing編輯器(甚至是CRUDS),ESB中介以及Spring/JPA/Flex應用程序。 JET比Acceleo/XTend更復雜的事實與JET儘可能完整的事實沒有衝突。 – Tcharl