SlideShare a Scribd company logo
1 of 38
Download to read offline
Ecosistema JavaScript
Daniel Pecos Martínez
@danielpecos
Betabeers Castellón
5 de Abril de 2017
Infancia
Historia de la WWW
● Marzo 1989: Tim Berners-Lee
propone la World Wide Web
● Octubre 1990: HTML, URI y
HTTP implementados. Server
HTTP y browser disponibles.
● 1991: Se abre a personas
externas al CERN
● 1994: Se crea el W3C, con
Tim como director
● 2009: Se crea la World Wide
Web Foundation
Web Dinámica
● 1995: Brendan Eich (Netscape) crea Javascript en 10 días
● Inicialmente llamado Mocha, renombrado a LiveScript en su
lanzamiento beta, conviertiéndose en JavaScript en la beta
3 de Netscape Navigator 2
● Netscape comienza a colaborar con Sun Microsystems para
integrar Java en Navigator y complementarlo con JavaScript
● Microsoft incluye VBScript en Explorer en 1996
● JScript, una versión por ingeniería inversa de JavaScript,
fue incluida en Internet Explorer 3. También hubo una
versión server-side
Primeros Navegadores
● 1992 - 1996: Mosaic
● 1994 - 2007: Netscape
Navigator
● 1995: Opera
● 1995 - 2016: Internet
Explorer
● 2002: Safari
● 2008: Chrome
● 2015: Edge
Evolución de los Navegadores
http://www.evolutionoftheweb.com/
Browser Wars
● Explosión en tecnologías web:
– IE3 introdujo soporte para CSS y
extensiones HTML, pero muy
diferentes a las ofrecidas en Netscape
– IE4 creó el concepto de Dynamic
HTML, pero las diferencias de
implementación del DOM (Document
Object Models) permanecían
– Netscape introduce <blink> y
<marquee>
● Múltiples navegadores competían
por el mercado
● IE dominó el mercado gracias a su
inclusión por defecto en Windows
Browser Wars
Browser Wars
Browser Wars
AJAX
● Intercambio asíncrono de XML
● Historia
– 1996 Explorer introduce el iframe
– 1998 OWA implementa el primer XMLHTTP
– 1999 IE 5 introduce el primer ActiveX XMLHTTP
● Adoptado por como XMLHttpRequest (XHR) por el resto de browsers
– 2006 W3c publica el primer borrador para XHR, adoptándolo
definitivamente en 2014
● Lógica multi-navegador compleja de conseguir
● Jquery
– https://github.com/jquery/jquery/blob/master/src/ajax.js ~ 900 líneas de
código
Adolescencia
Estandarización
● ECMAScript es la especificación del lenguaje
de scripting para la web. Creado en 1997
● Existen distintas implementaciones:
– JavaScript
– JScript
– ActionScript
● Es habitual que incluyan características no
definidas en el estándar
ECMAScript
Ver. Año Cambios más destacables
1 1997
2 1998
3 1999 Expresiones regulares, más estructuras de control, mejoras en errores
4 -
5 2009 strict mode, JSON e introspección
5.1 2011 Adecuación a estándar ISO
6 2015 clases, módulos, generadores, arrow functions, promesas
7 2016 Operador exponenciación
8 ? async/await
RIAs
● Flash
● Java Applets / JavaFX
● Google Web Toolkit
● MS Silverlight
● JavaScript
– YUI
– ExtJS – Sencha Touch
Flash
● Creado por Macromedia en
1996 y posteriormente
adquirido por Adobe
● Estándar de facto para
multimedia, juegos y
aplicaciones ricas
● Dispone de un diseñador
gráfico y permite implementar
lógica en ActionScript
● Proporciona acceso a
dispositivos hardware (GPS,
Micrófonos, Cámara, ...)
Apps Móviles
● Permiten crear
aplicaciones móviles
usando únicamente
HTML5 y JavaScript
● Desarrollos
multiplataforma
● Acceso mediante JS
a hardware nativo
Juventud
Single Page Applications
● Backbone (2010)
● Angular (2010)
● Ember (2011)
● Primeros frameworks
que explotan las
características de
HTML5
● Patrón MVC / MVP /
MVVM en frontend
● Acceso REST a
backend
JavaScript engine race
● SpiderMonkey
● Rhino
● V8
● Trident / Chakra
● Nashorn
● Nitro / JavaScriptCore
Node.js
● Creado por Ryan Dahl en
2009
● Server-side JS runtime,
construido sobre V8 de
Google
● Diseño asíncrono
(eventos), permitiendo un
fácil escalado
● API estándar
● NPM
Node.js
● Crecimiento
medio de 530
paquetes / día
Explosión de lenguajes *Script
● Se crean multitud de transpilers:
– CoffeeScript
– Dart
– Scala.js
– Elm
– TypeScript
● El lenguaje sigue sin ser del gusto de todos
● Libros como “Javascript, the Good Parts” gozan de
gran éxito
Explosión en tooling y librerías
● Grunt / Gulp
● Babel
● Webpack
● Yarn
● PM2
● Forever
● Bower
● Browserify
● Underscore / lodash
● Express
● Moment
● Socket.io
● Mocha / Sinon / Chai / Jasmine
/ Jest
● Cheerio
● Passport
● Mongoose
● q
Madurez
ES 6 / 7 / 8 / Next
● Revolución en lenguaje
– Módulos
– Introducción de clases
– Promesas / async – await
– Mejores estructuras de control
● Todos los navegadores evergreen implementan características
futuras del lenguaje
● Polyfill implementa mejoras (no sintácticas) sobre versiones
anteriores del lenguaje
● Babel permite usar características (de cualquier tipo) todavía no
disponibles en navegadores
Consolidación de SPAs
● Se afianza la tendencia y éxito de las webs SPA
como forma habitual de interacción con el usuario
● Los frameworks generan grandes cantidades de
código → requieren de nuevas técnicas de
optimización
– AOT
– Lazy Loading
– Tree Shaking
– Universal JS
React / Angular 2
● Basados en Shadow DOM / WebComponents
● React
– Librería para construcción de UIs
– Complementado por herramientas Flux
– Introducción de DOM virtual
● Angular 2
– Framework de aplicaciones
– 2 way data binding
● TypeScript vs JSX – (Microsoft + Google) vs Facebook
● VSCode es el IDE más usado para Angular 2
Apps Nativas JS
● Problema: las aplicaciones híbridas no ofrecen el
rendimiento ni la experiencia de usuario de las apps
nativas
● El desarrollo nativo es mucho más lento y costoso que el
desarrollo web
● → Nuevos frameworks para interfaces de usuario
nativas, con la experiencia del desarrollo en web:
– React Native - Facebook
– Native Script – Angular 2
● Aplicaciones nativas de escritorio: Electron
HTTP2
● Creado a partir de SPDY de Google
● Compatible (conceptualmente) con HTTP 1.1
● Proporciona
– Compresión en cabeceras HTTP
– Server Push
– Pipelining
– Multiplexación de la conexión TCP
GraphQL
●
Es un lenguaje de query para
APIs
● Desarrollado en 2015 por
Facebook
●
Los clientes piden exactamente
qué datos necesitan
– Permite una evolución simple de
las APIs
●
Fuerte interés por parte de la
comunidad
– Facebook, Github, Pinterest,
Coursera,...
WebAssembly
● Es un formato bytecode
portable para compilación
web
– Más compacto que JavaScript
– Más rápido de parsear
– Será usado como target en
multitud de compiladores
● Tiene sus orígenes en
asm.js
– Subconjunto de JS altamente
optimizable
¿Y sobre la interfaz?
● Frameworks
– Bootstrap
– Foundation
● Herramientas
– LESS
– SASS
– PostCSS
● Evolución
– CSS Flex Box
– CSS Grid
– Y muchos más...
Tooling habitual para el desarrollo 2017
● Frontend
– Bootstrap
– Foundation
– LESS / SASS /
PostCSS
– React / Angular CLI
– Webpack
– Babel
– Grunt / Gulp
● Backend
– Forever / PM2
– Mocha / Chai / Sinon
– Jasmine
– Jest
– Phantom.js
– Express / Passport
– Restify
– GraphQL
Gracias!
Daniel Pecos Martínez
@danielpecos

