J2ME pro pokročilé – J2ME a Ant
Součástí platformy J2ME je i Wireless Toolkit, který obsahuje sadu nástrojů pro vývoj J2ME aplikací. Jedním z nich je i KToolbar, který můžeme považovat za jednoduché vývojové prostředí, umožňující překlad zdrojových kódu a vytvoření výsledné aplikace (JAR a JAD). Nevýhodou je, že nemáme kontrolu nad vlastní procesem překladu (Build) a nemůžeme jej nijak ovlivnit. Jedním z možných řešení je využití nástroje Apache Ant.
Co je to ANT?
ANT, neboli Another Neat Tool, byl původně vytvořen pro překlad projektu Tomcat a je nedílnou součástí projektu Jakarta Apache. Je celý vytvořen v Javě a tím je plně přenositelný – vlastní buildovací soubory jsou založeny na XML formátu. V současnosti je nejrozšířenějším buildovacím nástrojem především u Java vývojářů a těší se také podpoře vývojových prostředí, jako například IntelliJ IDEA, Eclipse, SUN ONE Studio, JEdit a jiných. Více informací o Antu můžete nalézt na http://ant.apache.org.
Struktura buildovacího skriptu
Celý build skript můžeme rozdělit na několik částí. Každá část je uzavřena párovým elementem target a představuje jednotlivý buildovací krok. Abychom si zjednodušili práci, ukážeme si knihovnu, která rozšiřuje schopnosti Antu o podporu J2ME. Můžete ji nalézt na adrese http://sourceforge.net/projects/antenna/.
Použitím knihovny Antenna můžeme jednoduše projekt přeložit, preverifikovat, zabalit, obfuskovat a spouštět. Kromě toho máme k dispozici velice jednoduchý preprocesor, který je znám především Céčkařům. Jednotlivé kroky, které bude náš build skript obsahovat, jsou:
- Clear – vymazání pomocných adresářů.
- Init – inicializace projektu před překladem.
- Compile – kompilace zdrojových souborů.
- Preverify – proces preverifikace.
- Build – vytvoření výsledných souborů JAR a JAD.
- Run – spuštění aplikace v emulátoru.
Jak již bylo napsáno, skript má strukturu XML souboru. Jednotlivé kroky skriptu jsou uzavřeny párovým elementem project. V první kroku si nadefinujeme tyto důležité proměnné:
project.name– název projektumain.class– hlavní třída projektuwtk.home– domovský adresář WTKwtk.midapi– cesta ke knihovnám midp (standardní API, Nokia API, Siemens API…)
Základní struktura build skriptu:
<?xml version=“1.0″ ?>
<project name=“Hello“ default=“build“ basedir=“.“>
<!– Define some useful properties –>
<property name=“project.name“
value=“Hello“/>
<property name=“main.class“
value=“Hello“/>
<property name=“wtk.home“
value=“c:\Development\wtk104″/>
<property name=“wtk.midpapi“
value=“${wtk.home}\lib\midpapi.zip“/>
<– Here will be placed next tasks –>
</project>
V dalším kroku si nadefinuje pomocné tásky, které vytvoří výsledný soubor JAR a JAD:
<!– Define external Antenna tasks –>
<taskdef name=“wtkjad“
classname=“de.pleumann.antenna.WtkJad“/>
<taskdef name=“wtkpackage“
classname=“de.pleumann.antenna.WtkPackage“/>
Nyní si nadefinujeme jednotlivé tásky našeho build skriptu.
Clear
Tásk clear slouží pro odstranění dočasných adresářů, které vzniknou při procesu překladu. Jsou to adresáře:
classes– obsahuje přeložené zdrojové soubory projektupreverified– zde jsou uloženy preverifikované soubory z adresáře classesbuild– zde bude uložen výsledný soubor JAR a JAD
<!– Clear project directories –>
target name=“clear“>
<delete failonerror=“false“ dir=“classes“/>
<delete failonerror=“false“ dir=“preverified“/>
<delete failonerror=“false“ dir=“build“/>
</target>
Init
Tásk init slouží jen pro získání časové známky. Pro výsledný překlad není důležitý.
<!– Make initialization –>
<target name=“init“>
<tstamp/>
</target>
Compile
Tásk compile přeloží soubory z adresáře src a uloží je do adresáře classes. Nastavením proměnné bootclasspath můžete ovlivnit, které knihovny API budou pro překlad použity.
<!– Perform compile source files –>
<target name=“compile“ depends=“init“>
<mkdir dir=“classes“/>
<javac destdir=“classes“ srcdir=“src“
bootclasspath=“${wtk.midpapi}“ target=“1.1″/>
</target>
Preverify
Po kroku compile následuje tásk preverify, jenž provede preverifikaci přeložených zdrojových souborů z adresáře classes a uloží je do adresáře preverified.
<!– Run preverification task –>
<target name=“preverify“ depends=“compile“>
<mkdir dir=“preverified“/>
<exec executable=“${wtk.home}\bin\preverify“>
<arg line=“-classpath ${wtk.midpapi}“/>
<arg line=“-d preverified“/>
<arg line=“classes“/>
</exec>
</target>
Build
Nyní přišel čas, abychom využili pomocné tásky, kterými vytvoříme výsledné soubory JAR a JAD. Tásk wtkpackage vezme všechny soubory z adresářů preverified a res a vytvoří z nich výsledný soubor JAR. U tásku wtkjad jsou pro nás velice důležité parametry, kterými můžeme ovlivnit výsledný obsah souboru JAD.
<!– Make JAR package and JAD descriptor –>
<target name=“build“ depends=“preverify“ >
<mkdir dir=“build“/>
<wtkjad jadfile=“build\${project.name}.jad“
jarfile=“build\${project.name}.jar“
name=“${project.name}“
vendor=“Tester“
version=“1.0.0″>
<midlet name=“${project.name}“ class=“${main.class}“/>
</wtkjad>
<wtkpackage jarfile=“build\hello.jar“
jadfile=“build\hello.jad“>
<fileset dir=“preverified“/>
<fileset dir=“res“/>
</wtkpackage>
</target>
Run
Posledním táskem našeho build skriptu je tásk run, který spustí J2ME aplikaci v defaultně nastaveném emulátoru.
<!– Run application –>
<target name=“run“>
<exec executable=“${wtk.home}/bin/emulator.exe“>
<arg line=“-Xdescriptor:build\${project.name}.jad“/>
</exec>
</target>
Shrnutí
Vytvořit buildovací skript pomocí Antu není nic složitého a navíc získáte úplnou kontrolu nad překladem projektu. Velkou výhodou Antu je jeho otevřenost a možnost vytvořit si své vlastní tásky. Vzorový build skript můžete dále rozšířit o další tásky, jako je zahrnutí externích knihoven do výsledné aplikace, obfuskování nebo vytvoření více verzí jedné aplikace.
Odkazy, zdroje
- http://ant.apache.org – informace o projektu Apache Ant
- http://sourceforge.net/projects/antenna/ – stažení knihovny Antenna
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.







