Instan Vert.xを読みながらサンプルコードを試してみる。 今回はChat Server。 本の中のコードはほとんどJavaScriptで書かれているのだけれども、Javaの方がAPIを追っかけやすいのとJava8の勉強をかけてJavaで再実装。 コードはこんな感じ。 public class ChatServer extends Verticle { private static final String MESSAGE_BROADCAST_ADDRESS = "broadcast_address"; public void start() { NetServer netserver = vertx.createNetServer(); netserver.connectHandler((NetSocket socket) -> { InetSocketAddress remot
public class ClientVerticle extends Verticle { HttpClient client; public void start() { container.logger().info("ClientVerticle deployed."); client = vertx.createHttpClient(); client.setHost("ycpi-api.flickr.com").setPort(80); vertx.eventBus().registerHandler("webclient_address", this::handleClientEvent); } void handleClientEvent(Message<String> msg) { container.logger().info(Rythm.render("Recieve
Vert.xを利用したプロジェクト管理をgradleでやりたかったので、インストールから Hello, world! の表示までまとめ vertx-gradle-template のクローン vertx-gradle-template を GitHub からクローンする。 Gradle Wrapper が付属しているため gradle を別途にインストールする必要はない。 $ git clone https://github.com/vert-x/vertx-gradle-template.git hello-vertx このままだとリモートリポジトリが vertx-gradle-template のままなので変更する必要があるが、ここでは省略する。変更方法はこちらを参照。 Verticle の作成 hello-vertx/src/main/groovy/com/example/Hello
Closure Templatesって? Closure Templatesとは、Googleが開発しているJavaとJavaScriptで利用可能なテンプレートエンジンです。 GmailやGoogle Docsで利用されている(されていた?)という実績もあり、最近ではMediumというサービスでも利用されています。 個人的に気に入っている点をあげてみます。 JavaとJavaScriptで同じテンプレートファイルを利用できるので、初期ページはサーバーサイドのJavaで描画し、動的に書き換えたい箇所だけクライアントサイドのJavaScriptで描画し直すようなことが簡単に実現できる。 オートエスケープやパラメータの型チェックなど、安全にテンプレートを書くための機能が充実している。 テンプレート内でできることが限られているので、メンテナンス性の低い複雑な実装になりにくい。 Velocityや
Vert.xとは、公式ページより JVM上にリアクティブアプリケーションを構築するためのツールキットです @timfox氏が中心となって、現在2015年6月22日を目標にversion 3が開発されています。この投稿含め何回かに分けてVert.x 3の動くサンプルを実装していこうと思います。 概要 Vert.xは「Reactorパターン」というモデルを採用しており、そのため基本的にはブロッキングするような処理を記述すべきではありません。データベースに対する処理もこのブロッキングする処理にあてはまります。 公式の提供するVert.x JDBC Serviceを用いればデータベースに対する処理を非同期に実行することができ、ブロッキングしないで処理を記述することができます。 今回はVert.x JDBC Serviceを用いて、データをデータベースに永続化するシンプルなRESTサーバを動かしてみ
Vert.xとは、公式ページより JVM上にリアクティブアプリケーションを構築するためのツールキットです @timfox氏が中心となって、現在2015年6月22日を目標にversion 3が開発されています。この投稿含め何回かに分けてVert.x 3の動くサンプルを実装していこうと思います。 概要 Vert.xにおいて、event loop thread上で動かすVerticleでブロッキングするような処理を記述すべきではありません。データベースに対する処理等ブロッキングする処理は、それを専用にこなす別のVerticleを用意して、worker threadでこのVerticleを動かすことで、event loop thread上で動くVerticleの処理のブロッキングを避けることができます。この際二つのVerticle間の通信にはEventBusを用います。 今回はHTTPリクエストを
import io.vertx.kotlin.lang.* fun main(args: Array<String>) { DefaultVertx { httpServer(8084, "0.0.0.0", Route { GET("/path") { request -> bodyJson { "field1" to "test me not" } } otherwise { setStatus(404, "Resource not found") body { write("The requested resource was not found\n") } } }) } } package net.devneko.birdx import io.vertx.core.Vertx import io.vertx.kotlin.lang.json.object_ class MyCon
概要 リアクティヴプログラミングで Web アプリケーションを構築できる Framework の Vert.x 3系を、 Gradle を使って stand-alone で動かしてみました。 Vert.x とは? Vert.x is a tool-kit for building reactive applications on the JVM. 出典:公式サイト Scale イベントドリブン、すべてコールバックで結果が返る……ただし単体だとコールバック地獄に陥りやすいので RxJava との併用が推奨されている Non-blockking I/O 少数のスレッドで大量のコネクションを並行処理 Polyglot コアは Java だが、さまざまな言語でのアプリケーション開発をサポート Java JavaScript Groovy Ruby Ceylon ライセンス バージョン 3.3.0.
バックエンドのマイクロサービスを叩きまくるような API を作る場合、サーブレットベースのサーバーよりも Vert.x のようなミドルウェアを使ったほうが気楽に作れて良いですよね。勤務先でもちょこちょこ Vert.x が活躍しています。 Vert.x は非同期前提なので、使うときはだいたい RxJava を使うことになると思うのですが、うっかりコネクションがリークしていたことがあったので、最近の JDBC 接続設定をメモしておきます。Observable.using が肝です。 public interface JDBCMixin { @Nonnull default Observable<List<JsonObject>> query(@Nonnull String sql) { return query(sql, null); } @Nonnull default Observable
Vert.x 3系のドキュメントに"Introduction to Vert.x"があります。ソースコードを0から組み上げて簡単な CRUD画面を作るまでが書かれていて、初めに行うチュートリアルとして優れています。しかし残念ながらMavenベースで書かれているので、Gradleではどのようにすれば良いのかが書かれていません。なので、このチュートリアルをGradleで試してみました。ソースは以下のリポジトリにあります。 とりあえず、Gradle 3系が動くようになるまでは、自力で頑張ってください。あとはMacで試しています。Linuxでも大体同じようにできると思いますが、Windowsはさらに修正がいると思います。こんな感じでGradleの実行ができれば、Gradleの導入完了です。 $ gradle --version -----------------------------------
こんにちは、えいやです。 今日はVert.xの検証を始めたのでメモを残します。 Vert.xとは NettyベースでMicroService作るのに役立つFWです。 Express.jsとかそういうのに近いのかな。 ノンブロッキングな仕組みの記述を基本とします。 JVM系が主なターゲットですが、多様な言語で開発できます。 今回の範囲 Vert.xのコア機能とWebエクステンションを使い、単純な機能のHttpServerをScalaで記述します。 Vert.x + Scalaを試す理由 前述の通り、Vert.xでは多様な言語でのアプリケーション開発ができます。 今回は、記述が楽で、大規模化に備えて静的型付けで、安定したバージョンが選択でき、普及率がそれなりに高い、JVM系の言語を選択したいので、Scalaでの開発の可能性を調べてみます。 今後の技術動向次第では、まだ見ぬ便利になったJava、
Get started with Vert.x In this guide, you’ll learn how to get started with a new Vert.x Web project. Before starting, you need: JDK 1.8 or higher A text editor or IDE Maven 3 or higher curl or HTTPie or a browser to perform HTTP requests 1Bootstrap To create a new project, go to start.vertx.io. Choose the version of Vert.x you want to use, choose Java as the language, Maven as the build tool, and
G* Advent Calendarの10日目です。 G*ネタ、とは言いがたいですが、他の方とネタがなるべく被らず、斜め下を行くよう、ロンドンで行われたGroovy & Grails eXchange 2011の初日のセッション、Peter Ledbrookさんの「Asynchronous IO on the JVM」からVert.xをご紹介したいと思います。 Vert.xとは? 「Vert.xってなに?」ということですが、READMEによると、 The next generation polyglot asynchronous application framework. (Formerly known as node.x) 次世代の多言語非同期アプリケーションフレームワーク。(以前はnode.xとして知られていた) だそうです。特徴としては、 JVM上で動く。 Node.jsのようなイ
We will start from a wiki web application backed by a relational database and server-side rendering of pages; then we will evolve the application through several steps until it becomes a modern single-page application with "real-time".[1] web features. Along the way you will learn to: Design a web application with server-side rendering of pages through templates, and using a relational database fo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く