Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scala Java Discussion :

Calendrier 2016 pour Scala : la version 2.12 en vue


Sujet :

Scala Java

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    25 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 25 184
    Points : 179 059
    Points
    179 059
    Par défaut Calendrier 2016 pour Scala : la version 2.12 en vue
    Scala est un langage de programmation pour la 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é (tout code Java peut être appelé depuis Scala et vice-versa). Scala est donc un langage orienté objet, mais fonctionnel depuis sa conception (contrairement aux extensions fonctionnelles de Java 8) ; il possède également un système de typage fort. De manière générale, il tend à être concis tout en éliminant les défauts du langage Java — sa conception a débuté en 2001 à l’EPFL, dans le laboratoire de méthodes de programmation (LAMP).

    La série actuelle, numérotée 2.11, sera la dernière à être compatible avec Java 6, avec des versions régulièrement mises à disposition. Les développeurs peaufinent énormément cette version, car la suivante est l’objet de grands travaux, avec notamment l’élimination de la compatibilité avec Java 6 et 7. La dernière version devrait être la 2.11.9, au troisième trimestre de 2016, c’est-à-dire deux ans après la première version de Scala 2.11.

    Le futur s’annonce de plus en plus excitant : pour tirer le meilleur parti de Java 8, le compilateur encodera d’une manière très différente les traits et fonctions anonymes, beaucoup plus proche du comportement actuel de Java 8. Ainsi, l’interopérabilité sera beaucoup plus facile avec Java, avec la possibilité d’écrire des fonctions anonymes en Java pour les utiliser avec une bibliothèque Scala et vice-versa — ceci, sans changement du code Scala. Du côté technique, cet encodage utilisera les pointeurs sur méthodes (instances de la classe MethodHandle), comme Java 8, ce qui devrait diminuer les temps de compilation et la taille des binaires générés, même si le gain de performance n’est pas clair.

    De manière plus générale, le compilateur a droit à une cure de jouvence, basé sur les derniers travaux côté EPFL de Miguel Garcia (partiellement intégrés dans Scala 2.11) : de manière générale, seule l’analyse syntaxique du code Scala est gardée par rapport aux versions précédentes, le reste a été fondamentalement retravaillé pour augmenter la performance (la compilation est de quinze pour cent plus rapide qu’avec Scala 2.10, sur tout le processus) et la taille des binaires générés.

    La syntaxe du langage n’évolue pas entre Scala 2.11 et 2.12, toutes ces améliorations se font sous le capot. Actuellement, la préversion 2.12 M3 est disponible depuis début octobre ; elle est déclarée suffisamment stable pour que les développeurs de bibliothèques commencent à tester et à distribuer des versions compilées de leurs bibliothèques. La prochaine, numérotée 2.12 M4, est prévue fin janvier 2016, avec la première version admissible 2.12 RC1 fin mai 2016. La version finale n’est pas encore planifiée, mais ne devrait pas tarder, à moins que des défauts majeurs soient trouvés.

    Les versions suivantes devraient reprendre le train des améliorations dans la syntaxe et la bibliothèque standard, avec un compilateur bien plus facile à maintenir et à faire évoluer. Rien n’est encore véritablement planifié, mais les améliorations imaginées comportent :

    • une simplification des collections (par exemple, de leur hiérarchie), par défaut immuables, avec un déplacement de fonctionnalités en dehors de la bibliothèque standard, notamment pour faciliter l’optimisation ;
    • des collections parallèles avec des améliorations de performance, obtenues par la fusion d’opérations et un ordonnancement ;
    • l’intégration de la réflexion et des macros à la Lisp comme fonctionnalités pleinement supportées (certaines sont actuellement expérimentales) ;
    • une syntaxe simplifiée et unifiée, pour se rapprocher des principes fondateurs du langage : un ensemble réduit de fonctionnalités orthogonales faciles à assembler (comme Lisp) ; la syntaxe XML pourrait ainsi disparaître, tout comme les fonctionnalités qui mènent régulièrement à des comportements inexplicables pour les débutants.


    Source : 2016 Scala Release Schedule update, Scala 2.12 Roadmap.

    Ce contenu a été publié dans Scala par dourouc05.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Analyste
    Inscrit en
    juillet 2013
    Messages
    2 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Analyste
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 2 300
    Points : 74 787
    Points
    74 787
    Billets dans le blog
    2
    Par défaut Scala 2.12 disponible et permet de tirer le meilleur parti de Java 8
    Scala 2.12 disponible et permet de tirer le meilleur parti de Java 8
    un compilateur retravaillé pour utiliser les nouvelles fonctionnalités VM de Java 8

    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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  3. #3
    Expert confirmé

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    juin 2015
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juin 2015
    Messages : 487
    Points : 4 089
    Points
    4 089
    Billets dans le blog
    8
    Par défaut
    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.
    Avant de poster: FAQ Rust; FAQ Dart; FAQ Java; FAQ JavaFX.
    Vous souhaiteriez vous introduire au langage Rust ? C'est par ici ou ici !
    Une question à propos du langage ? N'hésitez pas à vous rendre sur le forum !


    Pour contribuer à la rubrique, vous pouvez me contacter par MP (Sorry, we're closed!) ou contacter directement la rédaction.

Discussions similaires

  1. Commande pour trouver la version de Linux
    Par Gogoye dans le forum Administration système
    Réponses: 11
    Dernier message: 12/02/2013, 16h43
  2. Besoin d'aide pour valider ma version d'XP PRO
    Par vallica dans le forum Windows XP
    Réponses: 7
    Dernier message: 06/06/2006, 13h01
  3. Réponses: 2
    Dernier message: 30/06/2005, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo