allanswers.org - FAQ der Newsgroup de.comp.lang.java Version 1.41 vom 14.05.2004

 Home >  FAQ on different themesdecomp-lang-java >

FAQ der Newsgroup de.comp.lang.java Version 1.41 vom 14.05.2004

Section 1 of 6 - Prev - Next
All sections - 1 - 2 - 3 - 4 - 5 - 6


Archive-name: de/comp-lang-java/faq
Posting-Frequency: weekly (Friday)
Last-modified: 2004-03-26
Version: 1.41
URL: ftp://rtfm.mit.edu/pub/usenet-by-group/de.answers/de/comp-lang-java/faq, http://www.faqs.org/faqs/de/comp-lang-java/faq
Expires: 28 May 2004 00:00:00 CEST
Tab-Width: 4
Page-Width: 74

  FAQ (Frequently Asked Questions) der Newsgroup de.comp.lang.java v1.41
=========================================================================

Inhalt:
-------

1. Allgemeines

   1.1. Allgemeine Hinweise zum Posten
   1.2. Worum geht es in dieser Newsgroup?
   1.3. Wie kommen häufig gestellte Fragen in diese FAQ?
   1.4. Wie kommen die Bugs aus der FAQ?
   1.5. TAGS-Konventionen zu einem einheitlichen Aussehen
   1.6. Ich bekam als Antwort auf meine Frage eine seltsame Buchstaben-
        kombination zugeschickt. Was ist das und wie kann ich es lesen?


