Author Archives: Alexis Kinsella

Author Archives: Alexis Kinsella

Un aperçu de l’architecture et des API Java d’Android

Un aperçu de l’architecture et des API Java d’Android

Android propose une API divisée principalement en 3 parties:

  • Le framework Android, qui correspond aux fonctionnalités apportées par le framework Android:
    • L’accès à SQLite, à de la localisation, de l’OpenGL, WebKit
  • L’API Java, qui reprend une parti des API java classiques de J2SE, dont certaines très appréciables:
    • Les NIO, La compatibilité Java 5, dont les annotations, l’accès à la réflexion, les package Concurrent, SQL, Crypto, JUnit, Xml et j’en passe.
  • Les API 3rd Party: Accès Bluetooth, JSon, …

Il faut dire que je n’ai pas encore pris la peine de lire les documentations en détail, donc je ne connais pas toutes les spécifications de la plateforme par rapport au profil J2SE, mais ça a l’air très sympa.

La page d’index des packages Android:

Ci-dessous, une vidéo Youtube de présentation de l’architecture d’Android (Merci à Semp pour le lien):

 

 

Un lien très intéressant sur Développez qui décortique Android au moins en surface:

Eh hop, une bonne claque à MAC et l’IPhone !

Eh hop, une bonne claque à MAC et l’IPhone !

Je pense que cette vidéo va satisfaire les plus curieux ainsi que les plus septiques d’entre vous au sujet de la plateforme de Google, il n’y a pas vraiment besoin de rajouter de commentaires, mais pour résumer on y voit en vrac:

  • 2 modèles de téléphones compatibles Androi, on dira que ça correspond à 2 profils de téléphons différents: un haut de gamme et un entrée de gamme.
  • du Google Map + l’application Google de visionnage en 3D photo des alentours
  • du jeu avec Quake en OpenGL
  • du browsing avec WebKit
  • quelques fonctionnalités système

On y voit également l’équipe d’Android qui présente les deux téléphones (le deuxième est impressionnant! C’est un prototype en plus …), ainsi la vision de Google en terme de mobilité, qui est de créer un système ouvert, tel que Linux l’a été pour le PC.

Pour ma part, je trouve que Google fait très fort, il propose tout ce que j’ai toujours attendu d’une plateforme de développement pour la mobilité. Et pourtant, j’en ai vu d’autres, j’ai donc de quoi comparer : PalmOS, SuperWaba, Compact Framework sur PocketPC, J2ME. Et pas une seule ne semble rivaliser avec ce que Google pourra offrir avec une plateforme comme Android.

Aujourd’hui les plateformes qui permettent de concurrencer Android sont des systèmes directement comme Windows Mobile 6, l’IPhone et Symbian + UIQ avec leur outils de développements, mais leur apprentissage ou leur prise en main n’est pas aisée, ni à la portée de tous.

Je me demande cependant ce qu’il en est de la capacité du système à prendre en charge les appels WebService, ainsi que la capacité du sytème à prendre en charge les API Web qui font aujourd’hui le Web 2.0 .

Android est là, et l’Iphone dans la place…

Android est là, et l’Iphone dans la place…

hello_world_8.pngC’est y est le SDK Google de la plateforme Android est disponible, vous pourrez le trouver à l’adresse suivante:

Pour ce que j’en ai lu pour le moment, je trouve le concept très intéressant, et Google fournit avec Android en quelques sortes un remplaçant au vieillissant J2ME avec son profil MIDP 2.


Plusieurs points positifs sont à noter:

  • Un environnement intégré à Eclipse!
  • Un emulateur de la plateforme.
  • Une API qui semble complète pour le faciliter le debug sur la plateforme.
  • Une base Java bien sûr :D

Il fallait s’en douter, les premiers sceptiques se plaignent déjà: entre autre de ne pas avoir d’accès natif à la plateforme (du moins pour le moment), qu’Android est trop ressemblant à J2ME, pas assez proche du matétiel, bla bla bla… Pour ma part, la programmation moderne ne nécessite pasde manipuler à outrance des ressources natives (peut-être une déformation de vision liée à l’uitlisation de Java). Il est plus intéressant être en mesure d’exploiter des ressources natives à travers des API exposées, et c’est sur ce point que j’attend Google: exposer la richesse du système sur lequel repose le téléphone à travers des API adaptées via leur SDK. S’ils répondent avec succès à ces besoins, il n’y a pas de raison que la plateforme ne soit pas un succès commercial.

