2009-04-20 13 views
6

Mi piacerebbe utilizzare le chiusure in Java. Ho letto che possono o meno farcela in Java 7. Ma un progetto open-source chiamato functional-java ha implementato funzionalità funzionali che includono chiusure.Quanto sarebbe sicuro usare java funzionale per aggiungere chiusure a un progetto di produzione Java?

Quanto sarebbe sicuro usare una tale libreria in un'app di produzione aziendale?

C'è un modo migliore per aggiungere chiusure a Java al momento?

+1

Si potrebbe provare a utilizzare scala o clojur invece – KitsuneYMG

risposta

6

Le chiusure non si trasformeranno in Java 7, a causa della mancanza di consenso attorno a una singola implementazione. See here.

La libreria Java funzionale è completamente testata e attivamente sviluppata. Se navighi nella sorgente vedrai che è solo semplice Java standard, e non c'è molto che possa andare storto. Conosco almeno un'app aziendale mission-critical che la utilizza in produzione. Questa applicazione ha più di un milione di utenti.

Vai per questo.

0

BGGA è ancora un'implementazione prototipo, non è sicuro di quanto sia comodo mettere in produzione il codice prototipo. check-out google collections ti avvicina all'obiettivo anche se più verbosamente

+0

Interessante ma non sembra avere nulla come chiusure - solo collezioni. –

+0

Java funzionale non richiede BGGA, ma lo supporta. – Apocalisp

+1

Le raccolte Google hanno un tipo di funzione e la maggior parte delle loro raccolte implementa un functor. Le collezioni funzionali di Java implementano sia i funtori sia le monadi, i cofuntori e le comonade. – Apocalisp

4

Java funzionale non richiede l'uso di chiusure: la sorgente viene compilata con qualsiasi compilatore Java 1.5. Il Java funzionale è molto più completo di quello delle raccolte di Google e semplicemente ti permette di usarlo bene con BGGA.

Spero che questo aiuti.

2

Se siete alla ricerca di una soluzione più leggera per avere chiusure in Java semplice controllare il progetto lambdaj:

http://code.google.com/p/lambdaj/

+0

Lambdaj era, l'ultima volta che l'ho testato, piuttosto lento. Onestamente, sono rimasto davvero deluso da questo perché speravo di usarlo. – RHSeeger

+1

Quale versione hai testato? In quale funzione l'hai trovato lento? Ovviamente devi pagare qualcosa per l'uso di proxy e riflessione, ma la perdita di prestazioni è abbastanza ben documentata e nella maggior parte dei casi è molto ragionevole. –

+1

Vorrei poter rispondere alle tue domande, ma non l'ho fatto di molto quando l'ho provato. Mi sembra di ricordare che il 3-5 volte sia stato più lento per il caso d'uso su cui stavo testando ... e che quel caso era qualcosa per cui lo userei (cioè vicino a qualcosa che sto facendo nel codice di produzione), ma non più di questo. Vorrei davvero poter essere più specifico, ma è stato un paio di mesi fa e non ho preso molto in termini di note. – RHSeeger

4

Penso che si sta guardando la questione dal punto di vista sbagliato.

Mi piacerebbe utilizzare le chiusure in Java. ... Quanto sarebbe sicuro usare una tale libreria in un'app di produzione aziendale?

Il tuo processo decisionale su quale tecnologia utilizzare in un'app di produzione aziendale deve essere basata su ciò che sarà il migliore per l'azienda a lungo termine. Dovresti porre domande come:

  • La tecnologia sta aggiungendo la tecnologia per migliorare significativamente l'app dal punto di vista della funzionalità?
  • Quali sono i rischi per il progetto corrente?
  • La tecnologia dichiara di essere "pronta per la produzione"?
  • La tecnologia è supportata. È probabile che continui a essere supportato tra 5-10 anni?
  • Se esci dall'azienda, qualcun altro sta per prendere il controllo del tuo codice?
  • Quali sono le implicazioni di formazione/assunzione dell'utilizzo della tecnologia?

In generale, dichiarazioni come "Mi piacerebbe utilizzare Xxx" non dovrebbero avere alcun ruolo nel processo decisionale aziendale.(Ci sono contro-esempi, es. Startup che puntano l'azienda su qualche nuova tecnologia, ma il vero tasso di successo è ... umm ... aperto alla speculazione.)

Per riassumere, se stai costruendo applicazioni di produzione aziendale, è necessario essere prudenti e resistere alla tentazione di utilizzare la nuova tecnologia "per divertimento". Prova a pensare come un manager IT.

0

Troppo vecchia domanda per rispondere. Qui abbiamo lambda in java8 per semplificarti la vita.

Problemi correlati