Ratpack入門 (1) - Ratpackとは


Ratpack入門シリーズ

  1. Ratpack入門 (1) - Ratpackとは
  2. Ratpack入門 (2) - アーキテクチャー
  3. Ratpack入門 (3) - hello world 詳解
  4. Ratpack入門 (4) - ルーティング & 静的コンテンツ
  5. Ratpack入門 (5) - Json & Registry
  6. Ratpack入門 (6) - Promise
  7. Ratpack入門 (7) - Guice & Spring
  8. Ratpack入門 (8) - セッション
  9. Ratpack入門 (9) - Thymeleaf

Ratpackとは

RatpackはApache Licence v2で公開されている、Java/Groovy向けのWebアプリケーションライブラリーです。

公式
GitHub
Javadoc

特徴

イベント駆動

Ratpackは通信にNettyを使用しているため、node.jsなどと同様にイベント駆動で動作します。
そのためスケーラブルで高パフォーマンスなHTTP通信を実現できます。

非同期

通信が非ブロッキングで行われるということは、Javaが苦手とする非同期なプログラミングのサポートが必要になります。
RatpackはPromiseクラスでこれをサポートするとともに、RxJava用の拡張も用意されています。

非オピニオネイテッド

Ratpackは開発の目標の一つに、「他のツールやライブラリーと統合するとき、柔軟で非オピニオネイテッドであること」が挙げられています。

拡張性

ratpack-groovy, ratpack-guice, ratpack-jackson, ratpack-rxjava, ratpack-sessionなどの拡張モジュールがあります。

Ratpackが目指していないもの

公式ページによると、下記がRatpackの目標でないものとして挙げられています。

  • 完全に統合された、「フルスタック」フレームワーク
  • 必要になるかもしれないありとあらゆる機能を提供すること
  • 「ビジネスロジック」のためのアーキテクチャーやフレームワークを提供すること

Hello World

build.gradle
dependencies {
    compile 'io.ratpack:ratpack-core:1.5.1'
}
Sample.java
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の詳しい使い方を見ていこうと思います。