Il semble que HTC ait déjà annoncé 3 téléphone compatible Android pour l’année 2008. Si HTC est de la partie, c’est déjà très bon signe! Pour ma part un GooglePhone de ce type me semble bien plus attirant qu’un IPhone tel qu’il existe aujourd’hui.

L’IPhone est un triste exemple de ce que risquerait de devenir la téléphonie:

  • Une téléphone exclusivement explotable sur un opérateur
  • Un téléphone limité logiciellement (pas de MMS, pas de Vidéo, des fonctionnalités générales très limitées, pas de support pour le moment de développement de logiciel)
  • Un téléphone dont les limitations matérielles sont inversement proportionnelle à l’ingéniosité de son interface graphique (GPS, 3G, Vidéo, APN 2MP, et j’en passe)
  • Un téléphone dont les fonctionnalités dépendent d’accords commerciaux : La vidéo avec YouTube, GoogleMap
  • Des forfaits hors de prix à cause de la gloutonnerie financière de MAC
  • Une faille de sécurité plus que douteuse, mais bien pratique pour créer un buzz de l’IPhone.

Un détail me chagrine quand même concernant l’IPhone … Pourquoi ne sortirait-il pas un nouveau firmware, au hasard vers février, qui permettrait à l’IPhone d’être le premier téléphone ‘Android’, en effet, on sait que MAC annonce une plateforme de développement pour l’IPhone en février 2008, l’IPhone repose bien sur un noyau BSD au MAC dérivé de BSD. Pourquoi pas après tout! Android correspond bien à ce que MAC souhaite proposer une plateforme de développement qui isole les ressources du téléphone du développeur par une couche intermédiaire.

Un petit scoop Java…

Un petit scoop Java…

android_robot.gifC’est peut-être passé inaperçu, mais Romain Guy, élevé au rang de demi-dieu des interfaces graphiques Java par certains de mes collègues, a lâché un petit scoop pour ceux qui s’intéressent un minimum à la blogosphère du mon Java. En effet, il avait annoncé il y a quelques semaines qu’il avait été embauché chez Google après avoir été employé quelques temps dans l’équipe de développement de Swing, mais on ne savait pas trop dans quel but. Maintenant c’est fait, puisqu’il a lâché le morceau: il travaille sur le nouveau projet monstrueux de Google (qui continue de déployer sa stratégie machiavélique de domination du monde :D ), j’ai nommé Android.

Entre nous ça promet de belle choses! Et j’espère en apprendre vite plus sur ce projet. La première alpha du SDK d’Android devrait être présentée pas plus tard que ce lundi 12 novembre!

En attendant, je vous laisse vous rendre sur le site du projet pour mieux apprécier:

Seam 2 est enfin sorti!

Seam 2 est enfin sorti!

Non, je ne recommencerai pas avec un jeu de mot pourri sur les Sims, d’ailleurs, je me suis promis de me flageller si j’écrivais encore un jeu de mots aussi « null » (oula, celui là, mérite au moins des coups de fouet) digne des grosses têtes.

Il y a plus important que les jeux de mots, puisque le framework qui se veut résoudre tous les problèmes du développement web en Java vient de sortir en version 2. Et il faut dire que les choses ne sont pas pas faites à moitié, puisque Seam 2 propose entre autre, eh oui, tout arrive une intégration totale avec maven (au diable les générateur type RoR .. Gem et compagnie, vive le Java!), un support du scripting, une intégration totale avec Eclipse et le JBossIDE 2.0, un support complet des Web Services, et j’en passe! Quelle bête de travail ce Gavin! Faut dire qu’il ne chôme pas depuis Hibernate! A croire qu’ils marchent au fouet chez RedHat! … ou bien au RedBull :D

Vous trouverez bien sûr toutes les informations complémentaires sur le site de JBoss à l’adresse suivante:

A noter que JBoss est sorti en version 4.2.2.

Un site très intéressant à visiter:

Il fonctionne avec Seam 2 et présente, on dira l’entourage professionnel proche de Gavin King et leurs projets (Que des pointures).

ExtJS, une API de RIA sérieuse?

ExtJS, une API de RIA sérieuse?

Le framework ExtJS, est une librairie JavaScript destinée à la création d’interfaces utilisateur dont le résultat visuel est assez proche de celui d’Apollo. Ce framework présente l’avantage de ne reposer que sur des technologies standard W3C, donc nul besoin de runtime flash ou java. Cette librairie est sortie récemment en version 2 et semble très bien finie.

Un petit tour sur le site de l’éditeur vaut bien mieux qu’un long discours, je vous invite donc à aller y faire un tour :

Cette librairie est d’autant plus intéressante qu’elle propose une licence LGPL v3, ce qui facilite son inclusion dans de nombreux projets.

Je ne connais pas assez ce type de librairies, mais il se pose à mon avis le problème du référencement du contenu d’applications exploitant ce type de technologies, attention donc à l’utilisation que vous souhaitez en faire.

A mon avis cette librairiea un grand avenir, c’est à mon avis la meilleur librairie de RIA JavaScript à l’heure actuelle.

extjs.JPG

Parmis les autres librairies JavaScript incontournables du momenton notera également JQuery, Prototype ou bien encore Scriptaculous.

Eclipse 3.3 – Nom de code Europa

Eclipse 3.3 – Nom de code Europa

Même si les plus avertis sont au courant, un rappel ne fait jamais de mal, c’est donc demain, le 29 juin, que sort Eclipse 3.3 (Europa). J’ai un peu l’impression que la version 3.3 passe un peu inaperçu, je fais donc un peu de lobbying pour un produit qui le mérite!

De même que Callisto (Eclipse 3.2) l’année dernière, Europa devrait proposer la première version stable d’Eclipse 3.3 + un ensemble de projets dont les sorties sont synchronisées (21 au total: Birt, Tptp, Wtp, Database Explorer, Mylin, …)

A noter que le Red Hat Developer Studio basé sur Eclipse 3.2 , qui est en fait une intégration Open Source de feu le très bon Exadel (Distribution Commerciale Eclipse principalement centrée sur le Web et spécialement les technos JSF), est maintenant disponible en tant qu’ensemble de plugins. JBoss devient donc de plus en plus un membre incontournable dans le monde J2EE et plus particulièrement dans le monde JSF. Cf: Seam, qui n’est autre qu’une intégration du meilleur des technos Jee 5 ( Je ne suis pas sûr qu’on puisse dire que les JSF font parti du meilleur de Jee 5 :D ).

Ca risque d’être un peu compliqué de réussir à télécharger Europa demain sur le site principal d’Eclipse… Vous être prévenu!

Liens:

Cette version est d’autant plus importante qu’elle est la première version qui rassemble autant de projet s stables et de nouvelles fonctionnalités.

A noter:

Une plus grande maturité de nombreux projets:

  • WTP (Web Tools)
  • Birt
  • Database explorer

De nouveaux projets:

  • Dali – Support de JPA
  • Mylin – Intégration des outils de suivi de tâches et de bugtracking : Jira, BugZilla, …

Intégration toujours plus grande, via SWT:

  • Support de Vista
  • Meilleur Intégration sur Mac
  • Intégration des ressources natives dans les Jar SWT

Utilisation automatique du style XP, plus besoin d’utiliser de Manifest.

Atomikos – Le gestionnaire de transaction JTA qu’il vous faut!

Atomikos – Le gestionnaire de transaction JTA qu’il vous faut!

En Java, il est possible de développer des applications faisant appel à des standards J2EE … ou non, d’utiliser l’ensemble des ressources mise à disposition par des serveurs d’applications J2EE… ou non, d’exploiter les technologies EJB … ou non. Cependant, Sun a toujours poussé à utiliser les serveurs d’applications J2EE pour déployer les applications d’entreprises pour en exploiter toutes les technologies proposées par SUN.

Bref, on a le choix de développer des applications qui exploitent les technos J2EE un peu comme on l’entend, mais si on les déploie pas dans un serveur d’applications, on ne pourra pas tirer partie de toutes les ressources offertes par ces derniers. Cela pour procurer un certain nombre d’avantages (Test hors conteneur possibles et simples à mettre en oeuvre), mais on aura plus de mal à assembler toutes les pièces du puzzle.

Par exemple, si vous ne voulez pas développer d’EJB, vous pouvez toujours utiliser des services Pojo Spring. De même si vous ne voulez pas gérer la persistence avec les EJB, vous pouvez toujours en la gérer avec Hibernate ou bien JPA.

De même qu’on peut exploiter des ressources J2EE lorsqu’on déploie une application dans un serveur J2EE, on peut le faire également hors conteneur, mais ceci devient très vite compliqué. Ces possibilités qui n’étaient pas envisageables il y a encore peu de temps, sont encore difficiles à mettre en oeuvre à cause du manque d’exemples et de documentations.

Même s’il est simple d’utiliser des technos telles que des Pools de Threads et de Connections, des MQ ou des DataSources, de gérer des transactions, il est en revanche plus difficile par exemple de gérer des applications clusterisées ou bien de mettre en oeuvres des transactions gérant plusieurs ressources sans serveurs d’applications. Les gestionnaires de transactions JTA permettre de répondre besoin de gérer des transactions gérant plusieurs ressources. Cependant, on les trouve en général uniquement dans des serveurs d’applications, donc même si on construit une applications autour de technos non dépendantes des serveurs d’applications, il faut quand même les déployer dans des serveurs d’applications J2EE, si on veut on veut profiter de transactions 2PC (Two Phase Commit). Nous voila revenu au point de départ: Comment se passer complètement d’un serveur d’applications pour gérer des transactions 2PC?

Les gestionnaires de transactions JTA fournissant une implémentation indépendante sont les suivants:

  • Bitronix
  • Atomikos
  • JOTM
  • JBoss Transactions
  • Jencks (Via les librairies de Géronimo)
  • Le Gestionnaire de trnasaction de Géronimo

Cependant, après vérification :

  • JOTM semblerait à l’abandon, et
  • Jencks, bien qu’intéressant, semble difficile à mettre en oeuvre (De ma propre expérience, peu de matériel et d’explications sont fournies au final pour supporter différentes ressources), ActiveMQ est cependant bien supporté. Personnellement, je n’ai as réussi à mettre en oeuvre des transactions 2PC avec Oracle et ActiveMQ.
  • JBoss Transaction et le Gestionnaire de trnasaction de Géronimo

Pour ma part, je n’ai pas testé Bitronix, et je ne peux donc pas donner d’avis, mais il semblerait qu’Atomikos soit une très bonne solution pour les raisons suivantes:

  • Il supporte un grand nombre de ressources XA (JMS, JDBC, JCA, JMX)
    • Jms: ActiveMQ, OracleAQ, SonicMQ, …
    • JDBC: Tout driver et Bases de donnée XA « compliant »: Oracle par exemple, ainsi qu’un certain nombre de driver ou Base de données pas complétement « Compliant » (MySQL par exemple).
  • Le projet est mature (6 ans d’existance)
  • Le projet est Open-Source, mais propose un support professionnel
  • Il existe un support communautaire plus développé via un forum de support mis en place par la société qui le développe.
  • Une document très fournie sur JTA et les API atomikos
  • Atomikos peut être mis en oeuvre facilement via Spring.
  • Atomikos propose des consommateurs de messages bien plus intéressants que ceux proposés par défaut dans spring. En effet, la classe ‘DefaultMesssageListenerContainer’ poll les ressources JMS (Génération très lourde de traffic – Connections, session, consumer transaction – pour simuler la réception de message. C’est un peu comme si on disait que du pop par intermittance de 10 secondes était du Push Mail pour imager), alors que la classe QueueServerSessionPool attend que le serveur push les messages JMS, ce qui est le pattern de fonctionnement par défaut de JMS pour écouter l’arrivée de messages asynchrones)

Grâce à Atomikos et Spring, il devient possible de déployer simplement une application J2EE hors conteneur tout en gérant des ressources XA telles qu’une base Oracle via un gestionnaire ORM par exemple ou bien un broker JMS tout en gérant ces ressources via des transactions 2PC.

On pourrait facilement imaginer une application Web déployer dans un conteneur Web (Tomcat par exemple) qui contiendrait les technos suivantes:

  • Spring 2 pour l’injection de Dépendence et la glue techniques de l’application
  • Atomikos pour gérer les transaction 2PC (JTA/XA)
  • JPA utilisant des ressource JDBC XA « Compliant » (Oracle, SQLServer, Informix, FirstSQL Enterprise) ou non mais supportés (MySQL / HyperSonic)
  • Un Broker JMS XA « Compliant » (SonicMQ, MQSeries, ActiveMQ, Oracle AQ)
  • Un FrameWork Web quelconque: Struts 1.x/2.x, …
  • D’autres Technos fournies par Spring par exemple: WebService via XFire…

Voici de quoi se mettre un peu de lecture sous la dent:

Le site du projet:

Le forum de support du projet:

Un article sur le site OnJava proposant une introduction sur JTA/XA et Spring:

L’IPhone… Un succès annoncé!

L’IPhone… Un succès annoncé!

Bien qu’on en entende parler un peu partout, et qu’on puisse trouver des infos ou bien des vidéos à tire larigot à propos « de vous savez quoi », je pense que visionner cette vidéo ne pourra pas faire de mal tant elle ramène les autres téléphones portables dans la préhistoire!

iphone_hero_20070621.jpg

http://www.apple.com/iphone/usingiphone/guidedtour.html

Je vous le dis le oup est entré dans la bergerie!

2 liens indispensables si vous voulez en savoir plus:

Sachez dans la foulée qu’un IPhone 3G pour l’Europe serait prévu. De plus, un IPhone 2G serait prévu pour début 2008, il proposerait entre autre du Wifi N, une puce GPS, et un meilleur objectif! Pas mal l’air de rien!

 

 

Quand Google t’attrape…

Quand Google t’attrape…

Pour la nième fois, je me suis décidé à installer un distrib linux, après avoir à peu près tout testé depuis 99 en matière de linux, et n’y être jamais resté plus de 3 mois d’affilé, j’ai enfin trouvé chaussure à mon pied ou plutôt entièrement compatible avec mon ordinateur portable… Depuis toujours, j’ai été enquiquiné par des problème récurrents liés à linux: WinModem, Imprimantes Hp, Raie verte USB de Wanadoo, NTFS en lecture seule, distributions instables, récompilation de noyau, pas de multimédia… Bref cette époque est révolue! Vous pouvez installer linux en toute confiance, si vous n’avez pas le dernier matos chelou. Pour ma part, j’ai installé la dernière distrib Ubuntu Feisty 7.04, et tout est reconnu impeccablement, même pas eu besoin d’ouvrir une seule fois la console ;)

Toutefois, il peut rester un truc embêtant! La messagerie, et ses 4000 messages correspondant à 4 ans d’historique de mail. Sincèrement, je n’ai pas du tout envie de perdre tout ça, ou bien d’ouvrir tous les jours Windows pour utiliser Outlook,et visionné mes mails. Je suis donc parti à la recherche de solutions.

1ère solution: On pop également sous linux, mais on ne supprime pas les messages du serveur. Inconvéninant: les mails s’accumulent sur le serveur, et on arrive rapidement à saturation. Donc, il faut quand même retourner sous Windows de temps en temps pour poper les messages sur Outlook, histoire de ne garder qu’une boîte à lettre…

2ème solution: On les pop définitivement, mais à priori , on éparpillent les mails sur les différents systèmes installés, on est donc pas vraiment avancé.

3ème solution: Passer sous un Webmail Web2.0 à la GMail ou bien un truc du genre. Ayant déjà un compte Live Mail et un compte Gmail, je connais un peu les possibilités des deux. Même si Live Mail est très convivial, il est très loin de la puissanc de GMail. Gmail permet assez facilement d’importer des contacts à partir d’Outlook et de fetcher des comptes pop. Ainsi, il est possible d’unifier toutes vos messageries popables. Mais il reste une problématique, importer les mails existant, et là le problème se corse,… Il n’existe pas de solution reconnue comme étant efficace. La seule solution existante et connue, mais qui n’est pas acceptable pour moi est de transférer en masse ses mails grasse à un logiciel tiers.

Heureusement, il existe en fait une solution efficace à 100% à condition d’avoir le matériel de base: un compte tiers qui fait pop et imap + un logiciel très pratique qui s’appelle ReadPST. Ce petit logiciel permet d’exporter ses boîtes à lettres Oulook vers un compte IMap en respectant les dossiers, les dates de mails et les expéditeurs.

La suite devient clair, il suffit ensuite de fetcher tous les mails exportés avec le fetcher de mail de Gmail. Le tout est joué ou presque… Oui, il y a un petit bemol, en effet le fetcher pop Gmail, fetche les mails par 200 toutes les heures. Il faut donc être un peu patient, mais quel bonheur quand on a ses 3 ou 4 ans de mails exportés dans Gmail!

Je pense que Google a réussi son pari! J’ai craqué, tous mes mails sont chez eux, la gestion de mes favoris aussi, mes flux RSS, mes notes, mes documents Word et Excel, … Bref j’ai été Google-isé! IGoogle pour clore le tou, permet de mettre en page toutes vos Infos! Perso, je dis bravo!

Maintenant, je peux faire mumuse avec mes systèmes sans me prendre la tête!

Bon ok, ça ne permet pas de tout exploser sur son PC, mais d’enléver une épine du pied quand on souhaite installer un nouveau système ou bien quand on doit accéder à ses infos sur un autre PC (au bureau, à la maison, en vacances, …).