Scala.js at code.talks 2014, Hamburg

Lutz Hühnken
Lutz HühnkenHead of Engineering at Upvest
Lutz Hühnken11.09.2015
SCALA.JS
Lutz Hühnken
JavaScript
Über mich
• Java seit ~1997
• Im Laufe der Zeit verschiedenste Rollen: Consultant, Architekt, IT
Projektleiter, IT Manager, Scrum Master.
• Meine “Entdeckung” von Scala (ca. 2011) hat mich wieder zum
Programmieren gebracht
• Seit 2012 Entwicklung mit Scala (vor allem REST-Services für mobile
Anwendungen)
• Seit April 2014 Trainer und Consultant bei Typesafe
scala.js code.talks 2014 2
Front-End / JavaScript Erfahrungen
scala.js code.talks 2014 3
• Backoffice für Reise-Website mit GWT
• Migration umfangreicher Set-Top-Box / TV Applikation von Flash nach
“HTML5” (JavaScript/jQuery)
• PhoneGap-Applikation mit jqMobi, require.js, underscore.js, backbone.js
JavaScript
JavaScript ist so eine Sache..
scala.js code.talks 2014 5
• Eine moderne Web-Anwendung ist im wesentlichen eine JavaScript-
Anwendung
• JavaScript ist plattformübergreifend verfügbar, erfordert keinerlei
Installation, ist von Nutzern akzeptiert
• Aber…
JavaScript ist so eine Sache..
scala.js code.talks 2014 6
• Andererseits betreiben viele Leute einigen Aufwand, um nicht in JavaScript
programmieren zu müssen
• CoffeeScript, TypeScript, Dart, ClojureScript, Haste, Ceylon, emscripten…
• Platform ja, Sprache nein?
Und jetzt auch noch Scala..
scala.js code.talks 2014 7
Wenn man Scala mag, warum es nicht auch für das Front-End verwenden?
Scala.js ermöglicht dies.
Scala.js
Überblick
scala.js code.talks 2014 9
Bild von Sébastien Doeraene
Compiler Plug-in
• scala-js sbt Plug-In erweitert Scala-Compiler um ein Compiler-Plug-
In
• Compiliert den AST nach JavaScript
• erzeugt auch “Source Map”
• optimiert Code (Google Closure)
• bester Startpunkt: sbt sample project
scala.js code.talks 2014 10
Pipeline
scala.js code.talks 2014 11
Bild von Sébastien Doeraene
Scala.js Eigenschaften
• uneingeschränkter DOM Zugriff
• sbt Integration
• Source Maps
• Statische Typisierung
• Closure Compiler
scala.js code.talks 2014 12
(Umschalten zu Source Code)
Schön und gut.. was noch?
Java-VM vs. JS-Runtime
• Ziel: Bekannte Abstraktionen aus Scala auch auf JS-Runtime
verwenden.
• Vieles (HOF, Patter matching etc.) lässt sich übersetzen, vergl.
Code, den wir gerade gesehen haben.
• Aber nicht alles..
scala.js code.talks 2014 15
Nebenläufigkeit
• JVM: Threads.
• JavaScript: Callbacks.
• Gemeinsame Abstraktion?
scala.js code.talks 2014 16
Akka
scala.js code.talks 2014 17
Was ist ein Aktor?
• Hat eine Mailbox (Queue)
• Empfängt Nachrichten
• Nachrichten werden sequentiell abgearbeiten
• Aktoren-Framework für die JVM: Akka
scala.js code.talks 2014 18
Akka.js
• Akka-Implementierung in Scala.js
• Läuft leider noch nicht, kann nichts zeigen 
• Aber ist in Arbeit (Kooperation EPFL/Typesafe)!
• Prototyp (veraltet):
https://github.com/sjrd/scala-js-actors
scala.js code.talks 2014 19
Li Haoyi
• https://github.com/lihaoyi/scalatags
• https://github.com/lihaoyi/scala.rx
• http://www.scala-js-fiddle.com
scala.js code.talks 2014 20
Danke schön!
Scala JS Hompage
http://www.scala-js.org
Bitte folgt mir auf Twitter:
https://twitter.com/lutzhuehnken
scala.js code.talks 2014 21
1 of 21

Recommended

Never Code Alone: Von Symfony Forms zu einer SPA auf APIs by
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsStefan Adolf
213 views17 slides
Api services by
Api servicesApi services
Api servicesJan Hentschel
1.9K views19 slides
JavaScript-Erweiterungen für UI und UX by
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UXKai Donato
2.7K views17 slides
WebSocket my APEX! by
WebSocket my APEX!WebSocket my APEX!
WebSocket my APEX!Kai Donato
1.5K views34 slides
Avoid Network-Issues and Polling by
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and PollingKai Donato
851 views34 slides
Chefkoch goes Drupal8 by
Chefkoch goes Drupal8Chefkoch goes Drupal8
Chefkoch goes Drupal8Per Bernhardt
481 views106 slides

More Related Content

What's hot

High Traffic Websites mit Craft CMS umsetzen by
High Traffic Websites mit Craft CMS umsetzenHigh Traffic Websites mit Craft CMS umsetzen
High Traffic Websites mit Craft CMS umsetzenweb-solutions
19 views12 slides
Umzug eines Hochlast-Dienstes by
Umzug eines Hochlast-DienstesUmzug eines Hochlast-Dienstes
Umzug eines Hochlast-DienstesPer Bernhardt
382 views43 slides
Continiuous Integration and Delivery with Bamboo by
Continiuous Integration and Delivery with BambooContiniuous Integration and Delivery with Bamboo
Continiuous Integration and Delivery with BambooPer Bernhardt
1.4K views15 slides
Bernhard Wick - appserver.io - code.talks 2015 by
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015AboutYouGmbH
727 views42 slides
Ruby on Rails in a metro session by
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
432 views42 slides
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE by
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEMVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEOPEN KNOWLEDGE GmbH
989 views17 slides

What's hot(20)

High Traffic Websites mit Craft CMS umsetzen by web-solutions
High Traffic Websites mit Craft CMS umsetzenHigh Traffic Websites mit Craft CMS umsetzen
High Traffic Websites mit Craft CMS umsetzen
web-solutions19 views
Umzug eines Hochlast-Dienstes by Per Bernhardt
Umzug eines Hochlast-DienstesUmzug eines Hochlast-Dienstes
Umzug eines Hochlast-Dienstes
Per Bernhardt382 views
Continiuous Integration and Delivery with Bamboo by Per Bernhardt
Continiuous Integration and Delivery with BambooContiniuous Integration and Delivery with Bamboo
Continiuous Integration and Delivery with Bamboo
Per Bernhardt1.4K views
Bernhard Wick - appserver.io - code.talks 2015 by AboutYouGmbH
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
AboutYouGmbH727 views
Ruby on Rails in a metro session by Virttoo org
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
Virttoo org432 views
Das ist doch alles nur Frontend - Wer braucht da schon Architektur? by OPEN KNOWLEDGE GmbH
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Cloud at massive scale and incredible speed, Ekkard Schnedermann berichtet vo... by Ekkard Schnedermann
Cloud at massive scale and incredible speed, Ekkard Schnedermann berichtet vo...Cloud at massive scale and incredible speed, Ekkard Schnedermann berichtet vo...
Cloud at massive scale and incredible speed, Ekkard Schnedermann berichtet vo...
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby by vesparun
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
vesparun580 views
Acceptance Testing - Automatisierte Web App Tests mit CasperJS by Björn Wilmsmann
Acceptance Testing - Automatisierte Web App Tests mit CasperJSAcceptance Testing - Automatisierte Web App Tests mit CasperJS
Acceptance Testing - Automatisierte Web App Tests mit CasperJS
Björn Wilmsmann2.5K views
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No... by Peter Hecker
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
Peter Hecker371 views
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf... by Jürgen Gutsch
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Jürgen Gutsch1.2K views
Nagios Conference 2006 | Alternative Statusmaps mit NagVis by Michael Lübben by NETWAYS
Nagios Conference 2006 | Alternative Statusmaps mit NagVis by Michael LübbenNagios Conference 2006 | Alternative Statusmaps mit NagVis by Michael Lübben
Nagios Conference 2006 | Alternative Statusmaps mit NagVis by Michael Lübben
NETWAYS45 views
CQRS in der Praxis - Newsletter Double-Opt-In by PHP in DD
CQRS in der Praxis - Newsletter Double-Opt-InCQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-In
PHP in DD2.5K views
Dienste als Nomaden - Heute in AWS und morgen in Azure by x-celerate
Dienste als Nomaden - Heute in AWS und morgen in AzureDienste als Nomaden - Heute in AWS und morgen in Azure
Dienste als Nomaden - Heute in AWS und morgen in Azure
x-celerate211 views
Adaptive Cards - User Interfaces with JSON by Christian Nagel
Adaptive Cards - User Interfaces with JSONAdaptive Cards - User Interfaces with JSON
Adaptive Cards - User Interfaces with JSON
Christian Nagel1.2K views

Similar to Scala.js at code.talks 2014, Hamburg

DevOps der Triple-E Klasse - Eclipse DemoCamp by
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
1.6K views38 slides
Grails im Überblick und in der Praxis by
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
2.4K views56 slides
Agile Softwareentwicklung mit Rails by
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsHussein Morsy
1.5K views72 slides
Die Java Plattform Strategie by
Die Java Plattform StrategieDie Java Plattform Strategie
Die Java Plattform StrategieJava Usergroup Berlin-Brandenburg
3K views41 slides
JavaScript für Java-Entwickler W-JAX 2013 by
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
1.6K views57 slides
Creasoft-Akademie - Mobile Multiplattform Apps by
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
1.4K views45 slides

Similar to Scala.js at code.talks 2014, Hamburg(20)

DevOps der Triple-E Klasse - Eclipse DemoCamp by Werner Keil
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
Werner Keil1.6K views
Grails im Überblick und in der Praxis by Tobias Kraft
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
Tobias Kraft2.4K views
Agile Softwareentwicklung mit Rails by Hussein Morsy
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
Hussein Morsy1.5K views
JavaScript für Java-Entwickler W-JAX 2013 by Oliver Zeigermann
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
Oliver Zeigermann1.6K views
Creasoft-Akademie - Mobile Multiplattform Apps by Creasoft AG
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft AG1.4K views
Boost your APEX Deployment and Provisioning with Docker by Steven Grzbielok
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
Steven Grzbielok1.3K views
Reif? Scala für Enterprise-Applikationen by adesso AG
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationen
adesso AG830 views
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded! by adesso AG
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
adesso AG4.4K views
Webcast Nr. 3 - Java Entwicklung mit der SAP Cloud Platform by Patric Dahse
Webcast Nr. 3 - Java Entwicklung mit der SAP Cloud PlatformWebcast Nr. 3 - Java Entwicklung mit der SAP Cloud Platform
Webcast Nr. 3 - Java Entwicklung mit der SAP Cloud Platform
Patric Dahse261 views
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i... by OPEN KNOWLEDGE GmbH
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
Rufen Sie nicht an – wir rufen Sie an! | Server-sent Events und Web-Sockets i...
OPEN KNOWLEDGE GmbH1.2K views
Bob the Builder - Build & Deploy von ADF Enterprise Anwendungen by Torsten Kleiber
Bob the Builder - Build & Deploy von ADF Enterprise AnwendungenBob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Bob the Builder - Build & Deploy von ADF Enterprise Anwendungen
Torsten Kleiber244 views
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick by Udo Pracht
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
Udo Pracht2.8K views
2005 - NRW Conf: Design, Entwicklung und Tests by Daniel Fisher
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests
Daniel Fisher278 views
Collaboration Days 2011 - Damit die Tester schneller ran können. by David Schneider
Collaboration Days 2011 - Damit die Tester schneller ran können.Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.
David Schneider495 views
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript by OPEN KNOWLEDGE GmbH
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScriptJSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
OPEN KNOWLEDGE GmbH1.9K views

More from Lutz Hühnken

Lagom at Java Forum Nord, October 20, 2016 by
Lagom at Java Forum Nord, October 20, 2016Lagom at Java Forum Nord, October 20, 2016
Lagom at Java Forum Nord, October 20, 2016Lutz Hühnken
613 views63 slides
Lagom at hybris Reactive Software Munich Meetup, April 13, 2016 by
Lagom at hybris Reactive Software Munich Meetup, April 13, 2016Lagom at hybris Reactive Software Munich Meetup, April 13, 2016
Lagom at hybris Reactive Software Munich Meetup, April 13, 2016Lutz Hühnken
957 views47 slides
JVM Concurrency auf der JavaLand am 8. März 2016 by
JVM Concurrency auf der JavaLand am 8. März 2016JVM Concurrency auf der JavaLand am 8. März 2016
JVM Concurrency auf der JavaLand am 8. März 2016Lutz Hühnken
988 views63 slides
Building Applications with the Typesafe Reactive Platform at Skills Matter, L... by
Building Applications with the Typesafe Reactive Platform at Skills Matter, L...Building Applications with the Typesafe Reactive Platform at Skills Matter, L...
Building Applications with the Typesafe Reactive Platform at Skills Matter, L...Lutz Hühnken
479 views37 slides
JVM Concurrency on Devoxx at Nov 12 2015 by
JVM Concurrency on Devoxx at Nov 12 2015JVM Concurrency on Devoxx at Nov 12 2015
JVM Concurrency on Devoxx at Nov 12 2015Lutz Hühnken
1.4K views64 slides
Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015 by
Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015
Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015Lutz Hühnken
1.4K views48 slides

More from Lutz Hühnken(11)

Lagom at Java Forum Nord, October 20, 2016 by Lutz Hühnken
Lagom at Java Forum Nord, October 20, 2016Lagom at Java Forum Nord, October 20, 2016
Lagom at Java Forum Nord, October 20, 2016
Lutz Hühnken613 views
Lagom at hybris Reactive Software Munich Meetup, April 13, 2016 by Lutz Hühnken
Lagom at hybris Reactive Software Munich Meetup, April 13, 2016Lagom at hybris Reactive Software Munich Meetup, April 13, 2016
Lagom at hybris Reactive Software Munich Meetup, April 13, 2016
Lutz Hühnken957 views
JVM Concurrency auf der JavaLand am 8. März 2016 by Lutz Hühnken
JVM Concurrency auf der JavaLand am 8. März 2016JVM Concurrency auf der JavaLand am 8. März 2016
JVM Concurrency auf der JavaLand am 8. März 2016
Lutz Hühnken988 views
Building Applications with the Typesafe Reactive Platform at Skills Matter, L... by Lutz Hühnken
Building Applications with the Typesafe Reactive Platform at Skills Matter, L...Building Applications with the Typesafe Reactive Platform at Skills Matter, L...
Building Applications with the Typesafe Reactive Platform at Skills Matter, L...
Lutz Hühnken479 views
JVM Concurrency on Devoxx at Nov 12 2015 by Lutz Hühnken
JVM Concurrency on Devoxx at Nov 12 2015JVM Concurrency on Devoxx at Nov 12 2015
JVM Concurrency on Devoxx at Nov 12 2015
Lutz Hühnken1.4K views
Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015 by Lutz Hühnken
Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015
Concurrency-Modelle auf der JVM auf der w-jax 3.11.2015
Lutz Hühnken1.4K views
Scala in Practice at Jazoon Tech Day, Oct 23 2015, Zurich by Lutz Hühnken
Scala in Practice at Jazoon Tech Day, Oct 23 2015, ZurichScala in Practice at Jazoon Tech Day, Oct 23 2015, Zurich
Scala in Practice at Jazoon Tech Day, Oct 23 2015, Zurich
Lutz Hühnken530 views
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015 by Lutz Hühnken
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015JVM Concurreny Models at code.talks, Hamburg, 30.9.2015
JVM Concurreny Models at code.talks, Hamburg, 30.9.2015
Lutz Hühnken1.5K views
A Pragmatic View of Reactive by Lutz Hühnken
A Pragmatic View of ReactiveA Pragmatic View of Reactive
A Pragmatic View of Reactive
Lutz Hühnken8.9K views
Reactive Slick at Scala User Group Vienna May 20 2015 by Lutz Hühnken
Reactive Slick at Scala User Group Vienna May 20 2015Reactive Slick at Scala User Group Vienna May 20 2015
Reactive Slick at Scala User Group Vienna May 20 2015
Lutz Hühnken1.1K views
Von "Enterprise" zu "Reactive" (JAX 2015) by Lutz Hühnken
Von "Enterprise" zu "Reactive" (JAX 2015)Von "Enterprise" zu "Reactive" (JAX 2015)
Von "Enterprise" zu "Reactive" (JAX 2015)
Lutz Hühnken1.6K views

