J2ME utvikling av programvare for mobiltelefoner
(2002)
Colin Fahey

Motorola T720 mobiltelefon, vises åpnet
1. Advarsel
Dette dokumentet er foreldet! Informasjonen i dette dokumentet kan ha vært gyldig og nyttig i året 2002, men mange ting har endret seg i senere år! Dette dokumentet skal nå bare være å anse som en interessant historisk rekord av året 2002. Ikke stole på noen informasjon eller veiledning i dette dokumentet. All teknisk informasjon i dette dokumentet er svært foreldet.
Laste ned selv-laget programvaren selv, laget bilder, og selv-laget telefon varsle melodier (dvs. "ringetoner)," var relativt sjelden og vanskelig i år 2002. Dessverre, seks år senere, noen mobiltelefon tjenesteleverandører (inkludert Apple, som gir den eksklusive programvaren og "ringetone" portal for iPhone) fortsatt pålegge restriksjoner på nedlasting av programvare, bilder og musikk, fordi mobiltelefonen tjenesteleverandører likte svært stor økonomisk fortjeneste ved å styre disse typer nedlastinger.
Heldigvis, mobiltelefoner slik som de med den "Android" programvare-plattform, vil alltid ende evne til selskapene å opprette og utnytte lukkede markeder for slik bruk av mobiltelefoner. Selv om forbrukerne gjerne kjøpt mobiltelefon tjenesten planer som inkluderte svært høye kostnader for å laste ned programvare, bilder og musikk, dette er på grunn av begrenset antall mobiltelefon servicetilbud finnes.
Den økonomiske dynamikken som har aktivert enkelte selskaper å vokse til å dominere markedet bør ikke tolkes som implisitt sterk godkjenning av forbrukerne. Bedriftene begynner å dominere, og deretter gjøre det vanskelig eller umulig for konkurrentene å gå inn i markedet, den dominerende selskapene kan tilby produkter som kombinerer høy positiv verdi (for eksempel evne til å kommunisere hvor som helst) med høy negativ verdi (for eksempel høye priser for ønskelig programvare, bilder og musikk, som alle ville være fritt tilgjengelig, og dermed er det mulig at tjenesten legger til negativ verdi). Ingen forbruker er tvunget til å kjøpe en mobiltelefon, men det er ingen tvil om at den dominerende mobiltelefon tjenesteleverandører har gradvis skapt betingelser som ikke kan anses som et "fritt marked." Derfor er mobil-tjenesten har vært økonomisk "ineffektive" og har vært en ikke forfalt belastning for forbrukerne.
Forhåpentligvis krav at mobiltelefonen tjenesten radiofrekvenser være tilgjengelig for konkurrerende tjenester vil gjenopprette normal markedet verdier å overføre data, slik at mobiltelefonen tjenesteleverandører som er igjen redusert til bare bærere av data (dvs. bare gi båndbredde) i stedet for informasjon eller underholdning leverandører !
Tilrettelegging av transport av data må være adskilt fra virksomheten med å selge data, ellers vil det være et insentiv for data transport virksomhet for å stenge konkurrenter fra salg av data gjennom de samme dataene transport kanalen.
Videoen spillkonsoll markedet lider av det samme problemet. Produsentene av videospill-konsollen maskinvare er i virksomheten for å skape enheter som kan vise video spill, men de samme selskapene også har eksklusiv kontroll med overføring av programvare til disse spill-konsoller. Derfor er det et incentiv for videospill-konsollen produsenter for å stenge konkurrenter fra salg av programvare for videospill-konsoller. Hvis et videospill-konsollen Produsenten fokusert på design og produksjon maskin som skal kunne selges med fortjeneste (i stedet for på et betydelig tap, som med X-Box og PlayStation og Nintendo videospill-konsoller), deretter videospill markedet ville trives, og kvaliteten av de beste videospill, vil dramatisk bedre, og kostnadene for videospill ville bryte sammen.
2. Emne indeks
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
3. J2ME utviklingsverktøy
Denne delen beskriver hvordan du laster ned utviklingsverktøy som kan brukes til å kompilere J2ME kildekoden i klasse-filer egnet for mobile enheter. Merk at Sun "J2ME Wireless Toolkit," diskuteres i et senere avsnitt av denne artikkelen, må du laste ned den Java SDK beskrevet i dette avsnittet.
3.1 JDK 1.4 (eller senere)
Dette betyr at du trenger den konvensjonelle Java 2 SDK fra Sun. Jeg lastet ned og brukt versjon 1.4 via følgende link:
Her er hva de laster ned siden ser slik ut:
Starte installasjonsprogrammet. Installer for å standardplasseringen ( c:\j2sdk1.4.0_03 ) med mindre du er i stand til å løse banen problemer som kan oppstå.
3.2 Connected Limited Device Configuration (CLDC)
Jeg vil ikke late som vet hva dette er, men jeg bare lastet det ned fra Sun nettsted.
Her er hva de main CLDC laste ned webside ser slik ut:
Bare 1.0.3 var tilgjengelig på det tidspunktet jeg besøkte.
For å kunne laste ned denne, jeg trengte å registrere Sun nettsted. Jeg opprettet følgende profil:
Username: anon***anon
Password: nospamplease
Favorite color: blue
Full name: Prof. Anon Nospamplease
Jeg lastet ned følgende fil:
j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001.zip
Jeg unzipped til følgende katalog:
Jeg omdøpt til "cldc-1_0_3-fcs" katalog for å ganske enkelt:
cldc (dvs. den fullstendige banen er c:\j2me\cldc)
3.3 Mobile Information Device Profile (MIDP)
Jeg vil ikke late som vet hva dette er heller, men jeg bare lastet det ned fra Sun nettsted.
Her er hva de main MIDP laste ned webside ser slik ut:
Jeg lastet ned følgende fil:
j2me_midp-1_0_3-fcs-src-b26-win-19_sep_2001.zip
Jeg unzipped til følgende katalog:
Jeg omdøpt til "midp-1_0_3-fcs" katalog for å ganske enkelt:
midp (dvs. den fullstendige banen er c:\j2me\midp)
3.4 Konfigurere verktøy
3.4.1 Etablere stier
Legg til følgende linjer til AUTOEXEC.BAT fil:
REM ---- Java Support ----
SET MIDP_HOME=C:\j2me\midp
SET PATH=%PATH%;c:\j2sdk1.4.0_03\BIN;
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\j2sdk1.4.0_03\BIN;C:\j2me\midp\bin;%PATH%
Deretter styrke disse variablene som skal lastes ved å kjøre batch-filen:
Du kan også sette opp de samme variablene ved hjelp av Windows-miljøet variabel kontrollpanelet.
Legg merke til at jeg valgte å angi eksplisitt katalogbanene til min nåværende versjonen av Java 2 SDK. Derfor, hvis jeg oppgradere, så jeg må endre AUTOEXEC.BAT filen for å angi den nye kataloger.
3.4.2 Kontroller Jave 2 SDK binærfiler
Når innstillingene ovenfor trer i kraft, skal du kunne kjøre Java verktøyet programmer fra kommandolinjen uten å angi den fullstendige banen til verktøyet programmer.
Følgende kommando vil starte mobil enhet emulator:
Dette bildet viser mobil enhet emulator:
4. Simple J2ME program
4.1 Skriv Java koden
Bruke et tekstredigeringsprogram, en person kan skrive inn koden, for eksempel for denne HelloMIDlet.java kildekoden fil:
Her er koden i rent tekstformat:
// File: HelloMIDlet.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class HelloMIDlet
extends MIDlet
implements CommandListener
{
private Command exitCommand;
private Display display;
private TextBox t = null;
public HelloMIDlet()
{
display = Display.getDisplay( this );
exitCommand = new Command( "Exit", Command.EXIT, 2 );
t = new TextBox
(
"Hello MIDlet",
"Test string",
256, 0
);
t.addCommand( exitCommand );
t.setCommandListener( this );
}
public void startApp()
{
display.setCurrent( t );
}
public void pauseApp()
{
}
public void destroyApp( boolean unconditional )
{
}
public void commandAction( Command c, Displayable s )
{
if (c == exitCommand)
{
destroyApp( false );
notifyDestroyed();
}
}
}
4.2 Fyll *.java koden til *.class
Advarsel: Den følgende kommando må være på én linje, men har blitt utvidet til flere linjer med tekst bare for enkelhets skyld.
(Current directory: C:\HelloMIDlet)
javac
-target 1.1
-d .\
-bootclasspath c:\j2me\midp\classes
HelloMIDlet.java
Merk: "-target 1.1" er nødvendig for å unngå feil i fremtiden "preverify" stadium. Sannsynligvis har dette noe å gjøre med et problem med MIDP 1.0.3 støtte i JDK 1.4.
4.3 Preverify å generere et nytt *.class fil
(Current directory: C:\HelloMIDlet)
preverify -classpath c:\j2me\midp\classes;. HelloMIDlet
Dette genererer en ny *.class filen i en ny underkatalog kalt "output" (som standard).
4.4 Test den nye *.class fil
(Current directory: C:\HelloMIDlet)
midp -classpath c:\j2me\midp\classes;.\output HelloMIDlet
Dette starter telefonen emulator, noe som viser at den nye "output" katalogen inneholder noen av de nødvendige *.class filer.
Dette bildet viser forventet resultat.
4.5 Lag en ny tekstfil, "manifest.mf" og redigere filen
En "manifest.mf" filen er viktig for å få en faktisk mobiltelefon til å tolke innholdet i en *.jar fil. Hvis en skikkelig "manifest.mf" Filen er ikke inkludert i *.jar filen, deretter mobiltelefon kan, laster ned den *.jar fil, men kanskje ikke klarer å tolke den nedlastede filen, eventuelt rapporterer en feil som "Unsupported Content Type".
Det følgende er et eksempel på en enkel "manifest.mf" fil.
Her er "manifest.mf" fil som ren tekst:
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
Legg merke til at CLDC og MIDP versjoner er spesifisert i denne filen. Vær svært forsiktig og konservativ når du redigerer de ulike feltene i denne filen. Dersom du får "File Corrupt" feil, og deretter prøve å eliminere alle felt som ikke er vist i dette eksemplet. Også, legger feltene i den rekkefølgen de vises i eksempelet. Også, forkorte hvert felt verdi så mye du kan, og holde tegn begrenset til enkle bokstaver, tall, punktum og bindestreker. Noen mobiltelefon-tjenester, og mobiltelefoner, kan tolerere mer variant av feltet bestilling og feltet innholdet.
Forsiktig:
Når "jar" programmet brukes til å opprette en *.jar fil, og "manifest.mf" filen er angitt som manifestfilen, den "jar" programmet leser manifestfilen og kan legge til flere felt som det opprettes en fil som heter "MANIFEST.MF" innen utgangen *.jar fil. Derfor, hvis "MANIFEST.MF" filen er hentet fra en *.jar fil, og er deretter sammenlignet med den opprinnelige "manifest.mf" angitte filen under etableringen av *.jar, de to filene kan være forskjellige, med "MANIFEST.MF" fil som inneholder flere felter enn den opprinnelige "manifest.mf" fil .
Ikke pakke ut en "MANIFEST.MF" fil fra en *.jar fil, og forsøker å danne en ny *.jar fil med at manifestfilen. Hvis du pakker ut en "MANIFEST.MF" fil fra en *.jar filen, deretter må du sørge for å eliminere alle felt, bortsett fra dem som vises i eksempelet "manifest.mf" filen vist ovenfor.
Merk:
Ikoner for programmer som tilsynelatende ikke vises på Motorola T720 telefonen. Dette er hvorfor jeg ikke beskrive min MIDlet med et ikon. Men følgende viser hvordan du angir et ikon for programmet innen manifestfilen:
MIDlet-1: My_Description, /icon.png, HelloMIDlet
Ved utvikling på mobiltelefoner som gjør vise ikoner for programmer, spesifisere ikon filnavn, og legger til ikonet bildefilen seg til *.jar fil ved å filnavnet blant filnavn på filer som skal legges til *.jar fil.
4.6 Sett "manifest.mf" fil og *.class fil til en *.jar fil
Følgende kommando oppretter en *.jar fil. Den *.jar filen skal inneholde spesifisert manifest.mf filen, og vil inneholde *.class filer funnet i den angitte katalogen.
Gjeldende katalog: C:\HelloMIDlet
jar cfm hi.jar manifest.mf -C .\output HelloMIDlet.class
Kompleks hypotetisk eksempel for å skape en *.jar fil
Anta at et ikon bildefilen (for eksempel "icon.png") skal vises i en *.jar filen som "/icon.png". (Merk: Programmet ikoner vises ikke på Motorola T720 mobiltelefon, men du trenger vises på andre mobiltelefon-typer, og gjøre vises i MIDP emulator.)
Anta at det er en katalog med navnet "images" med bildefiler (*.png format). Anta at denne katalogen, og alle bildene i katalogen, bør være tilgjengelig for Java programmet ved den relative katalogen /images (slik at et bilde "a.png" ville være tilgjengelig ved hjelp av banen "/images/a.png").
Tenk alle de *.class filer produsert av preverify kommandoen ligger i en katalog med navnet "verified". For eksempel blir bekreftet av de største klassen, "MyApp.class", ville være i "verified" mappe, sammen med andre klasser på programmet. Alle disse klassene er å være tilgjengelig i rotkatalogen på *.jar fil.
Følgende kommando oppretter en *.jar fil som oppnår de ulike målene er angitt i forrige avsnitt. Advarsel: kommandoen har blitt utvidet til flere linjer med tekst her bare for enkelhets skyld. Når du skriver inn kommandoen ved en ledetekst, kommandoen må ikke inneholde linjeskift, ellers kommandoen Tolken skal tolke skrevet tekst som flere uavhengige kommandoer.
jar
cfmv [Create JAR, Specify JAR Name, Add manifest.mf, Verbose]
MyApp.jar [Name of output JAR file]
manifest.mf [The manifest.mf file]
icon.png [Optional icon, specified by JAD as "/icon.png"]
images [Directory to add to JAR as "/images"]
-C .\verified .
Den avsluttende delen av kommandoen er vanskelig å forstå. Det har følgende betydning: "Endre den gjeldende arbeidsmappen til .\verified, og deretter ble alle *.class filer som finnes i den relative katalogen '.' (nemlig alle *.class filer i den gjeldende arbeidsmappen) til *.jar fil." Fordi katalogen hadde vært endret før angivelse av banen av klasser til å sette i *.jar fil, den lokale banen vil ikke vises i den relative banen når filene er plassert i til *.jar fil.
For eksempel at det er bekreftet klasser i følgende katalog:
C:\MyApp\verified
Anta at det er klasse-filer, for eksempel følgende:
C:\MyApp\verified\w.class
Så spesifisere "-C .\verified ." i kommando for å opprette *.jar fil, fra en gjeldende katalog for "C:\MyApp", vil resultere i "w.class" blir satt i rotkatalogen på *.jar fil. </ E>
Advarsel: Når "-C" alternativet er angitt, blir det endringer i gjeldende arbeidsmappen på at poenget med å behandle den samlede sekvens av kommando parametre til jar kommando. Derfor er jar kommandoen kan klage på at det ikke kan finne andre filer som nevnt i kommando parametre utover "-C" alternativet. Hvis dette skjer, er det bare å flytte "-C .\verified ." å være den siste parametere i den overordnede kommandoen.
Følgende viser verbose output av jar kommando.
added manifest
adding: icon.png(in = 449) (out= 454)(deflated -1%)
adding: images/(in = 0) (out= 0)(stored 0%)
adding: images/a.png(in = 2463) (out= 2223)(deflated 9%)
adding: images/b.png(in = 1322) (out= 579)(deflated 56%)
adding: images/c.png(in = 3433) (out= 2874)(deflated 16%)
adding: images/d.png(in = 1524) (out= 801)(deflated 47%)
adding: w.class(in = 2570) (out= 1356)(deflated 47%)
adding: MyApplication.class(in = 4714) (out= 2169)(deflated 53%)
adding: x.class(in = 3239) (out= 1429)(deflated 55%)
adding: y.class(in = 14205) (out= 6481)(deflated 54%)
adding: z.class(in = 9448) (out= 5135)(deflated 45%)
4.7 Opprette og redigere en ny *.jad fil
En *.jad filen er nødvendig, slik at mobiltelefonen kan beskrive et dataprogram til en person før personen bestemmer seg for å laste ned programmet. Den *.jad filen inneholder også noen indirekte fra *.jar seg selv.

Et eksempel *.jad fil, som beskriver en *.jar fil
Her er eksempel hi.jad fil i rent tekstformat:
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Jar-Size: 1283
MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
Det finnes programmer som kan generere *.jad fil, noe som gjør det enklere å oppdatere "MIDlet-Jar-Size:" feltet hver gang *.jar filen er endret (og dens størrelse endringer). Hvis du søker på Internett vil du finne nyttig J2ME programmer.
Hvis størrelsen feltet ikke spesifiserer nøyaktig byte total av *.jar filen, deretter følgende feilmelding kan vises etter en vellykket nedlasting til en mobiltelefon: "Download Failed" (last ned mislyktes).
For Motorola T720 mobiltelefon, kan følgende feilmelding kan brukes til inidcate ugyldige felt i *.jad fil, eller muligens ugyldige felt i den genererte MANIFEST.MF filen i *.jar fil: "Failed: File Corrupt" (mislyktes: filen er skadet).
Merk: Hvis *.jar fil i samme katalog som den tilsvarende *.jad filen på en Internett-server, så *.jad fil kan ganske enkelt angi filnavnet på *.jar fil, uten å angi en full URL, som i følgende eksempel:
MIDlet-Jar-URL: hi.jar
Når du laster ned disse filene fra en Apache Internett-server til en Motorola T720 mobiltelefon, er det akseptabelt å ikke inkludere full URL. Men når du laster ned disse filene fra en Yahoo! Internett-server til en Motorola T720 mobiltelefonen, den prøver å laste ned, vil mislykkes, hvis ikke en full URL banen til *.jar filen er angitt i *.jad fil, som i følgende eksempel:
MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar
Jeg vet ikke årsaken til dette problemet, og jeg vet at dette problemet påvirker ikke andre mobiltelefoner (eller mobiltelefon tjenesteleverandører). Å måtte oppgi hele URL for *.jar filen i *.jad filen er åpenbart upraktisk, fordi flytte filer til ulike steder på en server ville kreve endring av informasjon i alle *.jad filer. Men å angi den fullstendige URL kan gjøre *.jad mer pålitelig for enkelte mobiltelefoner og visse mobil-tjenesteleverandører.
4.8 Test *.jar filen og *.jad filen ved å kjøre programmet
Følgende utføres klassen funnet i *.jar fil, beskrevet av *.jad fil.
(Current directory: C:\HelloMIDlet)
midp -classpath c:\j2me\midp\classes;.\hi.jar -descriptor hi.jad
4.9 Referanser for J2ME, MIDP, CLDC utvikling
Mye av det jeg presenterte her kan bli funnet på mange andre nettsteder. Men jeg rettet opp noen feil funnet på andre nettsteder og lagt mangler detaljer, og presenterte den komplette opplevelsen av at noen prøver å gjøre det. Her er svært informative linker som hjalp meg med å komme i gang:
5. Kompleks J2ME program
5.1 Innledning
Det enkle programmet ble presentert i forrige del av dette dokumentet har bare én kilde koden fil, og programmet gjør nesten ingenting og er derfor ikke et godt eksempel på mobiltelefonen programmering.
Min venn Sam Robertson skrev en interessant J2ME program som lærer en person å spille kortspill "Blackjack" (også kalt "21"). En spiller er presentert med en "forhandler kort," og spilleren står med to kort, og spilleren må bestemme hva du skal gjøre: "opphold treffer, double-ned, eller delt."
Dette programmet har seks kildekodefiler. Programmet svarer på brukerundersøkelser, og har enkel tegning og tekst-oppdateringer.
5.2 Kildekoden
Klikk på lenken for å få kildekoden, og *.jad fil, "manifest.mf" fil, og en batch-fil, alle i én praktisk ZIP fil.
sbj.zip
Kildekoden i en ZIP fil
6090 bytes
MD5: bf3922035b7a4eef24e107d03b7524c9
Pakk ut til en vilkårlig katalog, men hvis du pakke til "c:\" under Windows, følgende eksempel diskusjonen vil bli enda tettere til den faktiske situasjon.

Utpakking sbj.zip å "c:\" oppretter katalogen "c:\sbj"
5.3 Manifestfeil
Fil: "manifest.mf":
MIDlet-1: My_Description,, SBJ_MidletT
MIDlet-Name: SBJ_MidletT
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
5.4 Batch-fil for å bygge programmet
Følgende satsvise filen er grovt, men det tjener som en illustrasjon på hvordan du kan komme i gang med å skrive din egen batch fil til å bygge din J2ME programmet. Dette eksemplet batch-filen gjør følgende:
(1) Slett katalogen som inneholder gamle *.class filer;
(2) Slett katalogen som inneholder gamle bekreftet *.class filer;
(3) Foreta en "klassene" resultat katalog;
(4) Kompiler alle *.java kilder i å *.class filer, med utgang skal "klassene" katalogen.
(5) Foreta en "kontrollert" utgang katalogen;
(6) Preverify alle klasser "i" klassene katalog, og sette det bekreftet klasser i "bekreftet" katalogen.
(7) Opprett en *.jar fil, og legger til mainfest fil, og alle klasser i "bekreftet" katalogen;
*(8) Test programmet via preverified klasser rett;
*(9) Test programmet via *.jar og *.jad filer;
(*... Disse trinnene er deaktivert (ved å kommentere) i min batch-fil.)

Batch-fil "build_sbj.bat" for å bygge programmet
Her er den samme filen ("build_sbj.bat") i rent tekstformat:
rmdir /S /Q classes
rmdir /S /Q verified
del /F /Q *.jar
mkdir classes
javac -g:none -target 1.1 -d .\classes -bootclasspath c:\j2me\midp\classes *.java
mkdir verified
preverify -classpath c:\j2me\midp\classes;.\classes -d .\verified .\classes
jar cvfm sbj. jar manifest.mf -C .\verified .
REM midp -classpath c:\j2me\midp\classes;.\verified SBJ_MidletT
REM midp -classpath c:\j2me\midp\classes;.\sbj.jar -descriptor sbj.jad
REM Finished
5.5 Bygningen fra ledeteksten
Her er resultatet av å kjøre "build_sbj.bat" batch-filen på kommandolinjen:

Utføre "build_sbj.bat" batch-fil
Merk at advarsler for "rmdir" og "del" operasjoner simpelthen at det er ingenting å fjerne.
Du kan se den nye kataloger (dvs. "classes" og "verified") og den nye *.jar fil som resulterte i å kjøre batch-filen:

Kildekodefiler og nye generert fil
5.6 *.jad fil
Hvis du vil distribuere sbj.jar fil, må vi opprette og redigere sbj.jad filen du har de riktige *.jar størrelse i det aktuelle feltet:
Fil: sbj.jad
MIDlet-1: SBJ_MidletT, , SBJ_MidletT
MIDlet-Jar-Size: 7257
MIDlet-Jar-URL: sbj.jar
MIDlet-Name: Sam Blackjack Trainer
MIDlet-Vendor: Sam Robertson
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
En person må kanskje legge hele URL til *.jar filen når *.jad filen er satt på en Internett-området - men jeg oppdaget (etter ett forsøk) at jeg var i stand til å unngå å nevne den fulle URL (dvs., jeg bare angitt *.jar filnavnet av seg selv). Men å sette i hele URL, men jeg vil gjerne fortelle deg hva jeg observerte.
5.7 Sammendrag
Å ha flere kildefiler i prosjektet er felles, og i denne delen vi ga en olje illustrasjon av bygningen flere klasser, etterfulgt av innpakning og utførelse.
Vennligst se følgende avsnitt om hjelp Sun Wireless Toolkit, noe som gjør bygging av programmer mye enklere.
6. Sun "Wireless Toolkit (version 1.0.4_01)"
6.1 Innledning
Sun et praktisk-miljø for bygg og emballasje J2ME programmer: "Java 2 Platform Micro Edition (J2ME) Wireless Toolkit (version 1.0.4_01)".
(Advarsel: Du må laste ned de som Java 2 SDK 1.4 beskrevet i et tidligere avsnitt for å bruke denne verktøykasse. Vil dette nå hvis du ikke allerede har denne versjonen av Java 2 SDK.)
Gå til følgende nettsted for å laste ned verktøykasse:
http://java.sun.com/products/j2mewtoolkit/
Forsiktig!
IKKE klikk på linken "2.0 Beta 1 English" (foreløpig toppen Nedlastninger alternativet) hvis du gjør Motorola T720 utvikling - fordi denne versjonen har noen MIDP-2.0 ting, og komme rundt dette kan bli en hodepine.

Ikke last ned denne versjonen! ("2.0 Beta 1 English")
Jeg har prøvd denne versjonen, og jeg omsider fikk koden til å kompilere med masse rotete innstillinger endres, men etter all den innsatsen jeg har en sikkerhet unntak når jeg prøvde å utføre. Ikke bry deg!
Last ned "1.0.4_01 English" versjon. Her er hva de laster ned siden ser slik ut:

Den Sun J2ME Wireless Toolkit (version 1.0.4_01) Nedlastninger side

Den Sun J2ME Wireless Toolkit (version 1.0.4_01) FTP nettsted listen
Dette vil laste ned følgende fil: "j2me_wireless_toolkit-1_0_4_01-bin-win.exe"
Utføre dette programmet skal installeres på systemet.
6.2 J2ME Wireless Toolkit: lanseringen verktøylinje
Etter verktøykasse er installert, kan du starte den fra "Start" (Start) meny-system:

Starter verktøylinjen program
Du kan også få tilgang MIDP-1.0 dokumentasjon via "Documentation" element i denne Start (start)-menyen.

J2ME Wireless Toolkit (version 1.0.4_01) dokumentasjon
6.3 J2ME Wireless Toolkit: opprette prosjektet og bygge

Verktøylinjen er klar. Klikk "New Project..." å opprette et nytt prosjekt.

New Project: Skriv inn prosjektnavn (blir JAR navn og navn på nytt prosjekt katalogen), og skriv inn navnet MIDlet klasse (klasse utledet fra MIDlet, i hovedsak den viktigste klassen av søknaden din).

Toolbar: Prosjektet er opprettet. Legg merke til at konsollen forteller deg hvor du vil plassere *.java kildefilene, etc. (f.eks, "c:\WTK104\apps\sbj\src", osv.)

Klikk på "Settings..." på verktøylinjen for å få dette prosjektet i menyen Innstillinger.
Ignorering av "MIDlet-Jar-Size" feltet (med verdien "100 bytes)" for nå. Vi vil til slutt føre til at den riktige verdien for å få satt.

Klikk på MIDlets kategorien av prosjektet innstillinger dialogboksen.
Klikk på den eneste raden i tabellen ("MIDlet-1") for å markere og velge den. Deretter klikker du på "Edit" knappen.

Tøm "Icon" feltet hvis du ikke har en *.png filen for å sette inn i *.jar fil.
Gjør følgende:
(1) Project --> Clean: Fjerner alle *.class filer;
(2) Build : Bygger alle *.class filer og preverifies;
(3) Project --> Package --> Create Package : Produserer *.jar og *.jad

Resultatet av å bygge *.jar og *.jad
Når du gjør disse tre trinnene, vil resultatet *.jar og *.jad er straks klar for kjøring i de lokale emulator, eller for umiddelbar distribusjon på Internett-området for andre å laste ned "Over The Air" (OTA). Den *.jar størrelse feltet i *.jad filen vil være riktige. Ikke glem å gjøre trinn (3) hver eneste gang du bygger!
Nå kan du teste ved å trykke på "Run" (kjøre)-knappen.

Treffer "Run" for prosjektet leser *.jad på emulator. Du kan velge spesifikke MIDlet å lansere (vanligvis bare en).
Bare kopier *.jar og *.jad filer fra angitte steder (rapportert av verktøylinjen konsollet vinduet under bygging av prosjektet), for eksempel:
(Fra konsollen vindu:)
Wrote c:\WTK104\apps\sbj\bin\sbj.jar
Wrote c:\WTK104\apps\sbj\bin\sbj.jad
Sette disse filer direkte på Internett uten endringer, og den skal fungere. Her er hva jeg så på min mobiltelefon etter nedlasting av dette programmet kompileres "OTA" (OTA)

Sam Robertson's Blackjack Trainer (sbj.jar) kjøre på min mobiltelefon
7. Tilbyr programvare på en Internett-området
7.1 Sikre at Internett-server angir MIME for *.jar filer og *.jad filer
Hvis du har en Apache Internett-server, må du lage en fil kalt ".htaccess" innen ditt nettsted rotkatalogen. Den ".htaccess" fil lar deg overstyre Apache konfigurasjon, for eksempel legge til eller overstyrende fil MIME typer. Du må legge til spesifisere MIME typer tilsvarende *.jar filer og *.jad filer, som vist i følgende tekst fil:

Min tilpassede ".htaccess" fil for Apache Internett webserver. Merk: Jeg heter denne filen ".htaccess.txt" bare for å gjøre filen enkelt å redigere når du bruker Windows operativsystemet. Filnavnet må endres til ".htaccess" før filen kan brukes med Apache Internett webserver.
Her er mitt enkle .htaccess fil som ren tekst:
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
Tilsynelatende, opprette eller endre denne filen resulterer i en umiddelbar endring av Apache tjeneren. Jeg antar det Apache serveren kontrollerer den modifikasjon dato og klokkeslett for ".htaccess" fil ved hver nye innkommende transaksjonen, og serveren reloads at filen dersom modifikasjonen dato og tid er endret.
Hvis du har en annen type Internett-server, må du finne ut hvordan du angir MIME typer, og du må sørge for at *.jar filer og *.jad filer som er tilordnet den aktuelle MIME typer.
Du vet at hvis MIME typer ikke har blitt satt opp dersom mobiltelefonen nekter å laste ned *.jad fil og rapporterer følgende feil:
"406: Not Acceptable"
7.2 Alternativt gi linker til *.jad filen innen HTML eller WML dokumenter
Den Motorola T720 J2ME mobiltelefon med AT&T tjenesten er i stand til å laste ned en *.jad filen direkte ved å skrive inn URL av *.jad filen til mobiltelefonen. Dette er sannsynligvis for å arbeide i andre J2ME mobiltelefoner med andre mobil-tjenesteleverandører.
Men det kan være mer lettvint for folk å laste ned *.jad fil ved å velge en lenke i en HTML dokument eller innen en WML dokumentet. (Merk: WML er nå foreldet. Fleste mobiltelefoner kan nå tolkar HTML.)

En enkel HTML dokument med en link til en *.jad fil

En enkel WML (WAP) side med en link til en *.jad fil (Merk: WML er nå foreldet. Fleste mobiltelefoner kan nå tolkar HTML.)
8. Laste ned programvare fra en Internett-området
Følgende bilder viser den nøyaktige sekvensen av handlinger som jeg gjorde for å laste ned og kjøre MIDlet utviklet og iverksatt som beskrevet i forrige avsnitt ovenfor. Disse bildene er fotografier av skjermen på min mobiltelefon.
(1) Hovedskjerm: Når du åpner telefonen, ser du hovedskjermbildet. Trykk på den midterste knappen for å gå til hovedmenyen.
(2) Main Menu: Flytt til elementet "WebAccess".
(3) WebAccess: Flytt til elementet "Go To URL".
(4) Enter URL: Skriv inn URL av en *.jad fil (eller av en HTML dokument, eller av en WML dokument).
(5) Details; Denne informasjonen ble analysert fra *.jad fil. Trykk DOWNLD å laste ned *.jar fil.
(6) Download Complete; Vent på denne meldingen for å forsvinne;
(7) Installing; Vent på denne meldingen for å forsvinne;
(8) xxxx bytes transferred; Vent på denne meldingen for å forsvinne;
(9) Installed; Vent på denne meldingen for å forsvinne;
Når WebAccess menyen kommer til syne igjen, etter at programmet er installert, er det bare å gå ut hver menyen for å gå tilbake til hovedskjermbildet.
(1) Hovedskjerm: Når du åpner telefonen, ser du hovedskjermbildet. Velg "Games & Apps" alternativet via hovedmenyen, eller trykk nedover markøren på hovedskjermen.
(2) Java Powered: Vent på denne skjermen for å forsvinne.
(3) Games & Apps: Velg elementet med navnet på programmet!
(4) Yay! Vellykket gjennomføring av programmet ditt!
Programmet utseendet på mobiltelefonen er veldig likt utseendet i emulator.
9. Last ned feilmeldinger og installasjon feilmeldinger
9.1 Motorola T720 (J2ME) feilmeldinger
Følgende feil meldinger er bare relevant for Motorola T720 (GSM/J2ME) mobiltelefon.
9.1.1 "Download Failed"
Forårsake # 1
Enhver fil (HTML, JAD, JAR, MID, GIF) over 1644 byte vil føre til denne feilen på visse Internett-verter og servere. Her er en kort liste over verter og servere:
Host / Server Error
=================================================== =================
Apache No
Microsoft Personal Web Server (direct from your PC) No
Earthlink (Apache) No
Yahoo! (custom server) Yes
Problemet skyldes en feil i Motorola T720 GSM/J2ME firmware, som gjør at nedlasting av filer i fragmenter mislykkes.
Den eneste åpenbare løsningen er å skifte Internett-vertskap eller server type. Andre mobiltelefon-typer ikke har dette problemet.
Forårsake # 2
Den "MIDlet-Jar-Size:" i en *.jad fil angir ikke nøyaktig byte totalt tilsvarende *.jar fil.
9.1.2 "Failed: File Corrupt"
Forårsake # 1
Den *.jar filen bruker API funksjoner som ikke er tilgjengelig på bestemte mobiltelefon.
For eksempel, MIDP 2.0 funksjoner er ikke tilgjengelige på Motorola T720 GSM/J2ME mobiltelefonen (som bare har MIDP 1.0 funksjoner). Et program kan kjøre i en emulator, men kan ikke kjøres på mobiltelefonen.
Løsningen er å søke etter MIDP 2.0 funksjoner i kildekoden og erstatte dem med MIDP 1.0 funksjoner, eller eliminere funksjoner som krever MIDP 2.0 funksjoner.
Forårsake # 2
Den "manifest.mf" filen brukes til å lage *.jar fil (via "jar" verktøyet) inneholder feil.
Sørg for at "manifest.mf" fil har følgende versjoner av CLDC og MIDP:
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
Hele "manifest.mf" filen bør se nesten nøyaktig like følgende:
MIDlet-1: My_Description,, HelloMIDlet
MIDlet-Name: My_Midlet_Suite
MIDlet-Vendor: Colin Fahey, Inc.
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
Hver linje av teksten i "manifest.mf" filen, inkludert den siste linjen i filen, må ende med en "carraige tilbake" (CR; 13; 0x0d) tegn etterfulgt av "et" linjeskift (LF; 10; 0x0a) karakter.
Den eneste felt av "manifest.mf" filen i din egen versjon av filen som skal være forskjellig fra eksempelet som vises her er de tre første feltene som vises i eksempelet. De siste tre feltene skal være et nøyaktig samsvar med eksempel, og den endelige to tegn på filen bør være "vognretur" og "linjeskift" etter den endelige feltet.
Her er mulige problemer i din versjon av "manifest.mf" fil:
(1) Ditt "manifest.mf" filen inneholder tegn som ikke ASCII tegn; (Se på et diagram av ASCII tegn, alle tegn utenfor den 0 til 127-serien er ugyldig);
(2) Ditt "manifest.mf" filen har ikke "et" linjeskift (LF) karakter etter hver "vognretur" (CR) tegnet på slutten av hver linje;
(3) Ditt "manifest.mf" filen er usynlig mellomrom eller tabulatorer på slutten av hver linje før (CR)(LF) linje oppsigelse;
(4) Ditt "manifest.mf" filen inneholder en "Manifest-Version:" linje;
(5) Den siste linjen på "manifest.mf" filen ikke slutte med en (CR)(LF) linje oppsigelse, men i stedet bare når slutten av filen;
(6) Ditt "manifest.mf" filen ikke har nøyaktig felt og eksakt rekkefølge på felt som vist i eksemplet ovenfor;
(7) Ditt CLDC versjonen er ikke akkurat 1.0 eller MIDP versjonen er ikke akkurat 1.0;
(8) Din leverandør har tegn som ikke er ASCII tegn (for eksempel ingen Unicode-tegn er tillatt);
(9) Ditt "manifest.mf" filen ikke har en plass etter den andre komma i "MIDlet-1:" linje;
Kanskje noen av tilfellene nevnt ovenfor ikke faktisk føre til problemer for mange mobiltelefoner, men å eliminere alle tilfellene nevnt ovenfor kan aktivere laste ned for å lykkes. Når nedlastingen er fullført, kan du eksperimentere med variasjoner av "manifest.mf" filen for å finne ut hvilke andre ting du kan gjøre uten å forårsake laste ned feil. Når "manifest.mf" filen er endret, er det viktig å kontrollere at du laster ned programmet fortsetter å arbeide etter alle mål mobiltelefoner og mobil-tjenesteleverandører. Noen telefoner og tjenester er mindre fleksible enn andre.
Når en "manifest.mf" filen er lagt til en *.jar fil via jar programmet, jar programmet oppretter en ny versjon av manifestfilen innenfor *.jar fil. Den genererte versjon av manifestfilen innenfor *.jar filen heter "MANIFEST.MF". Den jar program kan legge til felt i denne filen som ikke finnes i "manifest.mf" fil levert av programmerer. Ikke pakke ut en "MANIFEST.MF" fil fra en *.jar fil, med mindre du er forberedt på å eliminere noen av feltene og gjøre de gjenværende feltene se ut akkurat som i eksempelet "manifest.mf" filen vist ovenfor.
9.1.3 "Unsupported Content Type"
Forårsake # 1
Den mobilen kan ikke akseptere MIME type rapportert av den eksterne serveren for en bestemt fil.
For eksempel, JPG bildefiler ikke støttes av Motorola T720 og vil føre til denne feilen.
Denne feilen kan også oppstå hvis MIME for en støttet filtype (for eksempel GIF, MID, JAD, JAR) er ikke rapportert riktig av serveren. En person må være svært forsiktig med å rapportere den eksakte MIME for støttede filtyper.
Forårsake # 2
Filen buffer på mobiltelefonen selv må fjernes (f.eks Browser Settings -> Clear Cache).
Hvis du nylig har lagt MIME typer til en ekstern server, og deretter forsøkte å laste ned en fil som tidligere hadde mislyktes med å installere på grunn av feil eller mangler MIME type, deretter filen buffer på mobiltelefon kan være en hindring for å laste ned filen på nytt med riktig MIME type.
Det er også mulig at den eksterne filen ble endret, og at bufret versjon er defekt og hindrer den reparerte filen versjon fra å lastes ned som en erstatning.
Tømme bufferminnet på mobiltelefonen bør sørge for at en etterfølgende Nedlastninger fordeler fra de nyeste server-konfigurasjon (f.eks nye MIME) og ekstern fil oppdateringer.
Forårsake # 3