Perché ci saranno immobili native in Java 7?
-
22-08-2019 - |
Domanda
C'è un motivo razionale, per cui proprietà native non saranno parte di Java 7?
Soluzione
Fare proprietà "giusto" in Java non sarà facile. Il lavoro di Rémi Forax in particolare è stato prezioso nel capire che cosa questo potrebbe essere simile, e scoprendo un sacco di "trucchi" che dovranno essere affrontati.
Nel frattempo, Java 7 ha già preso troppo a lungo. Il dibattito è stato un enorme chiusure, distrazione controverso che sprecato un sacco di mente-potere che avrebbe potuto essere usato per sviluppare caratteristiche (come la proprietà) che hanno un ampio consenso di sostegno. Alla fine, la decisione è stata presa per limitare importanti modifiche alla modularizzazione (Progetto Jigsaw). Solo "piccolo cambiamento" viene presa in considerazione per la lingua (nell'ambito del Progetto Coin).
JavaFX è bella sostegno proprietà, quindi Sun capisce chiaramente il valore degli immobili e sa come realizzarle. Ma essendo stato rovinato da proprietà JavaFX, gli sviluppatori hanno meno probabilità di accontentarsi di un'implementazione cotto a metà in Java. Se sono la pena di fare, vale la pena di fare bene.
Altri suggerimenti
Ci sono alcune ragioni di alto livello relative al programma e le risorse, naturalmente. Attuazione della proprietà e comprendere tutte le ramificazioni e le intersezioni con le altre funzionalità del linguaggio è un compito grande simile alle dimensioni di vari Java 5 lingua cambia.
Ma penso che la vera ragione Sole non sta spingendo proprietà è la stessa di chiusure:
1) Non v'è alcun consenso su ciò che l'applicazione dovrebbe essere simile. O meglio, ci sono molte alternative in competizione e le persone che sono appassionati di proprietà non sono d'accordo su parti cruciali della realizzazione.
2) Forse ancora più importante, v'è una significativa mancanza di consenso sul fatto che la funzione è voluto a tutti. Mentre molte persone vogliono proprietà, ci sono anche molte persone che non pensano che sia necessario o utile (in particolare, credo che la gente sul lato server vedono proprietà come molto meno cruciale per la loro vita quotidiana che i programmatori a battente).
storia Properties qui:
Qualsiasi data cosa è "non si fa" per impostazione predefinita, in modo che nessun motivo particolare è necessario per qualcosa di non rimanere fatto. Piuttosto qualche motivo valido è necessaria per muovere qualcosa da "non fatto" a "pianificato" o "fatto". Nessun motivo sufficientemente convincente è ancora sorto per questa caratteristica del linguaggio.
Ci sono altri due motivi per evitare le proprietà in qualsiasi lingua:
-
Proprietà non sono molto orientati agli oggetti. Che li rende facile scrivere incoraggia il modello in cui l'oggetto serve solo il suo stato interno e il chiamante manipola. L'oggetto deve fornire i metodi di livello superiore e di mantenere i suoi interni privati. La prossima volta che stai noiosamente l'attuazione di un getter, considerare ciò che il chiamante che fare con i dati e se si può solo fornire direttamente che la funzionalità.
-
Proprietà incoraggiano stato mutevole (attraverso setter), il che rende un programma meno parallelizzabile. Come il numero di core va in su, dovremmo essere tutti cercando di rendere i nostri oggetti immutabili per rendere ragionamento concorrente più facile. La prossima volta che stai noiosamente l'attuazione di un setter, provare a rimuovere e rendendo l'oggetto immutabile.
- Non abbastanza tempo?
- Non ancora speccato correttamente?
- difficile aggiungere a Java a causa di implementazione di Java?
- considera non abbastanza importante, vale a dire le altre cose sono stati prioritiesed?