Web系開発メモ

Java, JavaScript, CSS, HTML など、Webアプリの記事を中心に書いています。

Kaze:Java Web フレームワーク(開発記録2018年01月15日)

最近、JavaKaze というWebアプリのフレームワークを開発しています。まだ開発途中(バージョン 0.2.5)なんですが、サンプルや開発方針(特徴)などを書いてみました。

1. サンプル(組込 Jetty を使用)

1.1. 依存性の追加

Mavenpom.xml に、以下の依存性を追加します。

    <dependency>
      <groupId>com.github.mamorum</groupId>
      <artifactId>kaze</artifactId>
      <version>0.2.5</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-servlet</artifactId>
      <version>9.4.6.v20170531</version>
    </dependency>

Jetty の依存性は、Jetty を使う場合だけ必要になります。

1.2. コードの作成

新しいクラスを作成して、下のプログラムを保存します。

package kaze.sample.html;

import kaze.App;
import kaze.server.Jetty;

// To check:
//  app -> http://localhost:8080/app/hello
//  doc -> http://localhost:8080/ (or /index.html)
public class JettyApp {
  public static void main(String[] args) {
    App app = new App();
    app.get("/hello", (req, res) -> {
      res.html("<p>Hello World from Jetty.</p>");
    });
    Jetty.app(app, "/app/*");
    Jetty.doc("/public", "/");
    Jetty.listen(8080);
  }
}

静的コンテンツは、クラスパスの /public 配下に置くように設定してます。

1.3. 動作確認

上のプログラムを実行して、ブラウザや curl で確認しました。

> curl -s -X GET http://localhost:8080/app/hello
<p>Hello World from Jetty.</p>

2. 開発方針

まだ開発途中なので少し変わっていくかもしれませんが、シンプルで簡単に使えるフレームワークにしたいなと思っています。

具体的には、

といった感じです。

DIやアノテーションが不要で、設定の少ないフレームワークを目指してます。フレームワークの分厚いドキュメントを読んだり、大量のクラスやアノテーションを知らなくても大丈夫な感じに。すぐ使えるものにしたいと思ってます。

あとは、すぐにどこでも使えるようにしたいなと思ってて、

といった方針で進めています。

3. 今後について

とりあえず今年中に正式版(1.0.0)を出したいなぁと思っています。仕様や方針などが具体的になってきたら、またブログに書いていこうと思います。

kaze - GitHub

GitHub のページ(readme.md)も、随時更新していこうと思っています。