Benutzerhinweise zu leJOS

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.

Impressum | Webmaster | Letzte Änderungen am : 04.10.2007