Anfänger-Fragen Java: Package Name,.

Gast #2366444
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
Gast #2366530
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.
#2366616
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...
Gast #2366824
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 :)
#2366912
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.
Gast #2367490
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. ;-)
Gast #2369612
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.