Terminal-Bibliothek für Java

Für ein kleines Projekt wollte ich eine Visualisierung in der Konsole bzw. im Terminal unter Java realisieren. Das Problem ist das bei der Visualisierung, je nach verwendetem Terminal, bestimmte Operationen nicht verfügbar sind. Dies fängt schon beim Löschen des Bildschirmes an. Je nach Art des Terminals bzw. Betriebssystem kann es hier unterschiedliche Ansätze geben, um dieses Problem zu lösen. Abhilfe bei diesen Problemen schafft die Bibliothek Lanterna.

Lanterna in Aktion

Laterna liefert die Möglichkeit Text-Schnittstellen und GUIs zu bauen, unabhängig vom verwendeten Terminal. Damit ähnelt sie der C-Bibliothek ncurses. Die Bibliothek ist in der Lage festzustellen, auf welcher Art Terminal sie läuft und kann somit die Ausgabe entsprechend anpassen. So werden z.B. Unix-Steuercodes genutzt, wenn das Terminal diese unterstützt. Nach der Einbindung per Maven:

<dependency>
    <groupId>com.googlecode.lanterna</groupId>
    <artifactId>lanterna</artifactId>
    <version>3.0.1</version>
</dependency>

kann die Nutzung der Bibliothek beginnen. Im ersten Schritt sollte eine Instanz der Klasse Terminal angelegt werden:

Terminal terminal = new DefaultTerminalFactory().createTerminal();

Dies übernimmt die DefaultTerminalFactory. Sie sorgt dafür, dass das passende Terminal ausgewählt wird. Nun können Zeichen auf das Terminal geschrieben werden:

terminal.clearScreen();
terminal.putCharacter('a');

Hier wird das Terminal erst bereinigt und anschließend das Zeichen a auf das Terminal geschrieben. Neben der direkten Arbeit mit dem Terminal, liefert Lanterna eine Abstraktionsschicht namens Screen mit, mit welcher das Terminal wie ein pixelbasiertes Gerät angesprochen werden kann. Neben der Ausgabe beherrscht die Bibliothek die Eingabe. Mittels:

KeyStroke keyStroke = terminal.pollInput();

wird die aktuelle gedrückte Taste abgefragt. Diese Methode arbeitet nicht-blockierend. Für den Fall das eine blockierende Methode benötigt wird, eignet sich die Methode:

KeyStroke keyStroke = terminal.readInput();

Damit lassen sich mithilfe der Bibliothek komplexe Anwendungen auf dem Terminal umsetzen. Wenn die Anwendung beendet werden soll, muss das Terminal mittels:

terminal.close();

geschlossen werden. Der Quelltext der Bibliothek ist auf GitHub zu finden. Er ist unter der LGPL lizenziert und damit freie Software.

DOS Zeilenumbrüche unter Mac OS X in Unix Zeilenumbrüche umwandeln

Wenn man unter Linux die Zeilenumbrüche einer Datei von DOS zu UNIX ändern möchte, kann man das Kommando dos2unix benutzen. Um das gleiche (ohne Zuhilfenahme von MacPorts) unter Mac OS X zu bewerkstelligen, muss man sich bei dem eingebauten Perl bedienen. Mittels der Kommandozeile:

perl -pe 's/\r\n|\n|\r/\n/g'   input > output

kann man eine Datei in das Unix-Format (LF bzw. \n) umwandeln.

FuzixOS: Because Small Is Beautiful

Alan Cox ist vielen als Kernel-Hacker im Linux-Bereich bekannt. Neben seiner Arbeit am Linux-Kernel hat er vor einigen Wochen ein anderes Projekt offiziell vorgestellt. Bei dem FuzixOS genannten Projekt handelt es sich um ein unixoides Betriebssystem für Z80-CPUs (und Leuten denen systemd zu viel war ;)). Das System ist allerdings so portabel gestaltet, das es sich für andere 8-Bit CPUs verwenden lassen sollte. Es handelt sich bei dem System um keine komplette Neuentwicklung, stattdessen wurden viele Funktionen aus Forks des Z80-Betriebssystems UZI entnommen.

Die ursprüngliche Ankündigung

Die ursprüngliche Ankündigung

Einige Teile für ein aus heutiger Sicht vollwertiges Betriebssystem fehlen allerdings noch. So gibt es im Moment unter anderem keine TCP/IP Unterstützung, keine symbolischen Links und keinen Support für Dateisysteme größer 32 MiB. Die Entwicklung von Fuzix selbst, findet auf GitHub statt. Lizenziert ist der Kernel unter der GPL, die Bibliotheken unter der LGPL. Einige Teile des Systems sind allerdings freizügigerer lizenziert.

Das Unix Haters Handbuch

Für alle die schon immer wissen wollten was sie an unixioden Systemen nicht mögen, ist es das praktische Handbuch schlechthin: das Unix Haters Handbuch. Stilecht beginnend mit einem Antivorwort von Dennis Ritchie (dem Erfinder von C), zeigt es einem die Probleme und Macken auf mit welchem man bei einem solchen System zu kämpfen hat. Das Buch fällt dabei definitiv in die Kategorie technisch bedingter Humor. Herunterladen kann man das ganze in PDF Form unter http://web.mit.edu/~simsong/www/ugh.pdf.

Weitere Informationen gibt es unter:
http://en.wikipedia.org/wiki/The_Unix-Haters_Handbook