La toute première présentation du Toulouse-JUG le 13 mai 2009 !
Le développement sur mobile en J2ME : contraintes, techniques, difficultés, outils et... une pléthore de téléphones pour les tests !
Cette conférence présente le framework Johnny-Five qui permet de programmer des cartes embarquées à l'aide d'un module Node.js. Après un tour rapide du JavaScript et de son fonctionnement, en particulier la programmation fonctionnelle et l'exécution pilotée par les évènements, la présentation décrit Node.js et aborde rapidement son fonctionnement. La troisième partie présente Johnny-Five et plusieurs exemples simples de contrôle d'une LED et de l'utilisation des entrées/sorties numériques et analogiques.
Apprenez à écrire vos macros pour le tableur Excel en Visual Basic. Cette formation couvre les rudiments de programmation ainsi que la découverte de l'API Excel
Ma critique de cette technologie sur http://olegoaer.developpez.com/cours/vba/
In the first module of the Java ME course, you will get a quick overview of the concepts behind Java ME. This includes information on the architecture of Java ME applications and how they differ from Java SE. In order to give you an impression on what is involved in developing for mobile phones using Java ME, the slides also contain basic information on distributing your applications. After this generic introduction, the concept of commands is introduced. In the challenge you will develop, debug and deploy your very first "Hello World" MIDlet.
Contents:
* Java Platform, Micro Edition
* Profiles, Configurations — MIDP, CLDC, CDC
* MIDlet Suites, Manifest, .jad and .jar
* Signing, Obfuscation, Over-the-Air distribution
* IDEs, Emulators
* JTWI, MSA, MIDP 3.0, JavaFX
* Commands
Cette conférence présente le framework Johnny-Five qui permet de programmer des cartes embarquées à l'aide d'un module Node.js. Après un tour rapide du JavaScript et de son fonctionnement, en particulier la programmation fonctionnelle et l'exécution pilotée par les évènements, la présentation décrit Node.js et aborde rapidement son fonctionnement. La troisième partie présente Johnny-Five et plusieurs exemples simples de contrôle d'une LED et de l'utilisation des entrées/sorties numériques et analogiques.
Apprenez à écrire vos macros pour le tableur Excel en Visual Basic. Cette formation couvre les rudiments de programmation ainsi que la découverte de l'API Excel
Ma critique de cette technologie sur http://olegoaer.developpez.com/cours/vba/
In the first module of the Java ME course, you will get a quick overview of the concepts behind Java ME. This includes information on the architecture of Java ME applications and how they differ from Java SE. In order to give you an impression on what is involved in developing for mobile phones using Java ME, the slides also contain basic information on distributing your applications. After this generic introduction, the concept of commands is introduced. In the challenge you will develop, debug and deploy your very first "Hello World" MIDlet.
Contents:
* Java Platform, Micro Edition
* Profiles, Configurations — MIDP, CLDC, CDC
* MIDlet Suites, Manifest, .jad and .jar
* Signing, Obfuscation, Over-the-Air distribution
* IDEs, Emulators
* JTWI, MSA, MIDP 3.0, JavaFX
* Commands
J2ME (Java Platform, Micro Edition) provides a Java platform for resource-constrained devices like cell phones and PDAs. It includes configurations like CLDC (Connected Limited Device Configuration) and CDC (Connected Device Configuration) that define the Java features and APIs supported. Profiles like MIDP (Mobile Information Device Profile) build on these configurations to provide functionality for specific device types. Optional packages can additionally extend the features available to applications.
Interface texte plein écran en Go avec TViewOSInet
Comment créer une application combinant une interface Web et une interface plein écran texte (TUI) avec rivo/tview.
Le code est sur https://github.com/fgm/twinui
Le site du livre est https://osinet.fr/go
Venez voir comment "hacker" des objets de votre maison pour en faire des "objets connectés" en réutilisant vos compétences de développeur.
Des exemples de montages et de code seront présentés, entre autres :
- Comptage électrique (téléinfo)
- Monitoring de température (hacking de station météo radio)
- Contrôle d'équipements (Chauffage, VMC, Volets roulants, ...)
- RaspberryPi, BeagleBone Black et Arduino seront les principaux ingrédients.
Au coeur des applications Web riches, de HTML5 ou des applications Web mobiles, JavaScript est désormais incontournable. Sa communauté très dynamique a contribué à créer un écosystème complet pour répondre aux problématiques courantes de test, qualité du code ou intégration continue comme l'a fait avant elle la communauté Java il y a pas loin de dix ans... Parmi les projets les plus observés du moment, c'est curieusement côté serveur que JavaScript fait le plus parler de lui avec Node.js, un environnement de développement Web qui cultive sa différence.
Téléchargement du Coding Kata :
Firefox OS, le web de demain - Epita - 2014-06-06Frédéric Harper
HTML5 est un pas de géant dans la bonne direction: il apporte plusieurs fonctionnalités dont les développeurs avaient besoin pour créer plus facilement de meilleures expériences web. Il a aussi fait naitre un débat sans fin: applications natives ou applications web! Lors de cette présentation, Frédéric Harper vous montrera comment le web ouvert peut vous aider à créer des applications mobiles de qualités. Vous en apprendrez plus sur des technologies telles que les WebAPIs, ainsi que les outils qui vous permettront de viser un nouveau marché avec Firefox OS et le web d’aujourd'hui.
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
Le web, nouvelle définition : les possibilités étendues de HTML5 marquent un tournant dans le développement de sites et d'applications web riches. Lors de cette soirée, nous ferons une revue des possibilités offertes par HTML5, CSS3 et Javascript, des applications mobiles aux jeux vidéo en passant par la diffusion de médias audio et vidéo.
Présenté par Benjamin Anseaume de Sushee.fr et Erwan Hesry
Présentation de différentes solutions de cross plateform. Conférence d'une heure. Vus des solutions tel que Xamarin, Apache Cordova PhoneGap, Angular2, CodeName One, Xamarin.Forms, React Native, Electron, ...
Comment développer un serveur métier en python/C++cppfrug
Quelles sont les problématiques d'interfaçage, les avantages/inconvénients des langages, la stratégie de code, etc. dans le développement d'un serveur métier ?
Les applications web recourent de plus en plus au javascript, et on commence maintenant à recourir au javascript pour les parties serveur avec des outils comme Node.js TypeScript est un nouveau language permettant d'annoter et de structurer son code javascript, afin d'en faciliter la fiabilité et la maintenance. Dans cette session, nous vous présenterons les bases de TypeScript et comment tirer le meilleur parti de ce nouvel outil dans vos applications.
J2ME (Java Platform, Micro Edition) provides a Java platform for resource-constrained devices like cell phones and PDAs. It includes configurations like CLDC (Connected Limited Device Configuration) and CDC (Connected Device Configuration) that define the Java features and APIs supported. Profiles like MIDP (Mobile Information Device Profile) build on these configurations to provide functionality for specific device types. Optional packages can additionally extend the features available to applications.
Interface texte plein écran en Go avec TViewOSInet
Comment créer une application combinant une interface Web et une interface plein écran texte (TUI) avec rivo/tview.
Le code est sur https://github.com/fgm/twinui
Le site du livre est https://osinet.fr/go
Venez voir comment "hacker" des objets de votre maison pour en faire des "objets connectés" en réutilisant vos compétences de développeur.
Des exemples de montages et de code seront présentés, entre autres :
- Comptage électrique (téléinfo)
- Monitoring de température (hacking de station météo radio)
- Contrôle d'équipements (Chauffage, VMC, Volets roulants, ...)
- RaspberryPi, BeagleBone Black et Arduino seront les principaux ingrédients.
Au coeur des applications Web riches, de HTML5 ou des applications Web mobiles, JavaScript est désormais incontournable. Sa communauté très dynamique a contribué à créer un écosystème complet pour répondre aux problématiques courantes de test, qualité du code ou intégration continue comme l'a fait avant elle la communauté Java il y a pas loin de dix ans... Parmi les projets les plus observés du moment, c'est curieusement côté serveur que JavaScript fait le plus parler de lui avec Node.js, un environnement de développement Web qui cultive sa différence.
Téléchargement du Coding Kata :
Firefox OS, le web de demain - Epita - 2014-06-06Frédéric Harper
HTML5 est un pas de géant dans la bonne direction: il apporte plusieurs fonctionnalités dont les développeurs avaient besoin pour créer plus facilement de meilleures expériences web. Il a aussi fait naitre un débat sans fin: applications natives ou applications web! Lors de cette présentation, Frédéric Harper vous montrera comment le web ouvert peut vous aider à créer des applications mobiles de qualités. Vous en apprendrez plus sur des technologies telles que les WebAPIs, ainsi que les outils qui vous permettront de viser un nouveau marché avec Firefox OS et le web d’aujourd'hui.
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
Le web, nouvelle définition : les possibilités étendues de HTML5 marquent un tournant dans le développement de sites et d'applications web riches. Lors de cette soirée, nous ferons une revue des possibilités offertes par HTML5, CSS3 et Javascript, des applications mobiles aux jeux vidéo en passant par la diffusion de médias audio et vidéo.
Présenté par Benjamin Anseaume de Sushee.fr et Erwan Hesry
Présentation de différentes solutions de cross plateform. Conférence d'une heure. Vus des solutions tel que Xamarin, Apache Cordova PhoneGap, Angular2, CodeName One, Xamarin.Forms, React Native, Electron, ...
Comment développer un serveur métier en python/C++cppfrug
Quelles sont les problématiques d'interfaçage, les avantages/inconvénients des langages, la stratégie de code, etc. dans le développement d'un serveur métier ?
Les applications web recourent de plus en plus au javascript, et on commence maintenant à recourir au javascript pour les parties serveur avec des outils comme Node.js TypeScript est un nouveau language permettant d'annoter et de structurer son code javascript, afin d'en faciliter la fiabilité et la maintenance. Dans cette session, nous vous présenterons les bases de TypeScript et comment tirer le meilleur parti de ce nouvel outil dans vos applications.
Big Data Viz (and much more!) with Apache ZeppelinBruno Bonnin
Slides du talk réalisé à Web2Day 2016 sur Apache Zeppelin (env. dédié à l'exploration des données, avec support de multiples langages, multiples backends)
GraalVM allows building native applications from Java and other JVM languages. It includes a new just-in-time compiler called Graal and the Truffle framework for building language interpreters. GraalVM also includes Sulong, which allows running LLVM-based languages on the JVM. The presenter discussed using GraalVM to build a native executable for a Zookeeper CLI tool called zkstat from Java code using techniques like ahead-of-time compilation with SubstrateVM, configuring reflection, and building a Docker image for distribution.
Inside the JVM - Follow the white rabbit! / Breizh JUGSylvain Wallez
Presentation given at the Rennes (FR) Java User Group in Feb 2019.
How do we go from your Java code to the CPU assembly that actually runs it? Using high level constructs has made us forget what happens behind the scenes, which is however key to write efficient code.
Starting from a few lines of Java, we explore the different layers that constribute to running your code: JRE, byte code, structure of the OpenJDK virtual machine, HotSpot, intrinsic methds, benchmarking.
An introductory presentation to these low-level concerns, based on the practical use case of optimizing 6 lines of code, so that hopefully you to want to explore further!
Rust was initially designed as a systems language. The ecosystem has grown fast, and we can now develop full webaps with it. This talk walks through the various components that make up a simple webapp and how they fit nicely together with the language features.
This talk was given at the DevFest conference in Toulouse, France, in november 2018.
Video in french at https://www.youtube.com/watch?v=9LNnNh63rBI
Sizing an Elasticsearch cluster has to consider many dimensions. In this presentation we go through the different elements and features you should consider to handle big and varying loads of log data.
Elastic - From 50 to 270, how to scale a distributed engineering teamSylvain Wallez
Video (in french) at https://youtu.be/rrlPhedNjbA
Elastic, who develops the popular Elasticsearch, Kibana, Logstash and Beats open source tools, is a "remote first" company. This presentation explains how our distributed software engineering team of 270 people works, and the culture behind it.
How do we go from your Java code to the CPU assembly that actually runs it? Using high level constructs has made us forget what happens behind the scenes, which is however key to write efficient code.
Starting from a few lines of Java, we explore the different layers that constribute to running your code: JRE, byte code, structure of the OpenJDK virtual machine, HotSpot, intrinsic methds, benchmarking.
An introductory presentation to these low-level concerns, based on the practical use case of optimizing 6 lines of code, so that hopefully you to want to explore further!
Presentation given at the Toulouse (FR) Java User Group.
Video (in french) at https://www.youtube.com/watch?v=rB0ElXf05nU
Slideshow with animations at https://docs.google.com/presentation/d/1eIcROfLpdTU2_Z_IKiMG-AwqZGZgbN1Bs2E0nGShpbk/pub?start=true&loop=false&delayms=60000
Introduction au langage Go, avec comparaisons à Java
Présentation donnée dans différents meetups et conférences en 2015 et 2016.
Sources : https://github.com/swallez/golang-talks/
Kibana + timelion: time series with the elastic stackSylvain Wallez
The document discusses Kibana and Timelion, which are tools for visualizing and analyzing time series data in the Elastic Stack. It provides an overview of Kibana's evolution and capabilities for creating dashboards. Timelion is introduced as a scripting language that allows users to transform, aggregate, and calculate on time series data from multiple sources to create visualizations. The document demonstrates Timelion's expression language, which includes functions, combinations, filtering, and attributes to process and render time series graphs.
This document introduces Hazelcast, an open source in-memory data grid for clustering data and distributing applications. Some key points:
- Hazelcast provides a distributed ConcurrentMap that allows putting and getting data in a clustered environment across multiple nodes.
- It offers features like asynchronous operations, data expiration, and filtering data "in grid".
- The system partitions data and replicates it automatically across nodes for elastic scaling and high availability. It can also redistribute data as nodes are added or removed.
- Other features include a distributed event bus for pub/sub messaging, persistent distributed counters and locks for coordination, and an executor service for distributed computing across the cluster.
Lucene - 10 ans d'usages plus ou moins classiquesSylvain Wallez
Retour d'expérience sur 4 projets utilisant Lucene dans des contextes très différents : recherche documentaire, ecommerce, moteur de pub et matching d'affinités musicales
Présentation sur l'open hardware à la conférence Toulibre de novembre 2012. Aperçu des différentes formes d'open hardware, de l'écosystème, des licences et des impacts de cette (r)évolution
Video sur http://vimeo.com/55273355
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...OCTO Technology
par Claude Camus (Coach agile d'organisation @OCTO Technology) et Gilles Masy (Organizational Coach @OCTO Technology)
Les équipes infrastructure, sécurité, production, ou cloud, doivent consacrer du temps à la modernisation de leurs outils (automatisation, cloud, etc) et de leurs pratiques (DevOps, SRE, etc). Dans le même temps, elles doivent répondre à une avalanche croissante de demandes, tout en maintenant un niveau de qualité de service optimal.
Habitué des environnements développeurs, les transformations agiles négligent les particularités des équipes OPS. Lors de ce comptoir, nous vous partagerons notre proposition de valeur de l'agilité@OPS, qui embarquera vos équipes OPS en Classe Business (Agility), et leur fera dire : "nous ne reviendrons pas en arrière".
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO Technology
En cette année 2024 qui s’annonce sous le signe de la complexité, avec :
- L’explosion de la Gen AI
-Un contexte socio-économique sous tensions
- De forts enjeux sur le Sustainable et la régulation IT
- Une archipélisation des lieux de travail post-Covid
Découvrez les Tech trends incontournables pour délivrer vos produits stratégiques.
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
Développement avec Java Micro Edition
1. Développement avec
Java Micro Edition
Toulouse JUG, 12 mai 2009
Sylvain Wallez
sylvain@bluxte.net
2. Sylvain Wallez
p CTO de Goojet
Découvrir et partager le web mobile
→ http://goojet.com/
p Anciennement architecte de Joost,
cofondateur et CTO d'Anyware Technologies
p Expert open source et technologies web,
Membre de la Fondation Apache
p Blog, Twitter, Facebook, LinkedIn, etc
→ http://bluxte.net/
3. Agenda
p Panorama du monde mobile
p Parts de marché
p Typologie des téléphones
p JavaME
p Aperçu des APIs
p Processus de développement
p Problèmes du "vrai" monde
p Conclusion
4. Panorama : parts de marché
p En unités vendues (millions)
Nokia ≈ 40% du marché
Marque Q4 2008 Q3 2008 Q4 07 Evolution
Nokia 113.1 117.8 133.5 -15%
Samsung 52.8 51.8 46.3 +14%
LG 25.7 23.0 23.7 +8
SonyEricsson 24.2 25.7 30.8 -21
Motorola 19.0 25.4 40.9 -54
BlackBerry 6.7
Apple 4.4
Source : Reuters
5. Panorama : tailles d'écran
Résolution : de 38k à 380k pixels
176 x 220 240 x 320 320 x 480 480 x 640 480 x800
(QVGA) (HVGA) (VGA) (WVGA)
6. Panorama : modes d'interaction
Touches (ou pas) et joystick
D-Pad ou joystick, Ecran tactile avec stylet
deux touches "soft menu", soft keyboard, D-Pad.
boutons "home" et "back"
Trackball cliquable,
Trackball cliquable, Ecran tactile,
un bouton "menu",
un bouton "menu", soft keyboard,
un bouton "back"
un bouton "back" bouton "home"
7. Panorama : systèmes d'exploitation
p Symbian p iPhone OS
p Smartphones Nokia, p iPhone, iPod
SonyEricsson, Samsung p Android
p "Series 40" p HTC
pNokia p A venir : Samsung,
p Windows mobile SonyEricsson, Motorola
p HTC, smartphones p Systèmes "inconnus"
Samsung & Motorola p Samsung, LG, Motorola,
p RIM Alcatel, etc.
p BlackBerry
8. JavaME - Introduction
p JavaME = Java pour les petits appareils
p Téléphones mobiles
p Matériel embarqués
p Décodeurs, Passerelles résidentielles
p JavaME est modulaire
p Configuration (puissance du terminal)
p Profil (type de terminal)
p APIs optionnelles (carnet d'adresse, localisation, 3D, etc.)
10. JavaME - Introduction
p Sur les téléphones
p CLDC : connected limited device configuration
p Classes de base, connectivité réseau
p MIDP : Mobile Information Device Profile
p API graphique de base : formulaires et canvas
p Specs minimales :
p 128 ko de RAM, écran 96x54 noir et blanc
11. JavaME - Introduction
p Les APIs optionnelles
p Trop spécifiques pour être comprises dans une
configuration ou un profil
p Exemples :
p Carnet d'adresses – PDA API (JSR 75)
p Envoi et réception de SMS – WMA API (JSR 120)
p Photo et video – MMA API (JSR 135)
p Mobile 3D graphics – M3G (JSR 184)
p Geo-localisation – JSR 179
12. Applet, Servlet... MIDlet !
p MIDlet
p La classe "main" d'une application MIDP
p Dérive de javax.microedition.midlet.MIDlet
→ Cycle de vie défini par des méthodes abstraites
13. Aperçu de MIDP
p Interface graphique : deux API
p API de haut niveau
p Form, TextField, DateField, Choice...
p Fonctionne partout, mais graphiquement très limité
p API de bas niveau
p Canvas : une surface pour dessiner
p Gestion manuelle des événements clavier
p Dépend du téléphone (taille d'écran, couleurs,
transparence, etc.)
14. Aperçu de MIDP
p API graphique de haut niveau
p La Form est un conteneur
p On y ajoute des "Item"
public class MyForm extends Form {
public class MyForm extends Form {
private TextField name;
private TextField name;
private TextField password;
private TextField password;
public MyForm(String title) {
public MyForm(String title) {
super(title);
super(title);
name = new TextField("Name:", "", 20, TextField.ANY);
name = new TextField("Name:", "", 20, TextField.ANY);
password = new TextField("Password:", "", 20, TextField.PASSWORD);
password = new TextField("Password:", "", 20, TextField.PASSWORD);
append(name);
append(name);
append(password);
append(password);
}
}
}
}
15. Aperçu de MIDP
p API graphique de bas niveau
p Ligne, rectangle, arc de cercle
p Texte : 2 polices, 3 tailles
p Et c'est tout !
class MyCanvas extends Canvas {
class MyCanvas extends Canvas {
public MyCanvas() {
public MyCanvas() {
super.setFullScreenMode(true);
super.setFullScreenMode(true);
}
}
public void paint(Graphics g) {
public void paint(Graphics g) {
g.setColor(255, 0, 0);
g.setColor(255, 0, 0);
g.fillRect(0, 0, getWidth(), getHeight());
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0, 0, 0);
g.setColor(0, 0, 0);
g.drawString("Hello There", getWidth() / 2, 0, Graphics.TOP | Graphics.HCENTER);
g.drawString("Hello There", getWidth() / 2, 0, Graphics.TOP | Graphics.HCENTER);
}
}
}
}
16. Aperçu de MIDP
p API graphique pour les jeux
p Layers et tiles : dessin et animation du décor
p Sprite : multiples objets, détection de collision
Sprite
TiledLayer
Sprite
17. Aperçu de MIDP
p Librairies graphiques tierces
p Compensent la pauvreté des
APIs de base
p Offre open source assez réduite
p LWUIT (GPL + classpath exception)
→https://lwuit.dev.java.net/
p J2MEPolish (GPL/commercial)
→http://j2mepolish.org/
p Kuix (GPL/commercial)
→http://kalmeo.org/
18. Processus de développement
p Deux fichiers : jad (descripteur) et jar
Fichiers source
MyMidlet.java image.png MyMidlet.jad
①
javac MyMidlet.jar
②
MyMidlet.class jar
obfuscator
preverify
MyMidlet.class MyMidlet.jar
19. Processus de développement
p Prévérification
p Une JVM vérifie toujours les classes à éxécuter
p Nécessite plusieurs passes et 100 à 150 ko de RAM
p On ajoute dans le .class le résultat des premières passes
p Nécessite une passe et 10 ko de RAM
p Obfuscateur
p Compactage des symboles
p Suppression des éléments inutiles
→ En général, réduction de plus de 50% !
20. Processus de développement
p Outillage
p Sun Wireless Toolkit (WTK)
p Emulateur avec toutes les APIs optionnelles
p EclipseME
p Editeur syntaxique pour le .jad, précompilateur
p MicroEmulator
p Emulateur léger, fonctionne en Applet
p Antenna
p Tâches Ant
p Proguard
p "The" obfuscator
22. La fragmentation
p Fragmentation = différences entre téléphones
p Taille d'écran, de police de caractères
p Saisie au clavier, écran tactile
p APIs optionnelles non indispensables
p Bugs des téléphones...
p Différentes techniques :
p Versions spécifiques de l'application
p Configuration dynamique à l'exécution
23. La fragmentation
p Versions spécifiques
p Branches séparées → maintenance complexe et coûteuse
p Solution : preprocessing à la C
→ Plusieurs versions à partir d'un même source
public void callURL(String url) throws Exception {
public void callURL(String url) throws Exception {
//#if blackberry
//#if blackberry
if (url.startsWith("http")) {
if (url.startsWith("http")) {
Browser.getDefaultSession().displayPage(url);
Browser.getDefaultSession().displayPage(url);
} else if (url.startsWith("tel:")) {
} else if (url.startsWith("tel:")) {
String msisdn = url.substring( "tel:".length() );
String msisdn = url.substring( "tel:".length() );
PhoneArguments call = new PhoneArguments(PhoneArguments.ARG_CALL, msisdn);
PhoneArguments call = new PhoneArguments(PhoneArguments.ARG_CALL, msisdn);
Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, call);
Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, call);
} else {
} else {
throw new ConnectionNotFoundException();
throw new ConnectionNotFoundException();
}
}
//#else
//#else
if (platformRequest(url)) {
if (platformRequest(url)) {
GoojetBrowser.INSTANCE.destroyApp(true);
GoojetBrowser.INSTANCE.destroyApp(true);
}
}
//#endif
//#endif
}
}
24. La fragmentation
p Provisioning platform
p Fournir la bonne version à chaque mobile
p Identification du modèle par le User-Agent
p WURFL : wireless universal resource file
p Effort communautaire des développeurs sur mobile
→ http://wurfl.sourceforge.net/
p 10000 modèles, 500 caractéristiques
25. La fragmentation
p Configuration dynamique
p Choix d'une classe selon les propriétés systèmes ou
l'existence de classes d'une API
try {
try {
Class.forName("javax.wireless.messaging.MessageConnection");
Class.forName("javax.wireless.messaging.MessageConnection");
browser.messaging = (Messaging)Class.forName("com.goojet.WMAMessaging").newInstance();
browser.messaging = (Messaging)Class.forName("com.goojet.WMAMessaging").newInstance();
} catch(Throwable e) {
} catch(Throwable e) {
browser.messaging = new HttpMessaging();
browser.messaging = new HttpMessaging();
System.out.println("No WMA");
System.out.println("No WMA");
}
}
p Avantage : limite le nombre de versions
p Inconvénient : embarque du code inutilisé
26. Optimisation
p Trois axes d'optimisation
p Taille de l'application
p Réduire le temps de téléchargement
p Limiter l'occupation sur le téléphone
p Performance
p Petit processeur, JVM limitée
p Mémoire
p Peu de mémoire, garbage collector lent et bloquant
30. Conclusion
p Mobile : un domaine complexe
p Beaucoup de modèles aux capacités très variables
p Etat actuel
p JavaME : vieillissant, mais encore là pour plusieurs années
p Problèmes de fragmentation
p iPhone et Android : plateformes émergentes
p Fragmentation "ultime" : aucune compatibilité entre systèmes
31. Conclusion
p Quand faire un développement JavaME ?
p Quand ça doit fonctionner partout
p Quand c'est une application "riche"
p Autre solution : l'application web
p Généralisation de l'accès 3G
p Mais énorme fragmentation des browsers
p Pas d'accès aux ressources natives (photos, address book)