© BIRTHPIX/Shutterstock.com
Gegenüberstellung von JCurses, CHARVA und Lanterna

Terminalbibliotheken im Vergleich


Möchte man eine Konsolenanwendung entwickeln, gibt es unter Java gleich mehrere Bibliotheken. Zu den bekanntesten zählen JCurses, CHARVA und Lanterna. Allen ist gemeinsam, dass die textbasierten grafischen Oberflächen mit Java Swing beziehungsweise Java AWT realisiert werden. Doch welche Gemeinsamkeiten oder Unterschiede weisen diese Bibliotheken sonst noch auf?

Es gibt Anwendungen, bei denen pixelbasierte grafische Oberflächen weder realisierbar noch angemessen sind. Beispielsweise trifft das auf einen Raspberry Pi mit einem 3,2 Zoll großen Bildschirm zu. Oder es wird eine Admin-Schnittstelle für einen Remote-Server oder eine Firewall gebraucht, wobei nicht genug Bandbreite für X-Windows oder das VNC-Protokoll zur Verfügung steht. In solchen Fällen ist das Entwickeln einer textbasierten grafischen Oberfläche, auch TUI genannt, sinnvoll. Alle drei bekannten Terminalbibliotheken, die für die Java-Programmiersprache geeignet sind, können das. Doch sind die Unterschiede beziehungsweise deren Anwendungsgebiete nicht auf Anhieb erkennbar. In diesem Artikel werden deshalb alle drei Terminalbibliotheken vorgestellt und die Vor- und Nachteile hervorgehoben.

JCurses

JCurses [1] ist eine Terminalbibliothek, die vom Code her auf dem grafischen Toolkit Java AWT basiert. Die aktuelle Version ist 0.95b. Sobald man sich den Quellcode herunterlädt und die Quelldateien im Quellverzeichnis jcurses/src/ durchstöbert, fällt allerdings auf, dass 2002 letztmaligVeränderungen am Quellcode vorgenommen wurden. Nichtsdestotrotz lässt sich JCurses mit etwas Aufwand sogar auf dem Raspberry Pi zum Laufen bringen. Fertig kompilierte Versionen existieren sowohl für 32 Bit/64 Bit Linux als auch für Windows.

Wer jedoch die Quelldateien kompilieren möchte, der lädt zunächst den Quellcode herunter und editiert im Ordner jcurses die Makefile. Bei der Installation ist es erforderlich, lediglich die Zeile bei GCCFLAGS anzupassen, indem die Include-Ordner der Java-Entwicklungsumgebung angegeben werden. Außerdem sollte diese Zeile noch um das Flag -fPIC ergänzt werden. Mit dieser Makefile könnt ihr JCurses sogar auf dem Raspi benutzen (Listing 1).

Listing 1

# Generated automatically from Makefile.in by configure. CURSES=-lncurses JAVAHOME=/usr JAVAC=$(JAVAHOME)/bin/javac JAR=$(JAVAHOME)/bin/jar JAVAH=$(JAVAHOME)/bin/javah JAVA=$(JAVAHOME)/bin/java JAVADOC=$(JAVAHOME)/bin/javadoc GCC=gcc GCCFLAGS=-Wall -shared -I$(JAVAHOME)/include -I$(JAVAHOME)/include/zzip -I$(JAVAHOME)/include -I$(JAVAHOME...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang