Inhaltsverzeichnis
Übertragen von Java-Programmen in die Online-IDE
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.
- Grundsätzliches Vorgehen
import
-Statements- Hauptprogramm anstatt manuellem Instanzieren von Objekten
- Verwendung der Graphics and Games-Bibliothek des Cornelsen-Verlages
- Verwendung der Processing-Bibliothek
- Besondere Klassen der Online-IDE
- Benutzereingaben per Tastatur
- Farbige Ausgabe mit
print
undprintln
- Farben
- Klassen zur Grafikausgabe und Spieleprogrammierung mit der Online-IDE
- Soundausgabe
- Netzwerkprogrammierung
- Zugriff auf Datenbanken
Nützliche Links:
Grundsätzliches Vorgehen
Im Beispiel rechts sehen Sie ein BlueJ-Projekt mit vier Klassen und einem Interface.
- 1. Wir legen einen neuen Workspace in der Online-IDE an,
- 2. erstellen für jede der Klassen eine Datei im Workspace und
- 3. kopieren die Quelltexte per Copy-Paste in die Online-IDE
(Tipp: Strg + a markiert den ganzen Text in einer Programmdatei)
Keine packages und keine import-statements in der Online-IDE
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.
Hauptprogramm anstatt manuellem Instanzieren von Objekten
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:
- Grundsätzlich gelten alle Anweisungen, die außerhalb von Klassendefinitionen stehen, als Hauptprogramm. Das Hauptprogramm kann also einfach zusammen mit einer Klasse in einer Datei stehen.
- Beim Klick auf den Startbutton wird das Hauptprogramm aus einer der Dateien des Workspaces gestartet. Die Datei wird wie folgt ermittelt:
- Hat die gerade geöffnete Datei ein Hauptprogramm, so wird dieses gestartet.
- Hat sie keines, so wird das zuletzt gestartete Hauptprogramm wieder gestartet.
- Gibt es auch kein zuletzt gestartetes Hauptprogramm, so wird in allen Klassen des Workspace nach einem Hauptprogramm gesucht und das erste gefundene gestartet.
Hat ein Workspace also nur ein einziges Hauptprogramm, so wird immer genau dieses gestartet.
Kein Exception Handling in der Online-IDE
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
Keine Nebenläufigkeit in der Online-IDE
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.
Verwendung der Graphics and Games-Bibliothek des Cornelsen-Verlages
Alle Klassen der Graphics and Games-Bibliothek, also die Klassen
- Zeichenfenster
- Rechteck
- Dreieck
- Kreis
- Turtle (Online-IDE: GTurtle)
- Figur
- Text (Online-IDE: GText)
- Ereignisbehandlung
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:
- Rechtsklick auf den Workspace → Einstellungen
- Häkchen bei der Graphics and Games-Bibliothek setzen
- Mit Klick auf OK bestätigen.
Anpassen von Klassenbezeichnern
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.
Nützliche Links zur Graphics and Games Bibliothek:
Verwendung des Processing-Frameworks
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:
Besondere Klassen in der Online-IDE
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: