web-dev-qa-db-ja.com

Javaコード生成

Javaコード生成の主要なフレームワークは何ですか?

DBやアプリ生成ツールを探していません。クラスのスケルトンがあり、さまざまなユースケースに応じて、さまざまな動的パーツでクラスを生成する必要があります。クラスの大部分は同一なので、クラスのさまざまなフレーバーを生成するコードを実行したいと思います。

誰かが良いフレームワークを知っていますか?

ありがとう。

30
YaOg

cglib は、強力で高性能、高品質のコード生成ライブラリです。

ジェット/速度 はテンプレートを使用しています。

アプリケーション全体を生成したい場合は、 JBoss Seam フレームワークをチェックしてください。

14
stacker

これらのユーティリティは主に、ボイラープレートコードを生成してプロジェクトをキックスタートするためのものです。

9
Bozho

http://www.andromda.org

AndroMDA(発音:andromeda)は、モデル駆動型アーキテクチャ(MDA)パラダイムに従うオープンソースコード生成フレームワークです。 CASEツールからモデルを取得し、完全に展開可能なアプリケーションやその他のコンポーネントを生成します。

私はそれを使用しました、そしてそれは非常に強力です。 UMLから構成ファイルとコードを生成し、開発するビジネスメソッドの実装のみを開発者に任せるだけでなく、よく知られている設計パターンを使用して生成コードを維持します。

6
Pau

Xtextを試してください( http://www.Eclipse.org/Xtext/ )。 XTextを使用してDSLを定義すると、XTextはこのDSLをサポートするEclipseエディターを生成します。次に、XPandを使用して、あらゆる種類のテキストを生成するテンプレートを定義できます(たとえば、Javaソースコード)。

3
Ralph

[SQL2Java]は優れたツールです。データベーススキーマのすべての[[〜#〜] crud [〜#〜]]コードを生成します。接続プールは十分ではありません。独自のプールを維持するために、Managerクラスをカスタマイズできます。

これ以外に、モデル駆動型開発([〜#〜] mdd [〜#〜])に興味がある場合は、[AndroMDA]または[ボーランドのTogether]、最高の[Eclipse]ベースのツールの1つ。

コード生成をさらに進め、モデル駆動型ソフトウェア開発に興味がある場合は、[openArchitectureWare]を参照してください。

その他Javaコード生成をサポートする開発ツールは、[Lombok]および[Spoon]です。プロジェクトLombokは、自動生成などの機能を提供しますデフォルトのゲッター/セッターメソッド、自動リソース管理(@Cleanupアノテーションを使用)、アノテーション駆動型の例外処理。

[cglib]、[Velocity template]および[AppFuse]も素晴らしいです。

3
Neel

SQL2Java は、DBスキーマからデータベースCRUDコードを生成します。

2

私はドルイドデータベースマネージャーを使用しました: http://druid.sourceforge.net/

これは、リバースエンジニアリングが可能なdbから始まり、テーブルとフィールドに基づいてドキュメント、SQL、クラス、ファイルを生成できます。

使用されるテンプレート言語はベロシティです。

ソフトウェアは、プラグインシステムを介して拡張可能です。

2
Impiastro

私は [〜#〜] asm [〜#〜] が最も人気があると思いますJavaバイトコード生成ライブラリです。これは、最も低レベルのバイトコードライブラリです。しかし、ASMを直接使用することもそれほど難しくはありませんが、ASM上に構築された他の高レベルのコード生成ライブラリがあります(直接使用の1つの利点は、ASMのJARサイズが非常に小さいことです)。ASMのユーザーの一部は、 http://asm.ow2.org/users.html


編集:

更新された質問では、ユースケースについて言及しています(「クラスのスケルトンがあり、さまざまなユースケースでさまざまな動的パーツを使用して生成する必要があります。」)、私の答えはimproveですすべてのコードの重複が削除され、コード生成が不要になるように設計します。異なる設計パターンについて読むと、それを行う方法に関するいくつかのアイデアが得られます。より具体的な答えを得るには、いくつかのコードを表示し、ニーズをより具体的にする必要があります。

0
Esko Luontola

Velocityテンプレートエンジンへの別の投票。 EJB2.1ボイラープレートコードやデータベースオブジェクトなどを生成するために、複数のプロジェクトで使用しました。うまく機能し、学習も非常に簡単です。

0
Salil

AtomWeaver http://www.atomweaver.com は現在パブリックベータ版です。これはコード生成ですIDE現在のIDEと一緒に使用できます(つまり、フレームワークではなくスタンドアロンアプリです)。これを使用すると、ボイラープレートを生成できます。コードだけでなく、完全なプロジェクト。

AtomWeaverは、モデル駆動型ソフトウェア開発の形式であるABSE(Atomベースのソフトウェアエンジニアリング)を実装します(UMLまたはMDAとは関係ありません)。

それは本質的にテンプレートベースのシステムです。

0
Rui Curado