Question

Y at-il une raison rationnelle, pourquoi propriétés natives ne feront pas partie de Java 7?

Était-ce utile?

La solution

Faire des propriétés « droit » en Java ne sera pas facile. Le travail de Rémi Forax a surtout été utile pour comprendre ce que cela pourrait ressembler, et de découvrir un grand nombre de « gotchas » qui devront être traitées.

Pendant ce temps, Java 7 a déjà pris trop de temps. Le débat sur la fermeture était un énorme distraction controversé qui a gaspillé beaucoup d'esprit d'énergie qui aurait pu être utilisé pour développer des fonctionnalités (propriétés) qui ont un large consensus de soutien. Finalement, il a été décidé de limiter des changements majeurs à la modularisation (Jigsaw projet). Seul « petit changement » est considéré comme la langue (sous Coin projet).

JavaFX a beau soutien de la propriété, de sorte que Sun comprend clairement la valeur des propriétés et sait comment les mettre en œuvre. Mais après avoir été gâté par les propriétés JavaFX, les développeurs sont moins susceptibles de se contenter d'une mise en œuvre de bancales en Java. Si elles en valent la peine, ils valent en train de faire.

Autres conseils

Il y a des raisons de haut niveau relatives à l'annexe et des ressources bien sûr. La mise en œuvre des propriétés et comprendre toutes les ramifications et les intersections avec d'autres caractéristiques linguistiques est une grande tâche similaire à la taille de divers Java 5 changements linguistiques.

Mais je pense que la vraie raison pour Sun ne pousse pas les propriétés est le même que la fermeture:

1) Il n'y a pas de consensus sur ce qui devrait ressembler à la mise en œuvre. Ou plutôt, il existe de nombreuses alternatives et les concurrents qui se passionnent pour les propriétés sont en désaccord sur des éléments essentiels de la mise en œuvre.

2) Peut-être plus important encore, il y a un important manque de consensus quant à savoir si la fonction est voulu du tout. Alors que beaucoup de gens veulent des propriétés, il y a aussi beaucoup de gens qui ne pensent pas qu'il soit nécessaire ou utile (en particulier, je pense que les gens côté serveur voir propriétés que beaucoup moins cruciale pour leur vie quotidienne que les programmeurs swing).

Historique des propriétés ici:

Toute chose donnée est par défaut « ne se fait pas », donc aucune raison particulière est nécessaire pour quelque chose reste pas fait. Plutôt une raison impérieuse est nécessaire pour déplacer quelque chose de « pas fait » à « prévu » ou « fait ». Aucune raison suffisamment convaincante n'a encore été posée cette fonction linguistique.

Il y a deux autres raisons pour éviter les propriétés dans toutes les langues:

  • Propriétés ne sont pas très orienté objet. Ce qui les rend faciles à écrire encourage le modèle où l'objet ne sert qu'à son état interne et l'appelant manipule. L'objet doit fournir des méthodes de niveau supérieur et de garder ses internes privés. La prochaine fois que vous implémentez fastidieusement un getter, pensez à ce que l'appelant fera avec les données et si vous pouvez simplement fournir cette fonctionnalité directement.

  • Propriétés encouragent l'état mutable (par setters), ce qui rend un programme moins parallélisables. Comme le nombre de cœurs monte, nous devrions tous essayer de rendre nos objets immuables de faire un raisonnement en même temps plus facile. La prochaine fois que vous implémentez un poseur fastidieusement, envisager de supprimer et faire l'objet immuable.

  • Pas assez de temps?
  • Pas encore specced correctement?
  • Difficile à ajouter à Java en raison de la mise en œuvre de java?
  • Présomption pas assez important, à savoir d'autres choses ont été prioritiesed?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top