Tvorba windows .exe souborů z Javovských programů pomocí JexePack
Zpracoval: Roman Soukal
Vedoucí
projektu, korektury, závěrečná revize: Pavel Herout
Obsah:
Úvod - co to je to JexePack?
JexePack
- je aplikace, která vytvoří z jakéhokoliv programu v Javě komprimovaný 32-bitový .exe souboru
spustitelný v systému Windows. Exe soubor funguje přesně tak, jak očekáváme -- tedy stejně jako běžný program, tudíž umožňuje i použití AWT nebo Swing. Ovšem podmínkou je nainstalovaná J2SE minimálně takové verze,
která je vyžadována naším Java programem. To znamená, že program JexePack neřeší problém snadnějšího šíření programů v Javě, protože je
závislý na nainstalovaném JRE.
Jaké jsou tedy výhody vzniklého .exe souboru oproti standardním .jar souborům?
-
Jednoduché spouštění programů pro uživatele "laiky".
-
Skrytí všech programových souborů (zejména .class) před případnou dekompilací či neoprávněným využitím.
-
JexePack nabízí možnost výběru mezi spuštěním v konzolovém režimu nebo v okně.
-
Velikost vzniklého .exe souboru je někdy dokonce o něco menší než velikost ekvivalentního .jar souboru.
-
JexePack podporuje přímé přiřazení ikony (.ico) (v .jar lze ikonu řešit nepřímo přes Java Web Start).
Jaké jsou tedy nevýhody? Opomineme-li ztrátu přenositelnosti mezi různými platformami, se kterou při tvorbě .exe souboru musíme
samozřejmě počítat, tak je tu ještě jedna zásadní nevýhoda. JexePack je totiž registrovaným produktem firmy
Duckware
a není to freeware.
Zakoupení registrované verze stojí $99.95, ale je možné si zdarma stáhnout
neregistrovanou verzi, která má určitá omezení (viz omezení).
Stručný návod
V dalším textu budou uvedeny dva vzorové příklady, jak vytvořit pomocí JexePacku .exe soubor.
Podrobnější popis, návody, příklady a výčet zbylých parametrů naleznete v
manuálu.
Použití:
jexepack.exe [/parametry] výčet_souborů
/main:[název hlavní třídy]
- jméno třídy obsahující metodu main (povinný parametr)
/out:[název tvořeného souboru]
- jméno výstupního .exe (nutno zadat i s příponou)
/dir:[adresář komprimovaných souborů]
- není-li uveden, berou se soubory v aktuálním adresáři
/minver:[minimální verze javy požadovaná pro spuštění programu]
/jar:[jméno případného Jar souboru]
/icon:[soubor ikony]
/w
- spustí program v okením režimu (pomocí javaw)
výčet_souborů
- výčet všech souborů přidávaných do .exe souboru - např. *.class *.gif
Tvorba .exe souboru z HelloWorld aplikace
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
jexepack.exe /main:HelloWorld HelloWorld.class
Po provedení tohoto příkazu vznikne soubor HelloWorld.exe
Tvorba .exe souboru z .jar souboru
Ukázka bude na "okenní" aplikaci HelloWorldWindow.java
import javax.swing.*;
public class HelloWorldWindow extends JFrame {
HelloWorldWindow() {
super("HelloWord");
this.add(new JLabel("HelloWord", JLabel.CENTER));
this.setSize(180, 70);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new HelloWorldWindow().setVisible(true);
}
}
Je třeba vytvořit přímo spustitelný soubor HelloWorldWindow.jar, pro který
použijeme ikonu .
Samotné vytvoření souboru
HelloWorldWindow.exe
pak představuje následující příkaz:
jexepack.exe /out:HelloWorldWindow.exe /main:HelloWorldWindow.jar /minver:1.5 /jar:HelloWorldWindow.jar /icon:HelloWorld.ico /w HelloWorldWindow.jar
Omezení neregistrované verze
Neregistrovaná verze je omezená pouze tím, že po každém spuštění .exe souboru se nejprve zobrazí
okénko:
Po zavření tohoto okénka už funguje program jak má.
Vnitřní struktura JexePacku
JexePack funguje tak, že do .exe souboru zaarchivuje všechny zadané soubory. Při spuštění se
pak vytvoří podadresář v adresáři Temp windows, který obsahuje soubor (nejspíš zaváděcí)
jexepackboot.class. Ten pak extrahuje programové soubory do stejného adresáře. Program pak běží vlastně z tohoto adresáře Tempu
windows. Po ukončení programu se celý adresář smaže.
Díky znalosti této vlastnosti zaniká v úvodu jmenovaná 2. výhoda, protože za běhu programu máme přístup k programovým
souborům. Velkou nevýhodou z tohoto vyplývající je i to, že při násilném ukončení programu zůstávají výše zmiňované
soubory neodstraněné v Tempu windows. Další nevýhodou může být i to, že zejména zavádění větších programů
bude trvat o dost déle, než by tomu bylo standardně, protože se soubory musí nejdříve extrahovat. Z tohoto důvodu se
program stává téměř nepoužitelným pro velké programy.
Závěr
Tento způsob vytváření .exe souborů z programů v Javě je velmi dobře použitelný pro malé prográmky určené především
pro širokou veřejnost. Vždyť .exe soubor dokáže spustit i ten největší počítačový "laik". Velikou výhodou je i
kompaktnost programu, neboť přenášíme vždy jen jeden soubor. Dále pak nesmíme zapomenout na možnost ikonizace, která dodává
.exe souboru vzhled plnohodnotné windows aplikace.
Je ale třeba si uvědomit, že na cílovém počítači
musí být nainstalován příslušný Java Virtual Machine, jinak program nebude fungovat. Velikou škodou pak je, že JexePack
není volně šířitelný.
Při bližším zamyšlení zjistíme, že JexePack je nádherná ukázka toho, jak se dá velmi snadno a rychle vydělávat na dobrém, ale
technologicky ne příliš složitém nápadu.