2009-04-02 25 views
16

¿Hay alguna razón racional, por qué native properties no formará parte de Java 7?¿Por qué no habrá propiedades nativas en Java 7?

+3

No mida las habilidades de un idioma por la cantidad de sus características. Piensa en la plataforma, el ecosistema, ... –

+0

que fue un comentario fenomenal Ivan. Estoy aprendiendo C#, y muchas de las características con las que me encuentro que Java carece, no grita como si fueran a resolver problemas notablemente más desafiantes. Además, algunos parecen que podrían ceder a códigos más complicados, como tener varias cosas que regresan de un método a través de outs. O la infame declaración goto. –

Respuesta

15

Hacer las propiedades "a la derecha" en Java no será fácil. El trabajo de Rémi Forax, especialmente, ha sido valioso para descubrir cómo podría ser esto, y descubrir muchos de los "errores" que tendrán que abordarse.

Mientras tanto, Java 7 ya ha tardado demasiado. El debate sobre cierres fue una distracción enorme y controvertida que desperdició una gran cantidad de poder mental que podría haberse utilizado para desarrollar características (como propiedades) que tienen un amplio consenso de apoyo. Eventualmente, se tomó la decisión de limitar los cambios importantes a la modularización (Project Jigsaw). Solo se considera un "pequeño cambio" para el idioma (en Project Coin).

JavaFX tiene un excelente soporte de propiedades, por lo que Sun comprende claramente el valor de las propiedades y sabe cómo implementarlas. Pero después de haber sido mimados por las propiedades de JavaFX, los desarrolladores son menos propensos a conformarse con una implementación a medias en Java. Si vale la pena hacerlo, valen la pena hacerlo bien.

+1

Para los menos informados, ¿podría explicar brevemente la dificultad de implementar propiedades correctamente en Java? – Jason

3
  • ¿Tiempo suficiente?
  • ¿Todavía no se ha especificado correctamente?
  • Difícil de agregar a Java debido a la implementación de Java?
  • ¿Consideró que no era lo suficientemente importante, es decir, otras cosas eran prioritarias?
18

Hay algunas razones de alto nivel relacionadas con el cronograma y los recursos, por supuesto. La implementación de propiedades y la comprensión de todas las ramificaciones e intersecciones con otras características del lenguaje es una gran tarea similar al tamaño de varios cambios de lenguaje de Java 5.

pero creo que la verdadera razón Sol no está empujando propiedades es el mismo que los cierres:

1) No hay consenso sobre lo que la aplicación debe ser similar. O más bien, hay muchas alternativas competitivas y las personas que son apasionadas por las propiedades no están de acuerdo con las partes cruciales de la implementación.

2) Tal vez lo más importante es que hay una gran falta de consenso sobre si la función se desea en absoluto. Si bien muchas personas desean propiedades, también hay muchas personas que no creen que sea necesario o útil (en particular, creo que las personas del lado del servidor consideran que las propiedades son menos cruciales para su vida diaria que los programadores de swing).

historia

Propiedades aquí:

+0

Interesante. No estaba al tanto de la controversia sobre las propiedades, al menos no del tipo de encendidos cierres de odio que ha provocado. ¿Puede proporcionar enlaces para completar los antecedentes de pros y contras? Estoy de acuerdo con que las propiedades sean menos importantes desde el lado del servidor y JavaFX con las necesidades del cliente. – erickson

+1

Siendo una persona del lado del servidor, las propiedades son todo lo que tengo. – trunkc

+0

Agregó un enlace en las discusiones de propiedades anteriores. Personalmente, soy vigorosamente ambivalente. Encuentro que la mayoría de las propuestas no me entusiasman demasiado. No estoy seguro de que Java pueda llegar tan lejos como para satisfacer realmente a Groovy o Scala en este departamento. –

10

Cualquier cosa dada es "no hacer" de forma predeterminada, por lo que no se necesita ninguna razón particular para que algo no siendo hecho. Más bien, se necesita una razón convincente para pasar de "no hecho" a "planeado" o "hecho". Aún no se ha presentado una razón suficientemente convincente para esta función de idioma.

5

Hay dos razones más para evitar propiedades en cualquier idioma:

  • propiedades no son muy orientado a objetos. Hacerlos fáciles de escribir alienta el patrón donde el objeto solo sirve su estado interno y la persona que llama lo manipula.El objeto debe proporcionar métodos de nivel superior y mantener sus aspectos internos privados. La próxima vez que implemente tediosamente un getter, considere lo que hará la persona que llama con los datos y si puede proporcionar esa funcionalidad directamente.

  • Las propiedades fomentan el estado mutable (a través de los ajustadores), lo que hace que un programa sea menos paralelizable. A medida que el número de núcleos aumenta, todos deberíamos tratar de hacer que nuestros objetos sean inmutables para facilitar el razonamiento simultáneo. La próxima vez que implemente tediosamente un colocador, considere eliminarlo y hacer que el objeto sea inmutable.

+1

Objeto _ "Las propiedades no están muy orientadas a objetos" _. Y también lo hacen otros: _ "[" objetos ", que son estructuras de datos que contienen datos, en forma de campos, a menudo conocidos como atributos, y códigos, en forma de procedimientos, a menudo conocidos como métodos.] (Http://en.wikipedia.org/wiki/Object-oriented_programming)"._ Obligar a un usuario de un objeto (API/clase /) a ignorar la mitad de lo que tiene, por definición, es poco convencional, al menos. Es código antinatural e inflado: 'person.name =" Nimoy ";' contra 'person.setName (" Nimoy ");' y 'name = person.name;' contra 'name = person.getName(); .'' –

+0

Sugiero evitar la frase "no muy orientado a objetos" también (que casi no tiene sentido en este punto), pero manteniendo ambos puntos (que se refieren a un buen diseño, claro y simple). De lo contrario, los lectores se centrarán en su propia definición personal de OOP e ignorarán lo que realmente se dice aquí. – tne

Cuestiones relacionadas