Siden
LambdaとUndertowで
軽量フレームワーク
自己紹介
- 悪くないモンスターの太一です。
- java-jaからきますた
- さにあらず
- ryushi@twitter
- taichi@GitHub
- taichi#1881 @ Diablo3
- Dragon Age: Inquisition
12/23発売の最新号では
DBマイグレーションについて書きました
使い方
import ninja.siden.App;
public class Main {
public static void main(String[] args) {
App app = new App();
app.get("/hello", (req, res) -> "Hello world");
app.listen();
}
}
SparkJavaに激怒したから
- Apache Sparkと名前被り
- static importはeclipseと相性が悪い
- 今更Jetty依存はダサい
- 拡張性低すぎワロタ
- spark.SparkBase#initがクソコード過ぎる
- そこら中にある同期コードがクソすぎる
- レスポンスのデカいStringがメモリに乗る
Java8を深く理解するため
- GenericsとLambdaの組み合わせ方は?
- LambdaをStructural Subtypingとして使うと拡張性が豊かになる
- LabmdaでfluentなビルダAPIをどう設計する?
- interfaceのdefault実装やstaticメソッドはどう使う?
- Optionalの有効な使い方は?
- CompletableFutureはスーパー簡単!
最先端の砂場が欲しい
- expressモドキでアプリを書き捨てする
- Undertowの非同期I/Oを使い倒す
- Undertowはコードが綺麗なので読んでて楽しい
- React.jsのSSRサポート
WebSocketを使うサンプル
import ninja.siden.App;
public class UseWebsocket {
public static void main(String[] args) {
App app = new App();
app.get("/", (q, s) -> new java.io.File("assets/chat.html"));
app.websocket("/ws").onText(
(con, txt) -> con.peers().forEach(c -> c.send(txt)));
app.listen(8181);
}
}
Javaなのに超短いコードでWebSocket出来るのはSidenだけ!
Sidenの今後
- square/dagger連携
- Doma連携
- メトリクス機能(Netflix/servo連携)