2013/08/25 なごやまつり https://connpass.com/event/2414/
Dartの型システム@zetta1985原 知愛Dart / Java / JS / DDD / RESTGoogle信者#SugoiH_c0hama #nagoya.dart2013/08/25 なごやまつり
View Slide
Dart RuntimeDart CodeDart VMSnapshotdart2jsJavaScriptV8 etc...
IsolatesIsolateReceivePortIsolateReceivePortSendPortSendPortSnapshotSnapshot
Development ToolsDart EditorDartium(Browser)Dart SDKDart VM dart2jsdartanalyzerdartdocPub(PackageManager)EclipsePluginIntellJ IDEAPlugin
Language Spec基本はゆるふわなJava● 言語設計者はGilad Bracha氏○ Java言語仕様○ JavaVM仕様○ Pluggable (Optional) Type System提唱● 他、Jochua J. Bloch氏(Effective Javaの人)も
Language Spec● Optional Parameter● Named Parameter● Method Cascading● Const Variable● Generics● Named Constructor● Factory Constructor● Library Private● Implicit Interface● Mix-in
動的型付言語(実行環境)+型検査器(ツール)||Optional Typing
Java-likeなLL(Dart VM)+dartanalyzer||Dart
良い所Future & StreamAPI
Future: File IOnew File("./foo.txt").fullPath().then((fullpath) {print("foo.txt's fullpath is $fullpath");}).catchError((e) {print("foo.txt is not exists.");});
Future: HTTP Requestnew HttpClient().getUrl(url).then((req){req.headers.add("contentType", "text/html");return req.close();}).then((res) {res.transform(new StringDecoder()).forEach(print);});
Stream: Standard Inputprint("Please Input A.");var lines = stdin.transform(new StringDecoder()).transform(new LineSplitter());lines.listen((str){print("Your input's length : ${str.length}");print(str == "A" ? "Just A." : "Not A.");});
Stream: DOM Eventvar stream = query("input#hello").onClick;stream.listen((e) {window.alert("hello, world.");});
Stream: HTTP ServerHttpServer.bind("127.0.0.1", 8080).then((server) {server.listen((req) {req.response.write("This message from my server.");req.response.close();});});
Stream: File ReadStream stream = new File('bar.txt').openRead();StreamSubscription> subscription;subscription = stream.listen((bytes) {for (var b in bytes) {print(new String.fromCharCode(b));if (b == '#'.codeUnitAt(0)) {subscription.cancel();return;}}});
DartとGoogle● Dartの一番のUserは、Google自身● SPDYのような普及方法を目指す?● GoogleはWebエンジニアと共に、 Web開発の未来を作りたい。● JavaScriptを駆逐するわけではない
Dartのこれから● dartanalyzerをもっと進化させたい (個人的に)● Chromeにさえ乗っかれば・・・● Google App Engine対応が気になる● Android対応すればワンチャンあるで
Thanks