Lutz Hühnken03.05.2023
SCALA.JSLutz Hühnken
JavaScript
scala.js code.talks 2014 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
3
Front-End / JavaScript Erfahrungen
scala.js code.talks 2014
• 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
5
JavaScript ist so eine Sache..
scala.js code.talks 2014
• 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
• 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
Wenn man Scala mag, warum es nicht auch für das Front-End verwenden? Scala.js ermöglicht dies.
Scala.js
9
Überblick
scala.js code.talks 2014
Bild von Sébastien Doeraene
scala.js code.talks 2014 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
11
Pipeline
scala.js code.talks 2014
Bild von Sébastien Doeraene
scala.js code.talks 2014 12
Scala.js Eigenschaften• uneingeschränkter DOM Zugriff
• sbt Integration
• Source Maps
• Statische Typisierung
• Closure Compiler
(Umschalten zu Source Code)
Schön und gut.. was noch?
scala.js code.talks 2014 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 16
Nebenläufigkeit• JVM: Threads.
• JavaScript: Callbacks.
• Gemeinsame Abstraktion?
scala.js code.talks 2014 17
Akka
scala.js code.talks 2014 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 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 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 21
Danke schön!
Scala JS Hompage
http://www.scala-js.org
Bitte folgt mir auf Twitter:
https://twitter.com/lutzhuehnken
Top Related