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

Comparaison avec les langages apparentés