Comment puis-je passer de Java à Clojure?
-
05-07-2019 - |
Question
Après avoir découvert Clojure , j'ai passé les derniers jours à y plonger.
Quels types de projets se prêtent à Java sur Clojure, et inversement, et en combinaison?
Quels sont des exemples de programmes que vous n’auriez jamais essayés avant Clojure?
La solution
Clojure se prête bien à la programmation simultanée . Il fournit des outils aussi utiles pour traiter les threads que la mémoire transactionnelle logicielle et les références modifiables.
En guise de démonstration pour le groupe Western Mass Developer's Group, Rich Hickey a réalisé une simulation de colonie de fourmis dans laquelle chaque fourmi constituait son propre fil et toutes les variables étaient immuables. Même avec un très grand nombre de threads, les choses ont bien fonctionné. Ce n'est pas seulement parce que Rich est un programmeur extraordinaire, c'est aussi parce qu'il n'avait pas à s'inquiéter du verrouillage tout en écrivant son code. Vous pouvez consulter sa présentation sur la colonie de fourmis .
Autres conseils
Si vous voulez essayer la programmation concurrente, alors je pense que le clojure est bien meilleur que ce que vous obtenez avec Java tel quel. Jetez un coup d’œil à cette présentation pour savoir pourquoi:
J'ai documenté mes 20 premiers jours avec Clojure sur mon blog
http://loufranco.com/blog/files /category-20-days-of-clojure.html
J'ai commencé par les conférences SICP, puis j'ai construit un tamis parallèle en nombres premiers. J'ai aussi joué avec les macros.
Quels types de projets se prêtent à l'utilisation de Java sur Clojure, vice-versa ou en combinaison?
Un projet où un outil de construction d’interface graphique (comme Matisse dans Netbeans) est nécessaire serait un cas où Java peut être encore nécessaire. Quoi que ce soit fait dans Java peut être fait dans Clojure tout à fait facilement, avec proxy et gen-classe si nécessaire, ou simplement accéder à Java en tant que nécessaire (., doto, nouveau, etc.). Ce permet aux projets Clojure d’utiliser facilement Bibliothèques Java ou code Java hérité.
Quels programmes que vous n'auriez jamais essayés avant Clojure?
Avant de trouver Clojure, j'étais contemplant un projet nécessitant JDBC, s'exécuterait dans une servlet conteneur, et je prévoyais faire un beaucoup de développement itératif parce que il n'était pas clair quelles méthodes seraient travailler pour les données que j'avais besoin d'analyser. Je le mets en veilleuse parce que je n'a pas eu le temps ou la patience pour la compilation-debug-deploy-validation cyclisme que Java nécessite. J'ai maintenant écrit l'application dans Clojure, et je suis très heureux de la facilité de faire des changements à la volée et être capable d'examiner les résultats immédiatement. Sans parler de la joie de la programmation sans verrou et être libéré de devoir développer (et refactor) hiérarchies de classes.
- "MikeM" via la liste de diffusion clojure@googlegroups.com
Quels types de projets se prêtent à Java sur Clojure, et inversement, et en combinaison?
Si vous souhaitez développer un framework qui doit être utilisé par Java et Clojure, j’ai trouvé qu’écrire les principales abstractions (classes ad base interfaces) en Java était préférable à leur écriture dans Clojure (je trouve le code gen-class
est assez fastidieux et utilise plutôt proxy
).
Si vous utilisez Hibernate ou tout autre framework qui utilise beaucoup les annotations Java sans offrir une alternative programmatique, vous aurez quelques problèmes, car il n'est pas simple d'imiter des POJO annotés avec les structures de données de Clojure.
À part cela, je n'ai rencontré aucun cas d'utilisation pour lequel Clojure est moins approprié que Java; vous devez bien sûr faire face à la perte de typage statique, ce qui vous semble un peu déconcertant au début, mais a tendance à disparaître.