Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Scala 2.12 disponible avec un compilateur retravaillé
Pour utiliser les nouvelles fonctionnalités VM de Java 8

Le , par Michael Guilloux

100PARTAGES

5  0 
Scala est un langage de programmation orienté objet et fonctionnel pour la machine virtuelle Java (JVM), c’est-à-dire qu’il exploite l’écosystème Java, mais avec une syntaxe et des concepts radicalement différents de ceux de Java, tout en maintenant une forte compatibilité, de sorte que tout code Java puisse être appelé depuis Scala et vice-versa.

Scala 2.12.0 est désormais disponible avec un compilateur complètement retravaillé afin de pouvoir utiliser les nouvelles fonctionnalités VM disponibles dans Java 8 (il permet donc de générer du code nécessitant un runtime Java 8). On note ici qu’un trait se compile directement en une interface avec les méthodes par défaut, ce qui permet d’améliorer la compatibilité binaire et l'interopérabilité avec Java.

L'interopérabilité entre Scala et Java 8 s’améliore encore pour le code fonctionnel alors que « les méthodes qui prennent des fonctions peuvent facilement être appelées dans les deux sens en utilisant la syntaxe lambda », est-il indiqué sur le site scala-lang.org. Il faut encore noter que « les classes FunctionN de la bibliothèque standard de Scala sont désormais des méthodes de type SAM (Single Abstract Method), et tous les types SAM sont traités uniformément - de la vérification de type jusqu'à la génération de code ».

Cette nouvelle version du langage orienté objet et fonctionnel pour la JVM embarque également un nouvel optimiseur. « L'optimiseur est configuré en utilisant l'option -opt de compilateur. Par défaut, il supprime uniquement le code inaccessible au sein d'une méthode ». L'élimination de code mort et un certain nombre d'optimisations de nettoyage sont également incluses dans Scala 2.12.

GenBCode, le nouveau back-end dans Scala 2.12 émet du code plus rapidement, car il génère directement un bytecode à partir des arbres du compilateur Scala, tandis que le back-end précédant utilise une représentation intermédiaire appelée "ICode". Les anciens back-ends (GenASM et GenIcode) ont été supprimés.

Les nouveaux encodages pour les traits et les lambdas dans Scala 2.12 conduisent à des fichiers JAR beaucoup plus petits. Par exemple, pour la version 3.0.0 de scalatest (le framework pour tester du code Scala), la taille du JAR est passée de 9,9 Mo dans Scala 2.11.8 à 6,7 Mo. Il faut également noter que les versions 2.12.x seront entièrement compatibles au niveau binaire. Toutefois, la compatibilité binaire n’est pas assurée entre Scala 2.11 et 2.12.

Il est également important de noter que cette nouvelle version de Scala élimine la compatibilité avec Java 6 et 7.

Scala 2.12.0 présente un certain nombre de problèmes connus qui seront corrigés dans la version 2.12.1 prévue à la fin du mois de novembre. Scala 2.11.9, la dernière version de la branche 2.11.x devrait quant à elle sortir à la mi-décembre.

Source : Scala-lang.org

Et vous ?

Utilisez-vous Scala ? Qu’en pensez-vous ?
Quelles sont les nouveautés les plus intéressantes de cette version selon vous ?
Qu’est-ce qui manque dans Scala 2.12.0 et que vous aimeriez voir dans les prochaines versions de Scala ?

Voir aussi :

Scala Native : un générateur de code natif pour accéder au bas niveau depuis le langage Scala
Quel avenir pour le langage Scala depuis l'arrivée de Java 8 ? Venez partager votre expérience

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Songbird
Expert confirmé https://www.developpez.com
Le 08/11/2016 à 8:45
Utilisez-vous Scala ?
Non, mais quand je lis ça:

Il est également important de noter que cette nouvelle version de Scala élimine la compatibilité avec Java 6 et 7.
Ca ne va peut-être pas tarder.

Dans cette déclaration, je comprends que cette version évitera d'utiliser des fonctionnalités obsolètes qui ne sont plus conseillées depuis l'arrivée de Java 8, c'est une très bonne chose, à mon avis.

Quelles sont les nouveautés les plus intéressantes de cette version selon vous ?
L'optimiseur, selon moi.
Même si il ne sera utile que lors d'une build qui sera envoyée en prod, je suis curieux de savoir quel genre d'optimisations il pourrait effectuer.
0  0