ホーム


Slim3 は Google App Engine/Java 用に最適化されたフルスタックの MVC フレームワークです。
単純に Datastore のフレームワークとして使用することもできます。

コンセプトは "Simple" and "Less Is More"。
"Less is more" というのは、シンプルさと分かりやすさが良いデザインにつながるという意味です。

全体の80%は、20%の原因によって生み出されています。これはパレートの法則として知られています。
Slim3 は全ての力を20%の原因の部分に集中させています。残った問題は、プログラマーがフレームワークの制約に煩わされずに解決することができます。

私たちは、あなたのアプリケーションやSlim3自体から、複雑で肥大化した機能を取り除きたい。その結果、みんなスリムになるでしょう。

Slim3 はオープンソースのフレームワークです。ライセンスは Apache License, Version 2.0. です。

Slim3 の中心となる特徴は次の通りです。


高速なスピンアップ

アプリケーションがアイドル状態になって少し時間がたつ(2、3分)と App Engine はそのアプリケーションをスピンダウンします。そして、そのアプリケーションに対する次のリクエストがやってきたときに、新しいインスタンスをスピンアップします。

Slim3 は、起動が遅いとして知られている PersistenceManagerFactory や EntityManagerFactory を使用していません。さらに、余分な初期化を注意深く避けています。そのため Slim3 はスピンアップが速いんです。だいたい 1100 cpu_ms 程度です。

HOT reloading

Slim3 は HOT reloading をサポートしています。HOT reloading とは、新しいバージョンのクラスをオンザフライで自動的に再ロードすることを意味しています。HOT reloading のおかげで、ソースコードを変更した場合でもウェブアプリケーションの再起動なしに、最新の結果をブラウザで確認することができます。

タイプセーフなクエリ

Slim3 はタイプセーフなクエリをサポートしています。
EmployeeMeta e = EmployeeMeta.get();
List<Employee> list = Datastore.query(e)
    .filter(e.salary.greaterThan(5000), e.job.equal("ANALYST"))
    .sort(e.salary.asc)
    .asList();
EmployeeMeta のようなモデルのメタデータは Annotation Processing Tool によって自動的に生成されます。

JDO で同様のクエリを書くと次のようになります。
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
    Query query = pm.newQuery(Employee.class);
    query.setFilter("salary > :salary && job == :job");
    query.setOrdering("salary asc");
    List<Employee> list = (List<Employee>) query.execute(5000, "ANALYST");
} finally {
    pm.close();
}

文字列ベースのクエリを使用している場合、プロパティ名をリファクタリングしてもコンパイラはエラーを教えてくれません。
でも、タイプセーフなクエリを使用している場合は、"salary"プロパティをリネームしたらコンパイラは「"salary"なんてもうないよ」と教えてくれます。リファクタリングを行ったときに Annotation Processing Tool によってモデルのメタデータが再生成されるからです。
Comments