Gå til innhold

Distribusjon av java-programvare


Anbefalte innlegg

Min universitetsutdanning innebærer opplæring i Java, og jeg har derfor begynt så vidt å kikke på hvordan dette programmeringsspråket fungerer, og i den forbindelse er det en ting jeg stusser litt på.

 

Alle høyskoler og universiteter ser ut til å ha Java som sitt primære språk. Og jeg har også hørt at det er Java som er det heteste språket når det gjelder nyansettelser av programmeringskyndige personer (motbevis meg gjerne!). Men hvordan fungerer distribusjonen av slik programvare?

 

Når jeg kompilerer java-programmer, enten direkte via Java SDK eller Eclipse, ender jeg opp med class-filer. Disse kan igjen kjøres ved hjelp av java-oversetteren. Men alle har jo ikke den liggende, og jeg har aldri sett programvare som leveres i form av class-filer! Dessuten har programmene jeg har laget endt opp med et veldig karakteristisk brukergrensesnitt, noe jeg heller ikke kan huske å ha sett. Det virker også "skummelt" å sende class-filer rundt omkring med mindre du vil dele kildekoden, ettersom denne enkelt kan finnes ved hjelp av en Java decompiler.

 

Det er mulig dette er et dumt spørsmål, men burde det ikke være mulig å kompilere java-kode slik at man får en selvstendig, kjørbar fil (som .exe i Windows)? Hvordan gjør man i så fall dette?

 

I hvilke sektorer brukes primært java? Jeg antar at det ikke lages spill og lignende, men språket må da ha en stort bruksområde med tanke på omfanget på utdannelsesplanet? Kan noen gi eksempler på større programvareprosjekter som er utviklet i Java, så alle mine fordommer forsvinner på et blunk?

 

På forhånd takk for svar / oppklaringer!

Lenke til kommentar
Videoannonse
Annonse

Når det gjelder distribusjonen av et enkelt java-program så kan man gjøre dette ved en .jar-fil, som er en slags pakke som inneholder klassene i programmet ditt. Denne skal da være kjørbar i et java-miljø og er samtidig skrivebeskyttet slik at det ikke går an å lese koden. En annen løsning som blir brukt (kanskje mest brukt?) - er en løsning hvor man inngår et slags kompromiss med C/C++, hvor man har en enkel .exe-fil som er selve "programfilen" med en peker til jar-filen/programmet som skal kjøres.

 

Om du ser på litt større java-programmer, som f.eks Eclipse, vil du se at det er satt sammen av flere pakker (.jar-filer). Andre java-programmer kan f.eks være Azureus, her er det brukt en relativt stor .jar-fil som er selve programmet og det vil altså vær mulig å bruke denne til å starte programmet på lik linje som med .exe-filen.

 

Brukergrensesnittet er igjen et resultat av at java bruker et eget kjøremiljø. Det finnes derimot pakker som gjør det mulig å endre brukergrensesnittet. Noen er innebygget i java - 3 stk. tror jeg - men det er også mulig å konsturere egne "skins-pakker". For å ta i bruk standard GUI for OS'et java-programmet kjøres på, kan denne f.eks kodebiten benyttes i main-metoden. Dette vil da gjøre at vinduet (JFrame) følger OS standard GUI.

 


public class MinKlasse extends JFrame {

// Konstruktør opprettes
public MinKlasse(){
// GUI-elementer
// ..
}
public static void main(String[] args) {
 try {
 	UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

 } catch (Throwable e) {
 	System.out.println("LookAndFeel-feil!");
 }

MinKlasse appl = new MinKlasse();
}
}

 

For å unngå den evigvarende diskusjonen om hva som er best av Java og C-språk, kan jeg ikke si at Java egner seg bedre til noe enn noe annet, da det alltid vil vær forskjellige oppfatninger av dette. Men når det er sagt så er Java et omfattende språk med store bruksområder. Uansett språk så er nøkkelordet Objekt-orientering. Og akkuart det begynner etterhvert å komme seg på C-siden også med C# (C-Sharp).

 

Håper dette var i det minste litt oppklarende :)

 

Sjekk også ut Sun's Java Tutorial

 

Edit: forklaring av kode.

Endret av JimmyJazz
Lenke til kommentar

Meste vanlig med Java er vel at man lager J2EE-applikasjoner.

 

Man pakker da alle filer i en .jar,.ear, eller pass filtype og deployer den så på applikasjonsserveren.

 

applikasjonen vil da kjøre og brukeren kan aksessere den ved bruk av f.eks. .jsp-sider.

Lenke til kommentar

"Write once, run anywhere" burde gi svar på hvorfor man bruker JRE og ikke eksekverbare filer. Dette er en stor fordel, bortsett fra at man programmet blir treigere.

 

Programmer/class-filene distribueres (pakkes) som jar eller war. Prøv selv å høyreklikke og velge Export to Jar i Eclipse.

 

