Scala : l’avenir de la JVM

Le but de cet article est  de présenter brièvement Scala et de regarder comment il s’inscrit dans l’écosystème de la JVM.

Java, une impasse évolutive ?

Le langage Java semble avoir atteint ses limites évolutives (Java: Evolutionary Dead End). Il est désormais délicat d’y ajouter de nouvelles fonctionnalités sans complexifier d’avantage le langage et la rétro-compatibilité. Suite à de nombreux ajouts Java est devenu compliqué, il suffit de feuilleter le livre ‘Java Puzzlers’ pour s’en rendre compte. La programmation concurrentielle en Java, malgré des efforts louables (java.util.concurrent), est loin d’être l’outil le plus adapté. Cette forme de programmation sera nécessaire dans le futur car les applications devront profiter au maximum des multiples processeurs (The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software).

Scala

Scala, un langage hybride:

Il existe quelques potentiels successeurs à Java, Scala est particulièrement bien placé: Scala peut être compilé en bytecode Java, il est interopérable avec la JVM et Java ! C’est un langage statiquement typé, alliant l’orienté objet pur et le fonctionnel impur.
Martin Odersky, le créateur de Scala, a reussi à prendre ce qu’il y avait de bon dans de nombreux langages (A Brief History of Scala).

Le concept principal du langage est d’être facilement extensible, il peut ainsi être utilisé pour écrire de simples scripts ou pour réaliser des projets de grande envergure. Les deux paradigmes utilisés dans Scala sont complémentaires. L’idée est de ne pas imposer un paradigme unique et de laisser ainsi le choix de l’approche au programmeur.

Tout est objet:

La programmation objet a donné naissance aux patrons de conception (design patterns), elle est difficilement contournable. Dans Scala, tout est objet, il n’y a pas de types primitifs comme en Java. Le concept Objet a été poussé jusqu’au bout, toute valeur est un objet et toute opération est un appel de fonction. Les fonctions sont également des objets.

Tout est valeur:

La programmation fonctionnelle est idéale pour la programmation concurrentielle, car elle prône l’immutabilité. Elle permet de construire des objet de complexité croissante par composition car une fonction est valeur. On note également que Scala supporte le concept d’acteurs (Scala Actors), un concept adapté à la programmation concurrentielle emprunté de l’Erlang.

Une syntaxe épurée:

La syntaxe s’inspire de Ruby, Java, Smalltalk, langages ML, etc. Scala peut être dit dynamique d’un point de vue purement syntaxique. La force est que sa syntaxe ressemble à celle d’un langage dynamique alors que Scala est statiquement typé, vu le succès qu’ont eu les langages dynamiques ces dernières années rien que pour leur syntaxe, ceci est un aspect important.

Passons à quelques citations notables concernant Scala:

If I were to pick a language to use today other than Java, it would be Scala.
– James Gosling, creator of Java.

On my radar, the current best exit strategy for Java is Scala.
– Bruce Eckel, author of Thinking in Java.
Java: Evolutionary Dead End by Bruce Eckel (January 3, 2008)

Scala is not an extension of Java, but it is completely interoperable with it.

– Martin Odersky, creator of Scala, co-designer of Java generics and author of the current javac reference compiler.

I can honestly say if someone had shown me the Programming in Scala
book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I’d probably have never created Groovy
.
– James Strachan, creator of Groovy.
Scala as the long term replacement for java/javac? (Monday, 6 July 2009)

Qui utilise Scala ?

Twitter !
http://www.artima.com/scalazine/articles/twitter_on_scala.html

Siemens:
http://www.scala-lang.org/node/1154

Novell Pulse:
http://www.novell.com/products/pulse/

Popularité de Scala:
http://www.scala-fr.org/popularite-de-scala/

Conclusion:

Scala n’est pas forcément en concurrence avec Java car il est compatible avec ce dernier. Scala apporte son lot de complexité, ceci est indéniable, mais la ‘simplicité’ de Java peut être considérée comme une limitation. Scala est plus concis que Java et par sa nature hybride il s’adapte facilement à de nombreux problèmes.

Liens:

Si vous souhaitez apprendre Scala, je vous recommande de lire le livre ‘Programming in Scala‘. Je ne prétends pas avoir lu tout le livre, mais ce que j’ai pris le temps de lire m’a montré à quel point le langage est bien pensé. Pour ceux qui sont dans le monde du web jetez un coup d’oeuil sur le framework ‘Lift‘. Pour les plus pressés regardez ‘A Tour of Scala‘.

Tweet about this on TwitterShare on FacebookGoogle+Share on LinkedIn

6 réflexions au sujet de « Scala : l’avenir de la JVM »

  1. C’est un peu dommage de commencer l’article en trollant sur java. Du coup, la description des avantages de scala est moyenne, assuré que l’on est de la victoire de scala je suppose. Dire que scala est bien parce que compilable en bytecode et qu’il est typé…

    Il est je présume beaucoup plus difficile de dire en quoi un langage est complexe, ou compliqué, préciser en quoi il devient difficile de le faire évoluer. Pour java, même si la situation est loin d’être idéale, c’est quand même pas mal d’avoir ajouté cette librairie concurrente que vous déclarez “louable” ( merci ! ), entre autre nombreux exemples, non ?

    Dommage, et pour java, et pour scala.

    Bientôt un article groovy vs cobol du même genre ?

    1. Bonjour et merci pour le commentaire,

      ayant développé en C/C++ et autres langages je peux t’assurer que j’apprécie au quotidien Java, la JVM et les nombreux outils disponibles. Cependant il ne s’agit en rien d’un troll mais d’une constatation: Java ne peux pas éternellement reigner en maître, les temps changent, il faut donc songer à l’avenir. Java entre dans le post car Scala est interopérable avec Java, il n’y a donc pas de Java VS Scala: on peut très bien faire les deux en même temps, c’est une force majeure de Scala. J’aurai dû insister sur ce point.

  2. Mouais… enfin bon, les modes vont et viennent : voilà déjà qu’on trouve scala déjà trop complexe, par rapport à java 🙂

    Cela vient juste de sortir : “Is Scala Too Complex?” à http://blog.ericdaugherty.com/2010/07/is-scala-too-complex.html

    Moi je dis qu’il vaudrait mieux se donner des repères dans l’évaluation des langages, plutot que de tabler sur des “constations” (l’auteur de l’autre article n’aurait pas vu les mêmes ? ), des “songer à l’avenir” etc.

  3. Plutôt intéressant effectivement:

    “In the end though, I don’t believe Scala is itself more complex than Java.”
    Eric Daugherty

    “After a conversation with a guy at work, I was inspired to take a look at whether Scala is inherently more complex than Java, and decided it wasn’t.”
    Dick Wall

    Is Scala more complicated than Java?
    “Whoever claims that Scala is much more complicated than Java has clearly not seen a Java Programmer Certification in a while and is probably not using many new features since Java 5 came out.”
    Vassil Dichev

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*