
Das leJOS-Projekt von Jose Solorzano ist im Netz unter http://lejos.sourceforge.net zu finden. Es ermöglicht die Programmierung von LEGO RCX-Bausteinen in der Programmiersprache Java. Mit Hilfe einer API kann auf die einzelnen Komponenten des RCX (Motoren, Sensoren, Display etc.) zugegriffen werden. Die API-Dokumentation finden Sie unter http://lejos.sourceforge.net/apidocs.
Obwohl das Projekt sehr ausgereift ist, müssen einige Einschränkungen gegenüber Java beachtet werden. Im Folgenden werden Tipps für die Programmierung gegeben.
Tipp 1: Lesen Sie das leJOS-Tutorial!
(RTFM)
Unter http://lejos.sourceforge.net/tutorial
findet sich eine englischsprachige Einführung in die Programmierung mit
leJOS. Sie liefert einen guten Einstieg in die Programmierung der RCX-Bausteine
mit Java.
Tipp 2: Vermeiden Sie unnötige
Objekterstellungen. - Verwenden Sie Objekte wieder!
Das wohl markanteste Problem des leJOS ist das Fehlen eines Garbage-Collectors.
Dieser ist beim normalen Java dafür verantwortlich, dass Speicher freigegeben
wird, den Objekte belegen, die nicht mehr referenziert werden. Ist in leJOS
ein Objekt erst einmal angelegt, belegt es den Speicher für immer - und
der Speicher ist knapp! Für die Programme stehen lediglich 11kb zur Verfügung.
Daher ist es von Vorteil, wirklich nur so viele Objekte während der Laufzeit
zu erzeugen, wie auch wirklich benötigt werden. Zudem empfiehlt es sich,
die Referenzen auf die angelegten Objekte zu behalten, um sie später wiederverwenden
zu können. Dies kann durch geeignete get- und set-Methoden geschehen, die
auf ein Objekt angewendet werden und so den Konstruktor ersetzen.
Beim Speicherüberlauf verabschiedet sich der RCX-Baustein übrigens
mit einem kurzen Brummen vom Programm und Benutzer. ;-)
Tipp 3: Vermeiden Sie Rekursion!
Die im Unterrichtseinsatz viel propagierte Programmiermethode der Rekursion
führt auf den RCX-Bausteinen ebenfalls oft zu Problemen, da es hier sehr
schnell zu Überläufen im Hash-Stack des leJOS kommt. Schließlich
muss jede Variable einer Methode bei einem rekursiven Aufruf zwischengespeichert
werden, was bei der begrenzten Hash-Größe schnell zum oben erwähnten
Brummen und Programmabbruch führt. Rekursion sollte daher weitgehend vermieden
werden, bzw. so eingesetzt werden, dass die Rekursionstiefe klar bestimmt und
die Variablenzahl einer Methode möglichst gering ist.
Tipp 4: Debugausgaben über
das LCD anzeigen lassen!
Oft ist es notwendig, Statusanzeigen des RCX-Systems bei unerwartetem Programmablauf
auszugeben. Dies kann mit Hilfe der Klasse TextLCD realisiert werden.
Diese Klasse kann 5-stellige Strings auf dem RCX-Display ausgeben. Achten sie
hier bitte auch auf Tipp 2! Es ist nicht notwendig, ständig das gleiche
String-Objekt zu erzeugen. Statt dessen sollten statische Strings oder char-Arrays
genutzt werden, wobei der Inhalt der char-Arrays nachträglich beliebig
ausgetauscht werden kann.
Diese Seite soll noch erweitert werden! Für Anregungen und Tipps wäre ich dankbar.