all right that was a story of how I ended up on this stage and I'm going to talk about dart the dot language and I guess that's the language that's the reason we're all here for right that's done j/s whatever something we do have in common is that we love the web you and I and in like in the last five years that has changed tremendously I mean web browsers are now a hundred times faster like the same on the same machine and now how many times faster than five years ago and we know when we give that kind of power to developers what happens next they want more more performance more features and indeed the you code more I mean web apps have gone into a lot a big JavaScript code you get a lot a lot of JavaScript code lots of new features web RTC 3d graphics now with the web you actually want to do what you had before when it will be the native apps you want the full thing right and we're of this opinion that yeah the web access tremendously in five years but the programming language and the tools they haven't really changed and now we're we're I mean this programming productivity and that's what we heard a lot today is a major bottleneck when you want to create web apps and that's the reason we started art and you may know dart as a language and it is a language that will be very familiar to you if you're a JavaScript I guess you do if you know Java C sharp um it has a rich set of libraries number dates collections asynchronous programming very virtual libraries it has a productive IDE that's a lightweight version of Eclipse actually a stripped-down version of eclipse that supports all the things that actually Java developers are always been used to type checking refactoring debugging and soon profiling we have a compiled to JavaScript called dart to J's and we have what we call dartium and that's chromium with a native vm embedded in it that one start natively okay so I'm going to give a short syntax slide about the decisions we took when designing the language dart has curly braces so that you and I can read the code and I semicolon so that you guys can complain about something and we're in France right so I'm French we have closures and a shorter handcent acts when you want to write shorthand closures we have string interpolation rolling you the plus pitfalls with strings in Java Script we have method Cascades that's just a very nifty syntactic sugar we actually don't have to repeat the receiver so you can just do whatever things you want to do on a knob ject that is returned by here query cache back we have named parameters with the Collin so that's the syntax but we have way more we have classes we have optional types you don't have to put types in your code you can just put bar or if you want to you put the types and then you get a type checking from the ID or from an analyzer we have generics lexical scoping no more weird this isolates kind of a web worker but with more features we have syntactic sugar for initializing fields what is the most common thing you do when you have a constructor that's being Java or JavaScript take parameters initialize the fields well here you just need to say I'll go out on field names these are tax season why and they get initialized we have mixes and a rock with animation but no such method and operator overriding so that i can do matrix plus matrix vector plus vector and a few weeks ago we announced dark one point 0 and what it means really is that now the language is stable the libraries are stable so you can build products with it we actually have a couple of external customers using it this is a screenshot of stage XL game stage excel as kind of a port of the flash API over Dart this is a screenshot of blossom it's a product management app all coded in Dart and this is a screenshot of sound trap uses all the new fancy features html5 web RTC all coded in Dart I actually have a video going to launch of an app called montage made by macbook next book is the world's first collaborative scrapbook editor for creating photo books you can add photos from your computer or your favorite photo shoot then these are automix feature to have us create your book or add them yourself the way you can fully personalized your mix book you can move rotate all right it works as expected but all of that that's conan in Dart it's a it's a company called I don't name company mix books re-mix book and the product is called montage and that's all written in Dart all right so I have a few minutes left and I will talk about myth busters there's been a lot of myths around dart when it launched in better I was two years ago I want to make sure that now you know what Darla actually is and what how can I help you so the first myth that I want to bust this dart is only for chrome and that is not true dart does not break the web and I mean I really need to make back here and i have a few minutes to her to feel so really dart does not break the web i mean even a browser gets that we compile to JavaScript and that's like you can compare it to any other language I come back to JavaScript DJ GWT from Java to JavaScript CoffeeScript typescript any others take on power to JavaScript and the code we compiled to JavaScript runs on any modern browser even on IE but as you notice that's ie9 we don't support before any nine whatever this is a screenshot of the stage excel i showed earlier that runs on firefox if it's not obvious miss number two dart compels to javascript I have this print hello world app I compiled to JavaScript it takes 1 megabyte I was 22 years ago when we wanted to have something I mean that works but today that's not this snippet here print hello dart compels to 2500 bytes of JavaScript I mean captive depends on the under version of the compiler you getting but now not not that one megabyte you'll see online which was like from two years ago and it's part of the goals of dart to J's the dart to JavaScript compiler we have three goals small code fast code and retained our semantics so they retained our semantics that's where you get this extra having 2,000 2,500 bites there are some things going on here and that's because we want to retain dart semantics typically when you're actually seeing an array out of bounds you should get a range error in dart you don't have that in JavaScript you can undefined so we need to implement that so we have implemented in dart to J's a lot of compiler optimizations one of them being tree shaking so imagine you have your metal main and your code you have two methods whole bath and food medical school but men also important all the library and footballs bar and in library you just happen to have another boom method what happens in dr j s is that will only compile the things you're using and here in that case that's just main full bar the way we do this it's actually very it's cynical power we do it like what we call to level 3 shaking we have a we read the dart code right with a dial parser so the parsing goes really fast we don't actually parse the message right away once we have all this dial parsing going on we do a resolution so we start with main and we resolve anything that main touches previously us food once the resolution is done we do cogeneration so we compile to JavaScript and that's another tree shaking happening like in your method you have that code you're calling login code but you have if false before so will ever compel that and finally give me the code miss number three I don't need dark for performance I have Assam de geus it's a very awkward moment when I have to answer those questions when someone asked me because I know that there's a there's a gap between what I know what I'm expert in and what he knows what hes expert in I'm not saying it's bad I mean we're all experts in different things but you know that the conversation could just go berserk as Allah GS Almeida conversation series here because I have much time but as I'm not Jess that's the subset of JavaScript targeted to optimize numerical computations it has no garbage collection whatsoever you cannot do method calls dark on the other hand is a whole new programming language method calls garbage collection and design was performance in mind and to just give a brief slide a few slides work performance where there is the team that designed art come from a background is making programming language fast Dave design I was in there at this time hot spot when Java was horribly slow they designed v8 and that started the web performance boost so when we designed art our guiding principle was performance so I'm going to compare three benchmarks one running in v8 sorry three matchbox running on v8 running on v8 with a compiled version of the dart version JavaScript and while I'm running on the dart VM one is that one benchmark is Delta blue that's the constraint solver the other is Richards simulating a operating system and the other is tracer raytrace lynch mob and here you can see that the that the JavaScript version compared to the dart2js version can run faster slower equivalent faster what the hell how can that be well we actually have the dart language you can do global optimizations because we can do whole program analysis it's a closed world assumption we don't have eval so we can do global compile-time optimizations there's this website that we have online where you can actually track performance the blue bar that's the builtin machine and you can see that over time it's picking up right and now it's like two times faster than that v8 when I finish on this slide this slide slide here show the performance with the vm in the blue the dart VM also runs server side no Jess you know you all know that when we have something similar it runs on different architecture and it can snap shot apps to give you a 10x faster startup 10x faster startup it's a list of projects and and companies that use dart so you can see we have a lot of users and last slide is I did it