JavaScript завтра / Сергей Рубанов (Exante Limited)

Click here to load reader

  • date post

    16-Jan-2017
  • Category

    Engineering

  • view

    476
  • download

    1

Embed Size (px)

Transcript of JavaScript завтра / Сергей Рубанов (Exante Limited)

  • JavaScript

    Exante Limited

    1

    FrontendConf 2015

    http://exante.eu/ru/

  • JavaScript

    JavaScript

    JavaScript

    2

  • JavaScript Netscape Navigator

    Java-

    , JS

    3

  • JavaScript

    4

  • 1995 Mocha

    1995 - Netscape Navigator 2.0 LiveScript

    1995 - Netscape Navigator 2.0, JavaScript ( Sun)

    Netscape JavaScript Netscape Enterprise Server

    5

  • 1996 Microsoft IE 3 JScript

    1996 Netscape, W3C, ECMA, TC39 ES1 ( 1996) ES2 ( 1998)

    1997 ES3 ( , , switch, do-while )

    18 2005 "Ajax: A New Approach to Web Applications"

    6

    http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications/

  • 2008 ES4 Harmony

    2009 ES5 (strict mode, getters, setters, JSON, Object.create ..)

    2011 ES5.1 ( ISO/IEC)

    7

  • JavaScript

    JavaScript: The Good Parts vs JavaScript: The Definitive Guide

    8

  • 1.0.0 24 2010

    CoffeeScript: "It's just JavaScript"

    Python, Ruby Haskell

    if, switch, for

    Dropbox, GitHub , Ruby on Rails 3.1+

    9

  • :

    10

  • :

    ES6

    "just JavaScript"

    11

    http://github.com/jashkenas/coffeescript/issues/3274http://github.com/michaelficarra/CoffeeScriptRedux/issues/338http://discuss.atom.io/t/why-coffeescript/131/2

  • :

    rest parameters / spread operators (splats)

    destructuring assignment

    =>

    for-of12

  • Dart 10 2011.

    JS, ,

    4 2014 ECMA-408

    25 2015 VM

    13

    http://news.dartlang.org/2015/03/dart-for-entire-web.html

  • vs Dart team

    news.ycombinator.com/item?id=9264531

    14

    http://news.ycombinator.com/item?id=9264531

  • :

    , Dart VM V8

    Dart

    15

  • :

    ES6

    Dart

    16

  • PNaCl 12 2013

    NaCl

    C C++ LLVM AOT-

    Intel x86, ARM MIPS

    17

    http://blog.chromium.org/2013/11/portable-native-client-pinnacle-of.htmlhttps://developer.chrome.com/native-client

  • asm.js

    21 2013

    JavaScript

    18

  • asm.js , , Emscripten

    AOT- ( V8 JIT)

    7 Microsoft Edge

    19

    http://mrale.ph/blog/2013/03/28/why-asmjs-bothers-me.htmlhttp://blogs.windows.com/msedgedev/2015/05/07/bringing-asm-js-to-chakra-microsoft-edge/

  • JS

    ClojureScript

    scala.js

    LiveScript

    PureScript

    Elm

    TypeScript

    ..

    20

    http://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS

  • JavaScript

    21

  • JavaScript

    22

  • JavaScript ES6 2015

    ECMA 402 (Intl)

    ECMAScript

    23

    http://github.com/tc39/tc39-notes/blob/master/es6/2015-01/jan-27.md#41-es6-end-game-schedule-reviewhttp://kangax.github.io/compat-table/es6/https://esdiscuss.org/topic/javascript-2015

  • JavaScript ECMAScript 2015

    github.com/lukehoban/es6features

    Module Loader API

    (Release Candidate #4, 3.04.2015)

    ECMAScript 2016+

    github.com/tc39/ecma262

    github.com/tc39/ecma262/blob/master/stage0.md

    24

    http://github.com/lukehoban/es6featureshttp://github.com/tc39/tc39-notes/blob/master/es6/2014-11/nov-18.md#41-es6-draft-status-updatehttps://github.com/lukehoban/es6features/issues/75http://people.mozilla.org/~jorendorff/es6-draft.htmlhttp://github.com/tc39/ecma262http://github.com/tc39/ecma262/blob/master/stage0.md

  • Traceur

    Babel

    TypeScript 1.5+

    JSTransform

    25

    http://github.com/google/traceur-compilerhttp://babeljs.io/http://www.typescriptlang.org/http://github.com/facebook/jstransform

  • Closure Compiler (JSDoc)

    Flow

    TypeScript

    AtScript ( TypeScript)

    26

    http://developers.google.com/closure/compiler/http://Flowhttp://www.typescriptlang.org/http://blogs.msdn.com/b/somasegar/archive/2015/03/05/typescript-lt-3-angular.aspx

  • TypeScript playground

    Safe TypeScript

    playground

    27

    http://www.typescriptlang.org/Playgroundhttp://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdfhttp://www.apple.comhttp://www.cs.umd.edu/~aseem/safets-tr.pdfhttp://research.microsoft.com/en-us/um/people/nswamy/Playground/TSSafe/

  • ECMAScript 28 2015 TC-39 JavaScript VM (Sane Mode SoundScript)

    1 2015 Stricter Mode SoundScript The Rolling Scopes

    SoundScript asm.js

    Traceur Chrome Canary

    V8 experiments (Strong Mode SoundScript)

    strawman proposal

    28

    http://github.com/tc39/tc39-notes/blob/master/es6/2015-01/jan-28.md#experimental-new-directions-for-javascript-at-googlehttp://github.com/tc39/tc39-notes/blob/master/es6/2014-09/type_annotations.pdfhttp://www.youtube.com/watch?list=PLe--kalBDwjgrOqRSbJrJd-o7M3-KlOff&v=xAEY4Xmaep0http://conf.rollingscopes.com/coverage.htmlhttp://developers.google.com/v8/experimentshttp://docs.google.com/document/d/1Qk0qC4s_XNCLemj42FqfsRLp49nDQMZ1y7fwf5YjaI4/view

  • Sane/Stricter/Strong mode

    var

    , arguments

    29

  • Sane/Stricter/Strong mode

    undefined

    ==, !=, for-in, + , switch

    eval

    "weak mode" ( )

    30

  • SoundScript

    IDE

    strong mode gradual (sound) typing ,

    TypeScript ECMAScript

    31

  • SoundScript challenges ,

    ,

    , ..

    32

  • JavaScript ( )

    33

  • ?github.com/chicoxyzzy

    twitter.com/chicoxyzzy

    ru.linkedin.com/in/chicoxyzzy

    : bit.ly/JS_frontendconf2015

    34

    http://github.com/chicoxyzzyhttp://twitter.com/chicoxyzzyhttp://ru.linkedin.com/in/chicoxyzzyhttp://bit.ly/JS_frontendconf2015