Maison > Périphériques technologiques > Industrie informatique > JVMLS 2016: un récapitulatif de Java Virtual Machine Language Summit

JVMLS 2016: un récapitulatif de Java Virtual Machine Language Summit

William Shakespeare
Libérer: 2025-02-18 10:26:10
original
512 Les gens l'ont consulté

JVMLS 2016: A Recap of Java Virtual Machine Language Summit

2016 Java Virtual Machine Language Summit: Regarder l'avenir de JVM

Le Java Virtual Machine Language Summit 2016 (JVMLS) rassemble des concepteurs de langues et des ingénieurs JVM pour discuter du développement futur de JVM et de son impact sur la langue Java. Le sommet s'est concentré sur des questions clés telles que Project Jigsaw, Project Valhalla et l'avenir des machines virtuelles.

modulaire: Project Jigsaw

Projet Jigsaw est une caractéristique centrale de Java 9, qui introduit un mécanisme modulaire pour la langue Java. Les développeurs peuvent créer des modules qui permettent une configuration fiable, un emballage puissant et une évolutivité, une sécurité et des performances améliorées. Java 9 permettra la création de modules (essentiellement un package JAR contenant la nouvelle structure - descripteur de module). Le descripteur du module décrit un module en spécifiant le nom du module, en répertoriant les modules requis et en exportant des packages. Au moment de l'exécution, un module ne voit principalement que le module dont il dépend (lisibilité) et ne peut accéder qu'aux types (accessibilité) dans d'autres modules lorsque le module est lu et le module exporte un package contenant ce type. Cela signifie que le compilateur et JVM ont finalement abandonné le modèle de boule de boue qui a incorporé tous les code et dépendances ensemble, et l'a remplacé par une vraie carte plus proche de notre compréhension de la structure du logiciel. Le compilateur et le JVM comprennent ce graphique, de sorte que les modules manquants, plusieurs versions du même module ou plusieurs modules exportent les mêmes packages pendant la compilation ou le démarrage, en évitant les erreurs d'exécution ou des erreurs subtiles qui sont difficiles à détecter.

Type de valeur: Project Valhalla

Projet Valhalla est conçu pour introduire des types de valeur qui peuvent être résumés en tant que types primitifs définis par l'utilisateur. Les types de valeur sont les mêmes que les types primitifs et n'entraînent pas les frais généraux de mémoire ou l'adresse indirecte. Un point personnalisé contenant deux champs int x et y sera incliné à son emplacement d'utilisation, ne nécessitant que la mémoire requise pour deux INT, et le tableau de points est essentiellement un tableau de paires x / y. Comme le type d'origine, ces points ne sont pas identifiés - bien qu'il puisse y avoir deux objets entiers différents avec une valeur de 5, il ne peut pas y avoir deux valeurs INT différentes de 5. Comme une classe, un type de valeur peut avoir des méthodes et des champs et implémenter une interface. Par conséquent, son slogan est: "coder comme une classe, fonctionnant comme un int". Cela nous empêchera de devoir échanger entre l'abstraction préférée et les performances requises.

Cependant, le projet s'est rapidement écarté de la piste. Comme nous le savons tous, les génériques ne fonctionnent pas avec les types primitifs - ArrayList ne peut pas être créé. Ceci est déjà douloureux pour huit types primitifs (voir la spécialisation de type primitif pour les bibliothèques comme le flux ou le trow), mais il devient insupportable lorsque les développeurs peuvent définir plus de types. Si les types de valeur doivent être encadrés pour interagir avec les génériques (comme les types primitifs d'aujourd'hui), leur utilisation sera très limitée et ne sera pas démarrée.

Par conséquent, nous devons être capables d'utiliser des génériques avec des types de valeur - les types primitifs peuvent également être utilisés ensemble. En fin de compte, nous voulons non seulement instancier ArrayList ou ArrayList , mais aussi être pris en charge par int [] ou Point [], respectivement. C'est ce qu'on appelle la spécialisation, et elle ouvre un tout nouveau puzzle.

Si vous avez de la chance, certains ou même tous seront inclus dans Java 10.

JVMLS 2016: A Recap of Java Virtual Machine Language Summit

Virtual Machine Future

John Rose a parlé de plusieurs directions qui attirent les machines virtuelles vers le futur:

  • Modèle unifié des objets, valeurs, tableaux, méthodes, etc.
  • Améliorez en continu les performances, telles que l'amélioration de l'efficacité de la mémoire par une densité et un partage accrus, et une optimisation continue des chemins de hotspot
  • concurrence à grains fins à l'aide de fibres qui transcendent les threads comme abstraction de base
  • Devenez plus utile, compatible et interopérable - pour les langues qui courent sur elle et les langues maternelles, combler ainsi l'écart entre eux
  • La pile
  • est concret, où la pile contient des classes et des méthodes comme des objets réels, pas seulement en tant que chaînes, et le contexte complet de chaque trame (variables locales, moniteurs, etc.) est visible et exécuter le programme peut modifier la pile

Beaucoup de contenu dépasse ma compréhension, mais écouter ses discours en bénéficiait encore beaucoup, même si c'était juste pour ressentir sa passion.

Conformément à l'esprit des perspectives de Rose est le projet Panama (discuté par Mikel Vidstedt et Tobi Ajila dans "Going Native"), qu'Ian tombe avec "Java Vector API". La démonstration de Christian Wimmer de "One Compiler" est également destinée à combler l'écart.

Résumé

JVM est un outil puissant que de nombreuses personnes intelligentes travaillent pour la rendre plus forte tout en contrôlant sa complexité.

FAQ sur le Sommet de langue JVM 2016 (Cette partie est la même que le texte d'origine, omis)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal