BeyondJS
JavaScript の改良に未来はあるのか?
パネルディスカッション。 Caffeine すげー気になる
ClosureCompiler
ClosureTools
サイボウスの天野さん
kintone
non programming でビジネスアプリが作れるそうな。 B2B サービス。 あらかじめ用意された処理をドラッグアンドドロップでロジックを組み、データに対するいくつかのグラフ出力等もできるそうな。
Closure Compiler Closure Library Closure Templates Linter + JSHint
ClosureLibrary
フルスタック クラスベース 型情報等
ClosureCompiler
JS 圧縮, 難読化 JSDoc アノテーションサポートによるチェック等 エラーレポート 高い圧縮率 コンパイル
ツール同士も連携する Closure Tool と一緒に使って最適化とか。
Dart2js
@ntaoo
Google 中心の開発。 DartVM 以外にも JavaScript でも動く言語。
独自なので、デフォルトだと JavaScriptAPI が使えない。
-動的型言語、でも型はつけられる。 -クラスベースOOP -レキシカルスコープとクロージャ -ソースコードVM(コンパイルフリー) -Mixin,Future(Promise), ベースの非同期処理, reflection, isolates, lazy evaluation -UnitTest
JavaSctipt/C# に煮たSyntax Objectは Smalltalk Erlang な非同期機構
IE8 以前はサポートしない。 モダンブラウザは大体動く。 android のデフォルトブラウザだと使えない場合がある。chrome 入れれ。 Firefox for android -> 不明
どっちかというと普通のアプリの方が向く言語か?
事例: Blossom というプロジェクトマネジメントツールが Dart - Dartendo とかファミコンのエミュが書かれてる - ゲーム - ブラウザIDE
如何せん若いので、ライブラリが弱いかな?
GooglrGlass のハッカソンでも出たそうな。
ECMAScript6
鈴木祐介
JavaScript 最新が 5.1 今年中に 6 の仕様が fix される 今日リビジョン 17 出てきた。
新しいもの
- 新しい構文
- 新しいセマンティクス
- 新しいライブラリ
- 4 で放置された機能の一部リバイバル
でも「互換性は残す」
Class が、extends が入る。
super, this も入る! constructor も
Allow function
this が定義したスコープの参照を持つ。 意味不明な this に悩むことは無い。
Template String
Hello %{name}
とか
BlockScoped
ブロックスコープでしか使われない変数が使える。
Destructuring Assignment
イベントハンドラで、必要な引数だけ貰う
Generators/Iterable
yeld とか使えるようになる
Computed Property
プライベートアクセス等のアクセス制約
その他
Map/Set WeakMap/WeakSet TypedArray/DataView - WebGL の spec が導入された StructType Proxy - js object への internal method を handle する
現状
ES6 は少しづつ入り始めてる。 まだ一部なので動くとも限らないけれども、、、、。
Haxe
小泉さん
概要
読み方:hex ActionScript3/4 Like マルチターゲットなコンパイラ 若干最適化 静的型 方推論 代数形、パターンマッチ リフレクション マクロ ビルトインパッケージシステム OCaml で書かれてる
言語構造
ECMA4 クリソツ - enum/class/interface/関数型/匿名/Dynamic/abstract - static method - new キーワードでのコンストラクタ - プロパティ構文 - -> 使って関数形を使う - enum 型、個々のメンバーが型として機能する。しかもコンストラクタもできる - switch - case でパターンマッチもできる - 匿名型:typedef:{x:Float}; とか var p:{c:Float}; しかもなぜか継承できる - Dynamic 型、Object 型みたいなもんか、キャストなしで好きに呼べる - Dynamic 型に object 突っ込めるけど、 - abstract : これ使って implicit conversion ができたりする abstract 型を用意すると、、、、 - 演算子オーバーロード - 型パラメータ(Generics):共変性と反変性は少しだけサポート - 値型には null 入らない。Null<> 使え
マクロ
AST 注入できる コンパイル時とか、実行時に突っ込める
- リスト内包表記
- Cast
- using
- JS 利用 - extern でターゲット言語で定義されてるものを使う - js 生成コードに直接展開されるコードも書ける - js パッケージを呼べる
NEKO
謎のバーチャルマシン。
JSX
奥さん
altJS ってなんで出たの
ブラウザで動くのは JavaScript だけー でも他のやつで書きたいよねー
- caffee
- TypeScript
- JSX
- JavaWebToolkit, Haxe,
JSX
DeNA で書いてる altJS
なんで作った?
専用内製ライブラリが多い 数万行とかいうコードが多いし、、、 頻繁に変更が入る。
こんなときに - JavaScript はテストが難しい - 品質担保しづらい(動かさないとわからん) - ロード時間と使用メモリが多い
で
JSX では - 静的型 - 最適化コンパイル - 強力な minify
一方 - JavaScript 既存のライブラリと相性が悪い(動的型がなー)
今後: NodeJS 対応 バグフィックス async 属性