More Related Content
PPTX
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 PPTX
JSX 速さの秘密 - 高速なJavaScriptを書く方法 PDF
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~ PDF
de:code 2019 DT06 vs-show どっちのVSショー PPTX
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1 PDF
What's hot
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善 PDF
Android アプリ開発における Gradle ビルドシステム PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発 PDF
.NET 最新ロードマップと今押さえておきたい技術要素 PDF
PDF
PDF
マイクロサービス時代の動画配信基Ruby×go=∞ PDF
PDF
AndroidStudioはじめました ~Gradle編~ PPTX
Guide to GraalVM (JJUG CCC 2019 Fall) PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ PDF
PDF
【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション PDF
【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の紹介 PDF
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート PDF
PDF
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介 PPTX
PPTX
20170624 interact2017 open shift on azure PDF
Viewers also liked
PPTX
PPTX
PDF
Test Engineering on Mobage PPTX
Microservices with SenecaJS (part 2) PDF
PPTX
A Long Walk to Water: Lesson18 unit2 PPTX
A Long Walk to Water: Lesson19 unit2 PPTX
PPT
Android Abc2009 Fall Shima091130 1 PDF
PPTX
PPT
Using video online to increase sales slideshare PPT
SummitUp Delicious Breakout 10 20 09 PPS
PPTX
PPTX
Latvia my school-keipenes_school(1) PPT
PPT
Journey To The East Part 2 PPTX
PPTX
Similar to JSX Design Overview (日本語)
PDF
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~ PDF
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ- PDF
PPTX
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library KEY
PPTX
PDF
PDF
PDF
PDF
PDF
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc... PPTX
PDF
PPTX
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春 PDF
PDF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~ PPTX
PDF
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~ PDF
Arctic.js開発者から見るFlasherの未来 PDF
2012 12-17-titanium meetupvol4 More from Kazuho Oku
PDF
PDF
PDF
H2O - the optimized HTTP server PPTX
PPTX
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 PPTX
JSON SQL Injection and the Lessons Learned PPTX
Recent Advances in HTTP, controlling them using ruby PDF
Developing the fastest HTTP/2 server PDF
PDF
PPTX
Programming TCP for responsiveness PDF
PDF
JSX - developing a statically-typed programming language for the Web PPTX
Cache aware-server-push in H2O version 1.5 PDF
Reorganizing Website Architecture for HTTP/2 and Beyond PDF
H2O - making the Web faster PPTX
PPTX
PDF
Programming TCP for responsiveness PDF
JSX Design Overview (日本語)
- 1.
- 2.
自己紹介
1997-2003 「Palmscape」「Xiino」の開発者
Palm OS用Webブラウザ (Sony, IBM, DoCoMo 等が採用)
JavaScript VMもフルスクラッチで書いていた
2004 IPA未踏「Webアプリ統合開発環境の開発」
スーパークリエータ認定
Perlのウェブブラウザ上でのデバッガ等
2005-2010 サイボウズ・ラボ
Japanize, Pathtraq – ブラウザ拡張を使うウェブサービス
Q4M – メッセージキュー (Mixi, livedoor, DeNA 等で利用)
2011- ディー・エヌ・エー
JavaScript 等、プラットフォーム技術の研究開発
May 31 2012 JSX - Design Overview 2
- 3.
JSX の目標
優れたウェブブラウザ用プログラミング
言語
JavaScript より速く
ブラウザゲームは速度重要。超重要
JavaScript より開発効率が高く
特に中〜大規模開発において
メンテナンスコストも重要
JavaScript より成果物の品質が向上
サービスに影響があるバグの中には JavaScript で書か
れたコードが原因のものもある
May 31 2012 JSX - Design Overview 3
- 4.
JavaScript の問題
生産性が低い
実行しないとバグが見つからない
成果物の品質が低い
遅い
メモリ食い
初動が遅い
May 31 2012 JSX - Design Overview 4
- 5.
JavaScript の問題 =動的な言語である点
実行時に「しか」エラーチェックできな
い
→ 生産性と品質に悪影響
実行時に適応コンパイル
→ 実行速度、起動速度、メモリ消費量に悪影響
コンパイラ系の最適化技術が活用されな
い
JIT で可能な最適化には限界 or オーバーヘッドが存在
→ 実行速度に悪影響
May 31 2012 JSX - Design Overview 5
- 6.
解決策
独自のプログラミング言語を開発
JavaScript に静的な型機構を追加
like ActionScript 3 / EcmaScript 4
JavaScript への変換時に最適化
JavaScript より高速に!
May 31 2012 JSX - Design Overview 6
- 7.
先行事例
いずれも一長一短
実行環境 生産性と品質 速度
(PC Web / SP Web)
JavaScript ○/○ △ △
Google Web Toolkit ○/△ □ ×
Google Closure Compiler ○/○ △ □
Dart △/△ ○ ×
ActionScript 3 △/× ○ ○
JSX ○/○ ○ ○
Google Web Toolkit は JVM と JavaScript へのトランスレータの互換性に難あり。Google Closure Compiler には、生産性/品質
と速度の間にトレードオフあり(ADVANCED_OPTIMIZATIONS モードを使用するには煩雑でエラーチェックの弱い型アノテー
ションを書く必要があるため)。Dart はネイティブサポートしたブラウザがないに等しく、JavaScript へのトランステータだ
と実行速度低下。ActionScript 3 は要フラッシュ、スマートホンのブラウザ上で動作しない。
May 31 2012 JSX - Design Overview 7
- 8.
JSX の言語設計方針
静的型言語
できるだけ多くのエラーをコンパイル時に検出
開発効率と品質の向上につながる
式と文は JavaScript + 型指定
開発者がとっつきやすいように
JS への変換におけるオーバーヘッドを最小化
デバッグ支援コードの挿入
静的なクラス構造
リンク時最適化を含むコンパイル時最適化
May 31 2012 JSX - Design Overview 8
- 9.
JSX が解決する JavaScriptの問題
生産性が低い / 成果物の品質が低い
→ コンパイル時のエラーチェック + デバッグ支援
速度が遅い
→ コンパイル時最適化
メモリ食い
→ ???
初動が遅い
→ ???
May 31 2012 JSX - Design Overview 9
- 10.
JavaScript との連携
JS のオブジェクトは JSX 内ではキャストし
て使用
(js.global["alert"] as function (:string):void)("hello");
JS から JSX を呼び出すには require
JSX.require("foo.jsx")._Main.run$();
May 31 2012 JSX - Design Overview 10
- 11.
最適化
JavaScript より遅くはならない
理由: 式と文が1対1対応だから
型情報を使ったインライン展開を実装
中〜大規模開発でプロジェクトで特に有効
Google Closure Compiler では不可能な展開も実現
型アノテーションつきの JavaScript を出
力
Closure Compiler で更に最適化可能
つまり JSX で書くだけで Closure Compiler
May 31 2012 (ADVANCED_OPTIMIZATIONS) 以上の高速化
JSX - Design Overview 11
- 12.
最適化の実装状況
数種類のテストプログラムで JavaScript
より高速なことを確認
大域最適化から優先して実装中
インライン展開
既に Google Closure Compiler より優秀?
定数畳み込み
リンク時最適化
コードの可読性が下がらない最適化はあとまわし
例: loop-invariant code motion, CSE
May 31 2012 JSX - Design Overview 12