Blanco2g
Abstract
- Blanco2g is Java Application Framework. It generate Java source code by input Java source code.
- Blanco2g is provided by Open Source License.
- By annotation on Java source code, it can generate various Java source code, and it bring growth software development speed and maintenance quality.
名称の由来
- Blanco2g という名称は、blanco Framework の第 2 世代にあたるフレームワークであることを示しています。
位置づけ
- 第 1 世代の blanco Framework (Blanco1g) は、Excel ブックを入力してソースコードを生成するタイプのソースコード自動生成フレームワークです。主にウォーターフォール開発モデルに適しています。
- 第 2 世代の blanco Framework (Blanco2g) は、ソースコードを入力してソースコードを生成するタイプのソースコード自動生成フレームワークです。主にアジャイル開発モデルに向いています。
- Blanco1g と Blanco2g は、おのおの独立して利用することもできますし、組み合わせて利用することもできます。そして、組み合わせての利用が最も効果が高いものと考えられます。
Blanco2g をダウンロード
Blanco2g リファレンス
Blanco2g をはじめてみよう
おおまかな流れ
- 基本的なソースコード自動生成のながれを説明するために、「@BlancoNotNull」と「@BlancoTrace」という 2 つの Blanco2g アノテーションを利用した極めてシンプルなサンプルを示します。
- この例では、AbstractSampleNotNull.java という Java ソースコードを入力して、SampleNotNull.java という Java ソースコードを出力するサンプルです。★Blanco2g は、基本的に AbstractXXXXXXXX.java というファイル名のクラスから XXXXXXXX.java を自動生成します。
package sample;
import blanco.notnull.BlancoNotNull;
import blanco.trace.BlancoTrace;
/**
* 非 NULL のサンプル。
*/
public abstract class AbstractSampleNotNull {
/**
* パラメータあり、戻り値なし。
*
* @param abc
* パラメータ 1.
*/
public void a11(@BlancoNotNull final String abc) {
}
public String a21(@BlancoNotNull final String abc, @BlancoNotNull final String def) {
return "あああ:" + abc + ", " + def;
}
/**
* トレースと非 NULL との組み合わせ。
*
* @param abc
* @param def
* @return
*/
@BlancoTrace
public String a91(@BlancoNotNull final String abc, @BlancoNotNull final String def) {
return "あああ:" + abc + ", " + def;
}
}
Output source code: SampleNotNull.java (Generated by Blanco2g)
package sample;
/**
* 非 NULL のサンプル。
*/
public class SampleNotNull extends AbstractSampleNotNull {
/**
* パラメータあり、戻り値なし。
*
* @param abc パラメータ 1.
*/
public void a11(String abc) {
if (abc == null) {
throw new IllegalArgumentException("不正引数例外: SampleNotNull#a11(String abc) のパラメータ 'abc' に null を与えることはできません。");
}
super.a11(abc);
}
/**
*
* @param abc
* @param def
* @return
*/
public String a21(String abc, String def) {
java.lang.String autoValMethodResult;
if (abc == null) {
throw new IllegalArgumentException("不正引数例外: SampleNotNull#a21(String abc, String def) のパラメータ 'abc' に null を与えることはできません。");
}
if (def == null) {
throw new IllegalArgumentException("不正引数例外: SampleNotNull#a21(String abc, String def) のパラメータ 'def' に null を与えることはできません。");
}
autoValMethodResult = super.a21(abc, def);
return autoValMethodResult;
}
/**
* トレースと非 NULL との組み合わせ。
*
* @param abc
* @param def
* @return
*/
public String a91(String abc, String def) {
java.lang.String autoValMethodResult;
long autoValStartTimeMillisec = System.currentTimeMillis();
System.out.println("trace: AbstractSampleNotNull#a91(" + abc + ", " + def + ") begin.");
if (abc == null) {
throw new IllegalArgumentException("不正引数例外: SampleNotNull#a91(String abc, String def) のパラメータ 'abc' に null を与えることはできません。");
}
if (def == null) {
throw new IllegalArgumentException("不正引数例外: SampleNotNull#a91(String abc, String def) のパラメータ 'def' に null を与えることはできません。");
}
autoValMethodResult = super.a91(abc, def);
System.out.println("trace: AbstractSampleNotNull#a91(" + abc + ", " + def + ") end. " + "[" + autoValMethodResult + "] " + (System.currentTimeMillis() - autoValStartTimeMillisec) + "ms");
return autoValMethodResult;
}
}
おおまかな流れ (その 2)
- 上述したサンプルは簡単すぎます。
- 実際のところ Blanco2g アノテーションで利用可能なアノテーションには、もっと高機能なものがいくつもあり、またそれらを組み合わせて利用することができるのです。
- Blanco2g で最も効果が高いのは @BlancoInject アノテーションです。
特徴
- 自動生成したソースコードの実行時には、Spring のような特殊なランタイムは必要ありません。
- 基本的に Java ソースコードで完結して作業できます。また XML ファイルのたぐいを閲覧したり編集したりする必要はありません。
- 少ないコンピュータ・リソースで動作するフレームワークであるため、クラウドコンピューティング環境や組み込み環境での動作にも適合しやすいです。
Source code
License
- Blanco2g は原則として GNU LGPL と EPL のいずれか一方、あるいは両方のデュアル・ライセンスというライセンスを採用しています。
- ごく一部のソースコードについて、GNU LGPL, EPL, Apache ライセンスのトリプル・ライセンスを採用しているものがあります。
- もし詳しく知りたい場合には、おのおののソースコードのファイルヘッダーを参照することによりライセンスを確認することができます。
- なお、Blanco2g が自動生成するソースコードについては、Blanco2g のライセンスとは関わりなく、その入力となったソースコードのライセンスをそのまま引き継ぐこととなります。
同梱物
- Blanco2g は、動作のために EPL のもとに公開されているライブラリを必要とします。
- Blanco2g が生成したソースコードは 基本的にそれ単独で動作するようになっています。
技術的な特徴
- Blanco2g is based on static AOP (SAOP) architecture.
- Blanco2g depends on 'Reversed Generation Gap Pattern' design pattern.
- Blanco2g can extends by user easily.
Wiki URL