2010-11-12 3 views
4

Je joue avec Clojure depuis un bout de temps et j'adore la syntaxe LISP, elle est vraiment belle, expressive, simple et pourtant extrêmement efficace. J'ai aussi joué avec C# pendant quelques mois et j'ai trouvé sa syntaxe très verbeuse et plutôt moche, mais ça marche pour moi mais je préfère la syntaxe LISP.Interopérabilité entre Java et Clojure et création d'interfaces graphiques

Cependant; L'absence d'une bibliothèque/concepteur de GUI spécifiquement pour Clojure m'a quelque peu énervé. En C# faire une application de test rapidement avec WPF est vraiment simple et facile, mais je ne peux pas dire la même chose à propos de Clojure.

De toute façon, j'ai réfléchi mais je n'ai pas trouvé de bonne ressource pour ça. Avec par exemple C# et F # vous pouvez écrire la logique de l'application dans F # et ensuite créer l'interface graphique avec C#. Est-il possible que cela soit possible avec Java et Clojure? Que vous faites la logique de l'application dans Clojure et puis codez/concevez l'interface graphique en Java?

+1

Chaque fois que j'entends les mots expressifs ou élégants ces jours-ci je grince des dents - ils correspondent généralement à "cryptique" et "facile à écrire, difficile à lire et à maintenir". –

+0

Hé, je vois ce que vous voulez dire. Mais c'est un code qui sera utilisé uniquement pour un usage personnel, donc je ne m'inquiète pas trop pour que j'y revienne dans dix ans seulement pour réaliser que je n'ai aucune idée de ce que j'ai fait à l'époque. Et pour moi, la syntaxe LISP est plus expressive dans le sens où elle a plus de sens quand j'écris une fonction qu'en C# :) –

+2

@Bill K Le code Lisp n'est pas cryptique et n'est pas plus difficile à maintenir. Au final vous serez beaucoup plus heureux de maintenir 100 locos à Clojure puis 500 lignes de java boilerblait qui sont réparties en 30 fichiers différents. Le code Lisp est génial, les gens n'y sont pas habitués. – nickik

Répondre

6

Vous pouvez utiliser Swing directement à partir de Clojure, et bénéficier ainsi d'une large gamme de bibliothèques et d'outils Java Swing assez rapidement. Voici un blog agréable avec des exemples:

http://stuartsierra.com/2010/01/03/doto-swing-with-clojure

Je ne vois aucune raison pour laquelle vous ne pouviez pas faire la même chose avec une autre bibliothèque Java GUI/GUI builder.

Si vous êtes plus intéressé par la 3D ou les visualisations, il est également intéressant de jeter un coup d'œil à penumbra. Je ne l'ai pas beaucoup utilisé moi-même, mais cela me semble être une très bonne approche de la programmation OpenGL dans le style LISP.

+0

En effet, le module 'miglayout' rend très facile la mise en page Swing dans Clojure, encore plus facile que Java. [Check out] (https://github.com/abhin4v/clj_twitter_feelings/blob/master/src/clj_twitter_feelings/ui.clj) une interface utilisateur Swing J'ai écrit dans Clojure. –

1

Si vous cherchez à peindre les UI à la main, alors les pointeurs de @ mikera ont du sens. Je ne pense pas que cela ressemble à votre question, cependant. Compte tenu de l'excellente interopérabilité Java de Clojure, je dirais qu'il n'y a aucune raison pour que vous ne puissiez pas peindre visuellement votre interface utilisateur en utilisant Matisse, qui est la seule chose que j'entends parler des applications de bureau Java. En particulier, de la Java Posse parle très bien de lui, et son travail entier au cours des dernières années a été le développement de NetBeans qui a une interface graphique assez compliquée, mais sans trop d'effets whiz bang d'effets. Une fois que votre interface utilisateur est peinte et générée dans Matisse, demandez aux liaisons d'appeler votre code Clojure où vous implémentez votre logique métier.