テンプレートエンジンとして使用するFreemarkerとVelocityのどちらかを決定しようとしていますが、それぞれに関して何か長所と短所がありますか?
代わりに検討すべき代替案はありますか?
VelocityとFreemarkerはどちらも非常に優れています。選択に苦しんではいけません。それらは設計の背後でかなり異なる優先順位を持っているため、基本的なテンプレートを超えると、それらの機能セットを比較するのは困難です。 Velocityの構文はより単純で明確であり、Freemarkerのより重い構文により、JSPライブラリをサポートできます。 Velocityは、 VelocityTools のようなアドオンプロジェクトを通じて、より多くの自由と最終的にはより多くの機能を提供します。 Freemarkerは、はるかに優れたネイティブ空白処理を提供し、最近のVelocityリリースは、より興味深いコンテンツコントロール(#define、#evaluate、#[[literal block]]#)を提供します。
パフォーマンスに関しては、おそらく最初のテンプレート解析を除いて、Velocityは近年大幅に向上しています。ただし、パフォーマンスが重要な正常なアプリの場合は、両方のエンジンをキャッシュテンプレートに設定し、1回だけ解析する必要があります。これにより、問題が少なくなります。一般に、どちらのエンジンでもパフォーマンスは、エンジン間の違いよりもテンプレートの性質に大きく依存することがわかります。
StringTemplateも立派ですが、MVCナチスであり、機能のVelocityやFreemarkerと一致させることはできません。 ;)あなたの潜在的な失望は、より人気のあるテンプレートエンジンのいずれよりも少し高く、どちらもそれほど失望する可能性はありません。 1つをつかんで行きます。
私はFreeMarkerが好きです。私はドキュメントが大好きで、必要なものをいつでも見つけることができます。全体的に、私はそれが非常に強力だと思います。
文字列テンプレート は別の選択肢です。
this は比較のまともな要約のようです。とはいえ、数年前です。
記事から:
結論として
FreeMarkerとVelocityはどちらも非常に有能なテンプレートエンジンです。 Velocityは、おそらくApacheプロジェクトの一部であるという事実のために、より多くのユーザーベースを楽しんでいるようです。ただし、この記事で示したように、FreeMarkerは2つのうちでより洗練されて高速です。基本的な操作では、両方のテンプレートエンジンはほぼ同じであり、理解しやすいAPIを提供します。
VelocityとFreeMarkerはどちらもアプリケーションへの統合が非常に簡単で、小さなテンプレートで優れたパフォーマンスを提供します。大きなテンプレートを解析すると速度が低下します。これは、プロジェクトのテンプレートエンジンを選択するときに考慮する場合があります。
Freemarkerプロジェクトページに 長い比較 があります。
ベロシティを扱ったことがないので、2つを有意義に比較することはできませんが、フリーマーカーに非常に満足していたので、それを超える理由はありませんでした。
FreemarkerはAndroidでは動作しません。そのため、現在、プロジェクトをVelocityに変換して、モバイルデバイスと互換性を持たせています。