Die Online-IDE deckt einen großen Teil des Java-Sprachumfangs ab (Details siehe hier), zudem sind in ihrer Laufzeitbibliothek viele Klassen der Java Standard Library nachgebildet. Dadurch ist es möglich, die meisten Java-Programme, die im Informatikunterricht geschrieben wurden, auf einfache Weise in die Online-IDE zu übertragen.
Im Folgenden zeige ich, wie man dabei grundsätzlich vorgeht und wie sich auftretende Probleme lösen lassen.
import
-Statementsprint
und println
Nützliche Links:
Im Beispiel rechts sehen Sie ein BlueJ-Projekt mit vier Klassen und einem Interface.
Um den Schülerinnen und Schülern das Erlernen von Java einfacher zu machen, verzichtet die Online-IDE auf auf das Konzept von packages, entsprechend sind auch keine import-Anweisungen nötig. Alle Klassen eines Workspaces befinden sich - zusammen mit den Systemklassen der Online-IDE - in einem einzigen großen Namensraum. Entsprechend dürfen eigene Klassen leider nicht die Bezeichner von Systemklassen tragen. In solchen Fällen meldet die Online-IDE folgenden Fehler:
Hier hilft nur, der Klasse einen anderen Bezeichner zu geben:
Auch java-Systemklassen können einfach ohne import-Statements verwendet werden:
Lösung: import-Statement einfach weglassen.
In BlueJ startet man ein Programm üblicherweise, indem man per Maus ein Objekt einer Klasse instanziert und dann eine Methode davon aufruft:
Das ist anfangs didaktisch ganz sinnvoll, mit der Zeit aber recht anstrengend und hemmt den Entwicklungsprozess. In der Online-IDE gibt es daher die Möglichkeit, ein Hauptprogramm zu schreiben, mit dem man seine Klassen testen kann:
Für das Hauptprogramm gelten folgende Regeln:
Hat ein Workspace also nur ein einziges Hauptprogramm, so wird immer genau dieses gestartet.
Der Sprachumfang der Online-IDE umfasst kein Exception Handling. Daher müssen bei der Übertragung von Java-Programmen in die Online-IDE alle throws
-Deklarationen sowie die try
…catch
-Rahmen entfernt werden. Der Vorteil dabei ist, dass sich auch die Schüler/innen nicht um Exceptions kümmern müssen, wenn sie mit der Online-IDE programmieren
Die Online-IDE kann Programme leider nicht nebenläufig ausführen, d.h. es gibt keine Threads. Java-Programme, die Nebenläufigkeit nutzen (d.h. mehrere Threads instanzieren und starten) können derzeit leider noch nicht in der Online-IDE ausgeführt werden. Ich arbeite gerade an einem neuen Compiler, der u.a. auch Threads ermöglicht, er wird aber vorraussichtlich nicht vor 2024 fertig.
Alle Klassen der Graphics and Games-Bibliothek, also die Klassen
sind in der Online-IDE bereits Bestandteil der Systembibliothek und müssen nicht von BlueJ her herüberkopiert werden. Dafür muss die Graphics and Games-Bibliothek je Workspace aber einmalig aktiviert werden:
Da die Online-IDE nur einen Namensraum für Klassenbezeichner hat und die Bezeichner Text
und Turtle
bereits vergeben waren, heißen die entsprechenden Klassen der Graphics and Games-Bibliothek in der Online-IDE GText
und GTurtle
. Entsprechende Referenzen müssen beim Import von Projekten in die Online-IDE also geändert werden.
In der Online-IDE ist fast das komplette Processing-Framework enthalten (Klasse PApplet
). Wie es in der Online-IDE verwendet werden kann ist hier beschrieben.
Processing-Programmen in der Programmiersprache Java bestehen üblicherweise aus der Definition einer Kindklasse von PApplet
. Diese kann man einfach in die Online-IDE übernehmen und muss sie nur noch mit einem Einzeiler-Hauptprogramm vor der Klassendefinition ergänzen, siehe das folgende Beispiel:
Da Java vor allem serverseitig verwendet wird, sind die Textein und -ausgabe sowie die Grafikprogrammierung in der Java Standard Library nicht besonders gut unterstützt. Daher hat die Online-IDE dafür eigene Klassen, die es Schüler/innen besonders einfach machen: