Your SlideShare is downloading. ×
0
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Java ME by Amdane Samb at BarCamp Goree, December 2010
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java ME by Amdane Samb at BarCamp Goree, December 2010

782

Published on

Published in: Education, Business, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
782
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
51
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. J2ME<br />PrésentéPar:<br />Amdane SAMB<br />SerigneMoustapha KANE<br />
  • 2. INTRODUCTION DEJ2ME<br />DEMONSTRATION D&apos;UNE APPLICATION J2ME<br />PLAN<br />2<br />MOBILE SENEGAL <br />
  • 3. SOMMAIRE<br />INTRODUCTION<br />CONFIGURATIONS - CLDC<br />PROFILES - MIDP<br />INSTALLATION DES LOGICELS<br />REALISATION D&apos;UN PROGRAMME J2ME<br />PREMIER PROGRAMME J2ME<br />WMA<br />RMS<br />REFERENCES<br />3<br />MOBILE SENEGAL <br />
  • 4. INTRODUCTION<br /><ul><li>J2ME (Java 2 Micro Edition) estuneplateforme Java pour les terminaux mobiles (téléphones, pda,…) et les systèmes embarqués.
  • 5. L’architecture J2ME est modulaire et est composée de deux éléments fondamentaux:
  • 6. Uneconfiguration (i.e. une machine virtuelle et un ensemble de classes de base et d&apos;API):
  • 7. CDC (Connected Device Configuration) utilséepar les terminauxdisposant de quelquesMégaoctets de mémoire; et
  • 8. CLDC (Connected Limit Device Configuration) pour les petitsterminaux.
  • 9. Un profile (i.e. unespécification Java définie, utiliséepar les fabricants et développeurs pour des terminauxspécifiques).
  • 10. Dansnotre exposé, nous nousintéresserons aux petitsterminauxutilisantune configuration CLDC.</li></ul>4<br />MOBILE SENEGAL <br />
  • 11. CONFIGURATION CLDC<br />Le CLDC (ConnectedLimitDevice Configuration) est développépour les terminaux disposant d&apos;une petite mémoire entre 160 à 512 Ko de mémoire. Le rôle de CLDC est de définir une plateforme standard adaptée aux terminaux légers dotés de peu de ressources et fonctionnant en mode connecté. Il est utilisé avec KVM (K Virtual Machine) fonctionnant avec une mémoire de 100 Ko.Le CLDC a besoin d&apos;un MIDP (Mobile Information Device Profil) fournissant un ensemble de classes tournant sur de petits terminaux pour mieux garantir la portabilité et l’interopérabilité du code entre les différents types de terminaux mobiles.<br />5<br />MOBILE SENEGAL <br />
  • 12. PROFILE MIDP<br />Le MIDP (Mobile Information Device Profil) fournit un ensemble de classe et est destiné à la configuration CLDC.Il prend en charge un nombre limité des classes de J2SE et définit des classes d&apos;entrée / sortie et d&apos;interface spécialisées pour une configuration CLDC.<br />6<br />MOBILE SENEGAL <br />
  • 13. INSTALLATION DES LOGICIELS<br />Logiciels : JAVA, Eclipse, WTK, pluginEclipseME<br />Installation: <br /><ul><li>Installation du pluginEclipseME (Eclipse feature)
  • 14. Configuration du CLDC et du MIDP
  • 15. Utilisationde WTK</li></ul>7<br />MOBILE SENEGAL <br />
  • 16. REALISATION D&apos;UN PROGRAMME J2ME<br />L‘ écriture du code repose sur :<br /><ul><li>L&apos;extension de la classe MIDlet
  • 17. Des méthodes obligatoires: startApp(), pauseApp(), destroyApp()
  • 18. L&apos;interaction avec l’ utilisateur : Les classes Command et CommandListener
  • 19. Unou plusieurs midlets dans une midletSuite</li></ul>8<br />MOBILE SENEGAL <br />
  • 20. REALISATION D&apos;UN PROGRAMME J2ME<br />Compilation : <br /><ul><li>Automatique dans Eclipse
  • 21. monMIDlet.java</li></ul>Packaging :<br /><ul><li>Un fichier .jar qui qui est format compressé du programme contenant un fichier manifest, les fichiers .class, les éléments multimedias
  • 22. Un fichier .jad</li></ul>9<br />MOBILE SENEGAL <br />
  • 23. REALISATION D&apos;UN PROGRAMME J2ME<br />Le rôlede la MIDletSuite :<br />Dans MID (Mobile Information Device), l&apos;AMS (Application Management Software) fournitunenvironnement pour l&apos;installation, le start, le stop, et la mise à jour des midlets<br />L&apos;AMS assure que les midlets de la mêmesuite interagissentdansuneunemêmeJVM<br />10<br />MOBILE SENEGAL <br />
  • 24. PREMIER PROGRAMME J2ME<br />Nous allonsécrirenotre premier programmeintituléBonjourGoree<br />Pour celaexecutons Eclipse File New OtherJ2ME  MIDletSuite Next BonjourGoreeNext Finish<br />11<br />MOBILE SENEGAL <br />
  • 25. PREMIER PROGRAMME J2ME<br />// Les Bibliothèques<br />import javax.microedition.lcdui.Command;<br />import javax.microedition.lcdui.CommandListener;<br />import javax.microedition.lcdui.Display;<br />import javax.microedition.lcdui.Displayable;<br />import javax.microedition.lcdui.Form;<br />import javax.microedition.midlet.MIDlet;<br />import javax.microedition.midlet.MIDletStateChangeException;<br /> public class BonjourGoree extends MIDlet implements CommandListener{<br /> public BonjourGoree() {<br /> // TODO Auto-generated constructor stub<br /> }<br /> protected void destroyApp( boolean arg0) throws MIDletStateChangeException {<br /> // TODO Auto-generated method stub<br /> }<br />12<br />MOBILE SENEGAL <br />
  • 26. PREMIER PROGRAMME J2ME<br />protected void pauseApp() {<br /> // TODO Auto-generated method stub<br /> }<br /> protected void startApp() throws MIDletStateChangeException {<br /> }<br />public void commandAction(Command arg0, Displayable arg1) {<br /> // TODO Auto-generated method stub<br /> }<br />} //fin de l&apos;application<br />13<br />MOBILE SENEGAL <br />
  • 27. PREMIER PROGRAMME J2ME<br />L&apos; execution de ce bout de code donne le résultatsuivant :<br />L&apos;écranestentiérement vide doncc&apos;est à nous d&apos;ymettreducontenu<br />14<br />MOBILE SENEGAL <br />
  • 28. PREMIER PROGRAMME J2ME<br />Le contenu de monécranpeutêtre:<br /><ul><li>Form : des formulaires
  • 29. TextBox: des zones de saisies
  • 30. List : des listesd&apos;éléments à choisir
  • 31. Ticker : des textesdéfilantcontinuellementsur un écran
  • 32. TextField: des champs de saisie
  • 33. Item : des élémentspouvantêtreinsérésdansune Form ouuneAlert
  • 34. Alert : des alertes i.e. des messages attendant un laps de temps pour passer à un autreécran
  • 35. Command : des Commandes (Commands) correspondantà des actions
  • 36. …</li></ul>15<br />MOBILE SENEGAL <br />
  • 37. PREMIER PROGRAMME J2ME<br />16<br />MOBILE SENEGAL <br />
  • 38. PREMIER PROGRAMME J2ME<br />17<br />MOBILE SENEGAL <br />
  • 39. PREMIER PROGRAMME J2ME<br />L‘ executionde ce bout de code donne le résultat suivant :<br />Titre de la Form &quot;Gorée BarCamp<br />Commande&quot;OK&quot;<br />18<br />MOBILE SENEGAL <br />
  • 40. PREMIER PROGRAMME J2ME<br />Ce bout de code nous permetd&apos;avoir un champ de textedansnotre<br />Form<br />19<br />MOBILE SENEGAL <br />
  • 41. PREMIER PROGRAMME J2ME<br />Notre champ de saisi<br />20<br />MOBILE SENEGAL <br />
  • 42. PREMIER PROGRAMME J2ME<br />21<br />MOBILE SENEGAL <br />
  • 43. PREMIER PROGRAMME J2ME<br />Nous remarquonsiciquenotrechoiceGroupprendcomme option BUTTONet permetd&apos;avoiruneliste avec des boutons à cocher<br />Cependant, ilexisted&apos;autres types d&apos;optionstelsque :<br /><ul><li>EXCLUSIVE : un choixexclusifsuruneliste
  • 44. MULTIPLE : un choix multiple surunelisted&apos;éléments
  • 45. …</li></ul>22<br />MOBILE SENEGAL <br />
  • 46. PREMIER PROGRAMME J2ME<br />Liste exclusive<br />Liste à choix multiple<br />23<br />MOBILE SENEGAL <br />
  • 47. PREMIER PROGRAMME J2ME<br />Un champ DateField <br />Un champ de Gauge<br />24<br />MOBILE SENEGAL <br />
  • 48. PREMIER PROGRAMME J2ME<br />Comme nous l&apos;avons vu dans les écrans précédents, MIDP dispose d&apos;un ensemble de classes et bibliothèques pouvant nous servir pour faire un programme adapté à notre quotidien<br />25<br />MOBILE SENEGAL <br />
  • 49. WMA<br />La Wireless Messaging API est un packages optionnel en MIDP et offre des capacités de messageries aux MIDP<br />Ils assurent les mécanismes d&apos;envoi et de réception de messages et sont contenus dans le package java.wireless.messaging<br />WMA est basé sur le CLDC et constitue une sous interface de Connection: MessageConnection<br />Pour l&apos;envoi des messages, MessageConnection utilise des méthodes de type &quot;factory&quot; pour créer des objets<br />Pour la réception, il utilise un mécanisme basé sur les eventListener<br />26<br />MOBILE SENEGAL <br />
  • 50. WMA<br />Les objets Messages doivent implémenter l&apos;interface Message<br />Un Message est composé d&apos;une partie adresse et d&apos;une partie donnée. <br />La partie données peut être du texte ou des données binaires<br />27<br />MOBILE SENEGAL <br />
  • 51. WMA<br />import java.io.IOException;<br /> import javax.microedition.io.Connector;<br /> import javax.microedition.lcdui.Command;<br /> import javax.microedition.lcdui.CommandListener;<br /> import javax.microedition.lcdui.Display;<br /> import javax.microedition.lcdui.Displayable;<br /> import javax.microedition.lcdui.Form;<br /> import javax.microedition.lcdui.Gauge;<br /> import javax.microedition.lcdui.Ticker;<br /> import javax.microedition.midlet.MIDlet;<br /> import javax.microedition.midlet.MIDletStateChangeException;<br /> import javax.wireless.messaging.MessageConnection;<br /> import javax.wireless.messaging.TextMessage;<br />28<br />MOBILE SENEGAL <br />Test avec WTK<br />
  • 52. WMA<br />public class BonjourGoree extends MIDlet implements CommandListener{<br /> //Creation d&apos;un form <br /> private Form goreeForm;<br /> private Command mSend;<br /> private Command mExit;<br /> private Display myDisplay;<br />public BonjourGoree() {<br /> }<br />protected void destroyApp(boolean arg0) throws <br />MIDletStateChangeException{<br /> }<br />29<br />MOBILE SENEGAL <br />
  • 53. WMA<br />protected void pauseApp() {<br /> }<br />protected void startApp() throws MIDletStateChangeException {<br /> goreeForm = new Form(&quot;Goree Bar Camp Envoi de Sms&quot;);<br /> //Initialisation des commandesd&apos;envoi et de sortie<br />mExit = new Command(&quot;Quitter&quot;, Command.EXIT, 1);<br /> mSend = new Command(&quot;Envoyer&quot;, Command.SCREEN, 0);<br />goreeForm.addCommand(mExit);<br />goreeForm.addCommand(mSend);<br />goreeForm.setCommandListener(this);<br /> // Utilisation d&apos;un Ticker<br /> goreeForm.setTicker(new Ticker(&quot;Gorée BarCamp 2010&quot;));<br />myDisplay = Display.getDisplay(this);<br />myDisplay.setCurrent(goreeForm);<br /> }<br />30<br />MOBILE SENEGAL <br />
  • 54. WMA<br />public void commandAction(Command arg0, Displayable arg1) {<br /> if(arg0 == mSend){<br /> new Thread (new Runnable(){<br /> public void run() {<br /> sendText(&quot;+5550001&quot;,&quot;Bienvenue à Gorée&quot;);<br /> }<br /> }).start();<br /> }else if(arg0 == mExit){<br /> try {<br /> destroyApp(true);<br /> } catch (MIDletStateChangeException e) {<br /> e.printStackTrace();<br /> }<br /> notifyDestroyed();<br /> }<br />}<br />31<br />MOBILE SENEGAL <br />
  • 55. WMA<br />public void sendText(String address, String text) {<br /> MessageConnection mc;<br /> try {<br /> mc = (MessageConnection) Connector.open(&quot;sms://&quot; + address);<br /> TextMessage tm = (TextMessage) mc<br />.newMessage(MessageConnection.TEXT_MESSAGE);<br /> tm.setPayloadText(text);<br /> mc.send(tm);<br /> } catch (IOException e) {<br /> e.printStackTrace();<br /> }<br /> }<br /> }<br />32<br />MOBILE SENEGAL <br />
  • 56. WMA<br />33<br />MOBILE SENEGAL <br />
  • 57. WMA<br />34<br />MOBILE SENEGAL <br />
  • 58. LES WMA<br />De la même maniére, il exite une méthode de réception des messages. Mais cette fois, on implémente MessageListener et on crée une méthode notifyIncommingMessage(). <br />35<br />MOBILE SENEGAL <br />
  • 59. LES RMS<br />Les RMS (Record Management System) sont des mécanismes de stockage persistants. Ce sont des modèles très simples et utilisent des enregistrements. Il sont gérés par le package java.microedition.rms. <br />Une telle base de données est appelée RecordStore et est modélisée par une classe de même nom. Elle posséde des opérations usuelles telles que add, delete, get, set,…<br />Dans une MIDletSuite, plusieurs RecordStore peuvent coéxister, avec la possibilité de communiquer entre eux. <br />Dans un RecordStore, toutes les opérations sont atomiques et chaque enregistrement possède un identifiant, le recordId de type entier.<br />36<br />MOBILE SENEGAL <br />
  • 60. LES RMS<br />L&apos;utilisation des RecordStore repose sur:<br /><ul><li>openRecordStore(…)
  • 61. closeRecordStore(…)
  • 62. Des méthodes
  • 63. Des interfaces</li></ul>37<br />MOBILE SENEGAL <br />
  • 64. LES RMS<br />L&apos;interface RecordListenergére la réception des opérations de records par les méthodes: <br />public void recordAdded(RecordStorerecordStore,intrecordId)<br />public void recordChanged(RecordStorerecordStore,intrecordId)<br />public void recordDeleted(RecordStorerecordStore,intrecordId)<br />38<br />MOBILE SENEGAL <br />
  • 65. REFERENCES<br /><ul><li>J2ME (MIDP) de A. HANGAY et Y. Guyomarch
  • 66. Mobile Training de Dr. ChristelleSCHARFF
  • 67. http://mobilesenegal.com</li></ul>39<br />MOBILE SENEGAL <br />

×