history lesson picture -...

43
Media Partner Organizers Top Media Partner General Partner Supporters Oscar Renalias Accenture Next-generation JavaScript October 17, 2014

Upload: others

Post on 09-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Media Partner

Organizers

Top Media Partner

General Partner

Supporters

Oscar RenaliasAccenture

Next-generation JavaScriptOctober 17, 2014

Page 2: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Ask questions or rate the Speaker

www.sli.do/openslava

Page 3: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

@oscarrenalias

github.com/oscarrenalias

[email protected]

[email protected]

www.linkedin.com/oscarrenalias

www.slideshare.net/oscarrenalias

Page 4: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated
Page 5: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated
Page 6: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

History lesson picture

(Very) Brief history of JavaScript

Page 7: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

In the beginning there was JavaScript… on Netscape Navigator

Page 8: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

ECMAScript, the JavaScript standardization

1.0 1.1 … 1.8.5

Page 9: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

The Ajax era, and the rest is history

Page 10: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Maybe JavaScript and the browser can be used to run complex and engaging applications?

Page 11: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

It’s time to raise the JavaScript game

Page 12: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Platforms

Languages

Frameworks

Standards

Tools

Page 13: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

JavaScript standards, catching up with the times

Page 14: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

ECMAScript 6

ECMAScript is the standardized version of JavaScript

• Classes

• Block scoping with ‘let’

• Destructuring

• Generators

• Comprehensions

• Modules

• Promises

• Reflection API

• Tail calls

• Template literals

• (and many more!)

Page 15: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

ECMAScript 6 – Classes and objects!

Page 16: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

ECMAScript 6 – Promises, or “say goodbye to callback spaghetti”

Page 17: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

ECMAScript 6 - Modules

Export functionality (classes, functions,

variables) from a module

Use exported functionality from

anywhere else

Page 18: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

ECMAScript 6 Browser Support

http://kangax.github.io/compat-table/es6/

Page 19: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Traceur is a JavaScript.next-to-JavaScript of today compiler

Page 20: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Languages, or “what if JavaScript is simply to become the assembly language of the web”?

Page 21: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Transpilers

TranspilerLanguage

Page 22: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Dart

• Classes

• Optional typing

• Annotations

• Futures

• Named constructors

• (and many more)

Page 23: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

TypeScript

• Classes

• Interfaces

• Modules

• Optional typing

• Generics

Page 24: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Honorable Mentions

ClojureScript Scala.js CoffeeScript

Page 25: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Emscripten

Emscripten

(LLVM)

CC++

Page 26: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Raising the game with JavaScript frameworks

Page 27: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

JavaScript Frameworks

• MV*

• Component-oriented

• Isomorphic

Page 28: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

MV* Frameworks

• Generally MV* - MVC, MVP, MVVM, etc

• Support for 2-way data binding

• Integration with HTML5, e.g. back button history API support

• Templates

Page 29: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Component-oriented frameworks

Applications are made up of

independent components

that use each other to

display data

• React

• Polymer

• X-Tag

• W3C Component Spec

Page 30: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Isomorphic JavaScript – write code once, run in client *and* server

Meteor

Derby

Isomorphic JavaScript frameworks use

techniques such as Browserify and virtual

DOMs to be able to render content and

templates regardless of where the

application runs

Page 31: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

JavaScript Next-Generation Tooling

Page 32: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Development automation with Grunt and Gulp

• Live reload

• Trask triggering based on changes to files

• Automated minification and concatenation

• Code compilation, integration with Dart, TypeScript,

others

• Packaging and Deployment

• Automated LESS/SASS compilation

• …and many more!

Page 33: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Automating application bootstrapping and code generation with Yeoman generators

Page 34: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Package and dependency management

Bower (browser development) and NPM (Node.js

development) provide world class support to manage 3rd party

dependencies for any type of JavaScript application.

Page 35: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Testing and Quality

Plato

Istambul

ScanJs

• Unit testing

• Mocks and spies

• Browser testing

• Rule-based code checks

• Complexity analysis

• Test coverage

• Static code analysis mocha

Page 36: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Platforms

Page 37: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

We wouldn’t be able to develop next-gen JavaScript applications without HTML5, CSS3 and the HTML APIs

http://platform.html5.org

Page 38: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

And state-of-the art JavaScript virtual machines

(SpiderMonkey) (Nitro)

Page 39: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

JavaScript on the server too?

Page 40: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Node.js is an asynchronous, event-based JavaScript platform

for server-side applications running on the V8 JavaScript

engine

Page 41: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Nashorn

Page 42: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

To conclude…

Page 43: History lesson picture - OpenSlavaopenslava.sk/2014/Presentations/Next-generation-JavaScript_Oscar-Renalias.pdf•Live reload •Trask triggering based on changes to files •Automated

Platforms

Languages

TypeScript Dart CoffeeScript ClojureScript

Frameworks

MV* DartAngular

V8SpiderMonkeyNitro NashornNode.js

Tooling

Yeoman

Gulp

Grunt

Standards

HTML5

APIs

JavaScript

CSS

Scala.jsTranspilers,

Emscripten

React,

Flight, etc

JsHint

SonarQube

Istambul,

Plato, etc

Isomorphic

Frameworks

Express,

Koa, etc

ECMAScript