2. Was man über Java wissen sollte

   2.1. Was ist Java?
   2.2. Verwandtschaft von Java mit anderen Sprachen?
   2.3. WebBrowser und Java
   2.4. Erste Schritte in Java
   2.5. Ich habe das HelloWorld-Programm aus meinem Java-Buch
        abgeschrieben, aber es funktioniert nicht. :-(


3. Häufig gepostete Fragen

    3.1. [LANG] - Die Sprache Java.
        3.1.1. Gibt es in Java keine Zeiger wie in C++?
        3.1.2. Warum ist Referenz nicht gleich Referenz?
        3.1.3. Wie werden in Java Funktionsparamter übergeben, by value
               oder by reference?
        3.1.4. Warum gibt es in Java keine Destruktoren wie in C++?
        3.1.5. Warum funktioniert die equals Methode nicht?
        3.1.6. Wenn ich eigene Objekte mit einer Hashtable/HashMap
               verwalte, kommt es zu sonderbaren Effekten. Wieso?
        3.1.7. Was bedeutet das Schlüsselwort final?
        3.1.8. Warum wird der dynamische Parametertyp bei überladenen
               Funktionen nicht beachtet?
        3.1.9. Was bedeutet super()?
        3.1.10. Was sind anonyme Arrays?
        3.1.11. Gibt es in Java einen Prä-Prozessor wie in C++?
        3.1.12. Existiert der const Modifizierer von C++ auch in Java?
        3.1.13. Wie kann man Referenzen von Übergabeparametern ändern?
        3.1.14. Wie erzeuge ich eine  tiefe  Kopie eines Objektes mit
                möglichst wenig Aufwand?
        3.1.15. Wie kann ich in Java eine dem Programmierer unbekannte
                Anzahl gleichartiger Objekte erzeugen und ihnen passende
                Namen zuweisen, also label1, label2 usw.?
        3.1.16. Wie kann ich den Typ enum aus C++ in Java umsetzen?
        3.1.17. Kann man Mehrfachvererbung mit Java simulieren?
        3.1.18. Wie realisiere ich eine variable Parameterliste?
        3.1.19. Wie realisiere ich eine Methodenauswahl nach den
                dynamischen Parametertypen?
        3.1.20. Sind Methoden in Java immer virtuell?
        3.1.21. Ich stosse ab und zu auf den Begriff "Wrapper-Klassen".
                Könnte mir jemand erklären was das ist?
        3.1.22. Warum ist private nicht privat?


    3.2. [STRING] - Strings.
        3.2.1. Wie vergleiche ich zwei Strings in Java?
        3.2.2. Wie wandle ich einen String in einen Integer?
        3.2.3. Wie wandle ich einen Integer in einen String um?
        3.2.4. Wie wandle ich einen Integer in einen HexString um?
        3.2.5. Wie kann ich eine Zahl formatieren und wie lege ich die
               Anzahl der Nachkommastellen fest?
        3.2.6. Wie kann ich ein Datum formatieren?
        3.2.7. Wie kann ich in einem String oder StringBuffer mehrere
               Zeichen suchen und ersetzen?
        3.2.8. Gibt es reguläre Ausdrücke in Java (regular expressions)?


    3.3. [IO] - Eingabe/Ausgabe, Streams, etc.
        3.3.1. Verlangsamt Serialisierung mein Programm?
        3.3.2. Wie kann ich rekursiv einen Verzeichnisbaum abarbeiten?
        3.3.3. Wie kann ich aus Dateien zeilenweise lesen?
        3.3.4. Wie kann ich Exponentialzahlen (z.B. 1.09E+008) aus einer
               Datei lesen?
        3.3.5. Wie kann ich mit Java Dateien kopieren?
        3.3.6. Wie kann man auf programmnahe Resourcen (Button-images,
               local String properties,...) zugreifen, ohne absolut oder
               relativ zu user.dir adressieren zu müssen (ich will das
               ganze auch in ein jar packen können)?


    3.4. [NET] - Netzwerk.
        3.4.1. Wie kann ich einen Ping in Java realisieren?


    3.5. [AWT] - Abstract Window Toolkit.
        3.5.1. Wenn ich einen Listener bei mehreren Buttons anmelde, wie
               kann ich dann unterscheiden, welcher gedrückt wurde?
        3.5.2. Kann ich ein Fenster (Frame/JFrame) maximieren?
        3.5.3. Wie tausche ich die Kaffeetasse im blauen Balken aus?


    3.6. [SWING] - Swing, das bevorzugte GUI.
        3.6.1. Wie mache ich globale Font-Änderung für meine Komponenten?
        3.6.2. Wie kann ich bei der Eingabe in ein JTextField die Anzahl
               der eingebbaren Zeichen beschränken?
        3.6.3. Wie setze ich den Cursor an den Anfang der JTextArea?
        3.6.4. Wie scrolle ich an das Ende der JTextArea?
        3.6.5. Wie bekomme ich es hin, das der Benutzer in meiner JTable
               keine Eingaben tätigen kann?
        3.6.6. Wie bekomme ich eine horizontale ScrollBar bei JTable?
        3.6.7. Wie scrolle ich ans Ende von JTable?
        3.6.8. Wie verhindere ich ein reordering der Spalten bei JTable?
        3.6.9. Wie verhindere ich ein Resizen der Spalten bei JTable?
        3.6.10. Wie ändere ich die Hintergrundfarbe von JScrollPane?
        3.6.11. Wie kann ich ein JLabel dazu bringen, seinen Hintergrund
                zu füllen?
        3.6.12. Warum reagiert meine GUI nicht, während eine längere 
                Berechnung ausgeführt wird?


    3.7. [APPLET] - Java-Applets und ihre Zusammenarbeit mit Browsern.
        3.7.1. Welche JDK-Version sollte ich für Applets verwenden, die
               möglichst allgemein lauffähig sein sollen?
        3.7.2. Wie bekomme ich den Internet Explorer dazu, das Plugin
               anstelle der integrierten JVM zu benutzen.
        3.7.3. Was dürfen unsignierte Applets nicht aus
               Sicherheitsgründen?


    3.8. [SERVER] - Servlets und andere Server-Implementierungen in Java.


    3.9. [NONCORE] - Klassen/Packages, die über den Kern der Sprache
                     hinausgehen, also Java3D etc.

    3.10. [OOP] - OOP-Konzepte und Patterns in Java.
        3.10.1. Was bedeutet Vererbung im OO-Kontext?
        3.10.2. Was bedeutet Aggregation im OO-Kontext?
        3.10.3. Was bedeutet Assoziation ist OO-Kontext?
        3.10.4. Was bedeutet Benutzung im OO-Kontext?
        3.10.5. Worin liegen die Unterschiede zwischen abstrakten Klassen
                und Interfaces?
        3.10.6. Was ist eine anonyme innere Klasse?
        3.10.7. Was ist ein immutable Objekt?


    3.11. [JDK] - Virtuelle Maschinen, alles über JDKs, deren
                  Installation und Verwendung.
        3.11.1. Was ist ein Java Development Kit (JDK)
        3.11.2. Was ist ein Java Runtime Environment (JRE)
        3.11.3. Was ist eine Java Virtual Machine (JVM)
        3.11.4. Wie konfiguriere ich JDK1.3/1.4 unter Linux oder Unix?
        3.11.5. Wie installiere und konfiguriere ich das jdk unter
                Windows 9x/Me/NT/2000 richtig?


    3.12. [TOOLS] - Java-Zusatz-Tools, zum Beispiel IDEs, Build-Tools,
                    Profiler, etc.
        3.12.1. Welche IDE muss ich verwenden?
        3.12.2. Wie kann man eine Java-Anwendung in eine EXE-Datei
                umwandeln?


    3.13. [MATH] - Mathematik, Arithmetik, Gleitpunktzahlen, Funktionen.
        3.13.1. Warum rechnet Java falsch?
        3.13.2. Wie runde ich eine Gleitkommazahl?
                Wie formatiere ich eine Gleitkommazahl?
        3.13.3. Wie kann ich in Java Zufallszahlen im Bereich 0..n
                erzeugen?


    3.14. [MISC] - Alles, was nicht in eine der anderen Rubriken paßt.
        3.14.1. Ich komme mit dem import-Statement nicht klar, was mache
                ich falsch?
        3.14.2. Warum gibt es Probleme bei final Werten in Verbindung mit
                elementaren Typen?
        3.14.3. Was bedeuten "$" im Namen von Class-Files?
        3.14.4. Wie lassen sich Bilder im Dateiformat XYZ laden oder
                speichern?
        3.14.5. Was geht nicht mit Java?
        3.14.6. Wie kann ich in meinem Java-Programm ein HTML-Dokument
                anzeigen lassen?
        3.14.7. Unter Windows werden in der Konsole (DOS-Eingabe-
                 aufforderung) die Umlaute falsch ausgegeben. Wie kann
                 ich das korrigieren?


    3.15. [ERROR] - Fehlermeldungen.
        3.15.1. Warum findet Java den Konstruktor nicht?
        3.15.2. Warum bekomme ich eine "NoClassDefFoundError"
                Fehlermeldung beim Starten von java?
        3.15.3. Warum bekomme ich eine "Couldn't read "
                Fehlermeldung beim Kompilieren mit javac?
        3.15.4. Warum bekomme ich eine "class  must be defined in
                a file called " Fehlermeldung  beim Kompilieren
                von javac?
        3.15.5. Warum wird beim Zugriff auf ein korrekt initialisiertes
                Objekt-Array eine NullPointerException geworfen?
        3.15.6. Warum bekomme ich eine NullPointerException, wenn ich
                versuche, auf Methoden oder Attribute von in einem Array
                gespeicherten Objekten zuzugreifen?
        3.15.7. Warum meckert der Compiler bei nicht initialisierten
                final Variablen?
        3.15.8. Was hat die Compilerfehlermeldung "... is deprecated" zu
                bedeuten?


    3.16. [ClassLoader] - Alles über Classloader
        3.16.1 Wie funktionieren Classloader?
        3.16.2 Warum macht der Classloader im Servlet-Container Probleme?
               Warum funktioniert das Einlesen von Ressourcen ueber den
               Classloader bei mir nicht?
        3.16.3 Wie lade ich eine Klasse neu?
        3.16.4 Wie baue ich einen Plugin-Mechanismus?
        3.16.5 Gibt's dazu auch Beispielcode?
        3.16.6 ClassLoader Ressourcen zu 3.16.1 bis 3.16.5


4. Bücher zum Thema Java

    4.1. Kann mir jemand gute Literatur zum Thema Java empfehlen?


5. Themenverwandte Internet Ressourcen

    5.1 WWW-Sites
    5.2 Newsgroups
    5.3 Mailinglisten


6. JavaScript Internet Ressourcen.

    6.1 WWW-Sites
    6.2 Newsgroups


7. Credits
_____________________________________________________________________

1. Allgemeines
==============

1.1. Allgemeine Hinweise zum Posten
-----------------------------------
Wenn du neu im Usenet bist, solltest du auf jeden Fall die Texte in
der Newsgroup  lesen. Du findest sie auch im
WWW auf . In diesen Texten
erhält man einen Überblick über die im Usenet üblichen Regeln
("Netiquette"). Auf diese Weise lassen sich die meisten Anfänger-
fehler verhindern und man vermeidet, gleich für sein erstes Posting
wegen formaler Fehler angeschnauzt zu werden. Falls du Fragen zu den
Regeln im Usenet hast, stelle sie bitte in der Newsgroup
.

Weitere Links zum Thema:

    
    


1.2. Worum geht es in dieser Newsgroup?
     Autor: Markus Reitz
---------------------------------------
In der Newsgroup  sollen Probleme und Lösungen,
die sich im Zusammenhang mit der Programmiersprache Java ergeben,
diskutiert werden. Die Newsgroup beschäftigt sich nur mit der Sprache
Java! JavaScript oder herstellerspezifische Implementierungen (z.B.
Microsoft J++) besitzen eigene Newsgroups, in denen diese
spezifischen Probleme und Lösungen diskutiert werden. Neben der
Newsgroup  gibt es noch weitere (vor allem
englischsprachige) Newsgroups, die sich mit der Programmiersprache
Java beschäftigen. Siehe auch den Abschnitt "Themenverwandte
Newsgroups".

1.3. Wie kommen häufig gestellte Fragen in diese FAQ?
     Autor: Uwe Günther
-----------------------------------------------------
Nachdem man festgestellt hat, dass man in einem bestimmten Zyklus die
gleiche Frage immer wieder mit der gleichen Antwort beantworten muss -
nur weil die Unis ihren Lehrplan mal wieder geändert haben, in der c't
mal wieder ein "Wie programmiere ich ein Applet"-Kurs unter die Leute
gebracht wurde oder aus welchen Gründen auch immer - sollte man einen
neuen Thread mit dem

    Subject: [FAQ] Neue Frage: 

beginnen.

Der Body dieser Nachricht sollte folgendes Format besitzen:

--Schnipp--
Frage: 

Antwort: 

Beispiel: 
--Schnapp--

Wobei der Text in spitzen Klammern, dein Part ist. Die Zeilenlänge darf
74 Zeichen nicht überschreiten. Der Code sollte die Code Conventions von
Sun einhalten - wenn du nicht weisst was das ist, solltest du besser
keine FAQ schreiben. Der gesamte Text darf keine Tabs enthalten und bei
Bedarf gegen 4 Leerzeichen ersetzt werden. Es ist von grossem Vorteil
wenn der Beispiel-Code kompilierbar ist. Das steigert die Qualität der
FAQ ungemein.

Nachdem der Thread dann von den Regulars und den anderen Lesern von
de.comp.lang.java gebührend behandelt wurde und etwaige Probleme
ausgeräumt wurden, muss die Endfassung des Textes an die im Header dieser
FAQ angegebene e-mail Adresse des FAQ-Maintainers von de.comp.lang.java
gesendet werden. Dabei ist es erwünscht die Rubrik, oder gleich die
zukünftige Fragennummerierung mit anzugeben. Weiterhin muss die
Message-ID mit angegeben werden, damit der FAQ-Maintainer überprüfen kann
ob er nicht von irgendjemanden vereimert wird. ;-)


