TFH Der TextPad als Java-Entwicklungsumgebung SS02 Den Editor TextPad mit dem JSDK zu einer Java-Entwicklungsumgebung kombinieren Der Java Software Development Kit (Java SDK, kurz JSDK, frü her hiess er JDK) enthält einen Java-Compiler (javac), einen Java-Interpreter (java) und weitere nü tzliche Werkzeuge zum Erstellen und Testen von Java-Programmen. Der JSDK wird von der Firma Sun in Versionen fü r Unix-Betriebssystem (insbesondere fü r Linux) und fü r Windows allen Interessierten kostenlos zur Verfü gung gestellt (siehe www.sun.com oder http://java.sun.com/j2se/1.4/download.html). Die Programme des JSDK (javac, java etc.) können aber nur von einer Kommandozeile aus gestartet werden, unter Windows also von einer Dos-Eingabeaufforderung aus. Das ist relativ unbequem. Der Editor TextPad ist ein Shareware-Programm der englischen Firma Helios (siehe www.textpad.com). Man kann ihn (in Kombination mit dem JSDK) relativ leicht als Entwicklungsumgebung fü r Java einrichten. Es ist dann möglich, aus dem Editor heraus Java-Dateien zu compilieren und Java-Programme ausfü hren zu lassen. Und wenn einem beim Compilieren ein Fehler gemeldet wird, genü gt ein Doppelklick um zu der entsprechenden Zeile der fehlerhaften Quelldatei zu springen. Der TextPad hat fü r seine klare Struktur und gute Bedienbarkeit schon mehrere Auszeichnungen bekommen. Leider läuft er nur unter Windows und es gibt (noch?) keine Linux-Version. An einigen Stellen ist der TextPad speziell auf den JSDK abgestimmt. Man kann ihn aber auch als Entwicklungsumgebung fü r andere Sprachen einrichten, z.B. fü r C++ oder fü r Perl etc.. (und fü r mehrere Sprachen gleichzeitig). Die Installationsdatei fü r den neusten JSDK fü r Windows-Systeme heisst j2sdk-1_4_0-win.exe und ist etwa 37 MB gross. Hinzu kommt die umfangreiche Dokumentation in HTML-Form (j2sdk1_4_0-doc.zip, etwa 31 MB, sollte man unbedingt haben) und ein Lernprogramm (auf Englisch, TUTORIAL.ZIP, etwa 10 MB, sehr empfehlenswert). Die Installationsdatei fü r den TextPad heisst z.B. txpdeu450.exe (TextPad deutsch Version 4.5) oder so ähnlich und ist etwa 2,5 bis 3 MB gross. Im SWE-Labor der TFH-Berlin (Raum D016) kann man sich eine CD mit diesen (und weiteren) Installationsdateien ausleihen. Hier ein paar Tipps dazu, wie man den JSDK und den TextPad unter Windows installieren sollte und wie man die beiden zu einer Java-Entwicklungsumgebung kombinieren kann. 1. Installieren Sie wenn möglich zuerst den JSDK und dann erst den TextPad. Denn wenn der TextPad bei seiner Installation einen JSDK entdeckt, "verbindet" er sich mit diesem und baut in sein Menü Extras automatisch drei Befehle (zum Compilieren einer Java-Datei, zum Ausfü hren eines Java-Programms und zum Starten eines Java-Applets) ein. 2. Wenn Sie den JSDK z.B. in das Verzeichnis c:\jsdk installiert haben, dann sollten Sie den Pfad c:\jsdk\bin in Ihre Umgebungsvariable path eintragen. Unter Windows95/98/ME schreiben Sie dazu den Befehl 1 set path=c:\jsdk\bin;%path% mit irgendeinem Editor in die Datei c:\autoexec.bat. Diese Datei existiert schon und wird bei jedem Neustart ausgefü hrt. Ä nderungen an dieser Datei sollte man sehr vorsichtig und gewissenhaft vornehmen, da Windows sonst eventuell nicht mehr starten kann. Befehle in der autoexec.bat werden erst nach einem Neustart Ihres Rechners wirksam (aber warten Sie noch einen Moment, unten kommt noch so ein Befehl). Unter WindowsNT/2000/XP kann man den Wert von Umgebungsvariablen auch ohne Neustart verändern. Fragen Sie Ihren Nachbarn oder die Windows-Hilfe, wie das geht. -1- TFH Der TextPad als Java-Entwicklungsumgebung SS02 Im Verzeichnis c:\jsdk\bin stehen die ausfü hrbaren Programme des JSDK (der Compiler javac.exe, der Interpreter java.exe etc..). 3. Java-Klassen werden in Quelldateien (.java-Dateien) vereinbart und vom Compiler in sogenannte Klassendateien (.class-Dateien) ü bersetzt. Häufig mü ssen die Programme des JSDK (javac, java, etc.) auf bestimmte Klassen (in Quell- und/oder in Klassendateien) zugreifen. Die Programme suchen nach solchen Klassen in allen Verzeichnissen, die in der Umgebungsvariablen classpath eingetragen sind. Es empfiehlt sich, den Compiler (javac) alle Klassen in ein separates Verzichnis schreiben zu lassen, z.B. in ein Verzeichnis namens c:\Klassen, und insgesamt vier Verzeichnisse (durch Semikolons getrennt) in die classpath-Variable einzutragen. Unter Window95/98/ME schreibt man dazu den folgenden Befehl in die Datei c:\autoexec.bat: 2 set classpath=c:\Klassen;.;..;..\.. Auch dieser Befehl wird erst nach einem Neustart wirksam. Unter WindowsNT/2000/XP legt man den Wert der classpath-Variablen entsprechend fest. Das Verzeichnis c:\Klassen trägt man vor allem deshalb in die classpath-Variable ein, damit der Interpreter die Klassendateien findet, die der Compiler dorthin geschrieben hat. Die ü brigen drei Verzeichnisse (das aktuelle Arbeitsverzeichnis mit dem unauffälligen Namen Punkt ".", sein Mutterverzeichnis ".." und sein Grossmutterverzeichnis "..\..") werden eingetragen, damit der Compiler bestimte Quelldateien finden und automatisch "mitcompilieren" kann, wenn er das fü r angebracht hält. Die letzten drei Einträge in der classpathVariablen werden vor allem dann wichtig, wenn man Klassen entwickelt, die zu einem Paket mit Namen gehören. Was Pakete mit Namen sind (und wie das Paket ohne Namen heisst) wird in der Lehrveranstaltung PRG1 behandelt. 4. Wenn man den JSDK installiert und die Umgebungsvariablen path und classpath mit geeigneten Werten versehen hat, sollte man (als Test) ein einfaches Quellprogramm compilieren und ausfü hren lassen, z.B. eines namens Hallo01.java in einem Verzeichnis namens c:\Quellen. Dazu öffnet man eine Dos-Eingabeaufforderung, macht das Verzeichnis c:\Quellen zum aktuellen Arbeitsverzeichnis (mit dem change-directory-Befehl cd) und gibt nacheinander die folgenden beiden Befehle ein: 3 4 c:\Quellen> javac -d c:\Klassen Hallo01.java c:\Quellen> java Hallo01 Der erste Befehl veranlasst den Compiler javac die Quelldatei Hallo01.java in eine Klassendatei Hallo01.class zu ü bersetzen und diese in das Verzeichnis c:\Klassen zu schreiben. Der zweite Befehl veranlasst den Interpreter java dazu, die Klassendatei Hallo01.class auszufü hren. Der Interpreter findet die Klassendatei, weil das Verzeichnis c:\Klassen in der classpath-Variablen eingetragen ist (siehe oben). Man beachte, dass man beim Angeben einer Quelldatei die Dateierweiterung .java angeben muss (z.B. Hallo01.java, nicht nur Hallo01), beim Angeben einer Klassendatei die Dateierweiterung .class dagegen nicht angeben darf (nur Hallo01, nicht Hallo01.class). 5. Nachdem man den JSDK installiert und von der Kommandozeile (Dos-Eingabeaufforderung) aus getestet hat, kann man den TextPad installieren. 6. Wenn man den TextPad startet, sollten im Menü Extras drei Befehle (zum Compilieren einer Java-Datei, zum Ausfü hren eines Java-Programms und zum Starten eines Java-Applets) eingetragen sein. Falls das nicht der Fall ist, wählt man im Menü Konfiguration den Punkt Einstellungen..., klickt (ziemlich links unten) auf Extras, dann (ziemlich rechts oben) auf Hinzufü gen und wählt schliesslich JDK-Befehle. Dadurch werden die drei JSDK-Befehl zum Menü Extras hinzugefü gt. -2- TFH Der TextPad als Java-Entwicklungsumgebung SS02 7. Damit der Compiler javac alle Klassendateien in das Verzeichnis c:\Klassen schreibt, muss man den Compilations-Befehl (im Extras-Menü des TextPad) wie folgt modifizieren: Im Menü Konfiguration wählt man den Punkt Einstellungen..., klickt diesmal auf das Pluszeichen links neben Extras und dann auf Java kompilieren. In dem Fenster, welches man dann sieht, muss man (in der zweiten Zeile von oben) den Eintrag rechts neben Parameter: verändern (siehe unten Abbildung 1) und dafü r sorgen, dass von den 6 Auswahlkästchen mindestens zwei (Dateien vor dem Start speichern und Ausgabe erfassen) mit einem Häkchen versehen sind. Das Ergebnis sollte etwa so aussehen, wie unten in Abbildung 1 (bitte ignorieren Sie den Befehl Make $BaseName ... im Menü Extras). Abbildung 1 Der spezielle Name $File wird vom TextPad (bei jedem Aufruf eines Befehls im Menü Extras) durch den Namen der aktuellen Datei ersetzt. Falls man im TextPad mehrere Dateien gleichzeitig geöffnet hat ist jeweils die aktuell, deren Fenster den Fokus hat (d.h. "zuletzt angeklickt wurde"). Wählt man den Befehl Java kompilieren in einem Moment, in dem ein falsches Fenster den Fokus hat, wird der Compiler dadurch meist so verwirrt, dass er nur verwirrende Fehlermeldungen ausgibt. Der spezielle Namen $FileDir steht fü r das Verzeichnis der aktuellen Datei und $BaseName fü r den Namen der aktuellen Datei ohne Dateierweiterung ("nur die Zeichen vor dem letzten Punkt"). 8. Als ersten Test sollte man eine einfache Quelldatei (z.B. die Datei Hallo01.java im Verzeichnis c:\Quellen) mit dem TextPad öffnen, ü bersetzen und ausfü hren lassen (mit den Befehlen Java kompilieren und Java-Programm starten im Menü Extras). Wenn das nicht klappt, muss man alle bisher beschriebenen Schritte noch einmal ü berprü fen. 9. Mit einem zweiten Test ü berprü ft man dann die "Sprungfähigkeit" des TextPad. Dazu baut man absichtlich einen Fehler in die Quelldatei ein (z.B. ersetzt man println durch printlnn) und compiliert erneut. In einem Programmausgabe-Fenster sollte daraufhin etwa folgende Fehlermeldung des erscheinen: -3- TFH 1 2 3 4 5 6 Der TextPad als Java-Entwicklungsumgebung SS02 C:\Quellen\Hallo1.java:5: cannot resolve symbol symbol : method printlnn (java.lang.String) location: class java.io.PrintStream System.out.printlnn("Hallo1, Version 123!"); ^ 1 error Die erste Zeile besagt, dass der Compiler in Zeile 5 der Datei C:\Quellen\Hallo1.java einen Fehler gefunden hat. Wenn man irgendwo in dieser Fehlermeldungszeile doppelklickt, mü sste der TextPad automatisch zu der betreffenden Zeile in der Quelldatei springen. Ein Doppelklick auf eine andere als die erste Zeile der Fehlermeldung bewirkt keinen Sprung, weil in diesen Zeilen kein Dateiname und keine Zeilen-Nummer steht. Sollte das Springen nicht funktionieren, muss man den Regulären Ausdruck fü r Sprungziele (siehe Abbildung 1) ü berprü fen. Weitere Informationen dazu findet man in der TextPad-Hilfe unter dem Stichpunkt Reguläre Ausdrü cke zum Interpretieren von Compiler-Fehlermeldungen. Allgemeine Tipps zum TextPad als Entwicklungsumgebung Die folgenden Tipps sind weitgehend unabhängig davon, ob man den TextPad als Entwicklungsumgebung fü r Java-, C++, Perl oder irgendeine andere Programmiersprache verwendet. 1. Zeilen-Nummern auf dem Bildschirm anzeigen lassen (sollte man immer machen): Menü Ansicht, darin Zeilennummern wählen. Achtung: Wenn man die Datei ausdruckt, weden diese Nummern nicht mitgedruckt (siehe unten). 2. Mit dem TextPad kann man nicht nur mehrere ganze Zeilen kopieren, löschen etc., sondern auch beliebige rechteckige Textausschnitte (sogenannte Blöcke) bearbeiten, etwa so: Um einen Block auszuwählen, positioniert man den Cursor vor dem ersten Zeichen (in der linken oberen Ecke des Blocks), drü ckt dann auf die Alt-Taste (und hält sie gedrü ckt) während man die Maus nach unten und rechts bewegt. Einen ausgewählten Block kann man dann z.B. löschen oder kopieren und an anderen Stellen wieder einfü gen. Wie das Einfü gen eines Blocks genau funktioniert lernt man am besten durch Ausprobieren. Lassen Sie sich nicht entmutigen, wenn das Ergebnis des ersten Versuchs unsinnig oder schwer verständlich zu sein scheint. Nach ein paar Versuchen werden Sie das System durchschauen und die Block-Funktion nicht mehr missen wollen. 3. Einige Einstellungen des TextPad beziehen sich auf alle Dokumente einer bestimmten Dokumentenklasse (siehe Menü Konfiguration, Einstellungen, Dokumentenklasse). Zu einer Dokumentenklasse gehören alle Dateien ("Dokumente"), deren Namen bestimmte Erweiterungen (Zeichen nach dem letzten Punkt im Dateinamen) haben. Z.B. gehören zur Dokumentenklasse Java alle Dateien *.jav und *.java, zur Dokumentenklasse C/C++ gehören unter anderem alle *.c, *.cpp, *.h Dateien etc.. Folgende Einstellungen können (und mü ssen) fü r jede Dokumentenklasse separat festgelegt werden: die Schriftart fü r die Darstellung auf dem Bildschirm, die Schriftart fü r das Drucken, alle Einstellungen, die mit Tabulatorzeichen zu tun haben, ob Zeilen-Nummern mit -4- TFH Der TextPad als Java-Entwicklungsumgebung SS02 ausgedruckt werden sollen oder nicht und ob der Inhalt von Programmdateien bunt angezeigt werden soll (syntax highlighting, entsprechend einer Syntax-Datei wie z.B. java.syn fü r JavaDateien, cpp.syn fü r C++-Dateien etc.). 4. Zeilen-Nummern ausdrucken (sollte man immer machen): Menü Konfiguration, Einstellungen, auf das +-Zeichen vor Dokumentenklasse klicken, eine Dokumentenklasse auswählen (z.B. auf das +-Zeichen vor C/C++ klicken), Drucken: Bei Zeilennummern ein Häkchen setzen. 5. In Quelldateien Tabulatorzeichen durch Leerzeichen ersetzen lassen. Sollte man unbedingt machen, damit beim Ausdrucken (oder beim Bearbeiten der Dateien mit einem anderen Editor) das Layout nicht plötzlich "ganz anders" ist. Wie bei 2., aber statt Drucken diesmal Tabulator wählen und zwei Häkchen setzen. 6. Schriftarten wählen: Sie können unabhängig voneinander 2 Schriftarten wählen: Eine fü r den Bildschirm und eine zum Ausdrucken. Wie bei 2., aber statt Drucken diesmal Schriftart wählen. 7. Wenn Sie zum Ausdrucken die Schriftart Courier 10 Punkte benutzen (empfehlenswert), sollten Ihre Zeilen nicht länger als etwa 76 Zeichen sein, sonst macht der Drucker einen "gewaltsamen Zeilenumbruch". Da der Drucker keine Ahnung von Programmierung hat, bricht er Zeilen häufig an einer ungü nstigen oder falschen Stelle um. Lassen Sie das nicht zu! Prü fen Sie Ihr Dokument vor dem Ausdrucken immer mit der Druckvorschau (oder Seitenansicht, klicken Sie auf den Knopf mit der Lupe, in der oberen Knopfleiste). Wenn nicht jede Zeile eine eigene Nummer hat, dann war eine Zeile zu lang (und sollte von Ihnen an einer richtigen und gü nstigen Stelle umgebrochen werden). 8. Machen Sie sich möglichst bald mit dem sehr nü tzlichen Befehl In Dateien suchen ... im Menü Suchen vertraut. Hier ein Anwendungsbeispiel: Sie suchen Quelldateien, in denen ein bestimmter C++-Befehl angewendet wird, z.B. der Befehl typedef. Angenommen, im Verzeichnis G:\dozenten\mueller\tolleBeispiele (und in seinen Unterverzeichnissen) stehen interessante C++-Beispielprogramme. Dann rufen Sie im Menü Suchen den Befehl In Dateien suchen ... auf (oder drü cken -5- TFH Der TextPad als Java-Entwicklungsumgebung SS02 <Strg>+F5). Dadurch wird ein kleines Fenster geöffnet, in das Sie etwa folgende Daten eintragen: Besonders wichtig ist das Häkchen bei Untergeordnete Ordner einbeziehen. Wenn Sie jetzt auf Suchen klicken, wird ein Suchergebnis-Fenster geöffnet (das sieht so ähnlich aus wie ein Dateifenster, in dem man sich eine Datei ansieht und editiert) und darin erscheinen alle Zeilen (aus allen Dateien in den angegebenen Verzeichnissen) in denen das Wort typedef vorkommt. Am Anfang jeder Zeile steht der vollständige Pfadname der betreffenden Datei (z.B. G:\dozenten\mueller\tolleBeispiele\gruppe3\Beispiel17.cpp) und wenn Sie auf die Zeile doppelklicken, wird die Datei (in einem neuen, normalen Dateifenster) geöffnet (und der Cursor steht gleich "an der richtigen Stelle" in der Datei). 9. Befehle zum Compilieren, Binden und Ausfü hren von Java- und von C++-Programmen finden sie im Menü Extras. In diesem Menü werden fü r die meisten Befehle auch Tasten-Kü rzel angezeigt (z.B. Strg-1, Strg-2 etc). Hier ein weitere Möglichkeit, wie man die Extras-Befehle besonders bequem aufrufen kann: Wählen Sie im Menü Ansicht, Symbolleiste den Punkt Extras. Es erscheint eine weitere Befehlsleiste mit vielen Hämmern darin. Jeder Hammer steht fü r einen Befehl im Menü Extras. Wenn Sie den Mauszeiger einen Moment ü ber einen Hammer halten (ohne zu klicken) erscheint der Name des betreffenden Befehls als kleiner Hilfe-Ballon. 10. Wenn Sie einen bestimmten TextPad-Befehl besonders häufig brauchen, sollten Sie sein Tastaturkü rzel lernen (es wird im entsprechenden Menü mit angezeigt), und wenn der Befehl noch kein Tastaturkü rzel hat, dann sollten Sie eines definieren. Um z.B. die aktuelle Zeile (ohne Griff zur Maus) mit der Tastenkombination Alt-c in die Ablage kopieren zu können, geht man so vor: Im Menü Konfiguration, Einstellungen wählt man Tastatur. Unter Kategorien wählt man Bearbeiten und unter Befehl wählt man EditCopyLine. Dann gibt man in das Eingabefeld Neue Tastenkombination die Kombination Alt-c ein und klickt schlieslich auf Zuweisen. und Ü bernehmen. Ganz entsprechend sollte man fü r den Befehl EditDeleteLine (löscht die aktuelle Zeile) das Tastaturkü rzel Alt-y festegen. 11. Links neben dem Hauptfenster werden normalerweise zwei schmale Fenster ü bereinander angezeigt, oben das Dateilisten-Fenster (in dem alle offenen Dateien angezeigt werden) und darunter das Textbausteine-Fenster. Wenn man sich alle offenen Dateien als Kartei mit Reitern anzeigen lässt (Menü Ansicht, Dokumentenkartei) braucht man das Dateilisten-Fenster eigentlich nicht mehr und kann es schließ en (Menü Ansicht, Dateiliste, oder F11 drü cken). Wo und wie die Reiter genau angezeigt werden sollen, können Sie einstellen (Menü Konfiguration, Ansicht, Karteiförmige Dateiliste). Im Textbausteine-Fenster kann man sich eine von verschie-6- TFH Der TextPad als Java-Entwicklungsumgebung SS02 denen Sammlungen von Textbausteinen (clips) anzeigen lassen (indem man mit der linken Maustaste in die obere Zeile des Fensterchens klickt und dann wählt). Im folgenden Beispiel wurde die Textbausteine-Sammlung (clips library) namens C++ gewählt: Wenn Sie auf einen der Textbausteine im Textbausteine-Fenster doppelklicken (z.B. auf Minuszeile oder auf main (mit Meldung)) wird ein entsprechender Text im aktuellen Dateifenster eingefü gt. Sie können auch selbst solche Sammlungen von Textbausteinen anlegen. Klicken Sie mit der rechten Maustaste auf den Namen der Sammlung (im Beispiel oben: auf C++) um ein Kontextmenü zu öffnen und wählen Sie darin Sammlung bearbeiten oder Neue Sammlung. Textbausteine-Sammlungen stehen in Dateien, die z.B. java.tcl, cpp.tcl, htmltags.tcl etc. heissen (dabei steht tcl fü r TextPad clip library). 12. Fortgeschrittene sollten sich mit regulären Ausdrü cken vertraut machen. Im TextPad kann man sie unter anderem bei den Befehlen Suche nach ... (in einer Datei) und In Dateien suchen ... (in mehreren Dateien suchen, siehe oben Punkt 7) gut gebrauchen. Hier ganz knapp die Bedeutung einiger wichtiger Zeichen in einem regulären Ausdruck: . .? .+ .* ^ $ [abc] [abc]? [abc]+ (ein Punkt) Ein beliebiges Zeichen Null oder ein beliebiges Zeichen Ein oder mehrere beliebige Zeichen Null oder mehrere beliebige Zeichen Zeilenanfang Zeilenende Eins der Zeichen a, b, c Null oder eines der Zeichen a, b, c Ein oder mehr Vorkommen der Zeichen a, b, c (z.B. abbbac) -7- TFH [abc]* [^abc] [^abc]? [^abc]+ [^abc]* Der TextPad als Java-Entwicklungsumgebung SS02 Null oder mehr Vorkommen der Zeichen a, b, c Ein Zeichen, aber nicht a, b oder c. Null oder ein Zeichen, aber nicht a, b oder c. Ein oder mehr Zeichen, aber nicht a, b oder c. Null oder mehr Zeichen, aber nicht a, b oder c. Genauere Einzelheiten findet man in der TextPad-Hilfe (jetzt auch auf Deutsch) unter dem Stichwort reguläre Ausdrü cke. 13. Wenn Sie ein Programm starten und ihm dabei bestimmte (Kommandozeilen-) Parameter ü bergeben wollen, können Sie im Menü Extras den Befehl Ausfü hren wählen. Dadurch geht ein kleines Fenster auf, in das Sie z.B. folgendes eintragen können: In diesem Beispiel wird dem Gnu-Cygnus-C++-Ausfü hrer g++ befohlen, aus den drei Quelldateien dat1.cpp, dat2.cpp und dat3.cpp eine ausfü hrbare Datei namens prog07.exe zu erzeugen. Solche Compilations- und Bindebefehle, die sich auf mehrere Dateien beziehen, können Sie nicht mit den anderen ("einfachen") Befehlen im Menü Extras geben (höchstens mit dem make-Befehl). Last but not least: Stöbern Sie ab und zu in der Hilfe des Textpads. Es gibt noch viele interessante und nü tzliche Befehle zu entdecken. -8-