In che modo le chiusure in Java avranno un impatto sulla comunità Java?

11

È una delle funzionalità più discusse previste per Java: Closures. Molti di noi hanno desiderato ardentemente per loro. Alcuni di noi (incluso io) sono diventati un po 'impazienti e si sono rivolti ai linguaggi di scripting per riempire il vuoto.

Ma una volta che le chiusure sono finalmente arrivate a Java: come avranno effetto sulla Java Community? L'avanzamento dei linguaggi di programmazione mirati alla VM rallenterà la scansione, rimarrà lo stesso o accluso? Le persone si affolleranno alla nuova sintassi di chiusura, trasformando così le basi di codice Java a tutto tondo in implementazioni più strutturate dal punto di vista funzionale? Vedremo solo le chiusure sparse in Java per tutto il tempo? Quale sarà l'effetto sul supporto strumento / IDE? Che ne dici delle prestazioni? E infine, che cosa significherà per l'adozione continua di Java, come lingua, rispetto ad altre lingue che stanno aumentando di popolarità?

Fornire un esempio di una delle più recenti specifiche di sintassi Java Closure proposte:

public interface StringOperation {
   String invoke(String s);
}

// ...

(new StringOperation() {
   public invoke(String s) {
       new StringBuilder(s).reverse().toString();    
   }
}).invoke("abcd");    

diventerebbe ...

String reversed = { 
    String s => 
    new StringBuilder(s).reverse().toString()
  }.invoke("abcd");

[fonte: http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]

    
posta Ryan Delucchi 13.04.2011 - 20:46
fonte

4 risposte

4

Penso che ci vorrà un po 'di tempo prima che molti sviluppatori Java "normali" capiscano questo concetto se non lo conoscono già, ma gradualmente si adatterà al normale utilizzo di Java, a tutto vantaggio nostro . Sarebbe bello se venisse abbracciato con la stessa rapidità con cui sono arrivati i generici quando è arrivato Java 5.

Immagino che non inciderà sui linguaggi di scripting con targeting VM tanto più che un solo vantaggio di usare quelli che lo hanno.

    
risposta data 13.04.2011 - 20:57
fonte
3

C'è un ciclo normale che si accompagna a qualsiasi strumento nuovo e brillante:

  • Eccitazione di massa, con una raffica di nuovi utenti che la abusano. Questo è normale e sano, in quanto ci aiuta a capire i limiti del nuovo strumento e come può essere utilizzato.
  • Altre persone riservate faranno a meno di dire e far cadere i primi ad essere folli
  • Alla fine, l'entusiasmo svanisce e i primi ad adottare i metodi più salutari per utilizzare il nuovo strumento
  • Altre persone riservate inizieranno ad invidiare la produttività delle persone che utilizzano il nuovo strumento e ad iniziare ad adottarlo, utilizzando i modelli ormai sani.

Tutto ciò richiede un paio di anni per scorrere. Era vero per le annotazioni e i generici, e sarà vero anche per le chiusure.

Impatto sulla gente del linguaggio di scripting:

  • Per le lingue che supportano le chiusure, questo aiuterà gli scrittori del linguaggio di scripting a svolgere il loro lavoro in modo più efficiente. Dal momento che sanno già come usare chiusure, non faranno necessariamente cose pazze.
  • Per le lingue che non supportano le chiusure, questo verrà in gran parte ignorato.
risposta data 13.04.2011 - 21:55
fonte
1

Coloro che apprezzano la programmazione multi-thread saranno in grado di incorporare strutture di dati immutabili in Java e gestirle in un modo più simile a Lisp senza la necessità di ricorrere a non sequencer a causa della mancata corrispondenza dell'impedenza di linguaggio tra Java e Lisp.

Coloro che non usano (o capiscono) nessuno di questi saranno in grado di fare le cose proprio come facevano prima.

    
risposta data 13.04.2011 - 20:58
fonte
1

Sospetto che le persone che hanno familiarità con le chiusure inizieranno a usarle nel codice dell'applicazione. Li eviteranno nelle librerie per un po 'di tempo per mantenere la compatibilità con le versioni precedenti di Java.

I programmatori che non hanno familiarità con chiusure da altre lingue saranno lenti ad adottarle in Java.

I generici sono stati adottati rapidamente quando sono stati introdotti in Java parzialmente a causa di tutti gli avvisi visualizzati durante l'aggiornamento e a causa della loro incorporazione nell'SDK. Questo non sarà vero con chiusure. Sarà più difficile trovare prove della loro esistenza, quindi solo quelli che vogliono usarli li useranno.

Non penso che lo sviluppo di altri linguaggi di scripting JVM si fermerà. Quelle lingue hanno lo slancio e molte caratteristiche oltre alle chiusure. Potremmo tuttavia vedere meno nuove lingue JVM come le chiusure è stato l'impulso principale per la creazione di nuove lingue JVM.

    
risposta data 13.04.2011 - 21:12
fonte

Leggi altre domande sui tag