Slide 1

Slide 1 text

Lutz Hühnken 24.03.24 SCALA.JS Lutz Hühnken JavaScript

Slide 2

Slide 2 text

Ü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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

JavaScript

Slide 5

Slide 5 text

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…

Slide 6

Slide 6 text

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?

Slide 7

Slide 7 text

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.

Slide 8

Slide 8 text

Scala.js

Slide 9

Slide 9 text

Überblick scala.js code.talks 2014 9 Bild von Sébastien Doeraene

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Pipeline scala.js code.talks 2014 11 Bild von Sébastien Doeraene

Slide 12

Slide 12 text

Scala.js Eigenschaften • uneingeschränkter DOM Zugriff • sbt Integration • Source Maps • Statische Typisierung • Closure Compiler scala.js code.talks 2014 12

Slide 13

Slide 13 text

(Umschalten zu Source Code)

Slide 14

Slide 14 text

Schön und gut.. was noch?

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Nebenläufigkeit • JVM: Threads. • JavaScript: Callbacks. • Gemeinsame Abstraktion? scala.js code.talks 2014 16

Slide 17

Slide 17 text

Akka scala.js code.talks 2014 17

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Akka.js • Akka-Implementierung in Scala.js • Läuft leider noch nicht, kann nichts zeigen L • Aber ist in Arbeit (Kooperation EPFL/Typesafe)! • Prototyp (veraltet): https://github.com/sjrd/scala-js-actors scala.js code.talks 2014 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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