Pourquoi utiliser GWT.create () au lieu de new?


Answers

GWT.create utilise le travail de liaison différée à cause du manque de support de réflexion.

Selon la FAQ :

La liaison différée est la réponse de Google Web Toolkit à la réflexion Java.

Il est plus facile d'expliquer la liaison différée en commençant par un cas d'utilisation. Chaque navigateur Web a ses propres idiosyncrasies, généralement beaucoup d'entre eux. (Le nombre ingérable d'entre eux est le problème que GWT a été créé pour résoudre en premier lieu.) La façon standard de traiter les idiosyncrasies de Java serait d'encapsuler le code personnalisé en sous-classes, avec une sous-classe pour chaque navigateur pris en charge. Lors de l'exécution, l'application utilise la réflexion et la répartition dynamique des classes pour sélectionner la sous-classe appropriée pour l'environnement actuel, charger la classe, créer une instance, puis utiliser cette instance en tant que fournisseur de services pour la durée du programme.

C'est en effet ce que fait GWT. Cependant, l'environnement JavaScript dans lequel les applications GWT s'exécutent finalement ne supporte pas la charge de classes dynamique (également appelée liaison dynamique). Vous pouvez certainement inclure du code pour supporter chaque navigateur dans votre code JavaScript généré, mais pour cela, vous devez inclure les navigateurs se trouvent dans le fichier d'application unique. Pourquoi un utilisateur d'Opera doit-il télécharger un code spécifique à Firefox, alors qu'il n'y a aucune chance qu'il en ait besoin?

Étant donné que la liaison dynamique n'est pas disponible en tant que technique pour GWT, GWT utilise à la place la liaison différée. Une façon d'y penser est la suivante: "le chargement dynamique des classes qui se produit au moment de la compilation au lieu du temps d'exécution". Lorsque le compilateur GWT compile votre application Java, il détermine toutes les «idiosyncrasies» différentes qu'il doit prendre en charge et génère une version distincte et rationalisée de l'application pour cette configuration spécifique. Par exemple, il génère une version différente du fichier d'application pour Firefox que pour Opera.

Question

Quelle est la différence entre GWT.create(SomeClass.class) et new SomeClass() ?

Pourquoi utiliseriez-vous l'un par rapport à l'autre?




Links