J2ME lo sviluppo di software per telefoni cellulari
(2002)
Colin Fahey

Motorola T720 telefono cellulare, mostrato aperto
1. Attenzione
Questo documento è obsoleto! Le informazioni contenute in questo documento potrebbero essere stati validi e utili per l'anno 2002, ma molte cose sono cambiate negli anni successivi! Questo documento dovrebbe essere considerato solo come un interessante record storico di 2002 l'anno. Non fare affidamento su qualsiasi informazione o consulenza in questo documento. Tutte le informazioni tecniche contenute in questo documento è molto obsoleta.
Download di auto-creato il software, l'auto-creato immagini, e di auto-creato telefono melodie segnalazione (vale a dire, “suonerie),„ è relativamente rara e difficile nel corso 2002. Purtroppo, sei anni più tardi, alcuni telefoni cellulari fornitori di servizi (comprese le Apple, che prevede l'esclusivo software e “suoneria„ per il portale iPhone) continuano a imporre restrizioni su come scaricare il software, immagini e musica, a causa del telefono cellulare i fornitori di servizi di cui godono estremamente grandi profitti finanziari controllo da questi tipi di download.
Fortunatamente, i telefoni cellulari, come quelli con “l'Android„ piattaforma software, sarà in eterno fine la capacità delle aziende di creare e sfruttare i mercati chiusi per tali impieghi di telefoni cellulari. Anche se i consumatori volentieri acquistato telefono cellulare di servizio piani che includevano costi molto elevati per il download di software, immagini e musica, questo è a causa del limitato numero di telefono cellulare di servizio le opzioni disponibili.
Le dinamiche economiche che hanno permesso a taluni tipi di società a crescere a dominare il mercato non deve essere interpretata come implicito forte approvazione da parte dei consumatori. Dato che le imprese iniziano a dominare, e quindi rendono difficile o impossibile per i concorrenti di entrare nel mercato, che domina la società è in grado di offrire prodotti che combinano un elevato valore positivo (ad esempio, la capacità di comunicare da qualsiasi luogo), con elevato valore negativo (ad esempio, i prezzi elevati auspicabile per il software, immagini e musica, che altrimenti sarebbero liberamente disponibili; quindi, il servizio aggiunge valore negativo). Nessun consumatore è costretto ad acquistare un telefono cellulare, ma non vi è alcun dubbio che il telefono cellulare in posizione dominante prestatori di servizi hanno progressivamente creato le condizioni che non può essere considerato “un„ libero mercato. Pertanto, il telefono cellulare mercato dei servizi è stata economicamente “inefficiente„ ed è stato un onere eccessivo per i consumatori.
Speriamo, i requisiti che telefono cellulare di servizio frequenze radio essere a disposizione di servizi concorrenti a ristabilire normali valori di mercato per il trasferimento dei dati, quali telefono cellulare che i fornitori di servizi sono nuovamente ridotti a semplici vettori di dati (vale a dire, solo fornendo larghezza di banda) piuttosto che informazioni o intrattenimento fornitori !
L'attività di trasporto di dati devono essere separati dalle attività di vendita dei dati, altrimenti non ci sarà un incentivo per le imprese di trasporto dati per bloccare i concorrenti di dati di vendita attraverso lo stesso canale di trasporto dati.
Le console per videogiochi mercato soffre dello stesso problema. I produttori di console per videogiochi sono l'hardware nel settore della creazione di dispositivi che possono visualizzare video giochi, ma quelle stesse società hanno anche il controllo esclusivo del trasferimento di software a quelle delle console per videogiochi. Pertanto, non vi è un incentivo per il video gioco produttori di console per bloccare i concorrenti di vendere software per la video console per videogiochi. Se una console per videogiochi produttore hardware focalizzata sulla progettazione e produzione di hardware che potrebbe essere venduta ad un profitto (anziché a una perdita significativa, in quanto con la X-Box e PlayStation e Nintendo console per videogiochi), poi il video gioco mercato prosperare, e la qualità dei migliori videogiochi di migliorare notevolmente, e il costo dei videogiochi sarebbe crollato.
2. Indice argomenti
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
3. J2ME strumenti di sviluppo
In questa sezione viene descritto come scaricare gli strumenti di sviluppo che possono essere utilizzati per compilare il codice sorgente J2ME nel file di classe adatto per i dispositivi mobili. Si noti che il Sun “J2ME Wireless Toolkit,„ discussa in una successiva sezione di questo articolo, è necessario scaricare il Java SDK descritte in questa sezione.
3.1 JDK 1.4 (o successivi)
Ciò significa che è necessario il convenzionale Java 2 SDK da Sun. E ho scaricato la versione utilizzata 1.4 tramite il seguente link:
Ecco cosa la pagina di download appare come segue:
Avviare il programma di installazione. Installa per la posizione predefinita ( c:\j2sdk1.4.0_03 ) a meno che non siano in grado di risolvere percorso di problemi che possono sorgere.
3.2 Connected Limited Device Configuration (CLDC)
Io non pretendo di sapere che cosa è questo, ma ho semplicemente scaricato dal sito web Sun.
Ecco ciò che il principale CLDC scaricare pagina web appare come segue:
Solo 1.0.3 era disponibile al momento ho visitato.
Al fine di eseguire il download di questo, avevo bisogno di registrarsi con Sun sito web. Ho creato il seguente profilo:
Username: anon***anon
Password: nospamplease
Favorite color: blue
Full name: Prof. Anon Nospamplease
Ho scaricato il seguente file:
j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001.zip
I decompressi al seguente directory:
Ho rinominato la directory “cldc-1_0_3-fcs„ semplicemente:
cldc (vale a dire, il percorso completo è c:\j2me\cldc)
3.3 Mobile Information Device Profile (MIDP)
Io non pretendo di sapere cosa sia questo, ma ho semplicemente scaricato dal sito web Sun.
Ecco ciò che il principale MIDP scaricare pagina web appare come segue:
Ho scaricato il seguente file:
j2me_midp-1_0_3-fcs-src-b26-win-19_sep_2001.zip
I decompressi al seguente directory:
Ho rinominato la directory “midp-1_0_3-fcs„ semplicemente:
midp (vale a dire, il percorso completo è c:\j2me\midp)
3.4 Configurazione degli strumenti
3.4.1 Creare percorsi
Aggiungi le seguenti righe al vostro file AUTOEXEC.BAT:
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%
Poi vigore queste variabili per essere ricaricati, eseguendo il file batch:
È inoltre possibile impostare queste stesse variabili, usando la variabile d'ambiente Windows pannello di controllo.
Notate che ho scelto di specificare esplicitamente i percorsi delle directory per la mia attuale versione del Java 2 SDK. Pertanto, se mi aggiornamento, quindi devo modificare il file AUTOEXEC.BAT per specificare la nuova directory.
3.4.2 Controllare il Jave 2 SDK binari
Una volta che le impostazioni di cui sopra in vigore, si dovrebbe essere in grado di eseguire i programmi Java strumento dal prompt dei comandi senza specificare il percorso completo per lo strumento dei programmi.
Il seguente comando avviare il telefono cellulare emulatore di dispositivo:
La seguente immagine mostra il telefono cellulare emulatore di dispositivo:
4. J2ME semplice programma
4.1 Scrivere codice Java
Utilizzando qualsiasi editor di testo, una persona può digitare il codice, come per questo HelloMIDlet.java codice sorgente del file:
Ecco il codice in formato solo testo:
// 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 *.java compilare codice per *.class
Attenzione: Il seguente comando deve essere su una sola riga, ma è stata ampliata a più linee di testo solo per chiarezza.
(Directory corrente: C:\HelloMIDlet)
javac
-target 1.1
-d .\
-bootclasspath c:\j2me\midp\classes
HelloMIDlet.java
Nota: Il “-target 1.1„ è necessaria per evitare un errore in futuro “preverify„ fase. Apparentemente questo ha qualcosa a che fare con un problema con MIDP 1.0.3 sostegno in JDK 1.4.
4.3 Preverify per generare un nuovo file *.class
(Directory corrente: C:\HelloMIDlet)
preverify -classpath c:\j2me\midp\classes;. HelloMIDlet
Ciò genera un nuovo *.class il file in una nuova sottodirectory chiamata “output„ (di default).
4.4 Prova il nuovo file *.class
(Directory corrente: C:\HelloMIDlet)
midp -classpath c:\j2me\midp\classes;.\output HelloMIDlet
Verrà avviata l'emulatore di telefono, indicando che il nuovo “output„ directory contiene alcuni dei file necessari *.class.
La seguente immagine mostra i risultati attesi.
4.5 Creare un nuovo file di testo, “manifest.mf„, e modificare il file
Un “manifest.mf„ file è essenziale per ottenere un vero e proprio telefono cellulare per interpretare il contenuto di un file *.jar. Se un buon “manifest.mf„ file non è incluso all'interno della *.jar file, quindi il telefono cellulare potrebbe successo *.jar scaricare il file, ma potrebbe non riuscire ad interpretare il file scaricato, forse un errore di segnalazione come “Unsupported Content Type„.
Il seguente è un esempio di un semplice file di “manifest.mf„.
Qui è il “manifest.mf„ file come testo normale:
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
Si noti che il CLDC e MIDP versioni sono specificate in questo file. Essere molto cauti e prudenti durante la modifica di vari campi in questo file. Se si riesce a “File Corrupt„ errori, quindi provare a eliminare tutti i campi che non sono mostrati in questo esempio. Inoltre, mettere i campi secondo l'ordine in cui appaiono nel esempio. Inoltre, abbreviare ogni campo valore quanto più è possibile, e mantenere i caratteri limitati a semplici lettere, cifre, i periodi, e trattini. Alcuni servizi di telefonia cellulare e telefoni cellulari, può più tollerare variazione del campo di ordinazione e il contenuto del campo.
Attenzione:
Quando il programma è “jar„ utilizzati per creare un file *.jar, e la “manifest.mf„ file è specificato come il manifesto file, il programma “jar„ legge il file manifest e potrebbero aggiungere altri campi come si crea un file chiamato “MANIFEST.MF„ all'interno del file di output *.jar. Pertanto, se il “MANIFEST.MF„ file viene estratto da un file *.jar, ed è quindi confrontato con l'originale “manifest.mf„ file specificato durante la creazione del *.jar, i due file potrebbero essere diverse, con l'“MANIFEST.MF„ file contenente i campi più diversi rispetto al file originale “manifest.mf„ .
Non “MANIFEST.MF„ estrarre un file da un *.jar file e tentare di formare un nuovo *.jar file utilizzando il file che si manifestano. Se “MANIFEST.MF„ estrarre un file da un file *.jar, quindi assicurati di eliminare tutti i settori, ad eccezione di quelli indicati nella “manifest.mf„ file di esempio sopra indicato.
Nota:
Icone per i programmi apparentemente non sembrano Motorola T720 sul telefono cellulare. Questo è il motivo per cui non ho descrivere le mie midlet con un'icona. Tuttavia, il seguente mostra come impostare un'icona per il programma all'interno del file manifest:
MIDlet-1: My_Description, /icon.png, HelloMIDlet
Quando in via di sviluppo per telefoni cellulari che fanno visualizzare le icone per le applicazioni, specificare il nome del file icona, e aggiungere l'icona di file di immagine per la stessa *.jar file specificando il nome del file tra i file di nomi di file da aggiungere al *.jar file.
4.6 Metti il “manifest.mf„ file e *.class file in un file *.jar
Il seguente comando crea un file di *.jar. Il *.jar file conterrà determinata manifest.mf file, e conterrà il *.class file trovati nella directory specificata.
Directory corrente: C:\HelloMIDlet
jar cfm hi.jar manifest.mf -C .\output HelloMIDlet.class
Complesso ipotetico esempio di creazione di un file *.jar
Supponiamo che un icona file immagine (ad esempio, “icon.png„) è a comparire in un *.jar file come “/icon.png„. (Nota: le icone del programma non appaiono sulla Motorola T720 telefono cellulare, ma non appaiono su altri tipi di telefono cellulare, e fare apparire nel MIDP emulatore).
Supponiamo che vi è una directory di nome “images„ con file immagine (formato *.png). Supponiamo che questa directory, e tutte le immagini contenute nella directory, dovrebbero essere accessibili al programma Java dalla relativa directory /images (in modo che l'immagine “a.png„ saranno accessibili utilizzando il percorso “/images/a.png„).
Supponiamo che tutti i file *.class prodotta dalla preverify comando sono contenuti in una directory denominata “verified„. Ad esempio, la versione di verificare la classe principale, “MyApp.class„, sarebbe in “verified„ cartella, insieme con le altre classi del programma. Tutte queste classi sono accessibili nella root directory del file *.jar.
Il seguente comando crea un file di *.jar che raggiunge i vari obiettivi specificati nei paragrafi precedenti. Attenzione: il comando è stato ampliato a più righe di testo qui solo per chiarezza. Quando si entra il comando a un prompt dei comandi, il comando non devono contenere di riga, altrimenti il comando interprete deve interpretare il testo immesso come comandi multipli indipendenti.
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 .
La parte finale del comando è difficile da capire. Essa ha il seguente significato: “Cambia la directory di lavoro corrente a .\verified, e quindi mettere *.class tutti i file trovati nella relativa directory '.' (*.class vale a dire tutti i file nella directory di lavoro corrente) al *.jar file.„ Poiché la directory è stato modificato prima di specificare il percorso delle classi per mettere in *.jar il file, il percorso locale non verrà visualizzato nel percorso relativo quando i file vengono messi in *.jar al file.
Per esempio, si supponga che la classi sono verificati nella seguente directory:
C:\MyApp\verified
Supponiamo che ci sono file di classe come le seguenti:
C:\MyApp\verified\w.class
Poi precisa “-C .\verified .„ nel comando per creare il file *.jar, a partire da una directory corrente di “C:\MyApp„, si tradurrà in “w.class„ essere messo nella root directory del file *.jar. </ E>
Attenzione: Quando il “-C„ opzione è specificata, cambia la directory di lavoro corrente, a quel punto, il trattamento della sequenza generale dei parametri di comando per il comando jar. Pertanto, il comando potrebbe jar si lamentano che non è possibile trovare altri file di cui al comando al di là dei parametri “-C„ opzione. Se questo accade, è sufficiente spostare il “-C .\verified .„ ad essere la finale dei parametri del comando generale.
La parte seguente mostra l'output dettagliato del jar comando.
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 Creare e modificare un nuovo file *.jad
Un *.jad file è necessario in modo che il telefono cellulare può descrivere un programma per computer ad una persona prima che la persona decide di scaricare il programma. Il file *.jad fornisce anche alcuni indiretta dal *.jar stessa.

Un esempio di file *.jad, descrivendo un file *.jar
Ecco l'esempio hi.jad il file in formato solo testo:
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
Ci sono programmi che possono generare il file *.jad, che rende più semplice per aggiornare il campo “MIDlet-Jar-Size:„ ogni volta che il *.jar file è cambiato (e le sue dimensioni modifiche). Se cercate Internet troverete informazioni utili J2ME programmi.
Se le dimensioni campo non specificare esattamente byte totale del *.jar file, quindi il seguente messaggio di errore può apparire dopo un successo il download di un telefono cellulare: “Download Failed„ (non scaricare).
Per il Motorola T720 telefono cellulare, il seguente messaggio di errore potrebbe essere utilizzato per inidcate campi non validi nel *.jad file, o, eventualmente, i campi non validi nel file generato MANIFEST.MF entro il *.jar file: “Failed: File Corrupt„ (non riuscito: il file corrotto).
Nota: Se la *.jar file si trova nella stessa directory del file corrispondente *.jad Internet su un server web, quindi la *.jad file può semplicemente indicare il nome del file del file *.jar, senza specificare un pieno URL, come nel seguente esempio:
MIDlet-Jar-URL: hi.jar
Quando si scaricano i file da un Apache Internet server web per cellulari, uno Motorola T720 telefono cellulare, è accettabile per non comprendere l'intero URL. Tuttavia, quando il download di questi file da un Yahoo! Internet server web per cellulari, uno Motorola T720 telefono, il tentativo di scaricare non andrà a buon fine, a meno che un pieno URL percorso del *.jar file è specificato nel file di *.jad, come nel seguente esempio:
MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar
Non so il motivo di questo problema, e so che questo problema non riguarda altri telefoni cellulari (o telefono cellulare fornitori di servizi). Dover specificare l'intero URL per il *.jar il file in *.jad il file è ovviamente scomodo, perché si spostano i file in diverse posizioni su un server richiede la modifica delle informazioni in tutte le *.jad file. Tuttavia, specificando la piena URL potrebbe rendere il *.jad più affidabili per alcuni telefoni cellulari e di alcuni telefoni cellulari fornitori di servizi.
4.8 Prova il *.jar file e la *.jad file eseguendo il programma
Il seguente esegue la classe trovato nel file *.jar, descritto dalla *.jad file.
(Directory corrente: C:\HelloMIDlet)
midp -classpath c:\j2me\midp\classes;.\hi.jar -descriptor hi.jad
4.9 Riferimenti per J2ME, MIDP, CLDC sviluppo
Molto di ciò che ho presentato qui può essere trovato su molti altri siti Internet. Tuttavia, ho corretto alcuni errori riscontrati su altri siti Internet, e ha aggiunto dettagli mancanti, e ha presentato la completa esperienza di qualcuno cercando di fare questa roba. Qui sono molto istruttiva link che mi ha aiutato ad iniziare:
5. Complesso J2ME programma
5.1 Introduzione
Il semplice programma presentate nella sezione precedente di questo documento ha solo un unico file di codice sorgente, e il programma funziona quasi nulla e quindi non è un buon esempio di programmazione del telefono cellulare.
Il mio amico Sam Robertson ha scritto un interessante programma J2ME insegna che una persona di svolgere il gioco di carte “Blackjack„ (chiamato anche “21„). Un giocatore è presentato con un “rivenditore della carta,„ e il giocatore della coppia di carte, e il giocatore deve decidere cosa fare: “soggiorno, colpito,„ in “doppio-down, o„ si separano.
Questo programma ha sei file di codice sorgente. Il programma risponde a input dell'utente, e non semplice disegno e testo aggiornamenti.
5.2 Il codice sorgente
Clicca sul seguente link per ottenere il codice sorgente, e la *.jad file, “manifest.mf„ file e un file batch, il tutto in un unico e pratico ZIP file.
sbj.zip
Il codice sorgente contenuto in un file ZIP
6090 byte
MD5: bf3922035b7a4eef24e107d03b7524c9
Estratto di un arbitrario directory, ma se si estratto per “c:\„ sotto Windows, il seguente esempio di discussione sarà ancora più vicina alla propria situazione.

Estrazione sbj.zip a “c:\„ crea la directory “c:\sbj„
5.3 File manifest
File: “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 Il file batch per costruire il programma
Il seguente file batch è grezzo, ma serve come un esempio di come si potrebbe iniziare a scrivere i vostri file batch per costruire il tuo J2ME programma. Questo esempio file batch il seguente:
(1) Eliminare la directory contenente i vecchi file *.class;
(2) Eliminare la directory contenente i vecchi file *.class verificato;
(3) Fai una directory di output “classi;„
(4) Compila tutti i sorgenti in *.java a *.class file, con la produzione destinata “alle„ classi di directory.
(5) Effettuare una “verifica„ di output directory;
(6) Preverify tutte le classi “nelle„ classi di directory, e mettere le classi verificato nel “verificato„ directory.
(7) Creare un file *.jar, e aggiungere il mainfest file, e tutte le classi nella directory di “verifica;„
*(8) di prova il programma attraverso il preverified classi direttamente;
*(9) di prova il programma attraverso il *.jar e *.jad file;
(*... Questi passaggi sono disabili (da commentare) nel mio file batch.)

Il file batch “build_sbj.bat„ per costruire il programma
Qui è lo stesso file (“build_sbj.bat„) in formato solo testo:
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 Costruire dal prompt dei comandi
Qui è il risultato di “build_sbj.bat„ eseguendo il file batch dalla riga di comando:

Eseguire il file batch “build_sbj.bat„
Si noti che il messaggi di avviso per la “rmdir„ e “del„ operazioni indicano semplicemente che non c'è nulla da rimuovere.
Potete vedere la nuova directory (cioè, “classes„ e “verified„) e il nuovo file *.jar che ha portato l'esecuzione del file batch:

Il codice sorgente di file e nuovi file generato
5.6 *.jad file
Per distribuire l'sbj.jar file, abbiamo bisogno di creare e modificare i file sbj.jad per avere il corretto dimensioni *.jar nel campo appropriato:
File: 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
Una persona che potrebbe essere necessario aggiungere il testo completo del URL al *.jar file *.jad quando il file viene messo su un sito Internet - ma ho scoperto (da un esperimento) che ero in grado di evitare che citano la piena URL (vale a dire, ho solo precisato il *.jar nome del file da sé). Tuttavia, la messa in completo URL, ma ho voluto far sapere quello che ho osservato.
5.7 Riepilogo
Avendo più file di origine nel vostro progetto è comune, e in questa sezione abbiamo dato uno greggio illustrazione della costruzione di più classi, seguita da imballaggio e di esecuzione.
Si prega di consultare la seguente sezione per quanto riguarda utilizzando Sun Wireless Toolkit, il che rende le applicazioni edificio molto più facile.
6. Sun “Wireless Toolkit (version 1.0.4_01)„
6.1 Introduzione
Sun offre un comodo ambiente di sviluppo per la costruzione e l'imballaggio J2ME programmi: “Java 2 Platform Micro Edition (J2ME) Wireless Toolkit (version 1.0.4_01)„.
(Attenzione: è necessario scaricare il Java 2 SDK 1.4 come descritto in una precedente sezione di utilizzare questo toolkit. Farlo ora, se non hai questa versione di Java 2 SDK.)
Vai al seguente sito Internet per scaricare il toolkit:
http://java.sun.com/products/j2mewtoolkit/
Attenzione!
Non fare clic sul link “2.0 Beta 1 English„ (attualmente il top di download) se si sta facendo Motorola T720 sviluppo - in quanto questa versione ha alcuni MIDP-2.0 roba, e su come ovviare a questo può essere un mal di testa.

Non scaricare questa versione! (“2.0 Beta 1 English„)
Ho provato questa versione, e ho avuto per compilare il codice con un sacco di modifiche alle impostazioni disordinato, ma dopo tutto lo sforzo mi sono un'eccezione di protezione quando ho cercato di eseguire. Non preoccupatevi!
Scarica la versione “1.0.4_01 English„. Ecco cosa la pagina di download appare come segue:

La pagina di download Sun J2ME Wireless Toolkit (version 1.0.4_01)

Il Sun J2ME Wireless Toolkit (version 1.0.4_01) FTP elenco dei siti
Questo scaricherà il seguente file: “j2me_wireless_toolkit-1_0_4_01-bin-win.exe„
Eseguire il programma da installare sul vostro sistema.
6.2 J2ME Wireless Toolkit: lancio della barra degli strumenti
Dopo il toolkit è installato, è possibile avviare dal “Start„ (start) Il sistema dei menu:

Avvio del programma della barra degli strumenti
È inoltre possibile accedere MIDP-1.0 documentazione tramite la voce “Documentation„ in questo Start (start) dal menu.

J2ME Wireless Toolkit (version 1.0.4_01) documentazione
6.3 J2ME Wireless Toolkit: creare progetto e costruire

La barra degli strumenti è pronta. Fare clic su “New Project...„ per creare un nuovo progetto.

New Project: digitare il nome del progetto (diventa JAR nome e il nome del nuovo progetto di directory), e il tipo di MIDlet nome di classe (classe derivata da MIDlet, essenzialmente la classe principale della vostra applicazione).

Google Toolbar: progetto creato. Si noti che la console ti dice dove mettere il file di origine *.java, ecc (ad esempio, “c:\WTK104\apps\sbj\src„, ecc)

Fare clic sul “Settings...„ sulla barra degli strumenti per ottenere questo progetto dal menu Impostazioni.
“MIDlet-Jar-Size„ trascurare il settore (con valore di “100„ byte) per ora. Ci sarà infine causare il valore corretto per ottenere insieme.

Fare clic sulla scheda MIDlets del progetto impostazioni finestra di dialogo.
Fare clic sulla riga solo nella tabella (“MIDlet-1„) per evidenziare e selezionarlo. Quindi, fai clic sul pulsante “Edit„.

“Icon„ chiaro il campo se non hai un file *.png a mettere nel tuo file *.jar.
Effettuare le seguenti operazioni:
(1) Project --> Clean: rimuove tutti i file *.class;
(2) Build : Costruisce *.class tutti i file e le preverifies;
(3) Project --> Package --> Create Package : produce *.jar e *.jad

Il risultato della costruzione del *.jar e *.jad
Quando si esegue queste tre fasi, la conseguente *.jar e *.jad sono immediatamente pronti per l'esecuzione in locale emulatore, o per l'immediata diffusione sul vostro sito Internet per gli altri per il download “Over The Air„ (OTA). La dimensione *.jar nel campo *.jad file verrà corretta. Non dimenticate di fare passo (3) ogni singola volta che la ricostruzione!
Ora potete testare premendo il “Run„ (run) pulsante.

Premendo “Run„ per il progetto di legge il *.jad per l'emulatore. È possibile selezionare le specifiche per avviare MIDlet (di solito solo uno).
Basta copiare il *.jar e *.jad file da siti specifici (segnalati da barra degli strumenti della finestra della console nel corso di una build di progetto), come ad esempio:
(Dalla finestra della console:)
Wrote c:\WTK104\apps\sbj\bin\sbj.jar
Wrote c:\WTK104\apps\sbj\bin\sbj.jad
Mettere questi file direttamente sul vostro sito Internet, senza modifiche, e dovrebbe funzionare. Ecco quello che ho visto sul mio telefono cellulare dopo aver compilato il download di questa applicazione “oltre l'aria„ (OTA)

Sam Robertson's Blackjack Trainer (sbj.jar) esecuzione sul mio telefono cellulare
7. Offerta software su un sito Internet
7.1 Assicurarsi che il server web Internet MIME specifica *.jar tipi di file e file *.jad
Se si dispone di un Apache Internet sul server Web, è necessario creare un file chiamato “.htaccess„ all'interno del tuo sito web directory radice. Il “.htaccess„ file consente di ignorare Apache configurazione, come ad esempio aggiungendo o superiore MIME tipi di file. È necessario aggiungere il MIME specificare il tipo corrispondente di *.jar file e *.jad file, come mostrato nel seguente file di testo:

Il mio “.htaccess„ personalizzato per il file di Internet Apache server web. Nota: ho chiamato questo file “.htaccess.txt„ semplicemente per rendere il file facile da modificare quando si utilizza il sistema operativo Windows. Il nome del file deve essere cambiato in “.htaccess„ prima il file può essere utilizzato con il Apache Internet server web.
Qui è il mio semplice .htaccess file come testo normale:
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
Apparentemente, per creare o modificare questo file si traduca in un immediato cambiamento di comportamento Apache server. Immagino che il server controlli Apache la modifica della data e l'ora della “.htaccess„ file su ogni nuova operazione in entrata, e il server di file ricariche che se la modifica di data e ora è cambiato.
Se si dispone di un diverso tipo di server web Internet, è necessario stabilire le modalità di specificare MIME tipi, e si deve garantire che *.jar file e file *.jad sono assegnate le opportune MIME tipi.
Saprete se la MIME tipi non sono stati istituiti se il telefono cellulare si rifiuta di *.jad scaricare i tuoi file e le relazioni il seguente errore:
“406: Not Acceptable„
7.2 Facoltativamente fornire link al *.jad il file in HTML o WML documenti
Il Motorola T720 J2ME telefono cellulare con AT&T servizio è in grado di scaricare un file direttamente *.jad, digitando il URL di *.jad il file al telefono cellulare. Questo è probabilmente a lavorare per altri J2ME telefoni cellulari con altri cellulare fornitori di servizi.
Tuttavia, potrebbe essere più conveniente per le persone a scaricare il file *.jad selezionando un link all'interno di un documento HTML o all'interno di un documento WML. (Nota: WML è ora obsoleto. La maggior parte dei telefoni cellulari possono ora interpretare HTML.)

Un semplice documento HTML con un link a un file *.jad

Un semplice WML (WAP) pagina con un link a un file *.jad (Nota: WML è ora obsoleto. La maggior parte dei telefoni cellulari possono ora interpretare HTML.)
8. Download di software da un sito Internet
Le seguenti immagini mostrano l'esatta sequenza di azioni ho fatto per scaricare ed eseguire il MIDlet sviluppato e implementato come descritto nelle sezioni precedenti di cui sopra. Queste immagini sono fotografie dello schermo del mio telefono cellulare.
(1) schermo principale: quando si apre il telefono, viene visualizzata la schermata principale. Premere il pulsante centrale per andare al menu principale.
(2) Main Menu: Sposta l'elemento “WebAccess„.
(3) WebAccess: Sposta l'elemento “Go To URL„.
(4) Enter URL: Digitare il URL di un *.jad file (o di un documento HTML, o di un documento WML).
(5) Details; Questa informazione è stata analizzata dal *.jad file. Premere DOWNLD per scaricare il file *.jar.
(6) Download Complete; Attendere questo messaggio a scomparire;
(7) Installing; Attendere questo messaggio a scomparire;
(8) xxxx bytes transferred; Attendere questo messaggio a scomparire;
(9) Installed; Attendere questo messaggio a scomparire;
Quando il WebAccess visualizzato il menu di nuovo, dopo che il programma è stato installato, è sufficiente uscire ciascun menu per tornare alla schermata principale.
(1) schermo principale: quando si apre il telefono, viene visualizzata la schermata principale. Selezionare l'opzione “Games & Apps„ tramite il menu principale, oppure premere il cursore verso il basso sulla schermata principale.
(2) Java Powered: Attendere per questo schermo a scomparire.
(3) Games & Apps: Selezionare la voce con il nome del vostro programma!
(4) Yay! Successo del vostro programma!
Il programma comparsa sul telefono cellulare è molto simile alla comparsa entro l'emulatore.
9. Scarica i messaggi di errore e messaggi di errore di installazione
9.1 Motorola T720 (J2ME) messaggi di errore
I seguenti errori sono messaggi rilevante solo per il Motorola T720 (GSM/J2ME) telefono cellulare.
9.1.1 “Download Failed„
Causa # 1
Qualsiasi file (HTML, JAD, JAR, MID, GIF) oltre 1644 byte farà questo errore per taluni web host di Internet e server. Ecco una breve lista di host e server:
Host / Server Error
=================================================== =================
Apache No
Microsoft Personal Web Server (direct from your PC) No
Earthlink (Apache) No
Yahoo! (custom server) Yes
Il problema è dovuto a un difetto nel Motorola T720 GSM/J2ME firmware, che provoca il download di file in frammenti di fallire.
L'unica soluzione è evidente per passare a Internet web host o server tipo. Altri tipi di telefono cellulare non hanno questo problema.
Causa # 2
Il “MIDlet-Jar-Size:„ campo di un file *.jad non indica l'esatta byte totale di *.jar il corrispondente file.
9.1.2 “Failed: File Corrupt„
Causa # 1
Il *.jar file usa API funzioni che non sono disponibili sul telefono cellulare specifico.
Ad esempio, MIDP 2.0 funzioni non sono disponibili sul Motorola T720 GSM/J2ME telefono cellulare (che ha solo funzioni MIDP 1.0). Un programma può eseguire all'interno di un emulatore, ma potrebbero non eseguito sul telefono cellulare.
La soluzione è alla ricerca di funzioni in MIDP 2.0 il codice sorgente e la sostituirla con MIDP 1.0 loro funzioni, o eliminare le funzioni che richiedono l'MIDP 2.0 funzioni.
Causa # 2
Il “manifest.mf„ file utilizzato per creare il file *.jar (tramite l'utilità “jar„) contiene errori.
Assicurarsi che il file è “manifest.mf„ le seguenti versioni di CLDC e MIDP:
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
L'intero “manifest.mf„ file dovrebbe apparire quasi esattamente come la seguente:
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
Ogni riga di testo in file “manifest.mf„, tra cui l'ultima riga del file, dovrebbe terminare con un “ritorno carraige„ carattere (CR; 13; 0x0d) seguita “da„ una linea “di alimentazione„ (LF; 10; 0x0a) carattere.
L'unica materia di “manifest.mf„ file nella vostra versione del file che dovrebbe differire da l'esempio mostrato qui sono i primi tre settori di cui l'esempio. Il finale tre campi deve essere una corrispondenza esatta con l'esempio, e gli ultimi due caratteri del file dovrebbe essere il “trasporto andata e ritorno e„ la linea “di alimentazione„ dopo l'ultimo campo.
Qui sono possibili problemi nella vostra versione del file “manifest.mf„:
(1) tuo “manifest.mf„ file contiene caratteri che non sono ASCII caratteri; (Guardate un grafico di ASCII caratteri; qualsiasi al di fuori del carattere da 0 a 127 serie non è valido);
(2) tuo “manifest.mf„ file non dispone di una “linea di mangimi„ (LF) carattere dopo ogni “trasporto di ritorno„ (CR) carattere alla fine di ogni riga;
(3) tuo “manifest.mf„ file è invisibile spazi o tabulazioni alla fine di ogni riga prima della cessazione (CR)(LF) linea;
(4) tuo “manifest.mf„ file contiene un “Manifest-Version:„ linea;
(5) L'ultima riga del tuo file “manifest.mf„ non si esaurisce con un (CR)(LF) linea di terminazione, ma invece semplicemente raggiunge la fine del file;
(6) tuo “manifest.mf„ file non hanno l'esatta campi e preciso ordine dei campi come mostrato nell'esempio precedente;
(7) tuo CLDC versione non è esattamente 1.0, o il vostro MIDP versione non è esattamente 1.0;
(8) Il tuo nome venditore ha caratteri che non sono ASCII caratteri (ad esempio, caratteri Unicode non sono ammessi);
(9) tuo “manifest.mf„ file non hanno uno spazio dopo la seconda virgola nel “MIDlet-1:„ linea;
Forse alcuni dei casi sopra elencati non effettivamente causare problemi per molti telefoni cellulari, ma eliminando tutti i casi elencati sopra potrebbe consentire il download di successo. Dopo il download è successo, è possibile sperimentare con le variazioni del “manifest.mf„ file per scoprire quali altre cose che si possono fare senza causare errori di download. “manifest.mf„ Quando il file viene modificato, è importante verificare che il download il programma continua a lavorare per tutti i telefoni cellulari e del telefono cellulare i fornitori di servizi. Alcuni cellulari e servizi sono meno flessibili rispetto ad altri.
“manifest.mf„ Quando un file viene aggiunto a un *.jar file tramite il programma jar, jar il programma crea una nuova versione del file manifest all'interno della *.jar file. La generato versione del file manifest *.jar entro il file sia chiamato “MANIFEST.MF„. Il programma jar potrebbe aggiungere campi a questo file che non esistono nel file “manifest.mf„ fornite dal programmatore. Non “MANIFEST.MF„ estrarre un file da un file *.jar, a meno che non si sono preparati per