Benutzer-Werkzeuge

Webseiten-Werkzeuge


convert:frombluej:start

Ü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 und println
    • 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:
    1. Hat die gerade geöffnete Datei ein Hauptprogramm, so wird dieses gestartet.
    2. Hat sie keines, so wird das zuletzt gestartete Hauptprogramm wieder gestartet.
    3. 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 trycatch-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.

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:

convert/frombluej/start.txt · Zuletzt geändert: 2023/01/29 13:13 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki