この記事では主にJavaの新機能であるNashornの関連情報を紹介しますので、必要な方は参考にしてください
Nashornとは
Nashornは「ナスホーン」と読みます。第二次世界大戦中のドイツ戦車。これは、ECMAScript-262 バージョン 5.1 言語仕様に準拠した、古くて遅い Rhino に代わる Java8 の新世代 javascript エンジンでもあります。 JavaScript は Web ブラウザーで実行され、HTML 上でさまざまな dom 操作 を提供すると思われるかもしれませんが、Nashorn はブラウザー DOM オブジェクトをサポートしません。これは注意すべき点です。
Nashorn の使用開始について
主に 2 つの側面、jjs ツールと javax.script パッケージ下の API があります:
jjs は java_home/bin の下にあります。 例として、関数を作成してみましょう。 .js の内容は次のとおりです:
function f() { return 1; }; print( f() + 1 );
このファイルを実行し、このファイルをパラメーターとして jjs に渡します
jjs func.js
出力結果: 2
もう 1 つの側面は javax.script です。以前の Rhino の左側の API
ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName( "JavaScript" ); System.out.println( engine.getClass().getName() ); System.out.println( "Result:" + engine.eval( "function f() { return 1; }; f() + 1;" ) );
の出力は次のとおりです: jvm で実行される Rhino はすでに jdk6 に存在していましたが、なぜ今 Rhino を置き換える必要があるのでしょうか? Rhino と比較すると、他の JavaScript エンジン (Google の V8 など) は遅すぎるため、Rhino を書き直す方が良いでしょう。 Nashorn のハイライトであるため、以下でパフォーマンスの比較をテストしてみましょう。2 つのパフォーマンスを比較するには、ECMAScript 解析フレームワークである Esprima を使用して、非圧縮バージョンの jquery (約 268 kb) を解析します。コードからわかるように、テスト プログラムは Esprima の解析とトークン化を実行して、Rhino と Nashorn がテスト ファイルの内容をそれぞれ 30 回実行します。最初に、Rhino は 1726 ミリ秒かかり、ゆっくりと加速し、最終的に 950 ミリ秒で安定しました。Nashorn には別の特徴があります。最初の実行には 3682 ミリ秒かかりましたが、ウォームアップ後に急速に加速し、各実行で最終的に 175 ミリ秒で安定しました。以下の図では
なぜ Java を使用して JavaScript を実装するのか
これは、私が同意する意見です:
1. 成熟した GC2. より多くのスレッドのサポート。4. 豊富な標準ライブラリとサードパーティライブラリ 一般に、Java プラットフォームの既存のリソースを最大限に活用します。
概要 新しい Rhino は、Rhino よりもはるかに高速な Rhino スタイルの馬車であると言えます。高性能 JavaScript 実行環境として、Nashorn には多くの可能性があります。 たとえば、Avatar.js は JVM 上でのNode.js
プログラミング モデルの実装をサポートするために Nashorn に依存しており、また、組み込みのロード バランサーを使用して複数のイベント ループを実装するなど、他の新機能も追加しています。マルチスレッドを使用して軽量のメッセージング メカニズムを実装します。Avatar は、JPA に基づく純粋な JavaScript ORM フレームワークである Model-Store も提供します。企業で Nashorn を活用するもう 1 つの方法は、通常 Linux などのシェル スクリプトを使用するのと比較して、Javascript スクリプトを使用して Java と対話したり、Nashorn を使用して REST インターフェイスを介してサーバー操作を監視したりすることもできます。状況。
以上がJavaの新機能Nashornの具体例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。