More Related Content

What's hot

Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael Gallego
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGailen Tecnologías
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Micael Gallego
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCMicael Gallego
 
Blazor, un nuevo framework .NET
Blazor, un nuevo framework .NETBlazor, un nuevo framework .NET
Blazor, un nuevo framework .NETJonathan González
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonCarlos Azaustre
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJCMicael Gallego
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Servidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios webServidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios webmonse_pacheco
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónVLASLOV
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Micael Gallego
 

What's hot (20)

Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Grails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacionalGrails y EC2 - De cero a multinacional
Grails y EC2 - De cero a multinacional
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Seminario Grails
Seminario GrailsSeminario Grails
Seminario Grails
 
Docker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJCDocker para Data Scientist - Master en Data Science URJC
Docker para Data Scientist - Master en Data Science URJC
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Blazor, un nuevo framework .NET
Blazor, un nuevo framework .NETBlazor, un nuevo framework .NET
Blazor, un nuevo framework .NET
 
Introducción a CoffeeScript
Introducción a CoffeeScriptIntroducción a CoffeeScript
Introducción a CoffeeScript
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
¿Por qué ruby on rails?
¿Por qué ruby on rails?¿Por qué ruby on rails?
¿Por qué ruby on rails?
 
Hack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un HackathonHack2Progress - Consejos para afrontar un Hackathon
Hack2Progress - Consejos para afrontar un Hackathon
 
