RSS Feed

Archive de January, 2010

NormandyJUG – et de cinq

20 January 2010 par SeB 5 commentaires »

Cette fois ci je m’y suis pris assez tôt pour vous faire un compte-rendu de la réunion du mois de janvier du NormandyJUG.

Le changement d’année s’est accompagné d’un changement de décors puisque cette réunion a eu lieu à l’UFR Sciences et Techniques du Madrillet. Cette soirée avait de quoi plaire avec le thème Java EE 6 et Glassfish. Initialement, la réunion devait s’organiser ainsi :

Au final, il s’est avéré que les deux présentations ont fusionnées et nos deux intervenants ont alterné les présentations des nouveautés de Java EE 6 au travers d’une quinzaine de démonstrations qui tournaient sur Glassfish.
Pour ceux qui ont raté l’événement, Java EE 6 est sorti le 10 décembre 2009 et regroupe actuellement 28 spécifications. Cette nouvelle version apporte sont lot de nouveautés qui raviront de nombreux développeurs parmi les suivantes :

  • Le prunning indique qu’une spécification peut disparaitre dans une prochaine version de Java EE.
  • Les profiles définissent des sous-ensembles ou sur-ensembles de JEE (un peu comme le fait JME). Aujourd’hui, il existe le profile Web Profile.
  • Les EJB Lite.
  • La normalisation du nommage JNDI.
  • Tout est Managed Bean. Avec Managed Bean 1.0 n’importe quel objet est une sorte de POJO EE qui autorise des concepts fondamentaux : cycle de vie, injection et intercepteurs.
  • La mise à jour majeure de JPA 2.0 apporte des améliorations essentielles :
    • Mapping de liste de type simple
    • Embeddable récursif
    • Amélioration de la gestion des Maps
    • Enrichissement du JPQL
    • Normalisation du persistence.xml
    • Lock pessimiste
    • Une criteria API (enfin !)
    • Cache
    • Etc…
  • Servlet 3.0 n’apporte pas grand chose de nouveau :
    • Annotations
    • Extensions via des fragments ou une API
    • API de configuration
    • FileUpload
    • Support de la sécurité
  • Quelques nouveautés intéressantes dans EJB 3.1 :
    • Intercepteurs configurable comme ça se fait en AOP
    • Interface optionnelle pour les EJBs locaux
    • EJBs asynchrones
    • Paquetage dans un WAR possible pour EJB Lite
    • Un nouveau Timer Service qui reprend les bonnes idées de cron
    • EJB Singleton
    • Une container API pour disposer d’un conteneur embarqué
  • JSF 2.0 :
    • Utilisation des facelets
    • Pas de dépendance avec Servlet 3.0
    • Les fichiers de configurations deviennent optionnels
    • Composants et composants composites
    • Amélioration des traces d’erreur
    • Standardisation de l’Ajax via le JavaScript et les tags
    • Bean Validation
    • Template
  • Bean Validation 1.0 permet d’écrire des règles métier une seule fois et de les utilise partout (couche JPA et JSF aujourd’hui). Des règles simples sont pré-définies mais il est possible de créer ses propres règles personnalisées.
  • REST n’a pas été oublié avec JAX-RS 1.1. Tout se fait simplement avec des annotations (comme les web services) : support des mimes types, paramètres, EJB, …
  • Le CDI/DI permet de réaliser un couplage lâche avec un typage fort. Cette spécification définie également la notion de porté en introduisant une nouvelle : la conversation. Cette dernière permet de résoudre la problématique de scénario concurrent sur une interface web (ie pour une utilisation multi-fenêtre ou multi-onglet).

Même si je ne suis pas un très grand fan des annotations, je dois avouer que cette nouvelle version de Java EE est très séduisante et donne envie de passer le plus rapidement possible sur un serveur d’application implémentant Java EE 6.

J’ai essayé d’être le plus concis possible mais il y a tellement de chose qui ont été présentées… J’espère vous avoir donné également envie d’utiliser Java EE 6. Je tiens enfin à saluer Antonio et Alexis pour leur bonne humeur et la qualité de leur prestation !

