Isolates
Isolate
Receive
Port
Isolate
Receive
Port
Send
Port
Send
Port
Snap
shot
Snap
shot
Slide 4
Slide 4 text
Development Tools
Dart Editor
Dartium
(Browser)
Dart SDK
Dart VM dart2js
dart
analyzer
dartdoc
Pub
(Package
Manager)
Eclipse
Plugin
IntellJ IDEA
Plugin
Slide 5
Slide 5 text
Language Spec
基本はゆるふわなJava
● 言語設計者はGilad Bracha氏
○ Java言語仕様
○ JavaVM仕様
○ Pluggable (Optional) Type System提唱
● 他、Jochua J. Bloch氏(Effective Javaの人)も
Slide 6
Slide 6 text
Language Spec
● Optional Parameter
● Named Parameter
● Method Cascading
● Const Variable
● Generics
● Named Constructor
● Factory Constructor
● Library Private
● Implicit Interface
● Mix-in
Slide 7
Slide 7 text
動的型付言語(実行環境)
+
型検査器(ツール)
||
Optional Typing
Slide 8
Slide 8 text
Java-likeなLL(Dart VM)
+
dartanalyzer
||
Dart
Slide 9
Slide 9 text
良い所
Future & Stream
API
Slide 10
Slide 10 text
Future: File IO
new File("./foo.txt").fullPath()
.then((fullpath) {
print("foo.txt's fullpath is $fullpath");
})
.catchError((e) {
print("foo.txt is not exists.");
});
Slide 11
Slide 11 text
Future: HTTP Request
new HttpClient().getUrl(url).then((req){
req.headers.add("contentType", "text/html");
return req.close();
}).then((res) {
res.transform(
new StringDecoder()).forEach(print);
});
Slide 12
Slide 12 text
Stream: Standard Input
print("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.");
});
Slide 13
Slide 13 text
Stream: DOM Event
var stream = query("input#hello").onClick;
stream.listen((e) {
window.alert("hello, world.");
});
Slide 14
Slide 14 text
Stream: HTTP Server
HttpServer.bind("127.0.0.1", 8080).then((server) {
server.listen((req) {
req.response.write("This message from my server.");
req.response.close();
});
});
Slide 15
Slide 15 text
Stream: File Read
Stream 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;
}
}
});