LoginSignup
5
6

More than 5 years have passed since last update.

Ratpack入門 (1) - Ratpackとは

Last updated at Posted at 2018-01-17

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" ) ) ) );
    }

}

キャプチャ.PNG

見てのとおりラムダ式を多用する前提で作られていますので、ラムダ式に慣れていない人はぜひ習得しましょう。

なんでこの記事を書こうと思ったのか

Springに嫌気がさして代わりのライブラリーを探していて、Ratpackに出会いました。
ただ日本語の情報が少なく、あってもJavaではなくGroovyだったり、公式のドキュメンテーションもわかりづらく感じることがありました。
そこで、これからRatpackを使おうとする人のサポートになればよいと思い、この記事シリーズを書くことにしました。

次のポストで、Ratpackの詳しい使い方を見ていこうと思います。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6