Avatar billede mergelspir Seniormester
16. juni 2012 - 18:12 Der er 7 kommentarer

Hvad er formålet med pakker i Java?

Ud over at ens kode bliver mere overskuelig - set fra en udviklers synspunkt - hvilke andre formål er der så med pakker?

Har det fx indflydelse på memory-forbruget på min web-server, hvordan jeg organiserer mine pakker?
Min antagelse er, at Java-oversætteren er tilpas intelligent skrevet, at den godt kan finde ud af, kun at inkludere de refererede dele af de inkluderede klasser for at udføre mit program. D.v.s. at memory-forbruget ikke vil afhænge af, hvordan jeg pakker mine klasser.

Den umiddelbare grund til, at jeg spørger, er, at jeg har 1200 .java-resource-filer (resources til 120 .JSP på 10 sprog). Dem har jeg hidtil ikke lagt i nogen pakke. Nu er jeg så begyndt at benytte Eclipse, som indledningsvis skriver, at de ikke anbefaler at lægge filer i default-pakken.

Så inden jeg begynder at overveje, hvordan jeg (måske?) skal pakke dem, vil jeg gerne have belyst de forskellige konsekvenser af de forskellige måder at pakke på.
Avatar billede mergelspir Seniormester
16. juni 2012 - 18:17 #1
Jeg har forsøgt at finde en forklaring på Internettet, men det er ikke lykkedes, omend at jeg er helt sikker på at en sådan findes.

En reference til en god fyldestgørende hjemmeside om emnet er o.k. I behøver ikke at skrive side op og stolpe ned i dette forum, hvis I allerede kender et godt link.
Avatar billede mergelspir Seniormester
16. juni 2012 - 18:31 #2
En præcisering af spørgsmålet.

Jeg er godt klar over, at klasser i en unavngiven pakke ikke kan blive importeret fra en klasse i en anden pakke o.s.v.

MEN, hvis vi nu begrænser scenariet til et program, der kan oversættes, og som virker efter hensigten. Hvad er så forskellen på om man kommer sine klasser i den ene eller anden pakke. Eller for den sags skyld kommer samtlige klasser i den samme pakke?
Avatar billede erikjacobsen Ekspert
16. juni 2012 - 18:49 #3
Det har ingen betydning for dig, her og nu, at alting ligger i samme pakke. Programmet skal såmænd nok virke.

Men pakker bruges til at holde en struktur i programmet, og til at gøre det rimelig nemt at genbruge klasser (samlet i en pakke) i andre programmer.
Avatar billede arne_v Ekspert
16. juni 2012 - 19:18 #4
Analogi: du kan ogsaa godt have alle dine filer paa din PC i et directory - 100000 filer i C:\. Men det bliver godt nok svaert at finde noget naar man skal scolle ned gennem file manager. Med en directory struktur kan du nemt finde de relevante filer.

Det er det samme med package. Det er grundliggende en maade at dele sine klasser opi grupper og undergrupper saa det er nemmere at finde rundt i.

Det er ikke et Java specifikt koncept. UML har ogsaa packages. C++ og C# har namespaces som fungerer meget lignende.
Avatar billede arne_v Ekspert
16. juni 2012 - 19:19 #5
Udover struktureringen, saa er der ogsaa default visibility som faktisk er package visibility, hvilket er godt for encapsulation!
Avatar billede mergelspir Seniormester
16. juni 2012 - 20:17 #6
#4
Ja, jeg er helt enig med dig. Fra et menneskes synspunkt er det til hjælp. Men set fra web-serverens synspunkt, er det så helt ligegyldigt?

Eksempel:
Jeg har 1200 .java-resource-filer (resources til 120 .JSP på 10 sprog).

Løsning 1)
De 1200 filer ligger ikke i nogen pakke. Jeg inkluderer de 10 (sprog-)filer, der hører til mit JSP-program.

Løsning 2)
Eclipse anbefaler, at alle filer ligger i pakker, så jeg lægger de 1200 filer i pakke X1200. Jeg inkluderer pakken X1200 i mit JSP-program.

Løsning 3)
Jeg laver 120 pakker, en til hver JSP. Jeg inkluderer den relevante pakke i mit JSP-program.

Hvilken løsning er bedst set fra serverens synspunkt? Og hvorfor?
Avatar billede arne_v Ekspert
16. juni 2012 - 20:27 #7
Jeg forventer ikke nogen performance forskelle. Det er spoergsmaalet om hvad der er bedst struktuereret.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester