gopherjs + nashorn

12
ネズミとサイと 黒い三角の生物 のはなし 2014/06/08() @天下一altJS武闘会

Upload: takuya-ueda

Post on 24-May-2015

5.275 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: GopherJS + Nashorn

ネズミとサイと黒い三角の生物のはなし

2014/06/08(日)@天下一altJS武闘会

Page 2: GopherJS + Nashorn

自己紹介

上田拓也KLab株式会社

仕事:

Webviewと戦う仕事

趣味:

Go言語, JStwitter : @tenntenn

Page 3: GopherJS + Nashorn

今日はなすこと

● 天下一altJS武闘会に参加したい● 見るだけ枠は空きがない

○ LTすれば参加できる

● GopherJSというものがある○ ついでに勉強しよう

● Java Day TokyoでNashornのセッションを見た○ ついでに勉強しよう

Page 4: GopherJS + Nashorn

今日はなすこと

Golang

JavaScript

JavaFX

GopherJS

Nashorn

Page 5: GopherJS + Nashorn

GopherJS

● Go言語のコードからJSのコードを吐き出す● go/astパッケージを使ってGo言語のコードを解

析している● Node.jsかブラウザで動かす前提で作られてい

る● groutineとchannelは....

○ 使えません!

Page 6: GopherJS + Nashorn

Nashorn

● JavaのJavaScriptエンジン● JavaからJSのコードを実行できたり● JSからJavaのオブジェクトが使えたりする● JavaFXも使える

Page 7: GopherJS + Nashorn

GopherJSでJSのオブジェクト使う

● プロパティのGet/Setvar obj js.Objectname := obj.Get(“name”).String()obj.Set(“age”, 28)

● 関数呼び出し

obj.Call(“say”, “hello”)● グローバルオブジェクト

js.Global

Page 8: GopherJS + Nashorn

GopherJSを修正する

● Node.jsかブラウザで動くことを前提に作られている

● グローバルオブジェクトがGLOBALかwindowで設定される

Page 9: GopherJS + Nashorn

Hello, GopherJSvar java = js.Global.Get("Java")func start(stage js.Object) { stage.Set("title", "Hello, GopherJS") WebView := java.Call("type", "javafx.scene.web.WebView") webview := WebView.New() url := “http://gopherjs.github.io/playground” webview.Call("getEngine").Call("load", url) Scene := java.Call("type", "javafx.scene.Scene") scene := Scene.New(webview, 1200, 800) stage.Call("setScene", scene) stage.Call("show")}func main() {js.Global.Set("start", start)}

Page 10: GopherJS + Nashorn

Hello, GopherJS

Page 11: GopherJS + Nashorn

JavaFX 3D

Page 12: GopherJS + Nashorn

感想

● 面白かった● GopherJSでのグローバルオブジェクト扱いが

微妙● Goのコード中にjsとかJavaが出てくるのは気持

ち悪い● もうちょっとGopherJSのソースを読み込みたい

○ でも、もう使うことはないだろうな