Kurs Diskussion:Java – ein schneller Einstieg/Eine grafische Benutzeroberfläche

Aus Wikiversity
Zur Navigation springen Zur Suche springen

Packages[Bearbeiten]

Der Satz:

Klassen werden in Java in sog. Packages unterteilt. Es macht einfach keinen Sinn, ein kleines Applet mit allen Fähigkeiten einer Datenbank, eines Servers und einer Tabellenkalkulation auszustatten, die niemals genutzt werden.

ist meiner Meinung nach irreführend. Die Pakete unter Java sind "Quelltext-" oder auch "Klassen-Pakete". Sie haben nichts mit dem späteren Übersetzungsergebnis zu tun. Der Kompiler übersetzt ohnehin nichts, was in einer Applikation oder einem Applet nicht benötigt wird - und bindet es demzufolge auch nicht in den Bytecode ein. --Exxu 14:24, 10. Okt. 2007 (CEST)[Beantworten]

Aber hallo - hat nichts mit dem Übersetzungsergebnis zu tun. Versuch mal auf die Fields eines Objekts dessen Klasse nicht als "public" deklariert war zuzugreifen. Da hilft der Zusatz "public" in der Deklaration gar nichts. Die ganze Klasse und damit auch die Instanzen sind außerhalb des packages überhaupt nicht sichtbar.
Wenn der Compiler irgendetwas nicht erzeugt, so gibt er eine Fehlermeldung "never reached" aus. Er kompiliert vielleicht nicht alle ".java"-files, aber das ist eine Frage der Compileroptionen. Das package handling von javac und allen anderen Tools ist nicht so simpel wie die "includes" in C. Überprüfen kannst Du das z.B. mit dem Aleph-paket. Ohne die Option "*.java" compiliert javac nur das Nötigste. Mit der Option alles was er kriegen kann. Der classpath sollte also immer in der javac-Zeile stehen und nicht irgendwo in der Systemvariablen "PATH". --Heuerli 14:50, 10. Okt. 2007 (CEST)[Beantworten]
Ich habe den Eindruck, dass wir von unterschiedlichen Dingen sprechen.
Der oben zitierte Satz erweckt in mir den Eindruck, dass die Einteilung in Pakete deshalb "erfunden" wurde, damit "ein kleines Applet" nicht unnützen Bytecode enthalten muss, der aus Klassen stammen würde, die das Applet überhaupt nicht benötigt.
Ist dieser obige Satz denn so gemeint?
Falls ja: der "Standard-javac" kompiliert doch nur denjenigen Code zu einer Klasse zusammen, der auch referenziert wird. Und dies unabhängig davon, ob nun alle Klassen in ein und demselben Paket liegen, oder eben nicht (Natürlich müssen die Klassen "erreichbar" sein).
Ob ich zB. die Anweisung import java.io.*; oder import java.io.File; verwende, liefert keinen Unterschied (jedenfalls solange, wie ich nur die hier beispielhaft zitierte Klasse "File" aus dem Paket "java.io" verwende).
Gruß, --Exxu 18:13, 10. Okt. 2007 (CEST)[Beantworten]
Alles klar, hab' Dich völlig falsch verstanden. Du hast recht. Gruß --Heuerli 18:46, 10. Okt. 2007 (CEST)[Beantworten]