Scala
Définition
Scala (Scalable Language) est un langage de programmation multi-paradigme conçu pour exprimer des patterns de programmation courants de manière concise, élégante et typée. Il s’exécute sur la JVM et compile en JavaScript et en code natif.
Caractéristiques principales
- Paradigme : Multi-paradigme (orienté objet, fonctionnel, concurrent)
- Licence : Apache 2.0
- Exécution : JVM, JavaScript, Native (expérimental)
- Créateur : Martin Odersky (a également créé javac)
- Première publication : 2004
Fonctionnalités du langage
- Système de types : Système de types statique avancé avec inférence de types
- Programmation fonctionnelle : Fonctions de première classe, immutabilité, pattern matching
- Orienté objet : Tout est un objet ; traits (interfaces avec implémentation)
- Concurrence : Modèle d’acteurs Akka, scala.concurrent
- Interopérabilité : 100 % compatible avec Java | Composition fonctionnelle et gestion des effets | | Futures | Primitives de programmation asynchrone |
Frameworks et écosystème majeurs
| | Framework | Objectif | |———–|———| | | Play Framework | Framework d’application web (Java/Scala) | | | Apache Spark | Traitement de données distribué (écrit en Scala) | | | Akka | Framework d’application distribué et concurrent | | | Apache Kafka | Plateforme de streaming de données (basée sur Scala) | | | sbt | Outil de build (basé sur Scala) |
Versions du langage
| Version | Année | Caractéristiques clés |
|---|---|---|
| Scala 2.8 | 2009 | Révision de la bibliothèque Collections |
| Scala 2.10 | 2012 | Monades, comprehensions |
| Scala 2.11 | 2014 | Collections parallèles |
| Scala 2.12 | 2016 | Lambda metafactory |
| Scala 2.13 | 2019 | Refactor des collections |
| Scala 3 | 2021 | Méthodes d’extension, given/uses, inline |
Cas d’utilisation
- Traitement de big data (Apache Spark)
- Systèmes distribués (Akka)
- Applications web (Play Framework)
- Services financiers (Goldman Sachs, Twitter historiquement)
- Développement d’API