1.4. Wie kommen die Bugs aus der FAQ?
     Autor: Uwe Günther
-------------------------------------
Nachdem man festgestellt hat, dass die FAQ einen Fehler hat, kann man
diesen dem FAQ-Maintainer unter Angabe eines Workarounds direkt
mitteilen.


1.5. TAGS-Konventionen zu einem einheitlichen Aussehen
     Autor: Markus Reitz
--------------------------------------------------------
Neben den schon weiter oben genannten Ratschlägen, die allgemeine
Anmerkungen zum Posten in Newsgroups darstellen, folgen nun einige
spezifische Anmerkungen zur Schreibweise des Subjects in der
Newsgroup . Vor einiger Zeit wurde die
Einführung sogenannter Tags vorgeschlagen, die die Übersichtlichkeit
steigern sollen. Hintergrund ist die einfache Idee, den Inhalt des
Postings durch ein eindeutiges Schlüsselwort, das Tag, zu
charakterisieren. Mit einem entsprechend konfigurierten Newsreader ist
es dann möglich, sich solche Nachrichten hervorheben zu lassen, wodurch
man direkt auf einen Blick Postings beispielsweise zum Thema Swing
überschauen kann. Tags werden an den Anfang des Subjects, in eckigen
Klammern eingeschlossen, geschrieben. Damit Einheitlichkeit gewahrt
wird, sollten die folgenden Tags verwendet werden. Wenn jeder seine
eigenen Tags spezifizieren würde, wäre die Einheitlichkeit verloren und
es würde genau-soviel Chaos wie vorher herrschen. Deshalb an dieser
Stelle die Bitte, sich an die Vorgaben zu halten. Bei
Änderungsvorschlägen bitte in die Newsgroup zur Diskussion posten und
bei Akzeptanz in der Newsgroup werden die Vorschläge an dieser Stelle
in die FAQ aufgenommen.

Liste der Tags in :

Tags für Fragen:

    [LANG]
    - Frage bezüglich der Sprache Java.

    [STRING]
    - Fragen die unmittelbar mit Strings zu tun haben.

    [IO]
    - Frage bezüglich Eingabe/Ausgabe, Streams, etc. in Java.

    [NET]
    - Frage bezüglich Netzwerk.

    [AWT]
    - Frage bezüglich AWT.

    [SWING]
    - Frage bezüglich Swing.

    [APPLET]
    - Frage zu Java-Applets und ihre Zusammenarbeit mit Browsern.

    [SERVER]
    - Frage zu Servlets und anderen Server-Implementierungen in Java.

    [NONCORE]
    - Fragen zu Klassen/Packages, die über den Kern der Sprache
      hinausgehen, also Java3D etc.

    [OOP]
    - Frage bezüglich OOP-Konzepten und Patterns in Java.

    [JDK]
    - Frage zu virtuelle Maschinen, alles über JDKs und deren
      Installation und Verwendung.

    [TOOLS]
    - Frage zu einem Java-Zusatz-Tool, zum Beispiel IDEs, Build-Tools,
      Profiler, etc.

    [MATH]
    - Mathematik, Arithmetik, Gleitpunktzahlen, Funktionen.

    [MISC]
    - Alles, was nicht in eine der anderen Rubriken paßt.

    [ERROR]
    - Fragen zu Fehlermeldungen.

    [OT]
    - Alles was hochgrading off-topic ist und nicht direct mit Java zu
      tun hat. ;-)


Tags "nicht"-Fragen:

    [INFO]
    - Allgemeine Informationen, z.B. Links auf Webseiten

    [DISCUSSION]
    - Diskussion zu einem Java-spezifischen Thema

    [ANNOUNCE]
    - Vorstellung neuer Software

    [PROST]
    - Darf nur von Regulars verwendet werden, die wissen was sie tun. ;-)


1.6. Ich bekam als Antwort auf meine Frage eine seltsame Buchstaben-
     kombination zugeschickt. Was ist das und wie kann ich es lesen?
     Autor: Stephan Menzel
--------------------------------------------------------------------
Diese Kombination ist eine sogenannte Message-ID und bezeichnet einen
Usenetartikel eindeutig.

Vorgehensweise bei Message-ID-Angaben:

(a) man hat einen Newsreader, der damit umgehen kann:
    - einfach draufklicken.

(b) Wenn man Opera ab Version 6 verwendet, kann man in der Adressleiste
einfach "r msgid:a2kpac.14g.1@aljoscha-rittner.de" eingeben und gelangt
zur entsprechenden Seite von Google Groups.

(c) ansonsten: http://groups.google.com,
dann msgid:a2kpac.14g.1@aljoscha-rittner.de eingeben.

(d) Wenn man gerne URLs bastelt:
http://groups.google.com/groups?q=msgid:a2kpac.14g.1@aljoscha-rittner.de

(e) oder http://groups.google.com/advanced_group_search dann Msg-ID bei
"Beitrags-ID" eingeben.



2. Was man über Java wissen sollte
==================================

2.1. Was ist Java
     Autor: Markus Reitz
------------------------
Zuersteinmal: Java ist nicht JavaScript. JavaScript ist eine Sprache,
die federführend von der Firma Netscape entwickelt wurde, um die
Inhalte von Webseiten dynamischer und interaktiver zu gestalten.
JavaScript-Programme werden in den HTML-Quelltext der Seite
eingebettet und vom Browser interpretiert und ausgeführt. Zwar macht
JavaScript viele Anleihen bei Java, ist aber bei weitem nicht so
flexibel.

    Die deutsche Newsgroup zu JavaScript findet man unter:

        

    Die Website von de.comp.lang.javascript ist unter folgendem
    Link zu finden:

        

Java wurde von der Firma SUN Microsystems mit dem Ziel entwickelt, eine
moderne, objektorientierte Sprache zu schaffen. Durch das Ziel der
Plattformunabhängigkeit ist Java vor allem im Zusammenhang mit der
Entwicklung von Web-Applikationen im Internet eine der am häufigsten
verwendeten Sprachen. Doch Java beschränkt sich nicht nur auf das
Erstellen von Effekten für die Webseite, Java ist eine ausgewachsene
Programmiersprache, mit der man alle anstehenden Probleme lösen kann.
Die Syntax der Sprache ist an die von C++ angelehnt, Schlüsselwörter
sind verändert bzw. in der Bedeutung erweitert worden, bestimmte
Features von C++ wurden zugunsten der Übersichtlichkeit bzw. Sicherheit
nicht in Java verwendet. Java Programme liegen im sogenannten Bytecode
vor, der Maschinencode für einen fiktiven Prozessor, der von der VM, der
virtuellen Maschine, ausgeführt wird. Durch die Verwendung des Bytecodes
wird die Plattformunabhängigkeit von Java garantiert - dieser Vorteil
wird aber durch die, im Vergleich zu anderen Sprachen wie C++, wesentlich
langsamere Ausführungsgeschwindigkeit bezahlt.


2.2. Verwandtschaft von Java mit anderen Sprachen?
     Autor: Markus Reitz
-------------------------------------------------
Java bietet eine Reihe von neuen Features, orientiert sich aber auch
an etablierten Sprachen wie C++, Smalltalk oder Objective-C.
Prinzipien aus diesen Sprachen wurden übernommen und teilweise
erweitert. Die folgende Tabelle gibt einen kleinen Überblick über
Features von Java, die aus anderen Sprachen quasi "entliehen" wurden.

                                 |-----|-----------|-------------|
                                 | C++ | Smalltalk | Objective-C |
|--------------------------------|-----|-----------|-------------|
| Primitive Datentypen           |  *  |           |             |
|--------------------------------|-----|-----------|-------------|
| Universelle Basisklasse Object |     |     *     |             |
|--------------------------------|-----|-----------|-------------|
| Garbage Collection             |     |     *     |             |
|--------------------------------|-----|-----------|-------------|
| Konstruktoren                  |  *  |           |             |
|--------------------------------|-----|-----------|-------------|
| Statische Typen                |  *  |           |             |
|--------------------------------|-----|-----------|-------------|
| Bibliothek von Standardklassen |     |     *     |             |
|--------------------------------|-----|-----------|-------------|
| Interfaces                     |     |           |      *      |
|--------------------------------|-----|-----------|-------------|

Im Vergleich zu C++ besitzt Java folgende Unterschiede:

  - noch keine Templates
  - keine Operatorenüberladung
  - kein prozeduraler Overhead
  - keine Mehrfachvererbung von Klassen


2.3. WebBrowser und Java
     Autor: Markus Reitz
------------------------
Java zählt immer noch zu den  jüngeren  Programmiersprachen und die
Entwicklung verläuft in manchen Bereichen noch mit hoher
Geschwindigkeit. Insbesondere Zusatz-APIs findet man inzwischen wie
Sand am Meer und praktisch jede neue Version des JDK bietet
Verbesserungen oder Erweiterungen der bestehenden APIs.

Dies wird insbesondere dann problematisch, wenn man Java-Applets
schreiben möchte, die in den bekannten Web-Browsern von Netscape oder
Microsoft laufen sollen. Häufig werden aktuelle Features nur
unzureichend oder gar nicht unterstützt. Deshalb sollte man folgendes
beachten:

  - Ältere Webbrowser unterstützen (im günstigsten Fall) nur die
    Version 1.0 der Sprache
  - Neuere Webbrowser unterstützen zumindest teilweise die
    Sprachversion 1.1 (Netscape ab Version 4.04-J2, Microsoft
    Internet-Explorer ab Version 4.0)

Um eine möglichst große Anzahl an Plattformen bedienen zu können, muß
man sich also am besten auf Features der Sprache beschränken, die schon
in der UrVersion vorhanden waren. Bei neueren Features läuft man
Gefahr, daß Besitzer älterer Browser ausgeschlossen werden. Eine andere
Alternative bietet die Verwendung des von SUN erhältlichen
Java-Plug-In's. Dadurch werden ältere Browserversionen mit den Features
der aktuellen Java-Version aufgerüstet, wodurch es dann sogar möglich
wird, Java 2 - Programme in Browsern ablaufen zu lassen, obwohl diese
die neueste Version ursprünglich noch gar nicht unterstützen. Das
Plug-In ist auf der Homepage von SUN erhältlich, problematisch ist
allerdings die Größe. Es ist daher fraglich, ob Benutzer bereit sind,
sich wegen eines kleinen Homepage-Effektes ein großes Plug-In
herunterzuladen. Sinn macht das Plug-In daher nur bei wirklich größeren
Programmen oder bei Programmen, die für den Einsatz im Intranet
ausgerichtet sind.


2.4. Erste Schritte in Java
     Autor: Markus Reitz
---------------------------
Erfahrungen mit der Sprache Java zu sammeln ist nicht schwer. Sofern
man einen Internetzugang hat, kann man sich die Sprachdefinition,
Compiler etc. direkt von SUN besorgen. Es empfiehlt sich die Verwendung
der Java-Implementierung von SUN, denn diese ist die Referenz für alle
anderen Implementierungen und normalerweise die, die sich am aktuellsten
Sprachstandard orientiert. Lösungen von Microsoft oder Symantec haben
den Nachteil, daß Features modifiziert oder gar nicht implementiert
werden oder Fähigkeiten hinzukommen, die der ursprünglichen
Sprachimplementation fehlen. Außerdem bietet das JDK (Java Development
Kit) von SUN den Vorteil, daß es kostenlos verfügbar ist. Nachteil:
Compiler und Tools arbeiten kommandozeilenorientiert, d.h. man schreibt
den Quellcode mit einem beliebigen Editor, speichert die Datei und führt
dann den Compiler aus. Bei Fehlern lädt man die Datei, korrigiert den
Fehler und das ganze Spiel beginnt von vorne. Abhilfe schaffen IDEs
(Integrated Development Environment), die das JDK steuern und Fehler
und andere Meldungen direkt anzeigen, ohne daß der Quelltexteditor
verlassen werden muß. Ein weiterer Vorteil von IDEs ist das Feature
Syntax Highlighting, das die Schlüsselwörter der Sprache farblich
hervorhebt und dadurch die Übersichtlichkeit steigert.

Bezugsquelle für das JDK: 


2.5. Ich habe das HelloWorld-Programm aus meinem Java-Buch
     abgeschrieben, aber es funktioniert nicht. :-(
     Autor: Hubert Partl
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Newbie:
Ich habe das HelloWorld-Programm aus meinem Java-Buch abgeschrieben,
aber es funktioniert nicht. :-(

Oldie:
Das ist schon richtig :-) so, das HelloWorld-Beispiel dient dazu,
dass Du die typischen Anfaenger-Fehler kennenlernst und in Zukunft
vermeiden kannst.

In diesem Fall kann ich nur raten: Du hast wahrscheinlich einen der
folgenden typischen Newbie-Fehler gemacht:

* Du hast das Programm nicht genau genug abgeschrieben (Tippfehler,
Gross-Kleinschreibung, Sonderzeichen, Leerstellen), lies doch die
Fehlermeldungen und Korrekturhinweise, die der Compiler Dir gibt.


* Du hast das Programm nicht unter dem richtigen Filenamen abgespeichert.
Wenn die Klasse HelloWorld heisst, muss das File HelloWorld.java heissen,
nicht helloworld.java und auch nicht HelloWorld.java.txt, im letzteren
Fall versuch es mit

    notepad "HelloWorld.java"


* Du hast beim Compiler nicht den kompletten Filenamen mit der Extension
angegeben (wieder mit der richtigen Gross-Kleinschreibung):

   javac HelloWorld.java


* Du hast bei der Ausfuehrung nicht den Klassennamen ohne die Extension
angegeben (wieder mit der richtigen Gross-Kleinschreibung):

    java HelloWorld


* In der Umgebungsvariable PATH ist das Directory, in dem sich die
JDK-Software befindet, nicht neben den anderen Software-Directories
enthalten, versuch

    set PATH=%PATH%;C:\jdk1.2\bin

oder wie immer das auf Deinem Rechner heissen muss.


* Die Umgebungsvariable CLASSPATH ist (auf einen falschen Wert) gesetzt.
Diese Variable sollte ueberhaupt nicht gesetzt sein, nur in seltenen
Spezialfaellen und dann so, dass sie sowohl die Stellen enthaelt,
wo die Java-Klassenbibliotheken liegen, als auch den Punkt fuer das
jeweils aktuelle Directory.


* Du hast den Compiler nicht in dem Directory bzw. Folder aufgerufen,
in dem Du das Java-File gespeichert hast.


* Du hast ein Applet als Applikation aufgerufen, oder umgekehrt.
Applikatonen, die eine main-Methode enthalten, musst Du mit

    java Classname

aufrufen. Applets, die ein "extends Applet" oder "extends JApplet"
enthalten, musst Du innerhalb eines geeigneten HTML-Files mit

    appletviewer xxxxx.html

oder mit Netscape oder Internet-Explorer aufrufen.


Mehr darueber findest Du in meiner Java-Einfuehrung auf

    


Aehnliche Hinweise findest Du im Java Glossary von Roedy Green auf

    



3. Häufig gepostete Fragen
==========================


3.1. [LANG] - Frage bezüglich der Sprache Java.
-----------------------------------------------

3.1.1. Gibt es in Java keine Zeiger wie in C++?
       Autor: Markus Reitz
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Im Prinzip gibt es ein Konstrukt, das den Zeigern anderer
Programmiersprachen, wie zum Beispiel C++, sehr ähnlich ist: die
sogenannten Referenzen. Referenzen können, im Vergleich zu Zeigern in
C++, nicht manipuliert werden; die sogenannte Zeigerarithmetik, bei der
man Zeiger auf beliebige Speicherinhalte zeigen lassen kann, wurde aus
Sicherheitsgründen nicht in Java übernommen. Der Inhalt einer Referenz
kann einer anderen Referenz zugewiesen werden, Referenzen können
miteinander verglichen werden. Wird in Java eine Objektvariable
angelegt, so ist dies nichts weiter als ein Speicherplatz für eine
Referenz für ein Objekt des angegebenen Typs. Der new-Operator erzeugt
das eigentliche Objekt und liefert die Referenz darauf zurück, die dann
in der Objektvariablen gespeichert wird.


3.1.2. Warum ist Referenz nicht gleich Referenz?
       Autor: Markus Reitz
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Problem:

public class Test {
    public static void main (String[] args) {
        String a = "A";
        String x = a;
        System.out.println(x);
        a = "B";
        System.out.println(x);
    }
}

Die Ausgabe sollte doch eigentlich so aussehen:

    A
    B

Denn die Variable x speichert doch eine Referenz auf den String a! Im
ersten Fall hat a den Wert  A  und damit auch x, das ja auf diesen
String verweist. Im zweiten Fall wird a geändert und damit müßte sich
doch auch eigentlich der Wert von x ändern, weil x auf a verweist.
Die Ausgabe, die das Programm liefert, ist jedoch:

    A
    A

was eigentlich nicht in das Bild einer normalen Referenz passt.


Ursache:

Der Fehler liegt darin begründet, daß a nicht der eigentliche String
ist, sondern nur eine Referenz auf diesen String. Durch x = a
referenzieren beide Variablen den selben String und durch a = "B"
verweist a auf einen anderen neuen String mit dem Wert B. Dies ändert
jedoch nichts an der Referenz, die in x gespeichert ist. Somit ist die
Ausgabe völlig korrekt.



3.1.3. Wie werden in Java Funktionsparamter übergeben, by value
       oder by reference?
       Autor: Paul Ebermann
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Java kennt  (genauso wie C, aber im Gegensatz zu etwa Pascal) kein
"Call by Reference". Wenn Objekte als Parameter verwendet werden, wird
eben die Referenz "by Value" übergeben. Somit kann man zwar das Objekt
(so es veränderbar ist) verändern, aber nicht die originale Variable,
die als Parameter verwendet wurde.

Beispiel für Call by Reference:
(Pascal - [Syntax bestimmt nicht korrekt])

program ReferenzTest(input, output);

  var
  x, y : integer;

  procedure swap (var a: integer; var b: integer);
    var
    h : Integer;

  begin
    h := a;
    a := b;
    b := h;
  end;

begin
  x := 1;
  y := 2;
  swap(x,y);
  writeLn('x = ', x, ', y = ', y , '.');
end.

Das Programm gibt am Ende x = 2 und y = 1 aus.
In Java geht das nicht:

package de.dclj.faq;
class CallByReferenceTest
{
    static void swap (int a, int b)
    {
        int h = a;
        a = b;
        b = h;
    }

    public static void main(String[] test)
    {
        int x = 1;
        int y = 2;
        swap(x,y);
        System.out.println("x = " + x + ", y = " + y);

Section 1 of 6 - Prev - Next
All sections - 1 - 2 - 3 - 4 - 5 - 6

Back to category comp-lang-java - Use Smart Search
Home - Smart Search - About the project - Feedback

© allanswers.org | Terms of use

LiveInternet