Forum: PC-Programmierung Anfänger-Fragen Java: Package Name,.


von Andreas (Gast)


Lesenswert?

Hallo!
Ich arbeite mich gerade in Java/Android Apps ein. Unter anderem mit 
folgendem Tutorial:

http://www.androidpit.de/de/android/wiki/view/Android_Anf%C3%A4nger_Workshop


Frage 1) Während dem Anlegen eines neuen Projekts muss man einen 
"Package Name" vergeben. Was ist damit gemeint und was muss ich 
reinschreiben?

Frage 2) Folgender Code ist ein Ausschnitt aus oben verlinken Tutorial:
1
if (v == hiButton || v == helloButton) {
2
            int resourceId = v == hiButton ? R.string.hi_greeting
3
                    : R.string.hello_greeting;
4
5
            String greeting = getResources().getString(resourceId, name);
6
            Toast.makeText(this, greeting, Toast.LENGTH_LONG).show();
7
8
            TextView greetingField = (TextView) findViewById(R.id.greeting_field);
9
            greetingField.setText(greeting);
10
        }
"int resourceId = v == hiButton ? R.string.hi_greeting
                    : R.string.hello_greeting;" diese Zeile versteh ich 
nicht. Was bewirkten/bedeuten Doppelpunkt und Fragezeichen?


Danke schon im Voraus für eure Bemühungen!
lg Andreas

von Hans M. (hansilein)


Lesenswert?

1. Darfst du dir aussuchen, ist einfach der Name deines Pakets.
Wenn Due es veröffentlichen willst kannst Du ihn immer noch ändern

2.
verstehst Du denn
v == hiButton ? R.string.hi_greeting : R.string.hello_greeting;
?

heisst "Ternary Operator", hier:
http://de.wikibooks.org/wiki/Java_Standard:_Kontrollstrukturen

von Hans M. (hansilein)


Lesenswert?


von Jasch (Gast)


Lesenswert?

Hans Mayer schrieb:
> 1. Darfst du dir aussuchen, ist einfach der Name deines Pakets.
> Wenn Due es veröffentlichen willst kannst Du ihn immer noch ändern

Na viel Spass beim nachträglichen Ändern...

Technisch dient der Packagename dazu, die Namen Deiner Klassen (im 
Prinzip weltweit!) eindeutig zu machen, d.h. wenn ich eine Klasse Utils 
definiere und Du auch, sollten die über den Packagenamen unterschieden 
sein.

Übliche Vorgehensweise ist daher einen DNS-Domainnamen in umgekehrter 
Reihenfolge zu nehmen.

Beispiel: ich nehme "de.jasch.util", Du nimmst "de.andreas.util", meine 
Klasse heisst dann (mit vollständigem Namen) de.jasch.util.Utils, Deine 
de.andreas.util.Utils - potentielles Problem vermieden, alles eindeutig.

Natürlich kannst Du da nur Domains nehmen die Du auch tatsächlich 
kontrollierst. Aber schau doch einfach mal verfügbaren Java-Code an, so 
wird es meistens gemacht.

Und wenn Du dem Grauen ins Gesicht sehen willst schau Dir an, was man 
machen muss wenn Klassennamen doch kollidieren, Stichwort Classloader.

von Hans M. (hansilein)


Lesenswert?

Jasch schrieb:
> Hans Mayer schrieb:
>> 1. Darfst du dir aussuchen, ist einfach der Name deines Pakets.
>> Wenn Due es veröffentlichen willst kannst Du ihn immer noch ändern
>
> Na viel Spass beim nachträglichen Ändern...

In Eclipse und Netbeans.
Rechtsklick auf das Paket Refactor->Rename, neuen Namen eintragen.

Mich stören die langen Namen, z.B. wenn ich ein Programm von der 
Kommandozeile aufrufen will hab ich keine Lust auf 
de.blabla.blabla.bla...

von Andreas (Gast)


Lesenswert?

Danke für eure Antworten!

zu Frage 1) OK, Package Name scheint vorerst egal zu sein. Was mich 
interessiert: Warum muss/soll jeder PackageName weltweit einzigartig 
sein? Was hat das für einen Vorteil? Was schreib ich rein, wenn ich die 
App nur im Android Market veröffentlichen will aber keine eigene Website 
habe?

zu Frage 2) Danke für den Link! Frage geklärt! Werd den Link gleich 
unter Favouriten speichern :)

von Hans M. (hansilein)


Lesenswert?

Na wenn es z.B. auf Deinem Rechner im Classpath zweimal die Klasse 
Supertoll.Main gibt weiss die VM nicht welche gemeint ist.

zu Android:
http://blog.javia.org/android-package-name/

Zitat:
the Java packages of an application are local to that app. There can be 
multiple independent applications that implement the same class in the 
same package, and there is no conflict whatsoever.

von Andreas (Gast)


Lesenswert?

Ok, Danke!
Super Forum :)

lg

von Jasch (Gast)


Lesenswert?

Hans Mayer schrieb:
> Jasch schrieb:
>> Hans Mayer schrieb:
>>> 1. Darfst du dir aussuchen, ist einfach der Name deines Pakets.
>>> Wenn Due es veröffentlichen willst kannst Du ihn immer noch ändern
>>
>> Na viel Spass beim nachträglichen Ändern...
>
> In Eclipse und Netbeans.
> Rechtsklick auf das Paket Refactor->Rename, neuen Namen eintragen.

Schon klar, aber nicht jeder benutzt so hypermoderne IDEs, und wenn es 
bloss wegen mangelnder Rechenleistung ist. Hehehe, früher haben die 
Leute über Emacs gelästert...

> Mich stören die langen Namen, z.B. wenn ich ein Programm von der
> Kommandozeile aufrufen will hab ich keine Lust auf
> de.blabla.blabla.bla...

Dafür sind Aliase o.ä. erfunden worden.

Bzw. in erwähnten IDEs die Features zum Ausführen/Debuggen der gerade 
gehackten SW. ;-)

von UR Schmitt (Gast)


Lesenswert?

Jasch schrieb:
>> Mich stören die langen Namen, z.B. wenn ich ein Programm von der
>> Kommandozeile aufrufen will hab ich keine Lust auf
>> de.blabla.blabla.bla...
>
> Dafür sind Aliase o.ä. erfunden worden.

Oder Batches, Scripte oder von mir aus auch Icons

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.