Frage

Gibt es einen vernünftigen Grund, warum nativen Eigenschaften nicht Teil von Java 7 wird?

War es hilfreich?

Lösung

Doing Eigenschaften "richtige" in Java wird nicht einfach sein. Rémi Forax Arbeit vor allem hat in herauszufinden, wertvoll, wie dies aussehen könnte, und viele der „Fallstricke“ Aufdecken, die mit müssen behandelt werden.

Inzwischen Java 7 bereits zu lange gedauert. Die Verschlüsse Debatte war ein großer, kontrovers Ablenkung, die viel Geisteskraft verschwendet, die verwendet wurden könnten Funktionen zu entwickeln (wie Eigenschaften), die einen breiten Konsens der Unterstützung. Schließlich wurde die Entscheidung wesentliche Änderungen Modularisierung (Projekt Jigsaw) zu begrenzen gemacht. Nur „kleine Änderung“ für die Sprache wird in Betracht gezogen (unter Projekt Coin).

JavaFX hat schöne Eigenschaft Unterstützung, so Sun deutlich den Wert der Eigenschaften versteht und weiß, wie sie zu implementieren. Aber nachdem von JavaFX Eigenschaften verdorben worden sind Entwickler weniger wahrscheinlich für eine unausgegorene Implementierung in Java zu begleichen. Wenn sie wert tun, sind sie wert, richtig.

Andere Tipps

Es gibt einige hochrangigen Gründe zu planen und Ressourcen natürlich zusammen. Die Umsetzung von Eigenschaften und alle der Verzweigungen und Kreuzungen mit anderen Sprachfunktionen zu verstehen, ist eine große Aufgabe ähnlich die Größe verschiedener Java 5 Sprache ändert.

Aber ich glaube, der wahre Grund Sun nicht Eigenschaften ist die gleiche wie Verschlüsse drücken:

1) Es gibt keinen Konsens darüber, was die Umsetzung aussehen soll. Oder besser gesagt, gibt es viele konkurrierenden Alternativen und Menschen, die leidenschaftlich über Eigenschaften nicht einig über wichtige Teile der Umsetzung.

2) Vielleicht noch wichtiger ist, gibt es einen erheblichen Mangel an Konsens darüber, ob die Funktion überhaupt gewünscht wird. Während viele Menschen Eigenschaften wollen, gibt es auch viele Menschen, die nicht denken, ist es notwendig oder nützlich (insbesondere, ich glaube, serverseitige Menschen sehen Eigenschaften als weit weniger entscheidend für ihren Alltag als Swing-Programmierer).

Eigenschaften Geschichte hier:

Jede beliebige Sache „nicht getan“ vorbelegt, so dass kein besonderer Grund erforderlich ist, um etwas nicht getan zu bleiben. Vielmehr wird einiger zwingender Grund benötigt, um von etwas zu bewegen „nicht getan“, um „geplant“ oder „done“. Kein hinreichend zwingenden Grund hat sich für diese Sprache-Funktion noch entstanden ist.

Es gibt zwei weitere Gründe Eigenschaften in jeder Sprache zu vermeiden:

  • Die Eigenschaften sind nicht sehr objektorientiert. sie leicht zu machen, schreiben fördert das Muster, in dem das Objekt nur seinen internen Zustand dient und der Anrufer manipuliert sie. Das Objekt sollte auf höhere Ebene Methoden bieten und seine Einbauten privat halten. Nächstes Mal, wenn Sie tediously einen Getter Implementierung, überlegt, was der Anrufer mit den Daten tun und ob Sie können einfach direkt die Funktionalität bereitstellen.

  • Eigenschaften fördern wandelbar Staat (durch Setter), die ein Programm weniger parallelizable macht. Da die Anzahl der Kerne nach oben geht, sollten wir alle gleichzeitig Argumentation leichter zu machen versuchen, unsere Objekte unveränderlich zu machen. Nächstes Mal, wenn Sie tediously einen Setter Implementierung, hält es für das Entfernen und macht das Objekt unveränderlich.

  • Nicht genug Zeit?
  • specced noch nicht richtig?
  • Schwer zu java hinzuzufügen aufgrund java-Implementierung?
  • Deemed nicht wichtig genug, wurden dh andere Dinge prioritiesed?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top