Ruby on Rails y AngularJS
Ruby on Rails y AngularJSRuby on Rails y AngularJS
Ruby on Rails y AngularJS
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Servidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios webServidores de aplicaciones para servicios web
Servidores de aplicaciones para servicios web
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - Introducción
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
 

Similar to 20170405 - Ecosistema Javascript

Alta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginxAlta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginxPlain Concepts
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidadRaelyx Cordero
 
Desarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías webDesarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías webJulio Alfaro
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualizaciónMarcelo Ochoa
 
Características de 10 lenguajes de programación
Características de 10 lenguajes de programaciónCaracterísticas de 10 lenguajes de programación
Características de 10 lenguajes de programaciónAlexa Chisaguano
 
Panorama del ecosistema de software libre GIS 2009
Panorama del ecosistema de software libre GIS 2009Panorama del ecosistema de software libre GIS 2009
Panorama del ecosistema de software libre GIS 2009Miguel Montesinos
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015 Keopx
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAHelmilpa
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webRoberto Sanz Ciriano
 
Los navegadores web, historia, uso y estándares
Los navegadores web, historia, uso y estándaresLos navegadores web, historia, uso y estándares
Los navegadores web, historia, uso y estándaresHéctor Garduño Real
 

Similar to 20170405 - Ecosistema Javascript (20)

202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
sistema operativo android
sistema operativo androidsistema operativo android
sistema operativo android
 
Alta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginxAlta disponibilidad y balanceo de carga con Linux y nginx
Alta disponibilidad y balanceo de carga con Linux y nginx
 
Mono Develop
Mono DevelopMono Develop
Mono Develop
 
Navegadores
NavegadoresNavegadores
Navegadores
 
Maricielo
MaricieloMaricielo
Maricielo
 
Maricielo
MaricieloMaricielo
Maricielo
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
 
Apps Days Firefox OS
Apps Days Firefox OSApps Days Firefox OS
Apps Days Firefox OS
 
Desarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías webDesarrollos de aplicaciones móviles con tecnologías web
Desarrollos de aplicaciones móviles con tecnologías web
 
Firefox OS App Days USACH 2014
Firefox OS App Days USACH 2014Firefox OS App Days USACH 2014
Firefox OS App Days USACH 2014
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Características de 10 lenguajes de programación
Características de 10 lenguajes de programaciónCaracterísticas de 10 lenguajes de programación
Características de 10 lenguajes de programación
 
Panorama del ecosistema de software libre GIS 2009
Panorama del ecosistema de software libre GIS 2009Panorama del ecosistema de software libre GIS 2009
Panorama del ecosistema de software libre GIS 2009
 
Navegadores
NavegadoresNavegadores
Navegadores
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones web
 
Programacion web
Programacion webProgramacion web
Programacion web
 
Los navegadores web, historia, uso y estándares
Los navegadores web, historia, uso y estándaresLos navegadores web, historia, uso y estándares
Los navegadores web, historia, uso y estándares
 

More from Daniel Pecos Martínez

More from Daniel Pecos Martínez (7)

Object Oriented Programming vs Functional Programming - Valencia.rb
Object Oriented Programming vs Functional Programming - Valencia.rbObject Oriented Programming vs Functional Programming - Valencia.rb
Object Oriented Programming vs Functional Programming - Valencia.rb
 
T2 - JDBC
T2 - JDBCT2 - JDBC
T2 - JDBC
 
T3 - JPA
T3 - JPAT3 - JPA
T3 - JPA
 
T1 - Introducción
T1 - IntroducciónT1 - Introducción
T1 - Introducción
 
Tema 3 - Seguridad en Internet
Tema 3 - Seguridad en InternetTema 3 - Seguridad en Internet
Tema 3 - Seguridad en Internet
 
Tema 2 - Introducción a la Criptografía
Tema 2 - Introducción a la CriptografíaTema 2 - Introducción a la Criptografía
Tema 2 - Introducción a la Criptografía
 
Tema 1 - Introducción a la Seguridad Informática
Tema 1 - Introducción a la Seguridad Informática Tema 1 - Introducción a la Seguridad Informática
Tema 1 - Introducción a la Seguridad Informática
 

20170405 - Ecosistema Javascript

  • 1. Ecosistema JavaScript Daniel Pecos Martínez @danielpecos Betabeers Castellón 5 de Abril de 2017
  • 3. Historia de la WWW ● Marzo 1989: Tim Berners-Lee propone la World Wide Web ● Octubre 1990: HTML, URI y HTTP implementados. Server HTTP y browser disponibles. ● 1991: Se abre a personas externas al CERN ● 1994: Se crea el W3C, con Tim como director ● 2009: Se crea la World Wide Web Foundation
  • 4.
  • 5. Web Dinámica ● 1995: Brendan Eich (Netscape) crea Javascript en 10 días ● Inicialmente llamado Mocha, renombrado a LiveScript en su lanzamiento beta, conviertiéndose en JavaScript en la beta 3 de Netscape Navigator 2 ● Netscape comienza a colaborar con Sun Microsystems para integrar Java en Navigator y complementarlo con JavaScript ● Microsoft incluye VBScript en Explorer en 1996 ● JScript, una versión por ingeniería inversa de JavaScript, fue incluida en Internet Explorer 3. También hubo una versión server-side
  • 6. Primeros Navegadores ● 1992 - 1996: Mosaic ● 1994 - 2007: Netscape Navigator ● 1995: Opera ● 1995 - 2016: Internet Explorer ● 2002: Safari ● 2008: Chrome ● 2015: Edge
  • 7. Evolución de los Navegadores http://www.evolutionoftheweb.com/
  • 8.
  • 9. Browser Wars ● Explosión en tecnologías web: – IE3 introdujo soporte para CSS y extensiones HTML, pero muy diferentes a las ofrecidas en Netscape – IE4 creó el concepto de Dynamic HTML, pero las diferencias de implementación del DOM (Document Object Models) permanecían – Netscape introduce <blink> y <marquee> ● Múltiples navegadores competían por el mercado ● IE dominó el mercado gracias a su inclusión por defecto en Windows
  • 13. AJAX ● Intercambio asíncrono de XML ● Historia – 1996 Explorer introduce el iframe – 1998 OWA implementa el primer XMLHTTP – 1999 IE 5 introduce el primer ActiveX XMLHTTP ● Adoptado por como XMLHttpRequest (XHR) por el resto de browsers – 2006 W3c publica el primer borrador para XHR, adoptándolo definitivamente en 2014 ● Lógica multi-navegador compleja de conseguir ● Jquery – https://github.com/jquery/jquery/blob/master/src/ajax.js ~ 900 líneas de código
  • 15. Estandarización ● ECMAScript es la especificación del lenguaje de scripting para la web. Creado en 1997 ● Existen distintas implementaciones: – JavaScript – JScript – ActionScript ● Es habitual que incluyan características no definidas en el estándar
  • 16. ECMAScript Ver. Año Cambios más destacables 1 1997 2 1998 3 1999 Expresiones regulares, más estructuras de control, mejoras en errores 4 - 5 2009 strict mode, JSON e introspección 5.1 2011 Adecuación a estándar ISO 6 2015 clases, módulos, generadores, arrow functions, promesas 7 2016 Operador exponenciación 8 ? async/await
  • 17. RIAs ● Flash ● Java Applets / JavaFX ● Google Web Toolkit ● MS Silverlight ● JavaScript – YUI – ExtJS – Sencha Touch
  • 18. Flash ● Creado por Macromedia en 1996 y posteriormente adquirido por Adobe ● Estándar de facto para multimedia, juegos y aplicaciones ricas ● Dispone de un diseñador gráfico y permite implementar lógica en ActionScript ● Proporciona acceso a dispositivos hardware (GPS, Micrófonos, Cámara, ...)
  • 19. Apps Móviles ● Permiten crear aplicaciones móviles usando únicamente HTML5 y JavaScript ● Desarrollos multiplataforma ● Acceso mediante JS a hardware nativo
  • 21. Single Page Applications ● Backbone (2010) ● Angular (2010) ● Ember (2011) ● Primeros frameworks que explotan las características de HTML5 ● Patrón MVC / MVP / MVVM en frontend ● Acceso REST a backend
  • 22. JavaScript engine race ● SpiderMonkey ● Rhino ● V8 ● Trident / Chakra ● Nashorn ● Nitro / JavaScriptCore
  • 23. Node.js ● Creado por Ryan Dahl en 2009 ● Server-side JS runtime, construido sobre V8 de Google ● Diseño asíncrono (eventos), permitiendo un fácil escalado ● API estándar ● NPM
  • 24. Node.js ● Crecimiento medio de 530 paquetes / día
  • 25. Explosión de lenguajes *Script ● Se crean multitud de transpilers: – CoffeeScript – Dart – Scala.js – Elm – TypeScript ● El lenguaje sigue sin ser del gusto de todos ● Libros como “Javascript, the Good Parts” gozan de gran éxito
  • 26. Explosión en tooling y librerías ● Grunt / Gulp ● Babel ● Webpack ● Yarn ● PM2 ● Forever ● Bower ● Browserify ● Underscore / lodash ● Express ● Moment ● Socket.io ● Mocha / Sinon / Chai / Jasmine / Jest ● Cheerio ● Passport ● Mongoose ● q
  • 28. ES 6 / 7 / 8 / Next ● Revolución en lenguaje – Módulos – Introducción de clases – Promesas / async – await – Mejores estructuras de control ● Todos los navegadores evergreen implementan características futuras del lenguaje ● Polyfill implementa mejoras (no sintácticas) sobre versiones anteriores del lenguaje ● Babel permite usar características (de cualquier tipo) todavía no disponibles en navegadores
  • 29. Consolidación de SPAs ● Se afianza la tendencia y éxito de las webs SPA como forma habitual de interacción con el usuario ● Los frameworks generan grandes cantidades de código → requieren de nuevas técnicas de optimización – AOT – Lazy Loading – Tree Shaking – Universal JS
  • 30.
  • 31. React / Angular 2 ● Basados en Shadow DOM / WebComponents ● React – Librería para construcción de UIs – Complementado por herramientas Flux – Introducción de DOM virtual ● Angular 2 – Framework de aplicaciones – 2 way data binding ● TypeScript vs JSX – (Microsoft + Google) vs Facebook ● VSCode es el IDE más usado para Angular 2
  • 32. Apps Nativas JS ● Problema: las aplicaciones híbridas no ofrecen el rendimiento ni la experiencia de usuario de las apps nativas ● El desarrollo nativo es mucho más lento y costoso que el desarrollo web ● → Nuevos frameworks para interfaces de usuario nativas, con la experiencia del desarrollo en web: – React Native - Facebook – Native Script – Angular 2 ● Aplicaciones nativas de escritorio: Electron
  • 33. HTTP2 ● Creado a partir de SPDY de Google ● Compatible (conceptualmente) con HTTP 1.1 ● Proporciona – Compresión en cabeceras HTTP – Server Push – Pipelining – Multiplexación de la conexión TCP
  • 34. GraphQL ● Es un lenguaje de query para APIs ● Desarrollado en 2015 por Facebook ● Los clientes piden exactamente qué datos necesitan – Permite una evolución simple de las APIs ● Fuerte interés por parte de la comunidad – Facebook, Github, Pinterest, Coursera,...
  • 35. WebAssembly ● Es un formato bytecode portable para compilación web – Más compacto que JavaScript – Más rápido de parsear – Será usado como target en multitud de compiladores ● Tiene sus orígenes en asm.js – Subconjunto de JS altamente optimizable
  • 36. ¿Y sobre la interfaz? ● Frameworks – Bootstrap – Foundation ● Herramientas – LESS – SASS – PostCSS ● Evolución – CSS Flex Box – CSS Grid – Y muchos más...
  • 37. Tooling habitual para el desarrollo 2017 ● Frontend – Bootstrap – Foundation – LESS / SASS / PostCSS – React / Angular CLI – Webpack – Babel – Grunt / Gulp ● Backend – Forever / PM2 – Mocha / Chai / Sinon – Jasmine – Jest – Phantom.js – Express / Passport – Restify – GraphQL