Ratpack入門シリーズ
- Ratpack入門 (1) - Ratpackとは
- Ratpack入門 (2) - アーキテクチャー
- Ratpack入門 (3) - hello world 詳解
- Ratpack入門 (4) - ルーティング & 静的コンテンツ
- Ratpack入門 (5) - Json & Registry
- Ratpack入門 (6) - Promise
- Ratpack入門 (7) - Guice & Spring
- Ratpack入門 (8) - セッション
- Ratpack入門 (9) - Thymeleaf
Ratpackとは
RatpackはApache Licence v2で公開されている、Java/Groovy向けのWebアプリケーションライブラリーです。
特徴
イベント駆動
Ratpackは通信にNettyを使用しているため、node.jsなどと同様にイベント駆動で動作します。
そのためスケーラブルで高パフォーマンスなHTTP通信を実現できます。
非同期
通信が非ブロッキングで行われるということは、Javaが苦手とする非同期なプログラミングのサポートが必要になります。
RatpackはPromise
クラスでこれをサポートするとともに、RxJava用の拡張も用意されています。
非オピニオネイテッド
Ratpackは開発の目標の一つに、「他のツールやライブラリーと統合するとき、柔軟で非オピニオネイテッドであること」が挙げられています。
拡張性
ratpack-groovy
, ratpack-guice
, ratpack-jackson
, ratpack-rxjava
, ratpack-session
などの拡張モジュールがあります。
Ratpackが目指していないもの
公式ページによると、下記がRatpackの目標でないものとして挙げられています。
- 完全に統合された、「フルスタック」フレームワーク
- 必要になるかもしれないありとあらゆる機能を提供すること
- 「ビジネスロジック」のためのアーキテクチャーやフレームワークを提供すること
Hello World
dependencies {
compile 'io.ratpack:ratpack-core:1.5.1'
}
public final class Sample {
public static void main( String[] args ) throws Exception {
RatpackServer.start( server -> server
.handlers( chain -> chain.get( ctx -> ctx.render( "hello, world" ) ) ) );
}
}
見てのとおりラムダ式を多用する前提で作られていますので、ラムダ式に慣れていない人はぜひ習得しましょう。
なんでこの記事を書こうと思ったのか
Springに嫌気がさして代わりのライブラリーを探していて、Ratpackに出会いました。
ただ日本語の情報が少なく、あってもJavaではなくGroovyだったり、公式のドキュメンテーションもわかりづらく感じることがありました。
そこで、これからRatpackを使おうとする人のサポートになればよいと思い、この記事シリーズを書くことにしました。
次のポストで、Ratpackの詳しい使い方を見ていこうと思います。