Come posso passare da Java a Clojure?




functional-programming use-case (3)

Quali tipi di progetti si prestano a Java rispetto a Clojure, viceversa e in combinazione?

Se vuoi sviluppare un framework che deve essere utilizzato da Java e Clojure, ho trovato che scrivere le principali astrazioni (interfacce e classi di base) in Java sia preferibile rispetto alla loro scrittura in Clojure (trovo che la gen-class di Clojure sia un po 'noioso e piuttosto usare proxy ).

Se sei un utente di Hibernate o qualsiasi altro framework che fa un uso pesante delle annotazioni Java senza offrire un'alternativa programmatica, avrai qualche problema, dal momento che non è banale emulare POJO annotati con le strutture dati di Clojure.

A parte questo, non ho riscontrato casi d'uso per i quali Clojure è meno appropriato di Java; devi affrontare la perdita della digitazione statica, naturalmente, che all'inizio sembra piuttosto sconcertante, ma tende ad andare via.

Dopo aver scoperto Clojure, ho trascorso gli ultimi giorni immersi in esso.

Quali tipi di progetti si prestano a Java rispetto a Clojure, viceversa e in combinazione?

Quali sono esempi di programmi che non avresti mai provato prima di Clojure?


Clojure si presta bene alla programmazione concorrente . Fornisce strumenti meravigliosi per gestire il threading come memoria transazionale software e riferimenti mutabili.

Come demo per il gruppo Western Mass Developer, Rich Hickey ha realizzato una simulazione di colonie di formiche in cui ogni formica era il suo thread e tutte le variabili erano immutabili. Anche con un numero molto elevato di thread, le cose hanno funzionato alla grande. Questo non è solo perché Rich è un programmatore straordinario, è anche perché non doveva preoccuparsi di bloccare mentre scriveva il suo codice. Puoi controllare la sua presentazione sulla colonia di formiche qui .


Quali tipi di progetti si prestano all'utilizzo di Java su Clojure, viceversa o in combinazione?

Un progetto in cui è necessario uno strumento di creazione di GUI (come Matisse in Netbeans) sarebbe un caso in cui Java potrebbe essere ancora richiesto. Tutto ciò che è fatto in Java può essere fatto in Clojure abbastanza facilmente, con proxy e gen-class se necessario, o semplicemente accedendo a Java secondo necessità (., Doto, new, ecc.). Ciò consente ai progetti Clojure di utilizzare facilmente librerie Java o codice Java legacy.

Quali programmi non avresti mai provato prima di Clojure?

Prima di trovare Clojure, stavo pensando a un progetto che richiedeva JDBC, che sarebbe stato eseguito in un contenitore di servlet, e mi aspettavo di fare un sacco di sviluppo iterativo perché non era chiaro quali metodi avrebbero funzionato per i dati che dovevo analizzare. L'ho messo nel dimenticatoio perché non avevo il tempo o la pazienza per il ciclo di validazione compilazione-debug-deploy richiesto da Java. Ora ho scritto l'applicazione in Clojure e sono molto contento della facilità di apportare modifiche al volo e di poter esaminare immediatamente i risultati. Per non parlare della gioia della programmazione lock-free e della liberazione dal dover sviluppare (e refactoring) le gerarchie di classi.

- "MikeM" tramite la mailinglist [email protected]





use-case