[Java, JavaScript] Project Avatar Update

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/project_avatar_update

Project Avatarは、JavaScriptコミュニティへ参加し彼らから学ぶことを目的として、クライアントサイドのJavaScriptプロジェクトとして3年以上前にスタートしました。クライアントサイドのJavaScriptフレームワークが急速に進化し、リーダーが「パック」から分離し始めるにつれ、弊社のミドルウェアの強みを活用し、サーバーサイドコンポーネントを追加しました。JavaOne 2013でProject Avatarをコミュニティにリリースし、End-to-EndのJavaScriptプログラミングモデルを提供しました。この中で、サーバーサイドコンポーネントはGlassFishやWebLogicのようなJava EE互換コンテナで利用できるようにしました。Avatar.js(Node.js互換ランタイム)はNodeライブラリをGlassFishやWebLogicのようなJava EE互換コンテナで利用できるようにしたものでした。

しかしながら、このアプローチに伴うNode.js互換の問題、パフォーマンスの問題(Java EEやNodeを同一VMに配置するためのチューニング)に見舞われ、導入したプログラミングモデルはJava EEコミュニティやNodeコミュニティに受け入れられませんでした。そのことを念頭に置き、「Avatar 2.0」に取り組み始めました。これは、JPAの上にJavaScriptライブラリを配置してJavaとの相互運用性やJava EE関連の相互運用性を考慮しつつ、Node自身のJVMで動作させ、Node互換に注力したものです。

この取り組みの中でわかり始めたことは、興味深いサービスがRESTful APIを通じて直接機能を公開し始めた、ということです。たとえば、Oracle DatabaseのNode.jsドライバにより、NodeアプリケーションにとってJava EEとのJavaの直接の相互運用性の関心が薄れてしまいました。
Introducing node-oracledb - a Node.js driver for Oracle Database
https://blogs.oracle.com/opal/entry/introducing_node_oracledb_a_node
結果、Avatarを再び再発明するよりは、むしろお蔵入りにして、マーケットの進化を見守ろうと決めました。引き続き業界をトラッキングし、たどった道を再評価していくことにします。

これまでの取り組みの中で、JavaScriptとNode.jsのについて多くのことを学びました。そしてAvatarの取り組みはOracle内で見た目以上に活用されてきました。例えば、Avatarで早期に必要だったWebSocketは、Tyrusとして結実し、今日GlassFishやWebLogicのWebSocket実装となっています。AvatarがNashornから本当に必要としてきたパフォーマンスの改善は、まもなく登場するJDK 8 Update 40を含む、複数回のJDKリリースの中でNashornユーザーに提供されてきました。最後に、Node.jsコミュニティがどれほど重要か、ということをまざまざと認識しました。Avatarはお蔵入りになりますが、Node.jsへの投資を増加しており、、2015年中にOracle Node Cloud Serviceを提供する計画です。このサービスはネイティブのNode.jsで構築されます。
Oracle Node Cloud Service
http://cloud.oracle.com/nodejs
さらに、InfoQやAdam Bienが記載しているように、Javaアプリケーション内でNashornを使うという試みを多数目にしています。
Leveraging Nashorn at Netflix
http://www.infoq.com/news/2015/01/nashorn-at-netflix
Enterprise Nashorn with Java 8
http://www.adam-bien.com/roller/abien/entry/enterprise_nashorn_with_java_8
Project Avatarの取り組みを通じてフィードバックを提供してくださった皆様に感謝いたします。みなさんが思う以上に我々をアシストしてくれました。本当に感謝しています。
AvatarおよびAvatar.jsプロジェクトページは、コードと関連するバイナリと共に、そのまま利用可能の状態にしておきますので、学習したり活用いただければと思います。

0 件のコメント:

コメントを投稿