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‘.


Vous avez trouvé cette publication utile? Cliquer sur
Ippon
Ippon est un cabinet de conseil en technologies, créé en 2002 par un sportif de Haut Niveau et un polytechnicien, avec pour ambition de devenir leader sur les solutions Digitales, Cloud et BigData.

Ippon accompagne les entreprises dans le développement et la transformation de leur système d’information avec des applications performantes et des solutions robustes.

Ippon propose une offre de services à 360° pour répondre à l’ensemble des besoins en innovation technologique : Conseil, Design, Développement, Hébergement et Formation.

Nous avons réalisé, en 2017, un chiffre d’affaires de 31 M€ en croissance organique de 30%. Nous sommes aujourd’hui un groupe international riche de plus de 320 consultants répartis en France, aux USA, en Australie et au Maroc.
FRANCE Website LinkedIn