Kompilatoren legger igjen unødvendig informasjon i .class filen som gjør

det lett for en dekompilator å gjøre den reengineerede koden nesten

identisk til den opprinnelige. En Java obfuscator gjør det vanskeligere å

reengineere koden da den gjør metodenavn, variabl-navn osv. tilfeldige og uforståelige og gjør det veldig vanskelig å finne ut av hva koden gjør.

 

Java brukes mye som et grensesnitt mellom web og andre systemer. Eksempelvis banksystemer, rombestillinger og nettbutikker. Applet bør også være et kjent begrep. Grafiske applikasjoner utviklet i Java kan også se ut som vanlig Windowsprogrammer. Det er bare å sette til Look and Feel til getSystemLookAndFeel().

 

I Java finner man en tilnærming til objektorientert programmering som er mye sterkere enn f.eks. C++ og PHP. En annen grunn er språket er mer konsist og at det er mindre muligheter for å skyte seg selv i foten.

 

Ble visst litt repitisjon her, sånn går det når man spiser middag midt i skriveprosessen.

Endret av buskmann
Lenke til kommentar
Med java web start får brukeren alltid nyeste release av ditt program, mulig at en er avhengig av å være på nett hele tiden for å starte det, men det er jeg ikke sikker på.

Why does Java Web Start download the application the next time?

 

Java Web Start will always launch the application from the cache, if possible, and it will simultaneously perform a background check with the server for updates. If updates are available, then it will notify the user, and launch the update versions the next time. This approach ensures fast startup time in the common case where there is no update, and also makes sure that an application can be launched offline.

Lenke til kommentar

Java Enterprise programmering er veldig interessant for jobbmarkedet. Dette objektorienterte språket blir ansett for å være det beste på ytelse, skalbarhet og det mest robuste pr. dags dato.

 

Klasser og jar filer blir utlevert på web-/applikasjonsserveren, "skjult" for klienten. Delsystemer trenger en api for å kommunisere med applikasjonserveren. En person trenger et brukergrensesnitt (eks. nettleser etc). Merk at ved serverside programmering brukes jre-miljøet på serveren og ikke på klienten. Det er derfor ikke nødvendig for klienten å installere jre dersom ikke et lokalt delsystem også er skrevet i java.

 

Dersom foretningslogikken er skrevet i java finnes det også fordeler ved å bruke java om systemer som bruker tjenestene (men ikke et krav!).

 

Applikasjoner og applets er de minst populære bruksområdene til Java. Disse krever jre-miljøet installert samtidig som de er tregere enn binærkode. Jeg vet ikke hvorvidt det er tregere enn MS intermediary language (koden alle .net exe filer består av). Applets har også fått hard konkurranse av Macromedia Flash. Utlevering av applikasjoner skjer ofte ved bruk av jar filer. WinOS ofl. starter app ved å dobbelt-klikke på jar filen. Applet klasse og jar filer startes automatisk av nettleser.

 

J2ME (micro) er rettet mot områder som har begrensett tilgang på ressurser. Mobiltlf samt andre gagdet firmaer har sett fordelen ved å legge til rette for j2me pakken, og dermed åpne mulighetene for alle til å utvikle progammer på deres platform, istedet for å lage alle progammene selv.

Endret av Banzaii
Lenke til kommentar

Det er mulig dette er et dumt spørsmål, men burde det ikke være mulig å kompilere java-kode slik at man får en selvstendig, kjørbar fil (som .exe i Windows)? Hvordan gjør man i så fall dette?

 

I hvilke sektorer brukes primært java? Jeg antar at det ikke lages spill og lignende, men språket må da ha en stort bruksområde med tanke på omfanget på utdannelsesplanet?

 

http://www.excelsior-usa.com/jet.html

 

gnu kompilatoren gcj kan kompilere java til native, den støtter ikke awt osv da tror jeg.. http://gcc.gnu.org/java/

 

Java har også noe som kalles JNI(java native interface) som gjør at du kan rett og slett skrive c kode eller assembly kode i java koden din..dette krever en sikkerhetssjekk vil jeg tro siden et slikt java program vil hoppe ut av den sikre sandboksen.. http://java.sun.com/docs/books/tutorial/native1.1/index.html

 

 

Det lages proffe spill i java/kan lages, ved hjelp av JNI er det laget biblioteker som gjør at java programmer kan benytte seg av opengl f.eks. LWJGL (lightweight java gaming library)

http://www.lwjgl.org/

 

http://www.lwjgl.org/projects.php

 

http://puppygames.net/

http://www.tribaltrouble.com/

 

den nyeste javaen bruker opengl for awt funksjonene også nå tror jeg "under panseret".. sdk1.5

 

les her :)) http://www.tribaltrouble.com/technology.php

Endret av zulo
Lenke til kommentar
  • 2 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...