Scala.js at code.talks 2014, Hamburg

  • 2. Über mich • Java seit ~1997 • Im Laufe der Zeit verschiedenste Rollen: Consultant, Architekt, IT Projektleiter, IT Manager, Scrum Master. • Meine “Entdeckung” von Scala (ca. 2011) hat mich wieder zum Programmieren gebracht • Seit 2012 Entwicklung mit Scala (vor allem REST-Services für mobile Anwendungen) • Seit April 2014 Trainer und Consultant bei Typesafe scala.js code.talks 2014 2
  • 3. Front-End / JavaScript Erfahrungen scala.js code.talks 2014 3 • Backoffice für Reise-Website mit GWT • Migration umfangreicher Set-Top-Box / TV Applikation von Flash nach “HTML5” (JavaScript/jQuery) • PhoneGap-Applikation mit jqMobi, require.js, underscore.js, backbone.js
  • 5. JavaScript ist so eine Sache.. scala.js code.talks 2014 5 • Eine moderne Web-Anwendung ist im wesentlichen eine JavaScript- Anwendung • JavaScript ist plattformübergreifend verfügbar, erfordert keinerlei Installation, ist von Nutzern akzeptiert • Aber…
  • 6. JavaScript ist so eine Sache.. scala.js code.talks 2014 6 • Andererseits betreiben viele Leute einigen Aufwand, um nicht in JavaScript programmieren zu müssen • CoffeeScript, TypeScript, Dart, ClojureScript, Haste, Ceylon, emscripten… • Platform ja, Sprache nein?
  • 7. Und jetzt auch noch Scala.. scala.js code.talks 2014 7 Wenn man Scala mag, warum es nicht auch für das Front-End verwenden? Scala.js ermöglicht dies.
  • 9. Überblick scala.js code.talks 2014 9 Bild von Sébastien Doeraene
  • 10. Compiler Plug-in • scala-js sbt Plug-In erweitert Scala-Compiler um ein Compiler-Plug- In • Compiliert den AST nach JavaScript • erzeugt auch “Source Map” • optimiert Code (Google Closure) • bester Startpunkt: sbt sample project scala.js code.talks 2014 10
  • 11. Pipeline scala.js code.talks 2014 11 Bild von Sébastien Doeraene
  • 12. Scala.js Eigenschaften • uneingeschränkter DOM Zugriff • sbt Integration • Source Maps • Statische Typisierung • Closure Compiler scala.js code.talks 2014 12
  • 14. Schön und gut.. was noch?
  • 15. Java-VM vs. JS-Runtime • Ziel: Bekannte Abstraktionen aus Scala auch auf JS-Runtime verwenden. • Vieles (HOF, Patter matching etc.) lässt sich übersetzen, vergl. Code, den wir gerade gesehen haben. • Aber nicht alles.. scala.js code.talks 2014 15
  • 16. Nebenläufigkeit • JVM: Threads. • JavaScript: Callbacks. • Gemeinsame Abstraktion? scala.js code.talks 2014 16
  • 18. Was ist ein Aktor? • Hat eine Mailbox (Queue) • Empfängt Nachrichten • Nachrichten werden sequentiell abgearbeiten • Aktoren-Framework für die JVM: Akka scala.js code.talks 2014 18
  • 19. Akka.js • Akka-Implementierung in Scala.js • Läuft leider noch nicht, kann nichts zeigen  • Aber ist in Arbeit (Kooperation EPFL/Typesafe)! • Prototyp (veraltet): https://github.com/sjrd/scala-js-actors scala.js code.talks 2014 19
  • 20. Li Haoyi • https://github.com/lihaoyi/scalatags • https://github.com/lihaoyi/scala.rx • http://www.scala-js-fiddle.com scala.js code.talks 2014 20
  • 21. Danke schön! Scala JS Hompage http://www.scala-js.org Bitte folgt mir auf Twitter: https://twitter.com/lutzhuehnken scala.js code.talks 2014 21