5 Stimmen

Sollte ich Java für ein benutzerdefiniertes Swing-Komponente verwenden, das für eine Clojure-App entwickelt wurde?

Ich möchte eine einfache Timeline-Komponente (wie in Videoschnittsoftware) für eine Clojure/Seesaw-App und frage mich, ob es sinnvoll ist, dies direkt mit Clojure und Seesaw zu implementieren oder ob ich es in Java schreiben und meinen Clojure-Wrapper darum herum basteln sollte.

Oder allgemeiner ausgedrückt: Ist eine funktionale Programmiersprache optimal für die Erstellung von UI-Widgets? Ich kann mir nicht vorstellen, das ohne viel Zustand zu tun. Und wurde OO nicht eigentlich für die UI-Entwicklung erfunden?

4voto

Dave Ray Punkte 38948

Du könntest es auf beide Arten machen. Auf Overtone haben wir eine Reihe von benutzerdefinierten grafischen Komponenten direkt in Clojure mit Seesaw entwickelt. Oftmals reicht ein Atom und (seesaw.core/canvas) für diese Art von Aufgabe aus.

Je nachdem, wie anspruchsvoll es werden soll, ein Grund, es in Clojure zu tun, ist die Möglichkeit, Seesaws Protokolle (Auswahl, Bindung usw.) auf das neue Widget zu erweitern, damit es nahtlos mit Seesaw funktioniert. Eine weitere Überlegung ist, ob Ihr Widget Clojure-Daten aus anderen Teilen der App verwenden muss. Dies wird von Clojure aus viel sauberer sein als von Java aus.

Nichtsdestotrotz, wenn Sie mit Swing/Java vertraut sind, können Sie es dort machen und Seesaw wird perfekt mit einem benutzerdefinierten Widget arbeiten, das in Java erstellt wurde. Viel Glück!

2voto

Ankur Punkte 32819

FP ist gut für die UI-Programmierung, aber dafür sollte das zugrunde liegende UI-Framework auch auf FP-Konzepten wie FRP usw. basieren. In Ihrem Fall basiert das zugrunde liegende UI-Framework (Swing) auf OO und daher wäre es einfacher, es in Java zu implementieren, aber Sie können es immer noch in Seesaw machen.

2voto

mikera Punkte 103423

Alle anderen Dinge sind gleich (d.h. vorausgesetzt, Sie kennen sowohl Clojure als auch Java), würde ich dies wahrscheinlich als benutzerdefiniertes Swing-Komponente in Java schreiben.

Gründe:

  • Swing ist grundsätzlich ein auf Java basierendes OOP-Framework und passt besser zu Java in Bezug auf das Paradigma
  • Veränderlicher Zustand ist in Java einfacher als in Clojure
  • Wenn Sie es in Java schreiben, können Sie es woanders einfacher verwenden (z. B. als Bibliothek aus anderen Java-Code)
  • Es ist einfach, eine Swing-Komponente in Clojure zu umhüllen, nachdem Sie sie erstellt haben

Natürlich würde ich für die Anwendungslogik selbst sicherlich Clojure bevorzugen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X