mboost-dp1
Java stand-alone i Windows, hvordan?
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Hej Alle!
Jeg har gennem de seneste par måneder gennemgået et simpelt kursus i programmering på AU, der hedder introduktion til programmering. Her arbejde vi udelukkende i Java. Vi brugte dog små simple udviklingsmiljøer, som GreenFoot og BlueJ, til at skrive koden, compile og køre vores programmer. Disse programmer tog sig af alt det grafiske.
Jeg har tidligere programmeret en del til hjemmeside behov, altså PHP, MySQL og JavaScript. Og nu er jeg altså blevet bidt af en gal programmør igen!
Det jeg ønsker at kunne er at lave Java-programmer som kan køres direkte fra OS, altså f.eks. direkte i Windows, uden om et miljø som de herover nævnte. Det vil nok i alle tilfælde kræve at java er indstalleret på computeren, eller kan Java compiles til at kunne køre som en .exe fil i windows?
Jeg har ikke så frygtelig meget forstand på hvad der skal til for at køre et program i windows, og håber I kan guide mig lidt på rette vej!
Jeg har fået fortalt, at javax.swing skulle være fint til at lave brugergrænsefladen med, er det noget I kan anbefale at læse videre omkring?
MVH
Jeg har gennem de seneste par måneder gennemgået et simpelt kursus i programmering på AU, der hedder introduktion til programmering. Her arbejde vi udelukkende i Java. Vi brugte dog små simple udviklingsmiljøer, som GreenFoot og BlueJ, til at skrive koden, compile og køre vores programmer. Disse programmer tog sig af alt det grafiske.
Jeg har tidligere programmeret en del til hjemmeside behov, altså PHP, MySQL og JavaScript. Og nu er jeg altså blevet bidt af en gal programmør igen!
Det jeg ønsker at kunne er at lave Java-programmer som kan køres direkte fra OS, altså f.eks. direkte i Windows, uden om et miljø som de herover nævnte. Det vil nok i alle tilfælde kræve at java er indstalleret på computeren, eller kan Java compiles til at kunne køre som en .exe fil i windows?
Jeg har ikke så frygtelig meget forstand på hvad der skal til for at køre et program i windows, og håber I kan guide mig lidt på rette vej!
Jeg har fået fortalt, at javax.swing skulle være fint til at lave brugergrænsefladen med, er det noget I kan anbefale at læse videre omkring?
MVH
Hvis du vil lave windows programmer, vil jeg anbefale C# i stedet. Du kan downloade Visual Studio Express gratis.
C# minder en del om Java, syntaktisk.
C# minder en del om Java, syntaktisk.
lul.
Ja, du behøver ikke greenfoot / bluej / andet udviklingsmiljø for at køre javaprogrammer. Det eneste du behøver er en java runtime og evt. en java compiler hvis du ikke vil skrive bytecode i hånden (nej, det vil du ikke).
Jeg har ikke brugt windows længe, og specielt ikke sammen med java, så jeg kan ikke hjælpe dig på det punkt, men jeg er sikker på at du kan få en .exe (eller noget ligesågodt).
swing *er* vist ok, men mange skriver dårlig kode i det.
Ja, du behøver ikke greenfoot / bluej / andet udviklingsmiljø for at køre javaprogrammer. Det eneste du behøver er en java runtime og evt. en java compiler hvis du ikke vil skrive bytecode i hånden (nej, det vil du ikke).
Jeg har ikke brugt windows længe, og specielt ikke sammen med java, så jeg kan ikke hjælpe dig på det punkt, men jeg er sikker på at du kan få en .exe (eller noget ligesågodt).
swing *er* vist ok, men mange skriver dårlig kode i det.
#2 Det kan godt være jeg skal se mig om efter et sprog, som passer lidt bedre til Windows. Jeg tænkte bare, at nu hvor java jo burde kunne køre på næsten alle platforme, så ville det være smart at udvikle programmer i, men det er måske for bøvlet at gøre pænt på bare en platform som Windows?
#3 Istedet for swing, hvad ville du så bruge?
Jeg er helt på bar bund her, så det er rart at få nogle inputs! ;)
#3 Istedet for swing, hvad ville du så bruge?
Jeg er helt på bar bund her, så det er rart at få nogle inputs! ;)
#4
Jeg plejer at undgå GUI-programmering, så det er nok det jeg ville gøre. Hvad er det du har tænkt dig at programmere?
Jeg plejer at undgå GUI-programmering, så det er nok det jeg ville gøre. Hvad er det du har tænkt dig at programmere?
#5 Jeg vil gerne kunne lave små spil ala minestryger eller mahjong, som vi i forvejen kender dem fra windows. I hvertfald i første omgang, for at lære et sprog godt at kende, samt at lære at lave standalone programmer! Jeg har læst lidt omkring Swing i løbet af aftenen og synes det virker meget tiltalende og simpelt til GUI, men jeg vil bare meget gerne have at mine programmer/spil er nemme at distribuere til mine kammerater osv, så hvis det kunne laves til en simpel .exe-fil, så ville det være super lækkert!
Hvis jeg pakker min java-kode, hvor GUI er lavet med Swing, som en .jar-fil, vil jeg så kunne køre den på de fleste gængse OS, så længe der er installeret Java runtime?
Det kunne meget vel være en mulighed! Langt de fleste har jo alligevel java runtime installeret af den ene eller anden grund. Jeg synes det kunne være rigtig dejligt ikke at lægge sig fast på at OS-specifikt sprog, som C#. For det virker vel kun på Windows(.NET platforme)?
Det kunne meget vel være en mulighed! Langt de fleste har jo alligevel java runtime installeret af den ene eller anden grund. Jeg synes det kunne være rigtig dejligt ikke at lægge sig fast på at OS-specifikt sprog, som C#. For det virker vel kun på Windows(.NET platforme)?
Sand. (8) skrev:For det virker vel kun på Windows(.NET platforme)?
Du skal nok ikke satse på andet.
Men du kunne jo også lave applets og smide det på en hjemmeside.
Sand. (11) skrev:#9 okay, på alle de platforme, som Swing understøtter? For jeg går ud fra at det er Swing-biblioteket, der sætter begrænsningen for hvilke OS det kan køres så?
Sidst, jeg arbejdede med swing var det med i alle de almindelige java installationer. Men det er længe siden (2003).
Sand. (11) skrev:#10 Mener du applets i C#? Hvis jeg engang vil prøve kræfter med applets kan jeg vel ligesågodt lave det i Java også, tænker jeg.
Nej, der mente jeg java.
Java Runtime Engine er tilgængelig til Windows, Linux, Mac OS X og Solaris. Swing er understøttet på alle platformene.
En ting du skal være obs på er dog dit GUI tema, det såkaldte "Look and feel". Det afgør hvordan dit programmet bliver skinnet og hvordan knapper, sliders, toolbars, osv... tager sig ud.
Der findes 2 standardtemaer samt det relative systemtema. Hvis ikke du aktivt vælger et tema, så vil dit program blive skinnet med Javas Metal tema, som er ens på alle platforme. Alternativt kan du skinne det med Nimbus temaet som IMHO er noget pænere og ligeledes tilgængelig på alle platforme. Alternativt kan du skinne med systemtema - det betyder at knapper, farver, osv... automatisk tilpasser sig det aktuelle systemsbrugerflade - det betyder at du får aqua-look, hvis du kører det på Mac OS X, mens du får Aero look på Windows 7.
Hvis du vil styre dit tema, så skal du gøre det inden du erklærer din JFrame (hovedvinduet i Swing). Det gøres med følgende kode:
javax.swing.UIManager.setLookAndFeel(ditLookAndFeel);
Læs eventuelt mere her: http://download.oracle.com/javase/tutorial/uiswing...
En ting du skal være obs på er dog dit GUI tema, det såkaldte "Look and feel". Det afgør hvordan dit programmet bliver skinnet og hvordan knapper, sliders, toolbars, osv... tager sig ud.
Der findes 2 standardtemaer samt det relative systemtema. Hvis ikke du aktivt vælger et tema, så vil dit program blive skinnet med Javas Metal tema, som er ens på alle platforme. Alternativt kan du skinne det med Nimbus temaet som IMHO er noget pænere og ligeledes tilgængelig på alle platforme. Alternativt kan du skinne med systemtema - det betyder at knapper, farver, osv... automatisk tilpasser sig det aktuelle systemsbrugerflade - det betyder at du får aqua-look, hvis du kører det på Mac OS X, mens du får Aero look på Windows 7.
Hvis du vil styre dit tema, så skal du gøre det inden du erklærer din JFrame (hovedvinduet i Swing). Det gøres med følgende kode:
javax.swing.UIManager.setLookAndFeel(ditLookAndFeel);
Læs eventuelt mere her: http://download.oracle.com/javase/tutorial/uiswing...
Okay, lyder som om at Swing er vejen frem for mig!
Kan godt lide ideen om, at temaet er system-afhængigt, så det ikke skriger, "Jeg er ikke lavet til denne platform!", når knapperne ikke ser ud, som man er vant til! ;)
Har I nogle gode links til sider der kan hjælpe mig i gang med Swing? Jeg har ikke helt styr på hvad Swing kan gøre for mig, og hvad det ikke kan.
Desuden regner jeg med at bruge Netbeans til IDE(er det ikke det, det hedder?)
Kan godt lide ideen om, at temaet er system-afhængigt, så det ikke skriger, "Jeg er ikke lavet til denne platform!", når knapperne ikke ser ud, som man er vant til! ;)
Har I nogle gode links til sider der kan hjælpe mig i gang med Swing? Jeg har ikke helt styr på hvad Swing kan gøre for mig, og hvad det ikke kan.
Desuden regner jeg med at bruge Netbeans til IDE(er det ikke det, det hedder?)
#Java
Hvis du vælger Java og kun bruger pure Java (d.v.s. at du ikke bruger noget native kode udover det som kommer med en standard Java installation), så kan din kode køre på alt som du kan få Java til. Og det er tæt på 100% af alle desktop og server systemer.
I Java verdenen vil software typisk blive distribueret som en eller flere jar filer. En jar fil kan køres enten command line eller via GUI (dobbelt klik på fil i mange af de kendt OS).
Det er ikke helt trivielt at sikre sig at slutbrugeren har Java på maskinen, men det er ikke umuligt. Hvis du f.eks. distribuerer dit program via web kan du jo linke til Java og instruere brugere i først at installere Java. Det kan de fleste godt find ud af.
Hvis du vælger Java og kun bruger pure Java (d.v.s. at du ikke bruger noget native kode udover det som kommer med en standard Java installation), så kan din kode køre på alt som du kan få Java til. Og det er tæt på 100% af alle desktop og server systemer.
I Java verdenen vil software typisk blive distribueret som en eller flere jar filer. En jar fil kan køres enten command line eller via GUI (dobbelt klik på fil i mange af de kendt OS).
Det er ikke helt trivielt at sikre sig at slutbrugeren har Java på maskinen, men det er ikke umuligt. Hvis du f.eks. distribuerer dit program via web kan du jo linke til Java og instruere brugere i først at installere Java. Det kan de fleste godt find ud af.
#Java GUI
Der er flere forskellig GUI frameworks til Java:
AWT - standard i Java, meget gammel, meget lidt brugt idag (undtagen i Java ME)
Swing - standard i Java, det man typisk har brugt til Java GUI apps de sidste 10 år
(som beskrevet ovenfor kan man i Swing vælge look and feel der passer til platformen, men bemærk at look and feel emuleres så det er ikke perfekt)
SWT - ikke standard, bruger native kode med er tilgænglig for Windows, Linux, MacOS X, Solaris, AIX og HP-UX, giver et mere native look and feel fordi der bruges native komponentr
JavaFX - nyeste GUI framework til Java, ikke standard (endnu), er indtil videre kun tilgængelig på Windows og MacOS X, man regner med at det vil være fremtiden, bruger samme opdeling i markup og kode som Flex, SL etc.
Der er flere forskellig GUI frameworks til Java:
AWT - standard i Java, meget gammel, meget lidt brugt idag (undtagen i Java ME)
Swing - standard i Java, det man typisk har brugt til Java GUI apps de sidste 10 år
(som beskrevet ovenfor kan man i Swing vælge look and feel der passer til platformen, men bemærk at look and feel emuleres så det er ikke perfekt)
SWT - ikke standard, bruger native kode med er tilgænglig for Windows, Linux, MacOS X, Solaris, AIX og HP-UX, giver et mere native look and feel fordi der bruges native komponentr
JavaFX - nyeste GUI framework til Java, ikke standard (endnu), er indtil videre kun tilgængelig på Windows og MacOS X, man regner med at det vil være fremtiden, bruger samme opdeling i markup og kode som Flex, SL etc.
#Java GUI & IDE
Du kan naturligvis skrive kode i hvad som helst.
Men hvis du vil bruge en GUI builder så:
Swing - NetBeans eller Eclipse
SWT - Eclipse
JavaFX - NetBeans
(de fleste foretrækker NetBeans Matisse til Swing)
Bemærk at GUI builder ikke er så udbredt i Java verdenen som det er i MS verdenen.
Du kan naturligvis skrive kode i hvad som helst.
Men hvis du vil bruge en GUI builder så:
Swing - NetBeans eller Eclipse
SWT - Eclipse
JavaFX - NetBeans
(de fleste foretrækker NetBeans Matisse til Swing)
Bemærk at GUI builder ikke er så udbredt i Java verdenen som det er i MS verdenen.
#18
Hvis du følger lidt med i hvor Java programmører diskuterer den slags, så vil se at:
- rigtigt mange foretrækker at håndkode GUI
- enkelte foretrækker GUI builder X1
...
- enkelte foretrækker GUI builder X10
- ingen siger at de håndkoder fordi der ikke er en god GUI builder
Den typiske VB6 eller .NET Win Forms udvikler forstår ikke Swing layout managers, men det vil jeg ikke blamer Swing for.
Hvis du følger lidt med i hvor Java programmører diskuterer den slags, så vil se at:
- rigtigt mange foretrækker at håndkode GUI
- enkelte foretrækker GUI builder X1
...
- enkelte foretrækker GUI builder X10
- ingen siger at de håndkoder fordi der ikke er en god GUI builder
Den typiske VB6 eller .NET Win Forms udvikler forstår ikke Swing layout managers, men det vil jeg ikke blamer Swing for.
Det er lidt bedre nu, da WPF/Silverlight har valgt en "layout manager" der er meget lig med Swings. Altså intet NullLayout, med pixel positioning. (Jeg lærte om GUI med Swing, XUL og HTML, før .NET)arne_v (19) skrev:Den typiske VB6 eller .NET Win Forms udvikler forstår ikke Swing layout managers
Men jeg vil stadigvæk argumentere for, at uden værktøjer på niveau med Visual Studio, eller bedre, Expression Blend, så er argumentet for at bruge en GUI builder meget lille.
Ligeledes kan man jo se at bedre værktøjer, faktisk gør at flere bruger dem. MonoDevelop's GUI builder til GTK, bruges jo faktisk at folk nu. Folk som før ville have skrevet koden i hånden.
Hvis Java skulle få et ordenligt GUI framework, med ordenlige værktøjer som Expression Blend, så er jeg også sikker på at folk ville bruge dem.
Men med de nuværende værktøjer til Swing, kan jeg godt forstå at folk ikke bruger dem.
Derudover vil jeg mene at Swing ikke er et optimalt framework til en GUI builder. Java 8 kan måske hjælpe lidt på det, men der er nogle problemstillinger her og der.
Det var/er der også med GTK#. Blandt andet at sikre sig at alle UI komponenter har en tom constructor, og alle properties kan sættes efter initialization.
Sådanne ting gør det lettere at lave en god GUI builder.
Hvis du gerne vil programmerer lidt GUI, som en application der er platform uafhængig, ville jeg benytte mig af swing, og indsætte følgende linjers kode, før jeg du sætter din Frame aka. dit vindue synligt i programmet:
Herefter, når jeg har lavet mit program, ville jeg lave det til en Runable .jar file. Dette er lidt indviklet, at gøre hvis man ikke lige ved, hvordan det fungere, men jeg har skrevet en lille artikel om hvordan man gør det her Her er artiklen
Når du har lavet denne runable .jar fil, skal slut brugeren blot have denne fil, og have java installeret, på sin computer, som de fleste i Danmark har idag, da NemID benytter sig af java. Herefter skal brugerne blot klikke på filen, og den virker som en almindelig .exe fil :)
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
}
Herefter, når jeg har lavet mit program, ville jeg lave det til en Runable .jar file. Dette er lidt indviklet, at gøre hvis man ikke lige ved, hvordan det fungere, men jeg har skrevet en lille artikel om hvordan man gør det her Her er artiklen
Når du har lavet denne runable .jar fil, skal slut brugeren blot have denne fil, og have java installeret, på sin computer, som de fleste i Danmark har idag, da NemID benytter sig af java. Herefter skal brugerne blot klikke på filen, og den virker som en almindelig .exe fil :)
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.