[Java, JavaScript] Node.js and io.js on Java

原文はこちら。
https://blogs.oracle.com/java-platform-group/entry/node_js_and_io_js

Nashorn(ドイツ語でRhino) JavaScriptエンジンはJDK 8の数多ある機能改善のうちの一つであり、Rhinoとして知られる以前のJavaScriptエンジンに変わるもので、より高速に動作します。また、別の注目すべき機能があります。それは多くのNode.jsやio.jsアプリケーションをJVM上で実行することができる、というものです。これらのアプリケーションは最適化されたJavaライブラリを呼び出したり、JMXを使って監視能力を自動的に受け取ったりすることができます。
まもなく登場するJDK 8 update 40では、Nashorn/JavaScriptのパフォーマンスがOptimistic Typingにより、より一層向上するはずです。
Nashorn Architecture and Performance Improvements in the Upcoming JDK 8u40 Release
https://blogs.oracle.com/nashorn/entry/nashorn_performance_work_in_the
http://orablogs-jp.blogspot.jp/2014/12/nashorn-architecture-and-performance.html

Java Virtual Machine - More than just Java

Java Platformは、異なるタイプのアプリケーションを実行する方法を提供しています。たとえアプリケーションがJavaプログラミング言語で書かれていないとしてもです。その結果、開発者はJVMの最適化機能や安定性を活用できるとともに、システム管理者はデプロイメントの管理・監視が向上します。
JVMで動作する他の言語の例として、JavaScript(Nashorn)、Ruby(JRuby)、Python(Jython)、Scala、Groovyなど、様々なものがあります。

Project Avatar – A JavaScript services layer on the JVM

Avatar.jsはNodeプログラミングモデル、APIやモジュール・エコシステムをJavaプラットフォームにもたらすプロジェクトです。
Avatar.js
https://avatar-js.java.net/
JavaScriptで記述されていますが、これらのアプリケーションはJavaプラットフォームの拡張性、管理性、ツールや拡張可能なJavaライブラリやミドルウェアのコレクションを活用することができます。Avatar.jsバイナリをダウンロードすると、開発者はアプリケーションを実行できます。例えば、Tim Caswellの記事である "Hello Node!" には、hello-console.js と hello-http.js という基本的なサンプルが含まれており、これを使ってAvatar(訳注:厳密にはAvatar.jsです)のテストのために利用することができます。
Hello Node!
http://howtonode.org/hello-node
「Nashorn, The Hidden Weapon of JDK 8」というプレゼンテーションが2014年12月のSilicon Valley Java User Groupの会合で発表されました。このスライドではNetflixでのNashornとAvatarの利用に関して説明しています。さらに別のNashornのデモを紹介しています。
Nashorn, The Hidden Weapon of JDK8
http://www.meetup.com/sv-jug/events/218752724/
Nashorn @ Netflix
https://docs.google.com/file/d/0B1_6_iTSwCcjVlc0d1JQLTFTUUU/edit
nashorn at netflix (スライドとデモコード)
https://drive.google.com/folderview?id=0B1_6_iTSwCcjcFRUTjRQRWV2bkk&usp=drive_web#

Avoid rewrites and re-use libraries

サーバーサイドJavaScriptアプリケーションをJVMで実行する主要なメリットに、Javaライブラリへアクセスできる、というものがあります。開発者は主要なライブラリ、SQLやNoSQLドライバ、Hadoopクライアント、エンコーディングライブラリなどの機能を書き直す必要はありません。以前の「Nashorn, the rhino in the room」というエントリで別のサンプルがありますが、これはNode.jsに固有のものではありません。
Nashorn, the rhino in the room
https://blogs.oracle.com/java-platform-group/entry/nashorn_the_rhino_in_the
Niko Köbler(@dasniko)がAvatar 2.0とそのModel Store APIに関する2部構成の記事を出しています。このモデルストアAPIを使用することで、開発者はより簡単に、SQLやNoSQLと対話することができ、そして多くの既存の最適化されたものから便益を享受することができます。

Monitoring Applications on the JVM

すべてのJavaプロセスをJMXと呼ばれるメカニズムで監視することができます。システム管理者はリモートの認証済みJMX接続を有効にして、こうした実行中のアプリケーションを外部から監視するのではなく、内部から監視することができます。JMX監視(ローカル、リモートとも)に関する詳細情報は、以前のエントリからどうぞ。
Deep Monitoring with JMX
https://blogs.oracle.com/java-platform-group/entry/deep_monitoring_with_jmx

Monitoring applications with Mission Control / Flight Recorder

Java Flight Recorderを使うとJVMアプリケーションを本番環境で効果的に監視することができます。標準的な(NetBeansプロファイラのような)開発プロファイラとは異なり、Flight Recorderは性能への影響が軽微でほぼ無視できます。
Mission Controlのダッシュボード・ビューには、CPUやメモリリソースの基本情報が表示されます。開発者はThreadタブを使ってシステムのスループットや、アプリケーションが特定のリソースでブロックしているかどうかをより詳細に把握できます。
Mission Controlを立ち上げるには、jmcコマンドを実行し、Avatarアプリケーションに接続します。以下のスクリーンショットは、com.oracle.avatar.Serverとして識別されているNode.jsアプリケーションをMission Controlで監視している様子です。

Node.jsアプリケーションをJavaScriptで記述していますが、Flight RecorderはCPUのスパイクのようなイベントに関するトリガーベースの記録も可能です。システム管理者や開発者が記録を見返して、何がそのイベントの原因だったのかを知ることができます。
詳細情報は、Mission Controlの製品情報ページやユーザーガイドからどうぞ。
Java Mission Control
http://www.oracle.com/technetwork/java/javaseproducts/mission-control/java-mission-control-1998576.html
Java Mission Control (JMC) and Java Flight Recorder (JFR)
http://docs.oracle.com/javacomponents/jmc.htm

Additional ways of running Node.js on the JVM

Avatar.jsはNode.jsアプリケーションをJVMで実行するための方法の一つです。
Oracle Java上で動作させる場合、どちらのプロジェクトも上述のようにFlight Recorder/Mission Controlで監視することができます。この監視をOracle JVM自身が直接提供しているため、コードの変更や追加の監視パッケージの適用は不要です。

0 件のコメント:

コメントを投稿