SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
これからのNashorn
Akihiro  Nishikawa
Oracle  Corporation  Japan
November,  12,  2014
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
Safe  Harbor  Statement
The  following  is  intended  to  outline  our  general  product  direction.  It  is  intended  for  
information  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  
commitment  to  deliver  any  material,  code,  or  functionality,  and  should  not  be  relied  upon  
in  making  purchasing  decisions.  The  development,  release,  and  timing  of  any  features  or  
functionality  described  for  Oracle’s  products  remains  at  the  sole  discretion  of  Oracle.
2
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
Agenda
Nashornとは
8u40で登場予定の機能
将来のNashorn
1
2
3
3
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
Nashornとは
4
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
Nashorn -­‐ JavaScript  Engine
• Java  VM上で動作するJavaScriptエンジン
– Compact1  profileでも動作
• Java  8に同梱(2014年3月から)
• ECMAScript-­‐262  Edition  5.1の100%互換実装
• JSR-­‐292  (invokedynamic)とDynalinkを用いた、軽量なJavaへのインター
フェースを提供
• 開発者向けWiki(英語)
– https://wiki.openjdk.java.net/display/Nashorn
5
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
8u20
• --const-as-var
– ‘const’を ‘var’で置き換えるオプション
• --no-java
– “Java”オブジェクトや“Packages”オブジェクトなどのJava固有の拡張を使わなくするた
めのオプション
6
主としてセキュリティ対応やJITやJDKの改善
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
8u40で登場予定の機能
7
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
8u40
• パフォーマンスの最適化
– 遅延コンパイル
– 楽観的型付け (Optimistic  typing)
– invokedynamicのパフォーマンス改善
– プリミティブ型の特殊化 (Primitive  type  
specializations  /  Optimistic  built-­‐in)
• Array
• String
• 数学組み込み関数 (Math  intrinsics)
– 全体的なランタイムの改善
• その他
– クラスフィルタ (Class  filter)
– 限定的なECMAScript 6仕様のサポート
• 字句スコープの変数と定数の定義 (Lexical-­‐
scoped  variables  and  constant  definition)
8
パフォーマンス改善を主目的としたリリース
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
JEP  194:  Code  Persistence
• 概要
– メモリ使用量の削減ならびに起動時間の短縮のため、同じプロセス内で再利用でき
るようコードをキャッシュできる
– キャッシュの利用は同一プロセスに限定され、プロセス間では共有しない
• 利用方法
– 以下のオプションを利用
• --persistent-code-cache=true|false (-pcc)
– 楽観的型付け情報(Optimistic   type  information)もキャッシュされる
• --class-cache-size=50 (-ccs)
– グローバル・スコープ毎のクラス・キャッシュサイズ。デフォルトサイズは50
9
コードの永続化
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
JEP  196:  Optimistic  Typing
• 概要
– 以下の方針に従い、できるだけ実行時に型付けせずに、Nashornのパフォーマンス
向上をはかる
• 演算および配列のインデックス操作で使用する特定の型(type)を仮定
• 型に対する仮定が正しくない場合に、仮定を取り消し、フォールバック
– コンセプト実現のため、非Javaバイトコードを最適化するためのHotSpot JVMの能力
を向上させる必要があり、同時に実装中
10
楽観的型付け – Javaのようなバイトコードを生成するために
int long double Object
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
JEP  202:  Class  Filter
• 概要
– Javaクラスへのアクセスをフィルタリングするためのインターフェース (ClassFilter)
– Nashornを使うJavaアプリケーションが実装可能
• jdk.nashorn.api.scripting.ClassFilter
• 注意
– RhinoのClassShuttersとの互換性はない
• NashornのClassFilter APIは、RhinoのClassShutter APIとコンセプトが類似しているだけ
• ClassFilter APIにはRhinoと同じパッケージ名やクラス名、メソッド名はない(予定)
11
Javaクラスへのアクセスをフィルタリング
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
JEP  202:  Class  Filter
import jdk.nashorn.api.scripting.ClassFilter;
static class MyFilter implements ClassFilter {
@Override
public boolean exposeToScripts(String classname) {
return false;
}
}
…
NashornScriptEngine engine = factory.getScriptEngine(new MyFilter());
try {
engine.eval("Java.type('java.util.Vector')");
} catch (ex) {
print("No access to Java Classes");
}
12
例
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
JEP  203:  Lexically-­‐scoped  variable  and  constant  declarations
• 概要
– letやconstだけでなく、関数宣言も使って、スコープ内変数や定数を実装
– ECMAScript 6仕様で必要
• 利用方法
– --language=es6を付ける必要がある
– let
• ブロックに含まれるスコープ内変数の宣言に利用
– const
• letと同様、constを使って宣言した定数はブロック内に生存範囲を限定
13
スコープ内変数(let)や定数(const)の宣言
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
JEP  203:  Lexically-­‐scoped  variable  and  constant  declarations
// let
let a = 2;
function f(x) {
// "a" is 2 here
if (x) {
let a = 42;
}
// "a" is still 2
}
14
letの例
// var
var a = 2;
function f(x) {
// "a" is undefined here
if (x) {
var a = 42;
}
// Depending on "x", "a" is 42 or undefined
}
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
JEP  203:  Lexically-­‐scoped  variable  and  constant  declarations
// const 1
function f(x) {
const b = 1;
b = 99; // Syntax Error
}
// const 2
function f(x) {
const b = 1;
var z = b + 1; // z = 2
}
var y = b + 1; // b is undefined
15
constの例
// const 3
function f(x) {
const b = 1;
var z = b + 1; // z = 2
}
const b = 10; // Able to define b
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
その他の最適化
• xをMethodHandle.constantをinvokedynamicのgetterとして利用できる
• xがスコープ内で変更される場合、SwitchPointを使い無効化できる
• このcallsiteが再度定数になることを禁止する、n回の再試行を認める、ま
たはreceiver  guardを使って試行する、のいずれかを手段としてとることが
できる
16
部分評価 (Partial  Evaluation)
for (var i = 0; i < x.length; i++) {
//xが不変の場合...
}
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
その他の最適化
• オンデマンドでメソッドのコンパイルのみ実行
– リンク時にマッチするシグネチャがない場合
• できる限り曖昧でないメソッドをコンパイル
– リンク時にマッチするシグネチャが存在する場合
• もっと具体的にメソッドのコンパイルを試行
17
遅延コンパイル
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
もっと先の話
18
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
The  Future
• プロファイリング
• Java  Flight  Recorderの活用
• ECMAScript6のサポート(仕様が確定した暁には)
...などなど
19
Java  9からその先
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
Safe  Harbor  Statement
The  preceding  is  intended  to  outline  our  general  product  direction.  It  is  intended  for  
information  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a  
commitment  to  deliver  any  material,  code,  or  functionality,  and  should  not  be  relied  upon  
in  making  purchasing  decisions.  The  development,  release,  and  timing  of  any  features  or  
functionality  described  for  Oracle’s  products  remains  at  the  sole  discretion  of  Oracle.
20
Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | 21
これからのNashorn
これからのNashorn

Weitere ähnliche Inhalte

Was ist angesagt?

20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQLRyusuke Kajiyama
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javaYuji Kubota
 
20160906 pplss ishizaki public
20160906 pplss ishizaki public20160906 pplss ishizaki public
20160906 pplss ishizaki publicKazuaki Ishizaki
 
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Hironobu Isoda
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]David Buck
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャーssuser070fa9
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道なおき きしだ
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaなおき きしだ
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみようTsunenaga Hanyuda
 
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶPanamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶYasumasa Suenaga
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2tamtam180
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_publicKazuaki Ishizaki
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみたJiro Hiraiwa
 

Was ist angesagt? (20)

20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL20140518 JJUG MySQL Clsuter as NoSQL
20140518 JJUG MySQL Clsuter as NoSQL
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 
20160906 pplss ishizaki public
20160906 pplss ishizaki public20160906 pplss ishizaki public
20160906 pplss ishizaki public
 
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
 
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
 
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶPanamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public20180109 titech lecture_ishizaki_public
20180109 titech lecture_ishizaki_public
 
ScalaでDSP作ってみた
ScalaでDSP作ってみたScalaでDSP作ってみた
ScalaでDSP作ってみた
 
hscj2019_ishizaki_public
hscj2019_ishizaki_publichscj2019_ishizaki_public
hscj2019_ishizaki_public
 

Andere mochten auch

NashornとServerSideJavaScript
NashornとServerSideJavaScriptNashornとServerSideJavaScript
NashornとServerSideJavaScriptMizuho Sakamaki
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9Marcus Lagergren
 
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug Yusuke Yamamoto
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)Logico
 
Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack
Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hackVirtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack
Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hackTakeshi Iwasaki
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)Logico
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Logico
 
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向Tatsuo Kudo
 
SORACOM Bootcamp Rec1 - SORACOM Air (1)
SORACOM Bootcamp Rec1 - SORACOM Air (1)SORACOM Bootcamp Rec1 - SORACOM Air (1)
SORACOM Bootcamp Rec1 - SORACOM Air (1)SORACOM,INC
 
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Taku Miyakawa
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発Takakiyo Tanaka
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsawtakezoe
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
APIdays Australia 2017 TOI #APIdaysAU
APIdays Australia 2017 TOI #APIdaysAUAPIdays Australia 2017 TOI #APIdaysAU
APIdays Australia 2017 TOI #APIdaysAUTatsuo Kudo
 
【講演資料】激変する自動車業界におけるクルマ屋の戦略
【講演資料】激変する自動車業界におけるクルマ屋の戦略【講演資料】激変する自動車業界におけるクルマ屋の戦略
【講演資料】激変する自動車業界におけるクルマ屋の戦略naoto kyo
 

Andere mochten auch (15)

NashornとServerSideJavaScript
NashornとServerSideJavaScriptNashornとServerSideJavaScript
NashornとServerSideJavaScript
 
A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9A new execution model for Nashorn in Java 9
A new execution model for Nashorn in Java 9
 
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
データクラスから始めるKotlin / JetBrainsに行ってきました #kotlin_kansai #jkug
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
 
Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack
Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hackVirtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack
Virtua Fighter5 Final ShowdownのTwitter連動機能について #twtr_hack
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
 
Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)
 
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
利用者本位のAPI提供に向けたアイデンティティ (ID) 標準仕様の動向
 
SORACOM Bootcamp Rec1 - SORACOM Air (1)
SORACOM Bootcamp Rec1 - SORACOM Air (1)SORACOM Bootcamp Rec1 - SORACOM Air (1)
SORACOM Bootcamp Rec1 - SORACOM Air (1)
 
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsaw
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
APIdays Australia 2017 TOI #APIdaysAU
APIdays Australia 2017 TOI #APIdaysAUAPIdays Australia 2017 TOI #APIdaysAU
APIdays Australia 2017 TOI #APIdaysAU
 
【講演資料】激変する自動車業界におけるクルマ屋の戦略
【講演資料】激変する自動車業界におけるクルマ屋の戦略【講演資料】激変する自動車業界におけるクルマ屋の戦略
【講演資料】激変する自動車業界におけるクルマ屋の戦略
 

Ähnlich wie これからのNashorn

What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318Yuhki Hanada
 
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャZero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャオラクルエンジニア通信
 
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]David Buck
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)オラクルエンジニア通信
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索yoyamasaki
 
Red Hat OpenShift Container Storage
Red Hat OpenShift Container StorageRed Hat OpenShift Container Storage
Red Hat OpenShift Container StorageTakuya Utsunomiya
 
[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...
[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...
[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...Insight Technology, Inc.
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングオラクルエンジニア通信
 
10分で押さえる AWS re:Invent 2014 新サービス・アップデート
10分で押さえる AWS re:Invent 2014 新サービス・アップデート10分で押さえる AWS re:Invent 2014 新サービス・アップデート
10分で押さえる AWS re:Invent 2014 新サービス・アップデート真吾 吉田
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用QlikPresalesJapan
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
Sesanboot ja
Sesanboot jaSesanboot ja
Sesanboot japcwhaha
 
Oracle GoldenGate Studio R12.2.1.1 セットアップガイド
Oracle GoldenGate Studio R12.2.1.1 セットアップガイドOracle GoldenGate Studio R12.2.1.1 セットアップガイド
Oracle GoldenGate Studio R12.2.1.1 セットアップガイドオラクルエンジニア通信
 
Oracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイント
Oracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイントOracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイント
Oracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイントSolarisJP
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud幹雄 小川
 
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...Insight Technology, Inc.
 
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learnedエンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons LearnedDaiki Kawanuma
 
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 ) JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 ) Hironobu Isoda
 

Ähnlich wie これからのNashorn (20)

What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャZero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
Zero Data Loss Recovery Applianceによるデータベース保護のアーキテクチャ
 
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
 
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
GoldenGateテクニカルセミナー3「Oracle GoldenGate Technical Deep Dive」(2016/5/11)
 
Zero Data Loss Recovery Appliance 設定手順例
Zero Data Loss Recovery Appliance 設定手順例Zero Data Loss Recovery Appliance 設定手順例
Zero Data Loss Recovery Appliance 設定手順例
 
MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索MySQL 5.7 InnoDB 日本語全文検索
MySQL 5.7 InnoDB 日本語全文検索
 
Red Hat OpenShift Container Storage
Red Hat OpenShift Container StorageRed Hat OpenShift Container Storage
Red Hat OpenShift Container Storage
 
[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...
[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...
[db tech showcase Tokyo 2014] B11: [In-Memory DB: SAP HANA] OLTP/OLAPをシングルデータ...
 
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニングしばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
しばちょう先生による特別講義! RMANバックアップの運用と高速化チューニング
 
10分で押さえる AWS re:Invent 2014 新サービス・アップデート
10分で押さえる AWS re:Invent 2014 新サービス・アップデート10分で押さえる AWS re:Invent 2014 新サービス・アップデート
10分で押さえる AWS re:Invent 2014 新サービス・アップデート
 
SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用SAP Extractorのソースエンドポイントとしての利用
SAP Extractorのソースエンドポイントとしての利用
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
Sesanboot ja
Sesanboot jaSesanboot ja
Sesanboot ja
 
Oracle GoldenGate Studio R12.2.1.1 セットアップガイド
Oracle GoldenGate Studio R12.2.1.1 セットアップガイドOracle GoldenGate Studio R12.2.1.1 セットアップガイド
Oracle GoldenGate Studio R12.2.1.1 セットアップガイド
 
Tech deepdive#2 datastore_180317_share
Tech deepdive#2 datastore_180317_shareTech deepdive#2 datastore_180317_share
Tech deepdive#2 datastore_180317_share
 
Oracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイント
Oracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイントOracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイント
Oracle Solaris 10 から Oracle Solaris 11.1 への移行準備とポイント
 
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloudクラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
クラウドから始めるRのビッグデータ分析- Oracle R Enterprise in Cloud
 
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
[db tech showcase Tokyo 2016] D24: データベース環境における検証結果から理解する失敗しないフラッシュ活用法 第三章 ~デ...
 
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learnedエンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
エンプラに Kubernetes を 導入してみて分かった 4つの Lessons Learned
 
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 ) JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
JVMパラメータチューニングにおけるOptunaの活用事例 ( Optuna Meetup #1 )
 

Mehr von Logico

Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Logico
 
Look into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpointLook into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpointLogico
 
Jvmls 2019 feedback valhalla update
Jvmls 2019 feedback   valhalla updateJvmls 2019 feedback   valhalla update
Jvmls 2019 feedback valhalla updateLogico
 
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Logico
 
Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)Logico
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)Logico
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Logico
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationLogico
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Logico
 
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)Logico
 
Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)Logico
 
Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Logico
 

Mehr von Logico (12)

Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)Welcome, Java 15! (Japanese)
Welcome, Java 15! (Japanese)
 
Look into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpointLook into Project Valhalla from CLR viewpoint
Look into Project Valhalla from CLR viewpoint
 
Jvmls 2019 feedback valhalla update
Jvmls 2019 feedback   valhalla updateJvmls 2019 feedback   valhalla update
Jvmls 2019 feedback valhalla update
 
Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)Project Helidon Overview (Japanese)
Project Helidon Overview (Japanese)
 
Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)Oracle Code One 2018 Feedback (Server Side / Japanese)
Oracle Code One 2018 Feedback (Server Side / Japanese)
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)
 
Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)Java EE 8 Overview (Japanese)
Java EE 8 Overview (Japanese)
 
Another compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilationAnother compilation method in java - AOT (Ahead of Time) compilation
Another compilation method in java - AOT (Ahead of Time) compilation
 
Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)Polyglot on the JVM with Graal (English)
Polyglot on the JVM with Graal (English)
 
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
CDI 2.0 (JSR 365) - Java Day Tokyo 2017 (English)
 
Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)Polyglot on the JVM with Graal (Japanese)
Polyglot on the JVM with Graal (Japanese)
 
Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)Nashorn : JavaScript Running on Java VM (Japanese)
Nashorn : JavaScript Running on Java VM (Japanese)
 

Kürzlich hochgeladen

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Kürzlich hochgeladen (9)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

これからのNashorn

  • 1. これからのNashorn Akihiro  Nishikawa Oracle  Corporation  Japan November,  12,  2014 Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    |
  • 2. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | Safe  Harbor  Statement The  following  is  intended  to  outline  our  general  product  direction.  It  is  intended  for   information  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a   commitment  to  deliver  any  material,  code,  or  functionality,  and  should  not  be  relied  upon   in  making  purchasing  decisions.  The  development,  release,  and  timing  of  any  features  or   functionality  described  for  Oracle’s  products  remains  at  the  sole  discretion  of  Oracle. 2
  • 3. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | Agenda Nashornとは 8u40で登場予定の機能 将来のNashorn 1 2 3 3
  • 4. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | Nashornとは 4
  • 5. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | Nashorn -­‐ JavaScript  Engine • Java  VM上で動作するJavaScriptエンジン – Compact1  profileでも動作 • Java  8に同梱(2014年3月から) • ECMAScript-­‐262  Edition  5.1の100%互換実装 • JSR-­‐292  (invokedynamic)とDynalinkを用いた、軽量なJavaへのインター フェースを提供 • 開発者向けWiki(英語) – https://wiki.openjdk.java.net/display/Nashorn 5
  • 6. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | 8u20 • --const-as-var – ‘const’を ‘var’で置き換えるオプション • --no-java – “Java”オブジェクトや“Packages”オブジェクトなどのJava固有の拡張を使わなくするた めのオプション 6 主としてセキュリティ対応やJITやJDKの改善
  • 7. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | 8u40で登場予定の機能 7
  • 8. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | 8u40 • パフォーマンスの最適化 – 遅延コンパイル – 楽観的型付け (Optimistic  typing) – invokedynamicのパフォーマンス改善 – プリミティブ型の特殊化 (Primitive  type   specializations  /  Optimistic  built-­‐in) • Array • String • 数学組み込み関数 (Math  intrinsics) – 全体的なランタイムの改善 • その他 – クラスフィルタ (Class  filter) – 限定的なECMAScript 6仕様のサポート • 字句スコープの変数と定数の定義 (Lexical-­‐ scoped  variables  and  constant  definition) 8 パフォーマンス改善を主目的としたリリース
  • 9. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | JEP  194:  Code  Persistence • 概要 – メモリ使用量の削減ならびに起動時間の短縮のため、同じプロセス内で再利用でき るようコードをキャッシュできる – キャッシュの利用は同一プロセスに限定され、プロセス間では共有しない • 利用方法 – 以下のオプションを利用 • --persistent-code-cache=true|false (-pcc) – 楽観的型付け情報(Optimistic   type  information)もキャッシュされる • --class-cache-size=50 (-ccs) – グローバル・スコープ毎のクラス・キャッシュサイズ。デフォルトサイズは50 9 コードの永続化
  • 10. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | JEP  196:  Optimistic  Typing • 概要 – 以下の方針に従い、できるだけ実行時に型付けせずに、Nashornのパフォーマンス 向上をはかる • 演算および配列のインデックス操作で使用する特定の型(type)を仮定 • 型に対する仮定が正しくない場合に、仮定を取り消し、フォールバック – コンセプト実現のため、非Javaバイトコードを最適化するためのHotSpot JVMの能力 を向上させる必要があり、同時に実装中 10 楽観的型付け – Javaのようなバイトコードを生成するために int long double Object
  • 11. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | JEP  202:  Class  Filter • 概要 – Javaクラスへのアクセスをフィルタリングするためのインターフェース (ClassFilter) – Nashornを使うJavaアプリケーションが実装可能 • jdk.nashorn.api.scripting.ClassFilter • 注意 – RhinoのClassShuttersとの互換性はない • NashornのClassFilter APIは、RhinoのClassShutter APIとコンセプトが類似しているだけ • ClassFilter APIにはRhinoと同じパッケージ名やクラス名、メソッド名はない(予定) 11 Javaクラスへのアクセスをフィルタリング
  • 12. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | JEP  202:  Class  Filter import jdk.nashorn.api.scripting.ClassFilter; static class MyFilter implements ClassFilter { @Override public boolean exposeToScripts(String classname) { return false; } } … NashornScriptEngine engine = factory.getScriptEngine(new MyFilter()); try { engine.eval("Java.type('java.util.Vector')"); } catch (ex) { print("No access to Java Classes"); } 12 例
  • 13. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | JEP  203:  Lexically-­‐scoped  variable  and  constant  declarations • 概要 – letやconstだけでなく、関数宣言も使って、スコープ内変数や定数を実装 – ECMAScript 6仕様で必要 • 利用方法 – --language=es6を付ける必要がある – let • ブロックに含まれるスコープ内変数の宣言に利用 – const • letと同様、constを使って宣言した定数はブロック内に生存範囲を限定 13 スコープ内変数(let)や定数(const)の宣言
  • 14. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | JEP  203:  Lexically-­‐scoped  variable  and  constant  declarations // let let a = 2; function f(x) { // "a" is 2 here if (x) { let a = 42; } // "a" is still 2 } 14 letの例 // var var a = 2; function f(x) { // "a" is undefined here if (x) { var a = 42; } // Depending on "x", "a" is 42 or undefined }
  • 15. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | JEP  203:  Lexically-­‐scoped  variable  and  constant  declarations // const 1 function f(x) { const b = 1; b = 99; // Syntax Error } // const 2 function f(x) { const b = 1; var z = b + 1; // z = 2 } var y = b + 1; // b is undefined 15 constの例 // const 3 function f(x) { const b = 1; var z = b + 1; // z = 2 } const b = 10; // Able to define b
  • 16. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | その他の最適化 • xをMethodHandle.constantをinvokedynamicのgetterとして利用できる • xがスコープ内で変更される場合、SwitchPointを使い無効化できる • このcallsiteが再度定数になることを禁止する、n回の再試行を認める、ま たはreceiver  guardを使って試行する、のいずれかを手段としてとることが できる 16 部分評価 (Partial  Evaluation) for (var i = 0; i < x.length; i++) { //xが不変の場合... }
  • 17. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | その他の最適化 • オンデマンドでメソッドのコンパイルのみ実行 – リンク時にマッチするシグネチャがない場合 • できる限り曖昧でないメソッドをコンパイル – リンク時にマッチするシグネチャが存在する場合 • もっと具体的にメソッドのコンパイルを試行 17 遅延コンパイル
  • 18. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | もっと先の話 18
  • 19. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | The  Future • プロファイリング • Java  Flight  Recorderの活用 • ECMAScript6のサポート(仕様が確定した暁には) ...などなど 19 Java  9からその先
  • 20. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | Safe  Harbor  Statement The  preceding  is  intended  to  outline  our  general  product  direction.  It  is  intended  for   information  purposes  only,  and  may  not  be  incorporated  into  any  contract.  It  is  not  a   commitment  to  deliver  any  material,  code,  or  functionality,  and  should  not  be  relied  upon   in  making  purchasing  decisions.  The  development,  release,  and  timing  of  any  features  or   functionality  described  for  Oracle’s  products  remains  at  the  sole  discretion  of  Oracle. 20
  • 21. Copyright  ©  2014, Oracle  and/or  its  affiliates.  All  rights  reserved.    | 21