# [Eclipse 3.4] Hilfe-Popups



## UdoKessler (30. Mrz 2009)

Hi,

bin zwar kein Programmieranfänger, aber neu sowohl hier im Forum,  als auch bei Java 
 ( u OOP im Allgemeinen) und bei Eclipse..

Eclipse habe ich installiert und nach einiger Arbeit auch sauber zum Laufen
bekommen..:

Eclipse 3.4 Ganymede
JDK6 (JRE 1.6..) + Entspr. Docs mit Source als ZIP
J2ME WTK


Ein Problem habe ich allerdings und zwar was die Popuphilfe anbelangt,
also sobald man mit dem Mauscursor auf eine Anweisung geht.

Bei Anweisungen wie "System.out.Println()" usw funktioniert es einwandfrei.
Aber bei Anweisungen wie "Switch", "For", "While" usw., also bei grundlegenden
Befehlen funktioniert es nicht.


Gibts da Abhilfe?

Grüße
Udo


----------



## musiKk (30. Mrz 2009)

Keine Ahnung, dazu ist das nicht gedacht. Bei Methoden und Klassen werden die Javadoc-Kommentare der eingebundenen Quellen ausgewertet und angezeigt. Man hat ja oft mit irgendwelchem Code zu tun, von dem man nicht weiß, was er macht, da ist das sehr nützlich. Keywords gibts aber nur ein paar und die ändern sich ja nicht. Nimm dir lieber ein Buch für sowas. Wenn du kein Programmieranfänger bist, dürfte das abhängig von deinen bisherigen Sprachen auch nicht allzu kompliziert sein.


----------



## UdoKessler (31. Mrz 2009)

Hi,  

ok das leuchtet ein. 

Werden die Keywords in der der JDK-Docu nicht beschrieben? 

Hab da noch nicht so den Überblick..komme von einer Straight-On, also rein 
Prozeduralen Sprache (versch. Basic-Dialekte u.s.), da sind die Verhältnisse
 einfacher..und die Hilfe auch  

Ich lerne gerade mit einem Buch ("Java ist auch eine Insel" Ausg 7), und genau daher 
habe ich die Idee, daß die Keywords auch angezeigt werden. Auf einer Seite sieht man nämlich (ein Bild) das Hilfe-Popup von "While" in Eclipse.


Danke und Gruß 

Udo


[Edit:] Passt nicht hier her, aber sehe ich das richtig, daß bei z.B. "System.out.Print"
das "System" ein Packet, das "out" eine Klasse und "Print" eine Methode
dieser Klasse ist?
Was OOP genau ist, wurde im Buch noch nicht behandelt, die Klassen kommen
ebenfalls erst in einem späteren Kapitel..


----------



## Beni (31. Mrz 2009)

System ist eine Klasse.

out ist eine statische (=objektunabhängige) finale (=unveränderlich) Referenz (=Pointer in C/C++) die auf ein PrintStream-Objekt verweist.

"P"rint gibt es nicht. "p"rint ist eine Methode.

Wie das mit den Hilfen zu den Keywords steht weiss ich nicht. Aber 20 wichtigen Keywords kennst du schnell auswendig.


----------



## musiKk (31. Mrz 2009)

Keywords werden nicht dokumentiert, weil sie Bestandteil der Sprache sind. Im Compiler eingebaut praktisch. Keywords können auch nicht programmiert werden; gäbe es z. B. kein while, könntest du es nicht so, wie es jetzt existiert, nachbauen. Die Klassen sind aber in Java geschrieben und können dementsprechend dokumentiert werden.

Das Popup, das du meinst, ist sicher ein Template. Sowas erleichtert, häufig verwendete Konstrukte schneller zu schreiben, weil die Grundelemente eh immer gleich sind. Wie hier (etwas runterscrollen).

System ist eine Klasse, out ein statisches Member und print die Methode. Das Paket ist java.lang. Das wird aber automatisch importiert, darum siehst du am Anfang der Datei kein "import java.lang.System" oder so.


----------



## UdoKessler (31. Mrz 2009)

Mann seid ihr schnell, danke Euch!


@musikk
Ok, die Keywords lernen sich bestimmt schnell. Ist ja nicht so, daß
ich die ganzen Schleifen u Bedingungen usw. nicht kennen würde. Sind fast überall
gleich.
Im Link von Dir sehe ich, daß es schon Javainsel v. 8 gibt! Lohnt sich ein "Update"?
Und, ja genau so ein "bild" meinte ich! Von einem Template kommt das also..
Sind die (vom Autor) selbst gebastelt oder bereits integriert? 
Falls nein, kann man sich für die ganzen Keywords und Standard-Methoden
  welche runterladen?



@Beni
Referenzen sind aber nicht wirklich Pointer..? Zu beginn des Buches stand,
daß es Pointer (Zeiger auf Speicherbereiche) nicht gibt (leider!..und zum Glück).

Die Zusammenhänge bei System.out.print* verstehe ich noch nicht, wieso
ist das so kompliziert? Wieso gibt es das nicht als Keyword?
Brauchst jetzt aber nicht genau erklären, kommt ja alles noch im Buch, hoffe ich


----------



## musiKk (31. Mrz 2009)

Es gibt viele Templates bereits in Eclipse voreingestellt. Die aus dem Buch sollten eigentlich alle dazugehören. Ob sich ein Update lohnt, kann ich nicht sagen, ich habe das Buch nie verwendet, außer ab und an zum was nachschlagen. Und auch immer nur die Online-Variante.

Keywords sind nur die Bausteine einer Sprache. Sowas wie Standardausgabe als Keyword zu verpacken, wäre wie einen eigenen Lego-Baustein für ein Auto zu haben, statt das Auto aus einzelnen Steinen zusammenzusetzen. Wenn man das dann durchzieht, kommt man übrigens bei COBOL an.


----------



## UdoKessler (31. Mrz 2009)

musiKk hat gesagt.:


> Es gibt viele Templates bereits in Eclipse voreingestellt. Die aus dem Buch sollten eigentlich alle dazugehören. Ob sich ein Update lohnt, kann ich nicht sagen, ich habe das Buch nie verwendet, außer ab und an zum was nachschlagen. Und auch immer nur die Online-Variante.
> 
> Keywords sind nur die Bausteine einer Sprache. Sowas wie Standardausgabe als Keyword zu verpacken, wäre wie einen eigenen Lego-Baustein für ein Auto zu haben, statt das Auto aus einzelnen Steinen zusammenzusetzen. Wenn man das dann durchzieht, kommt man übrigens bei COBOL an.




Das mit dem Lego find ich einen guten Vergleich!
So kann man sich das gut vorstellen.. Danke für die Erklärung.

Kannst Du (oder jemand) mir ganz kurz erklären, was intern passiert,
wenn ich das System.out.print(string) aufrufe? 
Also ich meine so in der Art: "string wird via "out" an die JVM geleitet, welche
wiederrum..usw." *hüstel*


----------



## Beni (31. Mrz 2009)

UdoKessler hat gesagt.:


> @Beni
> Referenzen sind aber nicht wirklich Pointer..? Zu beginn des Buches stand,
> daß es Pointer (Zeiger auf Speicherbereiche) nicht gibt (leider!..und zum Glück).
> 
> ...



Referenzen und Pointer... Grundsätzlich verhalten sich Java-Referenzen wie C-Pointer ohne Pointerarithmetik. z.B. kann eine Referenz auf null zeigen. Aber ja, du hast keinen Zugriff auf Speicherbereiche und kannst nichts gefährliches mit Referenzen tun.
IMHO: sie verhalten sich wie Pointer also sind sie Pointer.

Zu den Keywords. Hinter System.out.print* steckt ein komplizierter aber durchdachter Mechanismus. So ein "print" kann noch viel mehr als nur auf die Konsole zu schreiben, z.B. kann man es auch benutzen um ZIP-Archive zu füllen, Server anzusprechen oder Dateien zu schreiben. *Ein* Keyword wäre da viel zu wenig, und 100'000+1 Keywords machen die Sprache nicht eben übersichtlich.


----------



## UdoKessler (1. Apr 2009)

Danke @Beni

Ok, also im Buch steht, daß System die Klasse, out das Objekt und
Print eine Methode dieses Objekts ist. Out hat also viele Methoden,
z.B. für die von Dir genannten Zwecke..(?)

Deshalb hat mich die Aussage, daß out eine Referenz ist, etwas verwirrt 

Im Moment bin ich nämlich noch dabei, diese Zusammenhänge zu begreifen.
Ist am Anfang nicht wirklich leicht, wenn man vorher Jahrelang etwas anderes
gewöhnt ist.
Bla bla.

Das Thema passt hier gar nicht rein, deshalb sorry nochmal!


Gruß
Udo


----------



## Beni (2. Apr 2009)

Manche Autoren unterscheiden nicht sauber zwischen Objekt und Referenz, ich denke aber es ist einfacher wenn man hier den darunterliegenden Mechanismus ein bisschen versteht (auf die Gefahr, dass ich wiederhole was du schon weisst):

Objekt: ist das Ding das im Speicher liegt, während du programmierst existiert es nicht.
Referenz: ist das Ding das du im Quellcode siehst, das später auf ein Objekt zeigt, und mit dem du arbeitest.

Ein PrintStream wie "out" kann lediglich Text nehmen, in eine byte-Folge verwandeln und dann an einen anderen Stream weitersenden. Man kann Streams aber hintereinander koppeln: der erste Stream macht aus Text byte-Folgen, der zweite verschlüsselt die byte-Folge, der dritte kompirimiert die verschlüsselte Folge (zip), der vierte sendet die komprimierte verschlüsselte Folge ins Internet...

Das wäre dann allerdings ein weiteres Kapitel in deinem Buch ;-)


----------

