Scala Language - What's new in Scala 3?
Classroom Schulung | Deutsch | Anspruch
Schulungsdauer: 3 Tage
Ziele
Scala 2 erschien 2004 und blickt schon auf eine respektable Geschichte zurück. Das finale Release von Scala 3 erscheint nach 8 Jahren Entwicklung im Sommer 2021. Die Sprache wurde von Grund auf überarbeitet und viele der Ecken und Kanten wurden abgeschliffen. Manche obskuren Features aus Scala 2 wurden entfernt, neue (z.B. Enums und Union Types) kamen hinzu.
Das komplette Redesign der Sprache und die vielen Änderungen rechtfertigen einen großen Versionssprung. Scala 3 ist nicht abwärtkompatibel zu Scala 2.
Jedoch wurde die Abwärtskompatibilität (im Source Code) aufrechterhalten, wo immer es möglich war. Wo die Abwärtskompatibilität gebrochen wurde, stehen dem Entwickler Migrationstools zur Verfügung.
Dieser Kurs vermittelt die vielen aus Scala 2 entfernten, verbesserten und die neuen Features von Scala 3. Er problematisiert Fragen der Abwärtskompatibilität zu Scala 2 und zeigt Migrationsstrategien auf.
Zielgruppe
Software-Entwickler/innen mit soliden Kenntnissen der Sprache Scala und der Scala-Standardbibliothek
Voraussetzungen
Kenntnis der Inhalte des Kurses "Scala Language - Basics II" oder gleichwertige Kenntnisse
zusätzlich empfohlen:
Kenntnis der Inhalte des Kurses "Scala Language - Type System" oder gleichwertige Kenntnisse
Agenda
Design Goals
- Scala 3 Design Goals
Scala 3 Project Setup
- sbt Setup of a Scala 3 Project
Features
- Top Level def
s and val
s - Indentation / Optional Braces
- New Control Syntax
- Main Methods
- Constructor Invocations without new
- Traits Parameters
- Enums and ADTs
- Intersection Types and Union Types
- Contextual Abstractions
- Implicit Conversions
- Extension Methods
- Givens (the new Implicits)
- Type Lambdas
- Typeclasses
- Opaque Type Aliases
- Context Functions
- Dependent Function Types
- Tuples are HLists.
- Match Types
- Export Clauses
- Explicit Nulls
- inline
- Multiversial Equality
- Typeclass Derivation
- Given By-Name Parameters
- Implicit Resolution
- Overload Resolution
- Other Features
Backward Compatibility and Migration
- Tasty (Typed Abstract Syntax Tree)
- Using Scala 2 Libraries in Scala 3
- Using Scala 3 Libraries in Scala 2.13
Ziele
Scala 2 erschien 2004 und blickt schon auf eine respektable Geschichte zurück. Das finale Release von Scala 3 erscheint nach 8 Jahren Entwicklung im Sommer 2021. Die Sprache wurde von Grund auf überarbeitet und viele der Ecken und Kanten wurden abgeschliffen. Manche obskuren Features aus Scala 2 wurden entfernt, neue (z.B. Enums und Union Types) kamen hinzu.
Das komplette Redesign der Sprache und die vielen Änderungen rechtfertigen einen großen Versionssprung. Scala 3 ist nicht abwärtkompatibel zu Scala 2.
Jedoch wurde die Abwärtskompatibilität (im Source Code) aufrechterhalten, wo immer es möglich war. Wo die Abwärtskompatibilität gebrochen wurde, stehen dem Entwickler Migrationstools zur Verfügung.
Dieser Kurs vermittelt die vielen aus Scala 2 entfernten, verbesserten und die neuen Features von Scala 3. Er problematisiert Fragen der Abwärtskompatibilität zu Scala 2 und zeigt Migrationsstrategien auf.
Zielgruppe
Software-Entwickler/innen mit soliden Kenntnissen der Sprache Scala und der Scala-Standardbibliothek
Voraussetzungen
Kenntnis der Inhalte des Kurses "Scala Language - Basics II" oder gleichwertige Kenntnisse
zusätzlich empfohlen:
Kenntnis der Inhalte des Kurses "Scala Language - Type System" oder gleichwertige Kenntnisse
Agenda
Design Goals
- Scala 3 Design Goals
Scala 3 Project Setup
- sbt Setup of a Scala 3 Project
Features
- Top Level def
s and val
s - Indentation / Optional Braces
- New Control Syntax
- Main Methods
- Constructor Invocations without new
- Traits Parameters
- Enums and ADTs
- Intersection Types and Union Types
- Contextual Abstractions
- Implicit Conversions
- Extension Methods
- Givens (the new Implicits)
- Type Lambdas
- Typeclasses
- Opaque Type Aliases
- Context Functions
- Dependent Function Types
- Tuples are HLists.
- Match Types
- Export Clauses
- Explicit Nulls
- inline
- Multiversial Equality
- Typeclass Derivation
- Given By-Name Parameters
- Implicit Resolution
- Overload Resolution
- Other Features
Backward Compatibility and Migration
- Tasty (Typed Abstract Syntax Tree)
- Using Scala 2 Libraries in Scala 3
- Using Scala 3 Libraries in Scala 2.13