Java

Installation

Installation sur PC/MAC

Un programme java (version pc/mac) est un fichier .jar qui se copie dans un répertoire, et qui se lance en double cliquant dessus ou par la commande java -jar nom.jar

Il vous faut avoir installé le dernier interpréteur java de chez sun/oracle.

Installation sur téléphone

Il faut que vote téléphone soit équipé de Java MID 2.0 CLDC 1.0 ou mieux.

L'installation sur portables est plutôt conçue pour télécharger des jeux payants.

Vous appelez un numéro payant, et le jeu est téléchargé.

Il existe généralement des utilitaires pour installer un jeu avec un cable usb ou une connexion bluetooth.

L'utilitaire est parfois fourni avec le téléphone, parfois il faut en trouver un sur internet.

Sur samsung, il faut

bulletcopier les fichiers .jad et .jar dans le répertoire autre fichier du téléphone ou de sa carte mémoire
bulletutiliser l'explorateur de fichier du téléphone et sélectionner le fichier.jad

Il existe aussi une procédure tarabiscotée :

bulletredémarrer puis connecter son téléphone en mode pc studio (sans lancer pc studio) par le câble USB ou le Bluetooth
bulletutiliser un utilitaire shareware softtick ppp, trouvable sur le net. Il faut choisir le port com qui correspond à votre téléphone ou le mode Bluetooth
bulletutiliser un freeware samsung java uploader et sélectionner le fichier descriptif .jad du jeu à télécharger
bulletentrer un code secret (différent pour chaque modèle, *#52828978# sur d900i) à un menu secret pour utiliser la connexion usb ou Bluetooth
bulletchanger l'OTA type setting à serial bearer OTA pour utiliser usb/bluetooth au lieu d'une connection téléphone payante (pensez à le remettre en gprs à la fin)
bulletsélectionner serial test/ppp up pour sélectionner bluetooth ou usb
bulletlancer serial test/serial download, le jeu doit s'installer, disparaitre de samsung java uploader, et se lancer, sinon redémarrer votre mobile et recommencez de 0

L'environnement NetBeans s'est révélé le plus facile, pour exploiter le SDK 3.0 pour mobile de SUN et pour l'IHM de la version PC

Je n'ai pas trouvé comment faire via eclipse, l'environnement numéro 1 pour java.

Ce n'est pas SUN qui fait les interpréteurs Java sur téléphone, et les implémentations sont vraiment très différentes, rendant difficile la compatibilité.

Installation sur smartphone, pocket pc

Sun/Oracle ne fournit pas d'interpréteur pour téléphone/smartphone. Votre fabriquant a généralement acheté auprès d'une société spécialisée un interpréteur java, et vous n'avez plus qu'à copier le .jad et .jar sur votre smartphone et l'exécuter/

Parfois, ça se contente du .jar, parfois il faut le descriptif .jad

Tous les smartphone ont un interpréteur java, par mimétisme avec les téléphones.

C'est moins vrai pour les pocket pc. Si vous avez un pocket pc windows mobile sans interpréteur java, les fournisseurs d'interpréteur ne fournissent pas en directe, même si ça se trouve par la bande.

Seul IBM vend un interpréteur java pour windows mobile. Il l'a fournit d'abord gratuitement, et en fait, sa version payante n'a pas bougée, alors télécharger la version gratuite J9 IBM

Développement

J'ai développé ces jeux avec Netbeans (version java incluant java me)

Eclipse (libre) est plus répandu que netbeans (gratuit sun donc oracle) mais je n'ai pas trouvé comment utiliser facilement le kit javame de sun sous eclipse. Certains semble utiliser d'autres kits.

D'autre part, j'ai trouvé le constructeur d'ihm sous netbeans plus pratique que ce que j'ai trouvé sous eclipse.

Java Mobile Edition est une version réduite de Java.

Il est possible de développer le moteur de votre jeu en se restreignant à cette version réduite, puis à copier les sources communs dans le projet javaMe et java Standard Edition.

J'ai écrit quelques modules java proposant la même interface dans les deux versions pour que le moteur commun puisse les exploiter, je les ai mis dans un package sys, que je copie dans chacun de mes jeux dans les deux versions.

JAVA ME JAVA SE Commentaire
mColor mColor liste de couleurs. Java me ne définit pas de type couleur, alors que java se si. Ca permet aussi d'avoir quelques couleurs en plus
MyRandom tirage au sort. La dépendance est commune, c'est pour recréer une fonction tirage au sort 0..max-1, accéssoirement, l'accès est static
Sound Sound Pour jouer un son en essayant d'abord en mp3 puis en wav. mon téléphone n'accepte que mp3 et mon pocket pc que wav. Les classes d'accès au son sont très différentes entre me et se
AppSetting Pour sérialiser déserrialiser les options à mémoriser
recordConfig recordConfig Pour mémoriser les options de jeu. J'ai essayé beaucoup de tuto avant de trouver ces sources qui marchent en me
J'en ai fait une version très simplifiée pour se, qui utilise un fichier de configuration au lieu des objets persistents qui me semblent complexe

Développer en JavaME

Créez un projet de type JavaME/Mobile application sans HelloMidlet. de type MID 2.0 CLDC 1.0 pour le maximum de portabilité.

Je n'utilise pas les midlets designer graphiques ni le game builder graphique car ils ne sont pas assez souples.

Je crée un package pour le moteur commun de mon jeu et un package hmi pour ce qui est spécifique javaME.

Les écrans téléphone et pc et le mode d'action clavier ou souris font que les principes HMI sont parfois assez différents entre les deux versions.

Ajouter un midlet

C'est le moteur de démarrage de l'application, il comporte une form qui me sert de dialogue de demarrage, voire de dialogue de jeu si le jeu est statique.

Il faut créer les objets du dialogues

bulletJ'ajoute au dialogue du midlet
bulletdes Command qui vont se trouver en menu sur les touches gauche droit en bas de l'écran du téléphone. On peut les accrocher en permanence au dialogue, ou spécifique à un item
bulletdes StringItem pour les textes sans saisie ou les boutons
bulletdes TextField pour les textes avec saisie
bulletun ChoiceGroup pour choisir la langue
bulletdes ImageItem dans mon jeu de poker qui est statique
bulletLe constructeur du midlet puis la méthode startapp initialisent le dialogue, mais attention, les autres fichiers java ne sont pas initialisés alors si vous les utilisez, ça bug. Attendez la fin du dialogue de configuration pour les utiliser.
bulletutiliser les commandAction pour traiter les commandes des deux boutons gauche droit en bas de l'écran.
bulletJ'ajoute une classe java que je dérive de GameCanvas implements Runnable, il permet
bulletd'avoir un thread cyclique, je n'utilise pas vraiment
bulletd'avoir des événement claviers, touches ou touches action du curseur
bulletd'avoir des événements click/drag pour les écrans tactiles
bulletde gérer des objets superposés tiledlayer ou sprite
bulletd'avoir des tiledLayer qui comporte :
bulletune image bitmap découpée en carrés
bulletune grille virtuelle en carré, et pour chaque carrés vous donnez l'index du carré à utiliser dans le bitmap
bulletc'est prévu pour gérer des grands espaces dont vous ne visualisez qu'une partie, que vous composez en piochant dans une bibliothèque d'images
bulletdes sprites, ce sont vos mini personnages, avec
bulletune image découpée en morceau, chaque morceau correspondant à une attitude de votre personnage
bulletla possiblité d'animation automatique par déroulement des morceaux
bulletune détection de collision

Développer en javaSE

Créez un projet de type Java/Java Desktop Application

Cette fois-ci j'utilise le designer graphique pour bibliothèque swing/awt, et je trace en utilisant les primitives Graphics dans les java jpanel

Je range tout dans le package HMI de même nom que la version ME

Ca me permet d'avoir des sources java de même interface, créant des objets images par jpanel ou sprite ou tiled layer selon les cas.

Pour générer un jar comportant le code des librairie, ajoutez au fichier build.xml les lignes suivantes, juste avant la dernière ligne /project

Il faudra ensuite après avoir généré le .jar sans librairie, aller dans l'onglet fichier du projet netbeans, fichier xml, sélectionner la cible package-for-store, click droit, exécuter une cible

<target name="package-for-store" depends="jar">

<!-- Change the value of this property to be the name of your JAR,

minus the .jar extension. It should not have spaces.

<property name="store.jar.name" value="MyJarName"/>

-->

<property name="store.jar.name" value="BatNavSe"/>

 

<!-- don't edit below this line -->

<property name="store.dir" value="store"/>

<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/>

<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/>

<delete dir="${store.dir}"/>

<mkdir dir="${store.dir}"/>

<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip">

<zipgroupfileset dir="dist" includes="*.jar"/>

<zipgroupfileset dir="dist/lib" includes="*.jar"/>

<manifest>

<attribute name="Main-Class" value="${main.class}"/>

</manifest>

</jar>

<zip destfile="${store.jar}">

<zipfileset src="${store.dir}/temp_final.jar"

excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/>

</zip>

<delete file="${store.dir}/temp_final.jar"/>

</target>

</project>

Développer pour android

Pas simple d'installer le kit android sous netbeans.

Il faut bien suivre les étapes, d'abord bien installer le kit android et ses simulateurs, puis le relier à netbeans.

Je ne me rappelle plus comment je m'en suis sorti, désolé.

voici un guide

après avoir installé le kit android il faut installer le plugin android pour netbean (source pluggins   http://kenai.com/downloads/nbandroid/updates.xml )

si vous avez la dernière version du sdk, il faut copier le sous répertoire platform-tools du répertoire d'installation du sdk dans tools, sinon il ne trouvera pas le debugger

Trucs et astuces de développement sous android ici

Pour voir les traces de votre programme, il faut lancer la console de debugging dbms à trouver sous tools du kit android

les traces peuvent écrire via import android.util.Log; Log.v|d|i|w|e("emetteur", "message"); mais le system.out s'y affiche également en affichant l'émetteur système

 

 

Partage de code

Il est finalement possible de partager du code entre Java ME et Java SE.

Il faut sous netbeens créer une bibliothèque de type Java ME mobile classe librairie (les librairies Java SE sont refusées par Java ME mais pas l'inverse

Cette librairie peut ensuite être indiquée à la fois dans le projet Java ME et le projet Java SE, sous forme de jar. Dans le projet ME, cochez la case package pour que le code de la librairie se retrouve dans le jar final.

Générer le jar de la librairie, puis celui du projet ME et SE utilisateurs.

Si cette librairie est dépendante d'une autre qui existe en deux versions différentes, ME et SE, référencez-là en version ME, mais sans cocher la case package, pour qu'elle ne se retrouve pas dans le jar généré.

Pour maximaliser le partage de code, créer aussi deux bibliothèques Java, dont le code ME et SE sont différents, mais de même interface. La librairie ME est de type Java ME mobile classe et la librairie SE de type  Java bibliothèque de classes java.

Bluetooth

La programmation bluetooth sur mobile se programme en utilisant l'api jsr 182

J'ai adapté une librairie trouvée sur le net que je diffuserai bientôt.

Sous windows, il existe une implémentation gratuite, bluecove, version 2.1 diffusée sous forme de .jar à ajouter dans les bibliothèques du projet.

Il intègre une dll pour windows.

Sous windows 64 bits, il faut prendre la version snapshot 2.1.1 qui comporte une dll intelbtx_x64.dll nécessaire

Il existe aussi une version windows ce, sous l'interpréteur  J9 IBM la ligne de commande d'appel de l'interpréteur doit être modifié pour charger la librairie, mais je ne l'ai pas testé

Accueil ] Remonter ] Developper pour android ]