lire la suite…

 

NormandyJUG – ça fait quatre

15 January 2010 par SeB 2 commentaires »

Je vais arrêter de m’excuser pour le retard… Je souhaite juste vous faire un retour rapide sur la réunion du mois de décembre du NormandyJUG.

Cette réunion a eu lieu comme lors de la précédente réunion à l’eXia/CESI. C’était une soirée assez variée puisque trois thèmes bien différents ont été abordés :

La présentation d’Android était faite pour les personnes qui ne connaissaient pas la plate-forme Android. Un état de l’art des différents smartphones a été fait. Puis l’environnement de développement a été décrit dans ses grandes lignes.

La seconde partie avait pour titre : “GWT avancé“. Malgré qu’il était mal en point, Youen a tenu à présenter la nouvelle version de GWT. Je vous passe le nouveau Development mode et l’UiBinder pour vous expliquer un peu la raison d’être de GWT 2.0 : l’optimisation des temps de chargement. En effet, une application GWT devient très vite très grosse. Or, toute l’application est chargée dès la première page. Ce qui peut alors prendre un certain temps. La communauté a demandé de trouver une solution à ce problème. Et Google a proposé une solution : le code splitting. Afin de pouvoir découper le code d’une application en plusieurs morceaux, il faut procéder à un découplage du code. C’est pourquoi l’Event Bus a été ajouté est recommandé dans GWT 2. Alors que nous avons l’habitude d’utiliser le modèle de conception MVC, l’Event Bus permet de mettre en place le modèle de conception : le MPV. Ce modèle donne les bonnes pratiques pour réaliser un couplage faible et donc de réduire les dépendances entre les composants.

Enfin, la dernière partie était une très bonne présentation de ce qu’est et permet de faire JSF. Je peux même dire que cette présentation de JSF 2.0 m’a presque réconcilié avec JSF. Je m’étais arrêté à la version 1.2 assez rapidement par déception. Je pense tout de même que ce framework reste à destination d’applications de type back-office.

Cette nouvelle réunion du NormandyJUG est passée à deux doigts de se transformer en réunion Google… Heureusement que JSF était là pour rattraper le coup ! ;)

lire la suite…

 

Android – avoir accès à une carte mémoire dans l’émulateur

14 January 2010 par SeB Pas de commentaire »

Cette application utilise la carte mémoire insérée dans le téléphone. C’est souvent le cas pour stocker des fichiers volumineux ou des fichiers que l’utilisateur est susceptible de vouloir récupérer. Lors du développement d’une application pour Android, les premiers tests se font dans l’émulateur. Or par défaut, l’émulateur n’a pas accès à une carte mémoire. Bien entendu, les auteurs du SDK pour Android ont prévu cette utilisation.

La carte mémoire sur Android est un système de fichier à part entière. Il faut donc créer une image de système de fichier qui sera utilisée par l’émulateur. Pour cela, placez-vous dans le sous-répertoire tools du SDK et exécutez la commande suivante :

mksdcard.exe -l mysdcard 128M sdcard.img

Cette commande a créé l’image d’une carte mémoire de 128Mo. L’image se trouve dans le sous-répertoire tools avec le nom sdcard.img mais peut être placée là où vous le souhaitez.

Une fois l’image créé, il faut indiquer à l’émulateur de l’utiliser. Lancez Eclipse et allez dans “Run configurations…”. Sélectionnez la configuration de votre application et allez dans l’onglet “Target” ou “Emulator” puis saisissez l’option suivante dans le champ “Additional Emulator Command Line Options” :

-sdcard <SDK_INSTALL_DIR>toolssdcard.img

N’oubliez pas de remplacer <SDK_INSTALL_DIR>\tools\ par le chemin complet du répertoire où se trouve l’image que vous avez créé. Cliquez sur “Apply” puis “Run”. Laissez l’émulateur se lancer et vous verrez qu’il y a une carte mémoire de 128Mo dans votre émulateur Android maintenant. ;)

A vos développements !

 

Débloquer son téléphone Android avec le code PUK

13 January 2010 par SeB 5 commentaires »

Vous avez bloqué votre téléphone Android en saisissant plusieurs fois un code PIN erroné ?

Pour le débloquer, vous avez besoin de votre code PUK. Si vous ne l’avez pas, vous pouvez le demander à votre opérateur mobile. Sur l’écran de saisie du code PIN, saisissez la séquence suivante :

**05*<Code PUK>*<Nouveau Code PIN>*<Confirmation Nouveau Code PIN>#

Essayez de mémorisez votre nouveau code PIN maintenant ! ;)

 

HTC Hero – tout sur le mode root avec Android

12 January 2010 par SeB 1 commentaire »

Les utilisateurs et bidouilleurs Android ont la possibilité de passer en mode root ou rooter leur téléphone. A quoi cela peut-il bien servir ? Ce mode permet d’accorder aux applications les droits du super-utilisateur comme sur les systèmes Unix ou GNU/Linux. Cela ouvre des nouvelles perspectives aux applications (accès aux ressources sécurisées, overclocking/downcloking, etc…). L’activation des droits root pour toutes les applications peut faire peur. Heureusement, il existe une application, nommée Superuser, qui permet de demander l’autorisation sur le téléphone à chaque fois qu’une application nécessite l’utilisation des droits root.

Passer en mode root

Afin de passer en mode root, vous devez avoir le SDK pour Android d’installé sur votre machine et le “Débogage USB” doit être activé sur le téléphone.

Branchez au moyen du cable USB votre téléphone sur votre ordinateur. Passez le téléphone en mode fast boot (allumez le téléphone en maintenant la touche Retour appuyée).

Copiez dans le sous-répertoire tools du SDK le fichier recovery-RA-hero-v1.5.2.img et le fichier Superuser.apk. Allez dans ce répertoire et exécutez la commande suivante pour charger l’image du recovery :

fastboot boot recovery-RA-hero-v1.5.2.img

Le téléphone va se lancer avec un nouveau menu. Toujours sur votre machine, exécutez les commandes suivantes :

adb shell mount /system
adb shell cat /system/bin/sh /system/bin/su
adb shell chmod 4755 /system/bin/su

adb push Superuser.apk /system/app/

adb shell reboot

Voila, votre téléphone est rooté ! :)

Annuler le mode root

Et maintenant ? Si vous souhaitez revenir en arrière et unrooté votre téléphone, c’est tout à fait possible. Pour cela, redémarrez en fast boot, chargez l’image du recovery puis exécutez les commandes suivantes :

adb shell mount /system
adb shell rm /system/app/Superuser.apk
adb shell rm /system/bin/su

adb shell reboot

C’est bon, votre téléphone n’est plus rooté. Sans regret ? :P

Pour finir

Je ne saurais que trop vous recommander de faire une sauvegarde votre système avant de faire ce genre de manipulation. Car même si la modification est aisée et simple, une erreur est si vite arrivée !

Je tiens également à remercier Artisan numérique pour son article sur le mode root qui explique plus en détail la procédure. De plus, si vous cherchez des informations dans ce domaine, n’hésitez pas à faire un tour dans le forum HTC Hero sur XDA.

Enfin, sachez qu’il existe une méthode alternative pour passer en mode root. Cette méthode utilise l’application FlashRec et n’a pas besoin du fast boot (qui est bloqué sur certaines versions du HTC Hero).

 

Emulateur Android avec une ROM personnalisée

11 January 2010 par SeB 10 commentaires »

L’émulateur Android est plutôt bien fait. Cependant, il donne des conditions de test assez simples dans le sens où l’environnement est restreint (pas de Market par exemple) et surtout sans aucune personnalisation (comme la couche HTC Sense ou autre). C’est pourquoi, il peut s’avérer très utilise de pouvoir lancer une ROM personnalisée dans l’émulateur d’Android.

Prenons l’exemple de la ROM Cyanogen. Je pars du principe que le SDK pour Android est déjà installé et fonctionnel.

Allez dans le sous-répertoire tools du SDK et exécutez la commande suivante :

android list target

Vous devriez avoir un résultat de ce type :

Available Android targets:

id: 1 or "android-2"

Name: Android 1.1

Type: Platform

API level: 2

Revision: 1

Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P

id: 2 or "android-3"

Name: Android 1.5

Type: Platform

API level: 3

Revision: 1

Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P

id: 3 or "android-4"

Name: Android 1.6

Type: Platform

API level: 4

Revision: 1

Skins: HVGA (default), QVGA, WVGA800, WVGA854

Notez l’id de Android 1.5 qui correspond à la version d’Android de la ROM Cyanogen. Dans cet exemple l’id vaut 2.

Maintenant saisissez la commande suivante en remplaçant le 2 par la valeur de l’identifiant que vous avez noté :

android create avd -n cyanogen365 -t 2

Le programme vous demande si vous souhaitez personnaliser le profile matériel de l’émulateur. Si vous ne savez pas de quoi il en ressort, laissez la réponse par défaut (no). Le profile de l’émulateur est créé.

Récupérez la ROM Cyanogen. Décompressez-la. Vous obtenez un fichier system.img. Copiez ce fichier dans le répertoire .android\cyanogen365.avd qui se trouve dans votre répertoire utilisateur (C:\Documents and Settings\<user>\ sur Windows XP ou C:\Users\<user>\ sur Windows Vista).

Maintenant, il ne vous reste plus qu’à lancer l’émulateur avec la commande suivante :

emulator -avd cyanogen

Le chargement de l’émulateur est un peu lent la première fois mais c’est normal. Une fois démarré, vous pouvez constater que c’est la version Cyanogen qui tourne dans l’émulateur. ;)

Pour ceux qui utilisent Eclipse pour le développement Android, notez qu’il est possible de créer le profile de l’émulateur et de lancer ce dernier à partir d’Eclipse.

Je n’ai pas réussi à démarrer avec succès la ROM du HTC Hero. Que ce soit la ROM officielle ou bien celle générée à partir de mon téléphone. Si quelqu’un a des informations sur le sujet, ça m’intéresse énormément car ce serait très pratique de pouvoir tester certain développement avec la couche HTC Sense via l’émulateur (et donc sans risquer de le faire sur le téléphone).

Je vous laisse vous amuser avec les ROMs personnalisées ! :)

 

Eclipse Maven – Nexus Indexer vide avec le plugin m2eclipse

5 January 2010 par SeB Pas de commentaire »

Je viens d’installer Eclipse 3.5, plus connu sous le nom de Galileo, et le plugin m2eclipse permettant de gérer des projets Maven. Lors de la création d’un nouveau projet Maven, il m’était impossible de sélectionner un archétype car la liste “Nexus Indexer” était vide.

Heureusement, il existe une solution à ce problème. Allez dans le menu “Window” et cliquez sur “Show view > Other…”. Ensuite sélectionnez “Maven > Maven Indexes” et cliquez sur “OK”. Une nouvelle vue “Maven Indexes” s’affiche. Elle doit alors contenir deux dépôts : workspace et local. Faites un click-droit sur cette vue et cliquez sur “Add Index”. Mettez la valeur http://repo1.maven.org/maven2/ pour le champ “Repository URL” et central pour “Display name (optional)”. Enfin, cliquez sur “OK”. Eclipse va alors lancer le traitement “Updating indexes”. Une fois ce traitement terminé, vous pourrez créer un nouveau projet Maven et sélectionner un archétype puisque la liste “Nexus Indexer” ne sera plus vide.

Vous pouvez continuer à vous amuser avec Maven sur Eclipse !

 

Menu caché dans Android

4 January 2010 par SeB Pas de commentaire »

Ce n’est ni un secret, ni une exclusivité mais comme tout le monde ne le sait pas encore, il est intéressant d’expliquer comment accéder à ce menu caché.

Pour cela, il suffi d’ouvrir l’application de téléphonie et de composer le numéro suivant : *#*#4636#*#*. Un nouveau menu s’affiche automatiquement. Il permet de consulter des informations sur l’état du téléphone et de la batterie. Bien d’autres codes secrets pour Android ont été découverts depuis…