2013-03-10 9 views
6

Spero che questo non è fuori tema per SO (Ho esitato tra SO e programmers.stackexchange) ma per quanto posso dire questo è un "pratico, problema risponde che è unico alla professione di programmazione" così è conforme alle FAQ.Dipendenza da clojure solo su Java 1.5?

Quale versione della JVM è necessaria per eseguire la versione di Clojure (Clojure su JVM, questa domanda non riguarda ClojureScript)?

la pagina qui: http://clojure.org/getting_started afferma che:

Clojure richiede solo Java 1.5 o superiore

Ma è questo andare sempre essere il caso?

E l'ecosistema Clojure, come Leiningen?

Fondamentalmente vorrei sapere se posso contare su Clojure per poter sviluppare un'app desktop che dovrebbe funzionare su sistemi, inclusi i sistemi OS X, che non otterranno mai Java 6 né più versioni recenti di Java (per esempio su alcune versioni OS X Apple ha dichiarato che nessuna JVM 6 vedrebbe mai la luce).

risposta

5

Non sono nella squadra Clojure/core, quindi non ho informazioni interne, ma ecco come mi avvicinerei a questa situazione.

Prendere l'ultima versione di Clojure (1.5 al momento della stesura di questo documento) e testarla su Java 1.5 per le cose che devi fare e di tutte le librerie di Clojure che è necessario utilizzare e attenersi a questa. Se Clojure 1.5 è compatibile con Java 1.5, sarà sempre così, dal momento che quella versione è immutabile.

Vorrei non fare il presupposto che tutte le versioni di Clojure dopo 1.5 saranno compatibili con Java 1.5 e sicuramente non si può presumere che le librerie di Clojure saranno. Ad esempio, ho appena rilasciato una libreria Clojure che richiede Java 1.7 (poiché utilizza una classe java.util.concurrent introdotta in Java 1.7).

Poiché Leiningen fornisce una risoluzione delle dipendenze simile a quella di un maven se si testano tutte le librerie e la versione scelta di Clojure contro Java 1.5 e funzionano, è possibile mantenere quel determinato insieme di dipendenze con versione per tutto il tempo che si desidera mantenere l'app in esecuzione. L'unico rischio a questo punto è che alcune versioni di correzioni di errori di una libreria non principale potrebbero non essere più compatibili con Java 1.5. Questo rischio è proporzionale al numero di librerie Clojure non core che è necessario utilizzare.

3

Se si è selettivi su quali librerie si utilizzano, è possibile utilizzare per il targeting di Java 1.5.

  • Clojure è molto prudente riguardo i suoi requisiti di versione Java - da cui la dipendenza solo dalla versione 1.5.
  • Molte biblioteche dipendono solo Clojure stesso, in modo verrà eseguito tranquillamente sul 1.5 JVM
  • Alcune librerie richiedono> 1.5, questi tendono ad essere le librerie più avanzate che hanno i requisiti per l'interoperabilità con caratteristiche specifiche Java (ad esempio il codice concorrenza più recente).

Nota: personalmente scrivo tutti i miei apps/librerie di indirizzare Java 1.6, in quanto penso che sia un ragionevole minimo e la maggior parte dei sistemi basati su Java sono a 1.6 o superiore. Sono disposto a vivere con la potenziale perdita di alcuni utenti che sono bloccati su 1.5. Inoltre, anche se una versione futura di Clojure abbandonasse 1.5, mi aspetto che continui a supportare Java 1.6 per un lungo periodo.

+0

grazie ancora per avermi aiutato. Posso abbandonare i vecchi utenti di OS X, ma non ne sono ancora sicuro. Il fatto è: ho un'app desktop Java che funziona bene per questi pochi utenti bloccati su 1.5 e a loro piace che ci sia ancora un'app che li supporta (nel mio dominio specifico). In un certo senso sarebbe triste smetterla di supportarli perché sto considerando di spostare parte del codebase in Clojure. Quindi proverò e vedrò cosa posso (e non posso) fare in Clojure attenendomi a 1.5. –

Problemi correlati