SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaプログラマーのための実践「Vert.x」

Vert.xのモジュールの構造と仕組み

Javaプログラマーのための実践「Vert.x」 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 前回はVert.xのモジュールの開発環境を作成し、簡単に動作を確認してみました。今回は、Vert.xの構造、仕組みについて前回よりも深めに説明してみたいと思います。

  • X ポスト
  • このエントリーをはてなブックマークに追加

nettyとhazalcast

 Vert.xのベースとなるライブラリとして、nettyとhazelcastが使われています。

 nettyについては日本でもよく利用されているライブラリなので説明を割愛しますが、Vert.xの非同期IOの処理において、密接に依存する関係で利用されています。

 hazelcastの方はなかなか知られていないと思いますが、インメモリーデータグリッドと呼ばれるメモリー上で分散処理を行うための高性能なライブラリです。商用製品だとOracleのCoherenceがよく知られているかと思います。

 Vert.xでは、hazelcastの一部の機能を利用してEventBusをクラスター化し、ネットワーク上での分散処理を可能にするために利用しています。Vert.x内部で隠蔽されているため、利用するユーザーはとくに意識する必要はありません。

モジュールの構成

 モジュールに含まれる要素として必須なものが2つあります。

org.vertx.java.platform.Verticleインターフェースの実装クラス

 モジュールのmainともなるインターフェースです。Vert.x起動時にデプロイされ、そのstart()メソッドがコールされることで初期化、起動が行われます。モジュール内には複数のVerticleを含めることができます。

mod.json

 モジュールごとの起動設定を記述する設定ファイルです。"main"をキーとしてモジュールの最初に起動されるVerticle実装クラスを指定する必要があります。

 その他の項目は、公式サイトのマニュアルを参照してください。templateのsrc/main/resources/mod.json を見てみると、各言語ごとに"main"の記述例があります。

{
  // Java verticle
  "main":"com.mycompany.myproject.PingVerticle",

  // In this example we also provide various other versions of the main verticle, you can uncomment this and
  // play around:

  // Java *source* verticle
  //"main":"JavaSourcePingVerticle.java",

  // Compiled Groovy verticle - note that they must be prefixed with 'groovy:' to distinguish them from compiled Java verticles
  //"main":"groovy:com.mycompany.myproject.GroovyPingVerticle",

  // Groovy *script* verticle
  //"main": "GroovyVerticle.groovy",

  // Ruby verticle
  //"main":"ping_verticle.rb",

  // JavaScript verticle
  //"main": "ping_verticle.js",

  // Python verticle
  //"main": "ping_verticle.py",

  // If your module is going to be registered in the Vert.x module registry you will also need the following
  // mandatory fields
  "description":"Put description of your module here",
  "licenses": ["The Apache Software License Version 2.0"],
  "author": "Joe Bloggs",

  // Optional fields
  "developers": ["Other Dev 1", "Other Dev 2"],
  "keywords": ["gerbils", "cars", "cheese", "chocolate", "underpants", "herring"],
  "homepage": "url to your project page",
  "auto-redeploy": true
}

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
モジュールとVerticle ~ モジュールクラスローダー

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaプログラマーのための実践「Vert.x」連載記事一覧

もっと読む

この記事の著者

リョウジ(株式会社DMM.comラボ)(リョウジ)

DMM.comのプラットフォームにおける主要アーキテクチャに関しての技術研究開発を担当。 非同期のメッセージ&キューの導入、Vert.xフレームワークを採用し社内の基盤を整備等、 高負荷対策・可用性の高いアーキテクチャの開発・設計など幅広く活躍。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8506 2015/03/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング