HK2 – 101, developing a module from scratch, step by step tutorial
- tor 26 jul, 2007 kl 07:35
- 3 kommentarer
- Java
Hej alla pojkar och flickor. Innan har det bloggats här om The Hundred Kilobytes Kernel (HK2). För de som har missat HK2 och vad det är så ser jag till att citera en liten förklaring innan jag går vidare:
”The java.net project ”Hundred Kilobytes Kernel” (HK2) is a module subsystem coupled with a simple yet powerful component model to build software. It is a great technology to use in any Java software development and can be used in small devices such as phones up to enterprise applications. HK2 is designed to be friendly to existing technologies such as OSGi but it will also provide a path to the implementation of modules (JSR 277) in Java SE 7. HK2 is used as the foundation for GlassFish V3.”
Now to the action. Jag ska skapa en modul helt frÃ¥n scratch. Du mÃ¥ste ha maven2 för detta. OBS! denna tutorial är väldigt mycket ”for dummies” sÃ¥ du kan säkert hoppa över vissa saker :) .
down to biz.
1. I din ”shell”, skriv ”mkdir temp” och sedan ”cd temp”
2. därefter skriver du ”mvn archetype:create \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=com.mycompany.app \ -DartifactId=temp”
sedan trycker du självklart pÃ¥ din ”return” knapp (dvs ”enter”) och sen väntar den korta tiden som det tar för maven att generera upp ett projekt Ã¥t dig.
3. skriv gedit/notepad/vi för att editera din pom.xml och använd sunt förnuft för att få den att se ut ungefär så här:
http://www.helloworlds.net/temp/temp/pom.xml
4. Skapa därefter filerna
Animal.java = > http://www.helloworlds.net/temp/temp/src/main/java/com/mycompany/app/Animal.java
Pig.java = > http://www.helloworlds.net/temp/temp/src/main/java/com/mycompany/app/Pig.java
Start.java = > http://www.helloworlds.net/temp/temp/src/main/java/com/mycompany/app/Start.java
5. GÃ¥ tillbaks till projektets ”rootkatalog” och skriv ”mvn hk2:hk2-compile” följt av ”mvn hk2:run”
Det kan se ut så här:
bash-3.00$ mvn hk2:run
[INFO] Scanning for projects…
[INFO] Searching repository for plugin with prefix: ‘hk2′.
[INFO] —————————————————————————-
[INFO] Building temp
[INFO] task-segment: [hk2:run]
[INFO] —————————————————————————-
[INFO] [hk2:run]
2007-jul-26 07:27:56 com.sun.enterprise.module.maven.MavenProjectRepository loadModuleDefs
INFO: Loading modules list from /export/home/ferid/temp/temp/pom.xml
ModuleStartup phase
Oink, oink
[INFO] ————————————————————————
[INFO] BUILD SUCCESSFUL
[INFO] ————————————————————————
[INFO] Total time: 2 seconds
[INFO] Finished at: Thu Jul 26 07:27:56 CEST 2007
2007-jul-26 07:27:56 com.sun.enterprise.module.ModuleClassLoader stop
INFO: ModuleClassLoader stopped com.mycompany.app:temp
2007-jul-26 07:27:56 com.sun.enterprise.module.ModuleClassLoader finalize
INFO: ModuleClassLoader gc’ed com.mycompany.app:temp
2007-jul-26 07:27:56 com.sun.enterprise.module.ModuleClassLoader stop
INFO: ModuleClassLoader stopped com.mycompany.app:temp
[INFO] Final Memory: 3M/8M
[INFO] ————————————————————————
bash-3.00$
Nu har vi precis använt oss av samma teknik som Glassfish V3 använder sig av, för att göra en HelloWorld applikation. Rätt coolt tycker jag!
Vill ni veta mer om hur allt fungerar och hänger ihop, är ni välkomna till nästa JavaForum eller JavaZone där vi i år kör en presentation om HK2.
tjena!
Finns det någon lite mer förklaring av vad det är?
”(HK2) is a module subsystem coupled with a simple yet powerful component model to build software.”
…säger inte mycket. Vad är pudelns kärna?
”Ett modulsubsystem med komponentmodell”(min översättning) lÃ¥ter som om JAR-filer kan platsa i den beskrivningen.
Vilket problem löser HK2? Vad är det man gör bättre än tidigare lösningar med HK2?
Ja, vad säger du Ferid?
Förklaringen i bloggen ovan är hämtat ur HK2:s projektplats på hk2.dev.java.net. Där finns mer information om vad projektet går ut på.
Precis som du nämnde(Martin), så handlar det i själva verket om JAR filer. En modul är en JAR fil.
Citat:
”Modules are defined by adding Manifest file information to a jar file that identify the module name, version etc…”
Det beror pÃ¥ vad man har problem och vad för lösning man använder. Vad man försöker lösa med ett modulsystem. Det är inte säkert att just HK2 är bästa lösningen. Detta beror som sagt pÃ¥ vad det är man försöker lösa och vad man använder för lösning i dagens läge. HK2 är väldigt ”lätt” och extremt enkelt att använda.
Glassfish V3 arkitekten Jerome Dochez berättade att man som utvecklare inte ska överhuvudtaget tänka pÃ¥ själva ”moduldefinitionen” utan snarare tjänsterna som de moduler man använder erbjuder. HK2 tar hand om hela modulbiten Ã¥t utvecklaren.
men som sagt: hk2.dev.java.net för mer detaljerat info.
/Ferid