English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
J2ME développement de logiciels pour téléphones cellulaires
(2002)
Colin Fahey
moto_t720_open_lightanddark02.jpg
Motorola T720 téléphone cellulaire, montre ouvert

1. Avertissement

Ce document est obsolète!  Les informations contenues dans ce document aurait pu être valable et utile au cours de l'année 2002, mais beaucoup de choses ont changé dans les années à venir!  Ce document ne doit plus être considéré comme un document historique intéressant de l'année 2002.  Ne comptez pas sur toute information ou des conseils dans le présent document.  Toutes les informations techniques contenues dans ce document est très ancien. 

Téléchargement de lui-logiciel, lui-images, et l'auto-créé des mélodies de téléphone d'alerte (c'est-à-dire, « sonneries), » a été relativement rares et difficiles au cours de l'année 2002.  Malheureusement, six ans plus tard, certains téléphone cellulaire fournisseurs de services (y compris Apple, qui prévoit la compétence exclusive de logiciels et de « sonneries » pour le portail iPhone) encore imposer des restrictions sur le téléchargement de logiciels, images, et de la musique, parce que téléphone cellulaire dont jouissent les fournisseurs de services financiers de très gros profits par le contrôle de ces types de téléchargements. 

Heureusement, les téléphones cellulaires telles que celles auxquelles le « Android » plate-forme logicielle, à jamais mettre fin à la capacité des entreprises à créer et à exploiter les marchés fermés pour de telles utilisations des téléphones cellulaires.  Bien que les consommateurs volontiers acheté téléphone cellulaire que les plans de service inclus des coûts très élevés pour le téléchargement de logiciels, images, et de la musique, c'est en raison du nombre limité de téléphone cellulaire options de service disponibles. 

La dynamique économique qui ont permis à certaines entreprises de se développer à dominer le marché ne devrait pas être interprétée comme une approbation implicite forte par les consommateurs.  À mesure que les entreprises commencent à dominer, et puis, il est difficile ou impossible pour les concurrents d'entrer sur le marché, les entreprises dominantes peuvent offrir des produits qui combinent haute valeur positive (par exemple, la capacité de communiquer de n'importe où) avec une grande valeur négative (par exemple, les prix élevés souhaitable pour les logiciels, images, et de la musique, autant d'éléments qui, autrement, seraient librement disponibles; ainsi, le service ajoute une valeur négative).  N ° consommateur est forcé d'acheter un téléphone cellulaire, mais il ne fait aucun doute que le téléphone cellulaire dominante des fournisseurs de services ont progressivement créé des conditions qui ne peut pas être considéré comme un « marché libre. »  Par conséquent, le service de téléphone cellulaire marché a été « économiquement » inefficace et a été un fardeau excessif sur les consommateurs. 

Il faut espérer que, les exigences de téléphone cellulaire que les fréquences radio de service à la disposition des services concurrents de restaurer les valeurs normales de marché de transfert de données, tels que téléphone cellulaire les fournisseurs de services sont de nouveau réduits à de simples transporteurs de données (c'est-à-dire, seulement de fournir la bande passante) plutôt que d'information ou de divertissement fournisseurs ! 

L'entreprise de transport de données doivent être séparés de l'entreprise de vente de données, sinon il y aura une incitation pour les entreprises de transport de données pour bloquer les concurrents de vendre des données par le même canal de transport de données. 

La console de jeu vidéo marché souffre du même problème.  Les fabricants de console de jeux vidéo matériel sont dans le domaine de la création de dispositifs qui permet d'afficher les jeux vidéo, mais ces mêmes entreprises ont également le contrôle exclusif du transfert de logiciels à ceux des consoles de jeu vidéo.  Par conséquent, il est une incitation à la console de jeu vidéo pour bloquer les fabricants concurrents de la vente de logiciels pour les consoles de jeux vidéo.  Si une console de jeu vidéo fabricant de matériel axé sur la conception et la fabrication de matériel qui pourrait être vendu à un bénéfice (au lieu d'une perte importante, comme dans le X-Box et PlayStation et Nintendo consoles de jeux vidéo), puis le marché du jeu vidéo qui se développent, et la qualité des meilleurs jeux vidéo améliorer d'une façon spectaculaire, et le coût de jeux vidéo s'effondrerait. 

2. Index des sujets

(1)
J2ME outils de développement
(2)
Simple J2ME program
(3)
Complexe J2ME program
(4)
Sun « boîte à outils sans fil »
(5)
Offre des logiciels sur un site Internet
(6)
Téléchargement de logiciels à partir d'un site Internet
(7)
Télécharger les messages d'erreur et les messages d'erreur d'installation
(8)
Créer, d'offrir, et le téléchargement de « sonneries »
(9)
Créer, d'offrir, et à télécharger des images
(10)
AT&T téléphone cellulaire paramètres de configuration (pour le réseau)
(11)
Liens vers d'autres ressources téléphone cellulaire
(12)
J2ME contre BREW

3. J2ME outils de développement

Cette section décrit la façon de télécharger des outils de développement qui peuvent être utilisés pour compiler le code source J2ME dans les fichiers à la classe appropriée pour les appareils mobiles.  Notez que le Sun « J2ME Wireless Toolkit, » qui sont examinées dans une section ultérieure du présent article, il faut télécharger le Java SDK décrites dans cette section. 

3.1 JDK 1.4 (ou plus)

Cela signifie que vous avez besoin de l'classiques Java 2 SDK de Sun.  J'ai téléchargé et utilisé la version 1.4 via le lien suivant:
http://java.sun.com/j2se/1.4/download.html
Voici ce que la page de téléchargement se présente comme suit:
java2sdk_download_page.jpg
Démarrez l'installation du logiciel.  Installer à l'emplacement par défaut ( c:\j2sdk1.4.0_03 ) à moins que vous êtes en mesure de résoudre les problèmes voie mai que se posent. 

3.2 Connected Limited Device Configuration (CLDC)

Je ne vais pas prétendre savoir ce que c'est, mais j'ai simplement téléchargé à partir du site Web Sun.
http://wwws.sun.com/software/communitysource/j2me/cldc/download.html
Voici ce que les principaux CLDC page Web de téléchargement se présente comme suit:
cldc_download_page.jpg
1.0.3 seulement était disponible au moment où je me suis rendu.
Pour télécharger ce, j'avais besoin de s'inscrire auprès de Sun site Web.  J'ai créé le profil suivant:
Username:        anon***anon
Password:        nospamplease
Favorite color:  blue
Full name:       Prof. Anon Nospamplease
J'ai téléchargé le fichier suivant:
j2me_cldc-1_0_3-fcs-src-b17-winunix-14_sep_2001.zip
Je décompressés dans le répertoire suivant:
C:\j2me
J'ai renommé le répertoire de « cldc-1_0_3-fcs » simplement:
cldc (c'est-à-dire, le chemin d'accès complet est c:\j2me\cldc)

3.3 Mobile Information Device Profile (MIDP)

Je ne vais pas prétendre savoir ce que ce soit, mais j'ai simplement téléchargé à partir du site Web Sun.
http://java.sun.com/products/midp/
Voici ce que le principal MIDP page Web de téléchargement se présente comme suit:
midp_download_page.jpg
J'ai téléchargé le fichier suivant:
j2me_midp-1_0_3-fcs-src-b26-win-19_sep_2001.zip
Je décompressés dans le répertoire suivant:
C:\j2me
J'ai renommé le répertoire de « midp-1_0_3-fcs » simplement:
midp (c'est-à-dire, le chemin d'accès complet est c:\j2me\midp)

3.4 Configuration outils

3.4.1 Mettre en place des chemins

Ajoutez les lignes suivantes à votre fichier 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%
Ensuite, la force de ces variables à être rechargé en exécutant le fichier batch:
cmd_prompt_autoexec_bat.jpg
c:\>  autoexec.bat
Vous pouvez également mis en place ces mêmes variables en utilisant la variable d'environnement Windows du Panneau de configuration.

Notez que j'ai choisi de préciser explicitement les voies de répertoire de mon version actuelle de la Java 2 SDK.  Par conséquent, si je mettre à jour, puis je dois modifier le fichier AUTOEXEC.BAT de préciser les nouveaux répertoires. 

3.4.2 Vérifiez la Jave 2 SDK binaires

Une fois les paramètres ci-dessus prennent effet, vous devriez être en mesure de lancer le Java programs outil de l'invite de commande sans spécifier le chemin d'accès complet à l'outil programs. 

La commande suivante va démarrer le téléphone cellulaire émulateur de périphérique: 
cmd_prompt_midp.jpg
c:\>  midp
L'image suivante montre le téléphone cellulaire émulateur de périphérique: 
java_midp_launch.jpg

4. Simple J2ME program

4.1 Ecris Java code

En utilisant n'importe quel éditeur de texte, une personne peut taper dans le code, comme pour ce HelloMIDlet.java fichier de code source:
file_image_hellomidlet_java.jpg
Voici le code au format texte:
// 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 compiler le code de *.class

cd  c:\HelloMIDlet
Attention: La commande suivante doit être sur une seule ligne, mais a été élargi à plusieurs lignes de texte uniquement pour des raisons de clarté.
(Current directory: C:\HelloMIDlet)
javac
    -target 1.1
    -d .\
    -bootclasspath c:\j2me\midp\classes
    HelloMIDlet.java
cmd_prompt_javac.jpg
Note: Le « -target 1.1 » est nécessaire pour éviter une erreur dans l'avenir « preverify » stade.  Apparemment, cela a quelque chose à voir avec un problème avec MIDP 1.0.3 soutien dans JDK 1.4. 

4.3 Preverify de générer un nouveau fichier *.class

cmd_prompt_preverify.jpg
(Current directory: C:\HelloMIDlet)
preverify  -classpath  c:\j2me\midp\classes;.  HelloMIDlet
Cela génère un nouveau fichier *.class dans un nouveau sous-répertoire appelé « output » (par défaut).

4.4 Testez le nouveau fichier *.class

cmd_prompt_midp_midlet.jpg
(Current directory: C:\HelloMIDlet)
midp  -classpath  c:\j2me\midp\classes;.\output  HelloMIDlet
Cela commence l'émulateur de téléphone, indiquant que la nouvelle « output » répertoire contient des fichiers nécessaires *.class.
L'image suivante montre le résultat escompté.
java_midp_hellomidlet.jpg

4.5 Créer un nouveau fichier texte, « manifest.mf », et éditez le fichier

A « manifest.mf » fichier est indispensable pour obtenir un véritable téléphone cellulaire pour interpréter le contenu d'un fichier *.jar.  Si un bon « manifest.mf » fichier n'est pas inclus dans le fichier *.jar, puis le téléphone cellulaire peut-être réussi à télécharger le fichier *.jar, mais pourrait ne pas interpréter le fichier téléchargé, peut-être une erreur d'établissement de rapports tels que « Unsupported Content Type ». 
Le texte suivant est un exemple d'un simple fichier « manifest.mf ».
file_image_manifest_mf.jpg
Voici la « manifest.mf » fichier au format texte brut: 
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
Notez que le CLDC et MIDP versions sont spécifiées dans ce fichier.  Soyez très prudente et conservatrice lors de la modification des différents domaines au sein de ce fichier.  Si vous obtenez des erreurs « File Corrupt », puis essayer d'éliminer tous les domaines qui ne sont pas présentées dans cet exemple.  Aussi, mettre les domaines de l'ordre dans lequel ils apparaissent dans l'exemple.  En outre, chaque domaine de réduire la valeur autant que vous le pouvez, et gardez les caractères limite à de simples lettres, des chiffres, des périodes et des tirets.  Certains services de téléphonie cellulaire, et les téléphones cellulaires, peuvent tolérer plus de variations du champ de commande et le contenu des champs. 
Attention: 

« jar » Lorsque le logiciel est utilisé pour créer un *.jar fichier, et le « manifest.mf » fichier est spécifié que le fichier manifeste, le « jar » program lit le fichier manifeste et pourrait en ajouter d'autres champs car elle crée un fichier appelé « MANIFEST.MF » dans le fichier de sortie *.jar.  Par conséquent, si le « MANIFEST.MF » fichier est extrait à partir d'un fichier *.jar, et est ensuite comparé à l'original « manifest.mf » fichier spécifié lors de la création de la *.jar, les deux fichiers peuvent être différents, avec la « MANIFEST.MF » fichier contenant plusieurs autres domaines que le fichier original « manifest.mf » . 

Ne pas « MANIFEST.MF » extraire un fichier à partir d'un fichier *.jar et tenter de former un nouveau fichier à l'aide *.jar que fichier manifeste.  Si vous « MANIFEST.MF » extraire un fichier à partir d'un *.jar fichier, puis assurez-vous d'éliminer tous les domaines sauf pour ceux qui sont indiqués dans l'exemple « manifest.mf » fichier ci-dessus. 
Note:

Icônes pour programs apparemment ne figurent pas sur la Motorola T720 téléphone.  C'est la raison pour laquelle je n'ai pas décrire ma MIDlet avec une icône.  Toutefois, le texte suivant montre comment définir une icône pour le program dans le fichier manifeste: 

MIDlet-1: My_Description, /icon.png, HelloMIDlet 

Lors de l'élaboration pour les téléphones cellulaires qui ne sont afficher des icônes pour les applications, spécifiez l'icône de fichier, et ajouter l'icône de fichier d'image elle-même à la *.jar fichier en spécifiant le nom du fichier entre les noms de fichier des fichiers à ajouter à la *.jar fichier. 

4.6 Placez le fichier « manifest.mf » et *.class fichier à un fichier *.jar

La commande suivante crée un fichier *.jar.  *.jar Le fichier contiendra le fichier spécifié manifest.mf, et contiendra les *.class fichiers trouvés dans le répertoire spécifié.
cmd_prompt_jar.jpg
Répertoire courant: C:\HelloMIDlet
jar  cfm  hi.jar  manifest.mf  -C .\output  HelloMIDlet.class
Complexe exemple hypothétique de la création d'un fichier *.jar
Supposons une icône de fichier d'image (par exemple, « icon.png ») est à paraître dans un fichier *.jar comme « /icon.png ».  (Note: Program icônes n'apparaissent pas sur la Motorola T720 téléphone cellulaire, mais ils apparaissent sur d'autres types de téléphone cellulaire, et de faire figurer dans le MIDP émulateur.) 

Supposons il ya un répertoire nommé « images » avec les fichiers image (format *.png).  Supposons que ce répertoire, et toutes les images contenues dans l'annuaire, doivent être accessibles Java à la program par la relative /images répertoire (par exemple une image que « a.png » serait accessible à l'aide de la voie « /images/a.png »). 

Supposons que tous les *.class fichiers produits par la commande preverify sont contenues dans un répertoire nommé « verified ».  Par exemple, la version vérifiée de la classe principale, « MyApp.class », serait dans l'« verified » dossier, ainsi que les autres classes de l'émission.  Toutes ces classes doivent être accessibles dans le répertoire racine de la *.jar fichier. 

La commande suivante va créer un fichier *.jar qui réalise les différents objectifs précisés dans les paragraphes précédents.  Attention: la commande a été élargi à plusieurs lignes de texte seulement ici pour plus de clarté.  Lorsque vous entrez la commande à l'invite de commande, la commande ne doit pas contenir de sauts de ligne; autrement l'interpréteur de commandes va interpréter le texte écrit en plusieurs commandes indépendantes. 

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 dernière partie de la commande est difficile à comprendre.  Il a la signification suivante:  « Changer le répertoire de travail courant à .\verified, puis mettre *.class tous les fichiers trouvés dans le répertoire parent '.' (*.class à savoir tous les fichiers dans le répertoire de travail courant) à la *.jar fichier. »  Parce que le répertoire a été modifié avant de préciser le chemin des classes pour mettre en *.jar le fichier, le chemin d'accès local ne figurent pas dans le chemin d'accès relatif lorsque les fichiers sont placés dans le fichier *.jar. 

Par exemple, supposons que les classes sont vérifiées dans le répertoire suivant: 

C:\MyApp\verified 

Supposons que la classe il ya des fichiers tels que les suivants: 

C:\MyApp\verified\w.class 

Puis, en précisant « -C .\verified . » dans la commande pour créer le fichier *.jar, à partir d'un répertoire courant de « C:\MyApp », se traduira par « w.class » mis dans le répertoire racine de la *.jar fichier.  </ e>

Attention: Lorsque le « -C » option est spécifiée, elle change le répertoire courant à ce moment-là de traitement de la séquence globale des paramètres de commande à la commande jar.  Par conséquent, la commande pourrait jar plaindre de ne pas trouver d'autres fichiers mentionnés dans les paramètres de commande au-delà de la « -C » option.  Si cela se produit, il suffit de déplacer le « -C .\verified . » à la finale des paramètres de la commande. 

Le tableau suivant illustre verbose sortie de la commande jar. 
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 Créer et éditer un nouveau fichier *.jad

A *.jad fichier est nécessaire pour que le téléphone cellulaire peut décrire un program d'ordinateur à une personne avant que la personne décide de télécharger le logiciel.  *.jad Le fichier fournit également des indirection de la *.jar lui-même. 
file_image_hi_jad.jpg
Un exemple de fichier *.jad, décrivant un fichier *.jar
Voici l'exemple hi.jad fichier en format texte:
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
Il ya des émissions qui peuvent générer le fichier *.jad, ce qui rend plus facile à mettre à jour les « MIDlet-Jar-Size: » domaine chaque fois que le *.jar fichier est modifié (et sa taille changements).  Si vous recherchez l'Internet vous trouverez des informations utiles J2ME programs. 

Si la taille domaine ne précise pas le total exact octet de la *.jar fichier, puis le message d'erreur suivant peut apparaître après un bon fichier à télécharger sur un téléphone cellulaire: « Download Failed » (téléchargement échoué). 

Pour la Motorola T720 téléphone cellulaire, le message d'erreur suivant peut être utilisé pour inidcate invalide champs dans le fichier *.jad, ou peut-être pas valide dans le champs MANIFEST.MF généré le fichier dans le dossier *.jar: « Failed: File Corrupt » (a échoué: fichier corrompu). 
Note: Si le fichier est *.jar dans le même répertoire que le fichier correspondant *.jad Internet sur un serveur Web, puis le fichier *.jad pouvez simplement indiquer le nom de fichier du fichier *.jar, sans préciser une URL, comme dans l'exemple suivant: 

MIDlet-Jar-URL: hi.jar 

Lors du téléchargement de ces fichiers à partir d'un Apache Internet serveur Web Motorola T720 à un téléphone cellulaire, il est acceptable de ne pas inclure la totalité URL.  Toutefois, lors du téléchargement de ces fichiers à partir d'un Yahoo!  serveur Web Internet à un téléphone cellulaire Motorola T720, la tentative de téléchargement échoue, à moins que URL un chemin d'accès au fichier *.jar est spécifié dans le fichier *.jad, comme dans l'exemple suivant: 

MIDlet-Jar-URL: http://www.colinfahey.com/hi.jar 

Je ne sais pas la raison de ce problème, et je sais que ce problème n'affecte pas d'autres téléphones cellulaires (téléphone cellulaire ou de prestataires de services).  Ayant à indiquer le URL pour la *.jar le fichier dans le dossier *.jad est évidemment gênant, parce que déplacer les fichiers à différents endroits sur un serveur, il faudrait changer les informations dans tous les fichiers *.jad.  Toutefois, en précisant la pleine URL pourrait faire *.jad la plus fiable pour certains téléphones cellulaires et de certaines téléphone cellulaire fournisseurs de services. 

4.8 Test de la *.jar fichier et le fichier *.jad par l'exécution des program

Le texte suivant exécute la classe dans le fichier *.jar, décrite par le *.jad fichier. 
cmd_prompt_midp_jar_jad.jpg
(Current directory: C:\HelloMIDlet)
midp  -classpath c:\j2me\midp\classes;.\hi.jar  -descriptor hi.jad

4.9 Références pour J2ME, MIDP, CLDC développement

Beaucoup de ce que j'ai présenté ici peuvent être trouvés sur de nombreux autres sites Internet.  Cependant, j'ai corrigé certaines erreurs constatées sur d'autres sites Internet, et a ajouté des détails manquants, et présenté l'ensemble l'expérience de quelqu'un qui essaie de faire ça.  Voici des liens très informative qui m'a aidé à démarrer: 
http://wireless.java.sun.com/midp/articles/getstart
http://wireless.java.sun.com/midp/articles/setup

5. Complexe J2ME program

5.1 Introduction

Le simple présentée dans la section précédente de ce document ne dispose que d'un seul fichier de code source, et le logiciel ne presque rien et n'est donc pas un bon exemple de programmation de téléphone cellulaire. 

Mon ami Sam Robertson a écrit un intéressant J2ME qui enseigne une personne à jouer le jeu de cartes « Blackjack » (également appelé « 21 »).  Un joueur est présenté « avec » un distributeur « de carte, » et le joueur de la paire de cartes, et le joueur doit décider ce qu'il faut faire: « séjour, hit, double-bas, ou » se séparent. 

Ce program a six fichiers de code source.  Le logiciel répond à l'entrée de l'utilisateur, et ne simple dessin et le texte des mises à jour. 
sbj_screen_on_phone.jpg

5.2 Code source

Cliquez sur le lien suivant pour obtenir le code source, et le fichier *.jad, « manifest.mf » fichier, un fichier batch, le tout dans un seul fichier ZIP.
sbj.zip
Le code source contenue dans un fichier ZIP
6090 octets
MD5: bf3922035b7a4eef24e107d03b7524c9
Extrait d'un répertoire arbitraire, mais si vous avez extrait à « c:\ » sous Windows, l'exemple ci-après discussion sera encore plus proche de votre situation réelle.
sbj_directory_files.jpg
Extraction sbj.zip à « c:\ » crée le répertoire « c:\sbj »

5.3 Fichier manifeste

Dossier: « 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 Le fichier de commandes pour construire le program

Le fichier suivant est rude, mais il sert d'illustration de la manière dont vous pouvez commencer à écrire votre propre fichier pour construire votre J2ME program.  Ce fichier exemple le texte suivant:
(1) Supprimer le répertoire contenant les fichiers *.class ancienne; 
(2) Supprimer le répertoire contenant les anciens fichiers *.class vérifiées; 
(3) Faire un répertoire de sortie « des classes; » 
(4) rassembler toutes les sources *.java à *.class fichiers, avec la production va à l'annuaire « des classes. » 
(5) Faire un répertoire de sortie « vérifiée; » 
(6) Preverify toutes les classes dans le répertoire « classes, » et de mettre l'classes vérifié « vérifié » dans le répertoire. 
(7) Créer un *.jar fichier, et ajouter le fichier mainfest, et toutes les classes dans le répertoire « vérifié; » 
*(8) Test de la program via la preverified classes directement; 
*(9) Test de la program via la *.jar et *.jad fichiers; 

(*...  Ces mesures sont désactivées (par des commentaires) dans mon fichier batch.) 
sbj_build_sbj_bat_file.jpg
Le « build_sbj.bat » fichier batch pour la construction de la program
Voici la même (« build_sbj.bat ») fichier en format texte:
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 Construire à partir de l'invite de commande

Voici le résultat de l'exécution de la « build_sbj.bat » fichier à la ligne de commande:
sbj_build_command_prompt.jpg
L'exécution du fichier de « build_sbj.bat »
Notez que les messages d'avertissement pour la « rmdir » opérations et « del » simplement indiquer qu'il n'y a rien à enlever. 

Vous pouvez voir les nouveaux répertoires (c'est-à-dire, « classes » et « verified ») et le nouveau fichier *.jar que le résultat de l'exécution du fichier batch:
sbj_new_files_after_build.jpg
Fichiers de code source et le fichier généré de nouvelles

5.6 *.jad fichier

Pour déployer le fichier sbj.jar, nous avons besoin pour créer et éditer le fichier sbj.jad d'avoir la bonne taille *.jar dans le champ approprié:
Dossier: 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
Une personne pourrait avoir besoin d'ajouter la URL complet à la *.jar fichier *.jad lorsque le fichier est mis sur un site Internet - mais j'ai découvert (par un test) que j'ai pu éviter de mentionner la pleine URL (c'est-à-dire, je ne l'spécifié *.jar nom de fichier en lui-même).  Toutefois, la mise en URL complet, mais je tenais à vous faire savoir ce que j'ai observé.

5.7 Résumé

Ayant de multiples fichiers source de votre projet est commun, et dans cette section, nous a donné une illustration brut de la construction de plusieurs classes, suivie de l'emballage et l'exécution. 

S'il vous plaît voir la section ci-après en ce qui concerne l'aide Sun Wireless Toolkit, ce qui rend la création d'applications beaucoup plus facile. 

6. Sun « Wireless Toolkit (version 1.0.4_01) »

6.1 Introduction

Sun offre un environnement de développement pour la construction et de l'emballage J2ME programs: « Java 2 Platform Micro Edition (J2ME) Wireless Toolkit (version 1.0.4_01) ». 

(Attention: Vous devez télécharger le Java 2 SDK 1.4 tel que décrit dans une section précédente pour utiliser cette trousse d'outils.  Faites-le maintenant si vous n'avez pas déjà cette version du Java 2 SDK.) 

Aller au le site Internet suivant pour télécharger la trousse d'outils: 

http://java.sun.com/products/j2mewtoolkit/ 
Attention!
 

Ne pas cliquer sur le lien « 2.0 Beta 1 English » (actuellement l'option de téléchargement haut) si vous faites Motorola T720 développement - car cette version a MIDP-2.0 certaines choses, et de se déplacer dans cette mai être un mal de tête. 
j2me_wireless_toolkit_2_0_download_page.jpg
Ne pas télécharger cette version!  (« 2.0 Beta 1 English »)
J'ai essayé cette version, et j'ai finalement obtenu le code à compiler avec beaucoup de désordre paramètres des changements, mais après tout l'effort je suis une exception de sécurité lorsque j'ai essayé d'exécuter.  Ne pas déranger! 
Télécharger la version « 1.0.4_01 English ».  Voici ce que la page de téléchargement se présente comme suit: 
j2me_wireless_toolkit_1_0_4_01_download_page.jpg
La page de téléchargement Sun J2ME Wireless Toolkit (version 1.0.4_01)
j2me_wireless_toolkit_1_0_4_01_download_page2.jpg
Le Sun J2ME Wireless Toolkit (version 1.0.4_01) FTP liste de sites
Cela va télécharger le fichier suivant: « j2me_wireless_toolkit-1_0_4_01-bin-win.exe » 
Exécuter ce logiciel à installer sur votre système.

6.2 J2ME Wireless Toolkit: lancement barre d'outils

Après la trousse d'outils est installé, vous pouvez lancer à partir de la « Start » (début) système de menu:
j2me_wireless_toolkit_1_0_4_ktoolbar.jpg
A partir de la barre d'outils program
Vous pouvez également accéder à la documentation MIDP-1.0 par l'intermédiaire de la « Documentation » point dans ce Start (début) menu.
j2me_wireless_toolkit_2_0_wtk20_docs_api_index_html.jpg
J2ME Wireless Toolkit (version 1.0.4_01) documentation

6.3 J2ME Wireless Toolkit: projet de créer et de construire

j2me_wireless_toolkit_1_4_ktoolbar_window.jpg
La barre d'outils est prêt.  Cliquez « New Project... » de créer un nouveau projet.
j2me_wireless_toolkit_1_4_ktoolbar_new_project.jpg
New Project: Entrez le nom du projet (qui devient JAR nom et le nom du nouveau projet de répertoire), et le type de MIDlet nom de la classe (classe dérivée de MIDlet, essentiellement la classe principale de votre application). 
j2me_wireless_toolkit_1_4_ktoolbar_project_created.jpg
Barre d'outils: projet créé.  Notez que la console vous indique où placer votre *.java les sources des fichiers, etc  (par exemple, « c:\WTK104\apps\sbj\src », etc) 
j2me_wireless_toolkit_1_4_ktoolbar_project_settings.jpg
Cliquez sur « Settings... » sur la barre d'outils pour obtenir les paramètres de ce projet menu. 
Ne tenez pas compte des « MIDlet-Jar-Size » domaine (avec la valeur « 100 octets) » pour le moment.  Nous allons finalement causer la valeur correcte pour obtenir ensemble. 
j2me_wireless_toolkit_1_4_ktoolbar_project_midlet_settings.jpg
Cliquez sur l'onglet MIDlets projet de la boîte de dialogue de configuration.
Cliquez sur la seule ligne dans le tableau (« MIDlet-1 ») de mettre en évidence et sélectionnez-le.  Ensuite, cliquez sur le bouton « Edit ». 
j2me_wireless_toolkit_1_4_ktoolbar_project_no_icon.jpg
Clair « Icon » le domaine si vous n'avez pas de fichier *.png à mettre dans votre fichier *.jar. 
Est-ce que le texte suivant: 

(1) Project --> Clean: supprime tous les fichiers *.class;
(2) Build : réalisations *.class tous les fichiers et preverifies;
(3) Project --> Package --> Create Package : produit *.jar et *.jad
j2me_wireless_toolkit_1_4_ktoolbar_clean_build_create_package.jpg
Le résultat de la construction de la *.jar et *.jad
Lorsque vous faites ces trois étapes, les *.jar et *.jad sont immédiatement prêts à l'exécution dans l'émulateur local, ou pour un déploiement immédiat sur votre site Internet pour d'autres à télécharger « sur les ondes » (OTA).  Le *.jar taille dans le domaine *.jad fichier sera correcte.  Ne pas oublier de faire étape (3) chaque fois que vous reconstruire! 

Vous pouvez maintenant tester en pressant la touche « Run » (lancer) bouton. 
j2me_wireless_toolkit_1_4_ktoolbar_project_launch.jpg
j2me_wireless_toolkit_1_4_ktoolbar_project_running.jpg
Frapper « Run » pour le lit le projet *.jad à l'émulateur.  Vous pouvez sélectionner MIDlet spécifiques de lancer (en général un seul). 
Il suffit de copier le *.jar et *.jad fichiers à partir de l'emplacement spécifié (rapporté par la barre d'outils de la fenêtre de console au cours d'une construction du projet), telles que:
(A partir de la fenêtre de la console:)
Wrote c:\WTK104\apps\sbj\bin\sbj.jar
Wrote c:\WTK104\apps\sbj\bin\sbj.jad
Mettez ces fichiers directement sur votre site Internet, sans modification, et cela devrait fonctionner.  Voici ce que j'ai vu sur mon téléphone cellulaire après le téléchargement de cette application compilée « sur l'air » (OTA)
sbj_screen_on_phone.jpg
Sam Robertson's Blackjack Trainer (sbj.jar) d'exécution sur mon téléphone cellulaire

7. Offre des logiciels sur un site Internet

7.1 Veiller à ce que le serveur Web Internet MIME précise *.jar types de fichiers et dossiers *.jad

Si vous avez un Apache Internet serveur Web, vous devez créer un fichier nommé « .htaccess » au sein de votre site Web répertoire racine.  « .htaccess » Le fichier vous permet de passer outre Apache configuration, telles que l'ajout ou supérieur MIME types de fichier.  Vous devez ajouter la MIME préciser les types correspondant à *.jar fichiers et *.jad fichiers, comme indiqué dans le fichier texte suivant: 
htaccess_image.jpg
Mon personnalisées « .htaccess » fichier Apache pour le serveur Web Internet.  Note: j'ai nommé ce fichier « .htaccess.txt » simplement de faire le fichier facile à modifier en utilisant le système d'exploitation Windows.  Le nom de fichier doit être modifié pour « .htaccess » avant le fichier peut être utilisé avec Internet Apache le serveur Web. 
Voici mon simple .htaccess fichier au format texte brut:
AddType text/vnd.sun.j2me.app-descriptor jad
AddType application/java-archive jar
AddType text/vnd.wap.wml wml
Apparemment, la création ou la modification de ce fichier entraîne une modification immédiate de Apache comportement du serveur.  Je suppose que le serveur vérifie Apache modification de la date et l'heure de la « .htaccess » fichier à chaque nouvelle transaction future, et le serveur recharge ce fichier si la date de modification et le temps a changé. 

Si vous avez un autre type de serveur Web, vous devez déterminer la façon de spécifier les types MIME, et vous devez vous assurer que *.jar fichiers et dossiers *.jad sont affectés les types MIME. 

Vous savez si le MIME types n'ont pas été mis en place si le téléphone cellulaire refuse de télécharger votre fichier *.jad et les rapports d'erreur suivant: 

« 406: Not Acceptable » 

7.2 Éventuellement fournir des liens vers le fichier dans *.jad ou HTML documents WML

Le Motorola T720 J2ME téléphone cellulaire avec AT&T service est en mesure de télécharger un fichier *.jad directement, en tapant la URL de la *.jad fichier dans le téléphone cellulaire.  Cela est susceptible de travailler pour d'autres J2ME téléphones cellulaires cellulaire avec d'autres fournisseurs de service téléphonique. 

Toutefois, il pourrait être plus pratique pour les gens de télécharger le fichier *.jad en sélectionnant un lien dans un HTML document ou dans un document WML.  (Note: WML est désormais obsolète.  La plupart des téléphones cellulaires peuvent maintenant interpréter HTML.) 
file_image_hi_html.jpg
Un simple HTML document avec un lien vers un fichier *.jad
file_image_hi_wml.jpg
Un simple WML (WAP) page avec un lien vers un fichier *.jad  (Note: WML est désormais obsolète.  La plupart des téléphones cellulaires peuvent maintenant interpréter HTML.) 

8. Téléchargement de logiciels à partir d'un site Internet

Les images suivantes montrent l'enchaînement exact des actions, je n'ai de télécharger et d'exécuter le MIDlet développé et déployé en tant que décrites dans les sections précédentes ci-dessus.  Ces images sont des photographies de l'écran de mon téléphone cellulaire. 
t720_screens_download_program.jpg
(1) principale de l'écran: Lorsque vous ouvrez le téléphone, vous voyez l'écran principal.  Appuyez sur le bouton central pour aller au menu principal. 
(2) Main Menu: Déplacement à la question « WebAccess ». 
(3) WebAccess: Déplacement à la question « Go To URL ». 
(4) Enter URL: Type dans le URL *.jad d'un fichier (ou HTML d'un document, ou d'un document WML). 
(5) Details; Cette information a été analysée à partir de la *.jad fichier.  DOWNLD de presse à télécharger le fichier *.jar. 
(6) Download Complete; Attendez que ce message à disparaître; 
(7) Installing; Attendez que ce message à disparaître; 
(8) xxxx bytes transferred; Attendez que ce message à disparaître; 
(9) Installed; Attendez que ce message à disparaître; 


WebAccess Lorsque le menu s'affiche à nouveau, après l'émission a été installé, il suffit de sortie de chaque menu pour revenir à l'écran principal. 
t720_screens_start_program.jpg
(1) principale de l'écran: Lorsque vous ouvrez le téléphone, vous voyez l'écran principal.  Sélectionnez l'option « Games & Apps » via le menu principal, ou appuyez sur le curseur vers le bas sur l'écran principal. 
(2) Java Powered: Attendez que l'écran à disparaître. 
(3) Games & Apps: Sélectionnez l'élément avec le nom de votre program! 
(4) Yay!  Le succès de l'exécution de votre program! 
Le program apparition sur le téléphone cellulaire est très similaire à l'apparition au sein de l'émulateur.

9. Télécharger les messages d'erreur et les messages d'erreur d'installation

9.1 Motorola T720 (J2ME) messages d'erreur

Les erreurs suivantes ne sont que des messages pertinents à la Motorola T720 (GSM/J2ME) téléphone cellulaire. 

9.1.1 « Download Failed »

Cause # 1
Tout fichier (HTML, JAD, JAR, MID, GIF) plus 1644 octets va provoquer cette erreur pour certains hébergeurs de sites Internet et les serveurs.  Voici une brève liste des hôtes et des serveurs: 
Host / Server                                               Error
===================================================    =================
Apache                                                       No
Microsoft Personal Web Server (direct from your PC)          No
Earthlink (Apache)                                           No
Yahoo! (custom server)                                       Yes
Le problème est dû à un défaut dans la Motorola T720 GSM/J2ME firmware, ce qui provoque le téléchargement des fichiers en fragments à l'échec.
La seule solution apparente est de passer hébergeurs de sites Internet ou de type de serveur.  D'autres types de téléphone cellulaire n'ont pas ce problème. 
Cause # 2
Le « MIDlet-Jar-Size: » domaine *.jad d'un fichier ne pas indiquer le montant exact d'octets total de la *.jar fichier correspondant.

9.1.2 « Failed: File Corrupt »

Cause # 1
Le fichier *.jar utilisations API fonctions qui ne sont pas disponibles sur le téléphone cellulaire. 

Par exemple, MIDP 2.0 fonctions ne sont pas disponibles sur le Motorola T720 GSM/J2ME téléphone cellulaire (qui ne dispose que de MIDP 1.0 fonctions).  Un logiciel peut-être exécuter dans un émulateur, mais pourrait ne pas exécuter sur le téléphone cellulaire. 

La solution est à la recherche de MIDP 2.0 fonctions dans le code source et de les remplacer par MIDP 1.0 fonctions, ou d'éliminer les caractéristiques qui exigent l'MIDP 2.0 fonctions. 
Cause # 2
« manifest.mf » Le fichier utilisé pour créer le fichier *.jar (par l'intermédiaire du « jar » utilité) contient des erreurs. 

Assurez-vous que le fichier a « manifest.mf » les versions suivantes de CLDC et MIDP: 
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
L'ensemble de « manifest.mf » fichier devrait ressembler à peu près comme suit: 
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
Chaque ligne de