web-dev-qa-db-fra.com

Java 8 support dans GWT

Cela semble être une question très basique, mais j'ai cherché haut et bas et je n'en ai trouvé presque aucune mention nulle part. Donc, je vais le demander ici ici.

Quel est le plan actuel pour prendre en charge Java 8 nouvelles constructions de langage dans GWT?

De plus, quel sous-ensemble des bibliothèques Java 8 proposées pour l'émulation côté client? L'API Stream? La nouvelle API Date/Time?

Et enfin, où se déroulent les discussions sur ce sujet important? Je suis sûr que nous sommes nombreux à souhaiter participer et potentiellement contribuer à cet effort.

Les Java 8 bêtas existent depuis un certain temps maintenant, et de nombreux articles discutent des API proposées. Il est censé être lié plus tard cette année, il semble donc que le temps soit au moins passé discuter comment et quand les fonctionnalités langagières tant souhaitées feront leur entrée dans GWT.

Je m'excuse si cette question trouve une réponse ailleurs, ou si j'ai raté un élément d'information important à ce sujet. Ce serait un excellent endroit pour avoir un lien vers ces informations, même si elles ont été répondues. Merci!

47
Yona Appletree

Il est temps de mettre à jour la réponse.

MISE À JOUR (octobre 2017)

GWT 2.8.2 disponible ici . Notes de version .

MISE À JOUR (juin 2017)

Site officiel GWT 2.8.1 téléchargement .

Notes de version pour 2.8.1

MISE À JOUR (octobre 2016)

GWT 2.8.0 est enfin là!

L'équipe GWT a publié la balise 2.8.0 sur Github . Le site Web officiel de GWT n'a pas encore été mis à jour, mais une demande d'extraction pour les modifications sur le site Web de GWT est prêt et en cours de révisionDonc très très bientôt la version compilée sera disponible en téléchargement!

Disponible en téléchargement

MISE À JOUR (septembre 2016)

Pendant ce temps, l'équipe GWT a tagué GWT 2.8.0 RC sur le miroir GitHub.

L'équipe GWT (Daniel Kurka) a publié la version GWT 2.8.0 (RC2) ici .

Les notes de version sont disponibles pour 2.8.0 (RC2):

Corrections de bugs

  • Correction d'un avertissement incorrect inutilisable par js.
  • Résolution d'un problème de redémarrage du serveur (jetée) DevMode.
  • Correction d'un problème en mode super dev avec la modification des options du compilateur ne déclenchant pas les recompilations complètes.
  • Ajout de paramètres de ligne de commande manquants au point d'entrée DevMode
  • Correction d'une régression des performances dans String.

Les notes de version de RC1 sont disponibles sur site officiel . Voici les changements les plus importants concernant la prise en charge de Java 8 dans le prochain GWT 2.8.0:

Faits saillants

  • Prise en charge partielle de Java 8 API de bibliothèque standard (voir ci-dessous pour la liste complète).
  • Correction d'une fuite de mémoire avec la compilation Java 8.
  • Niveau source défini sur Java 8.
  • Les méthodes statiques et par défaut dans les interfaces ne sont pas visibles pour les générateurs. Si vous souhaitez profiter de ces Java-8ism, vous êtes encouragés à passer à un processeur d'annotation. Cela pourrait casser la version existante si une interface est modifiée pour transformer une méthode non par défaut en une méthode par défaut.

Prise en charge de l'émulation JDK 8

  • Émulez Java.io.UncheckedIOException.
  • Emuler Facultatif et ses variantes int, longues et doubles.
  • Émulez Objects.requireNonNull () avec le message Supplier.
  • Correction du comportement d'émulation Math.min/max (float/double).
  • Émulez Character.isBmpCodePoint ().
  • Émulez CharSequence.chars ().
  • Émulez Java.lang.SecurityException.
  • Émuler Java 8 API de
    • Java.util.Arrays,
    • Java.util.ArrayDeque,
    • Java.math.BigInteger,
    • Java.util.BitSet,
    • Java.util.Comparator,
    • Java.util.function,
    • Java.util.Iterator,
    • Java.lang.Iterable,
    • Java.util.IntSummaryStatistics/LongSummaryStatistics/DoubleSummaryStatistics
    • Java.util.Collection/Lists/Queues,
    • Java.util.Map,
    • Java.util.logging.Logger,
    • Java.util.PrimitiveIterator,
    • Java.util.Spliterator,
    • Java.util.stream,
    • Java.util.StringJoiner

Le GWT 2.8.0 RC2 a encore quelques problèmes, que l'équipe GWT devrait résoudre bientôt. La version finale devrait sortir bientôt ("dès qu'elle sera prête").

14
Wladimir Schmidt

[~ # ~] modifier [~ # ~] GWT 2.8.0 est sorti le 20 octobre 2016 avec prise en charge de Java 8 constructions de langage (lambdas, références de méthode) et émulation de certaines Java 8 APIs (flux principalement)

[~ # ~] éditez [~ # ~] depuis avril 2014, GWT 2.6 prend en charge Java 7, et des travaux sont en cours pour prendre en charge Java 8 dans GWT 2.7, qui sera publié d'ici l'été 2014. GWT 2.7 ne devrait prendre en charge que Java 8 constructions de langage, cependant, et ne pas émuler de nouvelle API (streams, javax.time, etc.)


Le plan consiste à prendre en charge d'abord Java 7: https://github.com/gwtproject/gwt/labels/Java7

Cela implique de mettre à jour JDT, et cela est travaillé sur (ou alternativement, passer à autre chose entièrement; JetBrains proposé en utilisant leur analyseur qui prend déjà en charge Java 8, mais GWT a également besoin d'un compilateur et je ne sais pas exactement ce qu'ils fournissent.) Les prochaines étapes consistent à mapper de nouvelles constructions de langage en JavaScript (les chaînes en interrupteur viennent à l'esprit, car elles pourraient directement mapper vers JavaScript sans le désugarage basé sur hashCode qu'un Java ferait).

Tant que GWT utilise JDT pour son Java analyse/munging/compilation, Java 8 ne peut être pris en charge que lorsque JDT le supportera (à un niveau acceptable, ce qui n'est pas encore le cas AFAICT).

49
Thomas Broyer