PowerPoint プレゼンテーション



Similar documents
How to Use the PowerPoint Template

2

Oracle Text 概要

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

Javaで体験するスクリプト言語の威力

Oracle BI Publisher 11gの新機能

Server と Lync Server の 使 用 が 含 まれます ユーザーは これらの 製 品 とともに 使 用 するのに 必 要 な Windows Server CAL と Exchange および/または Lync Server の 適 切 な CAL を 取 得 する 必 要 がありま

A4-3_ワースクアプリケーションズ大畠様_JaSST_2013_TOKYO_大畠悠介_公開.ppt

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

3. システム 要 件 IM- 社 内 便 Ver.7.2 は 以 下 の 製 品 上 で 動 作 します サーバ 要 件 Windows Server 2003 R2 Windows Server 2008 Windows Server 2008 R2 Red Hat Enterprise Lin

Server と Skype for Business Server の 使 用 が 含 まれます ユーザーは これらの 製 品 とともに 使 用 するのに 必 要 な Windows Server CAL と Exchange および/または Skype for Business Server の

<4D F736F F D2095CA8E A90DA91B18C9F93A289F1939A8F D8288B3816A5F E646F63>

スライド 1

製品システム要件の確認方法v5

2007 Microsoft Corporation. All rights reserved. 本 書 に 記 載 した 情 報 は 本 書 各 項 目 に 関 する 発 行 日 現 在 の Microsoft の 見 解 を 表 明 するものです Microsoft は 絶 えず 変 化 する

ユーザーガイド

CTX-6114AI Citrix Access Suite 4

購買ポータルサイトyOASIS簡易説明書 b

Microsoft PowerPoint - MOSA IP-PBX 日系企業運用提案(日文版)_ (3).ppt [兼容模式]

WebOTX V6 JNDIのトラブルシューティング

PowerPoint プレゼンテーション

<4D F736F F D F4390B3208A948C E7189BB8CE F F8C668DDA97702E646F63>

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

は 固 定 流 動 及 び 繰 延 に 区 分 することとし 減 価 償 却 を 行 うべき 固 定 の 取 得 又 は 改 良 に 充 てるための 補 助 金 等 の 交 付 を 受 けた 場 合 にお いては その 交 付 を 受 けた 金 額 に 相 当 する 額 を 長 期 前 受 金 とし

目 次 1.はじめに 1-1. はじめに 2. 操 作 2-1. 概 要 2-2. 操 作 方 法 ( 調 査 依 頼 の 確 認 ) 2-3. 操 作 方 法 ( 回 答 登 録 ) 2-4. 操 作 方 法 (ワークシート 出 力 ) 2-5. 操 作 方 法 (ワークシート 取 込 ) 3.

前 書 き 広 域 機 関 システム System for Organization for Cross-regional Coordination of Transmission Operators(OCCTO) rev: 商 標 類 Windows Office Excel

独立行政法人国立病院機構呉医療センター医療機器安全管理規程

預 金 を 確 保 しつつ 資 金 調 達 手 段 も 確 保 する 収 益 性 を 示 す 指 標 として 営 業 利 益 率 を 採 用 し 営 業 利 益 率 の 目 安 となる 数 値 を 公 表 する 株 主 の 皆 様 への 還 元 については 持 続 的 な 成 長 による 配 当 可

1

Microsoft Corporation のガイドラインに 従 って 画 面 写 真 を 使 用 しています Microsoft Windows Windows Vista は 米 国 Microsoft Corporation の 米 国 及 びその 他 の 国 における 登 録 商 標 又 は

iStorage ソフトウェア VMware vSphere Web Client Plug-in インストールガイド

一般競争入札について

治 験 実 施 管 理 システム NMGCP 向 け Excel 形 式 プロトコール 作 成 手 順 書 V4.0.3 対 応 版 第 1 版 株 式 会 社 富 士 通 アドバンストエンジニアリング All Rights Reserved,Copyright 株 式 会 社 富 士 通 アドバン


IM-Mobile Framework

理化学研究所の役職員への兼業(兼職)依頼について

MetaMoJi ClassRoom/ゼミナール 授業実施ガイド

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

Transcription:

1

JavaScript Running On JavaVM: Nashorn NISHIKAWA, Akihiro Oracle Corporation Japan jdt2014_d1

以 下 の 事 項 は 弊 社 の 一 般 的 な 製 品 の 方 向 性 に 関 する 概 要 を 説 明 するも のです また 情 報 提 供 を 唯 一 の 目 的 とするものであり いかなる 契 約 に も 組 み 込 むことはできません 以 下 の 事 項 は マテリアルやコード 機 能 を 提 供 することをコミットメント( 確 約 )するものではないため 購 買 決 定 を 行 う 際 の 判 断 材 料 になさらないで 下 さい オラクル 製 品 に 関 して 記 載 されてい る 機 能 の 開 発 リリースおよび 時 期 については 弊 社 の 裁 量 により 決 定 さ れます OracleとJavaは Oracle Corporation 及 びその 子 会 社 関 連 会 社 の 米 国 及 びその 他 の 国 における 登 録 商 標 です 文 中 の 社 名 商 品 名 等 は 各 社 の 商 標 または 登 録 商 標 である 場 合 があります 3

Agenda Nashorn Server Side JavaScript Nashornの 今 後 4 Copyright 2014, 2013, Oracle and/or its affiliates. All rights reserved.

Nashorn 5

Nashorn Compact1 Profileでも 使 えるJavaScript Engine 6

登 場 の 背 景 Rhinoの 置 き 換 え セキュリティ パフォーマンス InvokeDynamic (JSR-292) のProof of Concept アトウッドの 法 則 Any application that can be written in JavaScript will eventually be written in JavaScript. 7

Project Nashornの 主 なスコープ JEP 174 ECMAScript-262 Edition 5.1 javax.script (JSR 223) API JavaとJavaScript 間 での 相 互 呼 び 出 し 新 しいコマンドラインツール(jjs)の 導 入 8

Java code Other APIs Other runtime JavaScript code Scripting API jjs (JSR-223) Scripting Engine (Nashorn) Java VM 9

$JAVA_HOME/bin/jjs $JAVA_HOME/jre/lib/ext/nashorn.jar 10

ECMAScript-262 Edition 5.1に100% 対 応 11

未 実 装 未 サポート ECMAScript 6 (Harmony) Generators 分 割 代 入 (Destructuring assignment) const, let,... DOM/CSSおよびDOM/CSS 関 連 ライブラリ jquery, Prototype, Dojo, ブラウザAPIやブラウザエミュレータ HTML5 canvas, HTML5 audio, WebGL, WebWorkers... 12

実 行 例 13

JavaからNashorn ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getenginebyname("nashorn"); engine.eval("print('hello world')"); engine.eval(new FileReader("hello.js")); 14

JavaからNashorn JavaからScript functionを 呼 び 出 す engine.eval("function hello(name) { print('hello, ' + name); }"); Invocable inv=(invocable)engine; Object obj= inv.invokefunction("hello","taro"); 15

JavaからNashorn Script functionでinterfaceを 実 装 する engine.eval("function run(){ print('run() called'); }"); Invocable inv =(Invocable)engine; Runnable r=inv.getinterface(runnable.class); Thread th=new Threads(r); th.start(); th.join(); 16

NashornからJava print(java.lang.system.currenttimemillis()); jjs -fx... 17

Nashorn for Scripting Scripting 用 途 で 使 えるように 機 能 追 加 -scriptingオプション Here document Back quote String Interpolation... 18

Nashorn Extensions 19

Nashorn Extensions 今 日 ご 紹 介 するのは Java typeの 参 照 を 取 得 Javaオブジェクトのプロパティアクセス Lamda SAM Script 関 数 の 関 係 スコープおよびコンテキスト 20

Java type 21

Java.type Rhinoでの 表 記 (Nashornでも 利 用 可 ) var hashmap=new java.util.hashmap(); または var HashMap=java.util.HashMap; var hashmap=new HashMap(); 22

Java.type Nashornで 推 奨 する 表 記 var HashMap=Java.type('java.util.HashMap'); var hashmap=new HashMap(); 23

Java.type Class or Package? java.util.arraylist java.util.arraylist 24

Java 配 列 Rhinoでの 表 記 var intarray= java.lang.reflect.array.newinstance( java.lang.integer.type, 5); var Array=java.lang.reflect.Array; var intclass=java.lang.integer.type; var array=array.newinstance(intclass, 5); 25

Java 配 列 Nashornでの 表 記 var intarray=new(java.type("int[]"))(5); var intarraytype=java.type("int[]"); var intarray=new intarraytype(5); 26

プロパティへのアクセス 27

getter/setter var HashMap=Java.type('java.util.HashMap'); var map=new HashMap(); map.put('size', 2); print(map.get('size')); // 2 28

プロパティ var HashMap=Java.type('java.util.HashMap'); var map=new HashMap(); map.size=3; print(map.size); // 3 print(map.size()); // 1 29

連 想 配 列 var HashMap=Java.type('java.util.HashMap'); var map=new HashMap(); map['size']=4; print(map['size']); // 4 print(map['size']()); // 1 30

Lambda, SAM, and Script function 31

Lambda, SAM, and Script function Script functionをlambdaオブジェクトやsamインターフェースを 実 装 するオブ ジェクトに 自 動 変 換 var timer=new java.util.timer(); timer.schedule( function() { print('tick') }, 0, 1000); java.lang.thread.sleep(5000); timer.cancel(); 32

Lambda, SAM, and Script function Lambda typeのインスタンスであるオブジェクトを Script functionのように 取 り 扱 う var JFunction= Java.type('java.util.function.Function'); var obj=new JFunction() { // x->print(x*x) apply: function(x) { print(x*x) } } print(typeof obj); //function obj(9); // 81 Script functionっぽく 33

Scope and Context 34

Scope and Context load と loadwithnewglobal load 同 じグローバル スコープにScriptをロード ロードしたScriptにロード 元 のScriptと 同 じ 名 称 の 変 数 が 存 在 する 場 合 変 数 が 衝 突 する 可 能 性 がある loadwithnewglobal グローバル スコープを 新 規 作 成 し そのスコープに JavaScriptをロード ロード 元 に 同 じ 名 前 の 変 数 があっても 衝 突 しない 35

Scope and Context ScriptContextはBindingに 紐 付 いた 複 数 のスコープをサポート ScriptContext ctx=new SimpleScriptContext(); ctx.setbindings(engine.createbindings(), ScriptContext.ENGINE_SCOPE); Bindings enginescope= ctx.getbindings(scriptcontext.engine_scope); enginescope.put("x", "world"); engine.eval("print(x)", ctx); 36

Scope and Context スコープを 区 切 るためにJavaImporterをwithと 共 に 利 用 with(new JavaImporter(java.util, java.io)){ var map=new HashMap(); //java.util.hashmap map.put("js", "javascript"); map.put("java", "java"); print(map);... } 37

その 他 のNashorn Extensions Java 配 列 とJavaScript 配 列 の 変 換 Java.from Java.to Javaクラスの 拡 張 スーパークラス オブジェクトの 取 得 Java.extend Java.super など 38

Server Side JavaScript 39

Java EE for Next Generation Applications HTML5に 対 応 した 動 的 かつスケーラブルなアプリケーション 提 供 のために WebSockets Avatar 40

Webアプリケーションアーキテクチャの 進 化 Request-Response and Multi-page application Browser Presentation (Servlet/JSP) Business Logic Backend Connectivity Java EE/JVM 41

Webアプリケーションアーキテクチャの 進 化 Ajax (JavaScript) の 利 用 JavaScript Browser Connectivity (REST, SSE) Presentation (Servlet/JSP, JSF) Business Logic Backend Connectivity Java EE/JVM 42

今 風 のWebアプリケーションアーキテクチャ Presentationよりはむしろ 接 続 性 JavaScript View Controller Browser Connectivity (WebSocket, REST, SSE) Presentation (Servlet/JSP, JSF) Business Logic Backend Connectivity Java EE/JVM 43

How about using Node.js? 44

既 存 サービスのモバイル 対 応 例 JavaScript View Controller REST SSE WebSocket Node.js Browser JavaScript 45

Java EEと 並 べてJava VM 上 で Nodeを 動 かすのは? 46

既 存 サービスのモバイル 対 応 例 NodeをJava VMで 動 作 させてみる Client Server JavaScript View Controller Browser Node JavaScript Java EE/JVM Business Logic Backend Connectivity 47

Avatar.js 48

Avatar.js Node.jsで 利 用 できるモジュールをほぼそのまま 利 用 可 能 Express async socket.ioなど npmで 取 り 込 んだモジュールを 認 識 利 点 Nodeプログラミングモデルの 利 用 既 存 資 産 ナレッジ ツールの 活 用 49

Avatar.js = Node + Java Threadも 含 めたJavaテクノロジーを 活 用 require( async ) JavaScript Java Node App com.myorg.myobj postevent java.lang.thread java.util.sortedset 50

Avatar 51

Avatar サーバーサイドJavaScriptサービスフレームワーク REST WebSocket Server Sent Event (SSE) での データ 送 受 信 に 特 化 Node.jsのイベント 駆 動 プログラミングモデルや プログラミングモジュールを 活 用 エンタープライズ 機 能 (Java EE)との 統 合 52

Avatar (Avatar EE) *.html *.js *.css REST/WebSocket/SSE HTTP Application Views Avatar Runtime Application Services Avatar Modules Node Modules Avatar.js Avatar Compiler Server Runtime (Java EE) JDK 8 / Nashorn データ 変 更 通 知 53

アーキテクチャ(Server) *.html *.js *.css REST/WebSocket/SSE HTTP Application Views Avatar Runtime Application Services Avatar Modules Node Modules Avatar.js Avatar Compiler Server Runtime (Java EE) JDK 8 / Nashorn データ 変 更 通 知 54

Avatar Service HTTP Load Balancer JavaScript Services Services Services データ 変 更 通 知 Shared State Java 55

アーキテクチャ(Client) *.html *.js *.css REST/WebSocket/SSE HTTP Application Views Avatar Runtime Application Services Avatar Modules Node Modules Avatar.js Avatar Compiler Server Runtime (Java EE) JDK 8 / Nashorn データ 変 更 通 知 56

Avatar is not dead! 57

Nashornの 今 後 58

Nashornの 今 後 Bytecode Persistence (JEP 194) http://openjdk.java.net/jeps/194 Optimistic Typing その 他 59

まとめ 60

まとめ Nashorn Javaと 緊 密 に 統 合 Rhinoからの 移 行 にあたっては 表 記 方 法 が 変 わっている 箇 所 があるので 注 意 今 後 も 性 能 向 上 機 能 追 加 新 しい 仕 様 に 対 応 Server Side JavaScript Avatar.js Avatarは 鋭 意 開 発 中 ぜひFeedbackを! 61

Appendix 62

ソースコード Shell 主 としてjjsで 利 用 Compiler ソースからバイトコード (class) を 生 成 Scanner ソースからトークンを 作 成 Parser トークンからAST/IRを 作 成 IR スクリプトの 要 素 Codegen AST/IRからscript classのバイトコードを 生 成 Objects ランタイム 要 素 (Object String Number Date RegExp) Scripts スクリプト 用 のコードを 含 むclass Runtime ランタイムタスク 処 理 Linker JSR-292 (InvokeDynamic) に 基 づきランタイムで 呼 び 出 し 先 をバインド Dynalink 最 適 なメソッドを 検 索 ( 言 語 間 で 動 作 ) 63

Nashorn Documents http://wiki.openjdk.java.net/display/nashorn/nashorn+documentation Java Platform, Standard Edition Nashorn User's Guide http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/nash orn/ Scripting for the Java Platform http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/ Oracle Java Platform, Standard Edition Java Scripting Programmer's Guide http://docs.oracle.com/javase/8/docs/technotes/guides/scripting/prog_ guide/ 64

Nashorn http://openjdk.java.net/projects/nashorn/ OpenJDK wiki Nashorn https://wiki.openjdk.java.net/display/nashorn/main Mailing List nashorn-dev@openjdk.java.net Blogs Nashorn - JavaScript for the JVM http://blogs.oracle.com/nashorn/ Nashorn Japan https://blogs.oracle.com/nashorn_ja/ 65

Avatar.js Project Page https://avatar-js.java.net/ Mailing List users@avatar-js.java.net 66

Avatar Project Page https://avatar.java.net/ Mailing List users@avatar.java.net 67

68

69