Pages

Friday, February 29, 2008

Téléphone Google android

J'attends avec impatience la sortie de téléphones avec la plateforme Android de google.

Grâce aux Mobile World Congress 2008, on voit quelques prototypes de constructeurs faire leur apparition!!!

Voici une vidéo d'un prototype de Texas Instrument :

Javascript vers applet Java

Dans ce post, j'expliquais qu'il était possible de faire un pont entre le monde java dans un applet et du javascript.

Il est aussi possible de faire ça dans l'autre sens, cad, appeler une méthode java dans une applet à partir d'une fonction javascript. Voici un petit exemple de mise en oeuvre :

1 : test/myApplet.java

package test;

import java.applet.Applet;

public class MyApplet extends Applet {

public void init() {
super.init();
System.out.println("init something");
}

public void jsCall(String hello) {
System.out.println("this method is called by a js function and say :"
+ hello);
}

}


2 : test-call.html

<html>
<head>
<title>test applet</title>
<script type="text/javascript">
function callJavaMethod() {
document.javaToJavascriptApplet.jsCall('hello world');
}
</script>
</head>
<body>
<applet id="javaToJavascriptApplet" code="test.MyApplet.class" mayscript
width="0" height="0" codebase="bin/">
</applet>

<input type="button" value="Call a java applet method"
onclick="callJavaMethod();">


</body>
</html>


Il ne reste plus qu'à lancer la page html, cliquer sur le bouton et observer la console java de l'applet :

init something

this method is called by a js function and say :hello world

Thursday, February 28, 2008

Maven 2, recherche de jars

J'utilise et abuse de maven dans les projets java notamment chez mon client. Comment faisait-on d'ailleurs avant la création de cette outil???

Ce qu'on peut parfois lui reprocher, c'est la perte de temps qu'occasionne la définition des dépendances dans le pom : la recherche de dépendances sur les repositorys distant sur le net prend un temps fou même si le système de dépendance transitive permet d'alléger la déclaration des dépendances dans le pom.

Un collègue m'a présenté un site qui me permet maintenant de gagner beaucoup de temps sur cette recherche :
http://www.mvnrepository.com/

Le site propose un système de recherche permettant de trouver une dépendance :

Une fois la dépendance trouvée et dans la bonne version, il fournit le bout de code xml à rajouter pour la déclarer dans le pom! magique!

Wednesday, February 20, 2008

SoapUI : testeur de web service

Je travaille chez mon client à la mise en oeuvre d'architecture d'intégration, notamment SOA et EDA avec des ESBs.

Je viens de terminer une phase de test de montée en charge dans lequel nous avons mis à l'épreuve plusieurs ESBs Open Source du marché.

Plusieurs de nos scénarios concernées la mise en oeuvre d'échanges synchrones à base de web services avec un ESB comme "proxy" intermédiaire. Nous avons développé un injecteur maison permettant de simuler une charge synchrone (appel massif de web services) ou asynchrone (écriture massive de messages JMS).

J'ai néanmoins découvert un outil très sympa : SoapUI
L'outil permet à partir d'un WSDL d'appeler un web service. Ce que je trouve très intérressant dans l'outil c'est la génération d'un message SOAP par défaut qui permet d'appeler le web service. Pour ceux qui n'ont pas eu WSDL en seconde langue au lycée, c'est très appréciable! :-)

En creusant un peu sur les fonctionnalités de l'outil, j'ai découvert qu'en plus de faire des tests unitaires, il permet aussi de mettre en place des tests de charge (multi threading) avec la possibilité de mettre en place tout un ensemble d'assertions.

Architecture Ebay

Vous êtes vous déjà poser la question :"Heu, Ebay, comment ça marche???".

Quand on lit les chiffres annoncés par Ebay en terme de volume de traitement, c'est incroyable.
J'en prends un au hasard : 28 milliards de requête SQL par Jour!!! En novembre 1999, Ebay atteint les limites physiques de croissances des serveurs de Base de données...

On se doute bien qu'avec se genre de problématique, des réflexions sur l'architecture mise en place (et son évolution) est primordiale.

Voici un PDF sur l'architecture d'EBay que j'ai trouvé sur ce post :
http://www.highscalability.com/ebay-architecture
(Le nom du site plante déjà un peu de décor)

google, c'est plus fort que toi


Il n'y a pas encore si longtemps (bon quelques années quand même), quand j'expliquais que j'avais fait une recherche en allant sur le moteur de recherche google on me répondait "goo quoi??"

Tout le monde connait aujourd'hui ce moteur de recherche. Le plus incroyable c'est de voir l'ensemble des services que propose aujourd'hui google.

L'histoire de google est relativement courte mais elle est incroyablement bien remplie!!

Monday, February 18, 2008

Applet java vers Javascript

Le concept de devoir faire un pont entre le monde java dans une applet et le monde javascript peut paraitre bizarre mais il peut s'expliquer...

Alors imaginons pour commencer une application j2EE en client léger typée AJAX. Rajoutons-y ensuite des besoins fonctionnels propres à des centres téléphoniques (call center, hotline) comme le fait d'identifier un client automatiquement par son numéro de téléphone dans une application au moment où l'appel sonne sur le poste téléphonique...

Il existe multiple choix architecturaux pour mettre en place ce type de système.

Une réponse est de faire du polling AJAX pour tester l'arrivée d'un appel. J'ai d'ailleurs expliquer comment faire du polling coté client dans ce post.

Une autres réponses possibles est d'intégrer une applet dans le navigateur qui va écouter l'arrivée des appels et notifier l'application dans le navigateur par l'appel d'une fonction javascript.

C'est à ce moment que cette documentation peut vous être utile :
http://java.sun.com/j2se/1.5.0/docs/guide/plugin/developer_guide/java_js.html

Thursday, February 14, 2008

JEE vs .Net, piqure de rappel

Voici un post comme je les aime...

SOA et EDA

SOA est sur toutes les lèvres. A tel point que trop de SOA peut parfois tuer le SOA :-). Certains responsables informatiques ont maintenant peur de l'entendre ou de le prononcer.

Je travaille actuellement sur les architectures d'intégrations et notamment celles autour des ESBs. La plupart des présentations que j'ai pu voir sur les ESBs les définissent comme une infrastructure permettant de "faire du SOA". "Faire du SOA" implique de mettre en oeuvre des architectures où un applicatif appelle un service d'un autre applicatif de manière synchrone (pour simplifier...). Cette démarche implique alors une dépendance en terme de disponibilité entre les 2 systèmes. Elle implique aussi de déporter les exigences en terme de temps de réponse de l'application consommatrice vers l'application qui fournit le service.

C'est normalement à ce moment que le responsable des applicatifs en production vous dit :"heuuu et comment je fais si je veux que mes applicatifs soit indépendants en terme de disponibilité pour pouvoir continuer à travailler si un d'entre eux crash?..."

EDA permet ce genre de fonctionnement. EDA, pour Event Driven Architecture, propose des échanges asynchrones de messages unitaires (ayant seul un sens métier au sein du SI) au fil de l'eau. Ce type d'architecture permet de rendre indépendant les applicatifs en terme de disponibilités et de performance, tout en offrant la possibilité de diffuser les messages au fil de l'eau dans le SI. La plupart des ESBs permettent de faire de l'EDA même si en général le focus est mis sur les partie SOA qu'offre le bus.

Je pense, et je crois que je ne suis pas le seul (enfin j'espère...), que ces 2 types d'architectures font partis d'un SI moderne.

Vous en pensez quoi???

Voici d'ailleurs un blog intéressant :
http://soa-eda.blogspot.com/
Le nom du blog est assez porteur de sens...

Polling Ajax coté client

Le besoin de faire du Push Http vers un browser est de plus en plus présent.

Une méthode consiste à poller à interval régulier depuis le browser une url pour vérifier l'arrivée d'un nouvel évènement. Voici un exemple coté client de mise en place en utilisant la librairie Ajax Prototype (Ca sert à rien de réinventer la roue à chaque fois) :
/* fonction de lancement du poll http */
function launchPolling() {
new PeriodicalExecuter(executePoll, 5);
}


/* lors de chague poll */
function executePoll() {
var url = 'your url...';
new Ajax.Request(url, {
method: 'get',
contentType: 'application/xml',
onSuccess: function(transport) {
try {
var response = transport.responseText;
if ((response != '') {
/* do something... */
}
} catch(e) {
alert(e.message);
}
transport=null;
}
});
}
Il existe aussi maintenant une évolution sur ce type de polling qui consiste à poller moins fréquemment. Le serveur, sur réception d'une requête de polling, attend avant de retourner une réponse. Ce modèle de programmation s'appelle COMET et est décrit dans un post très intéressant de Thomas Recloux à cette adresse :
http://blog.tartachuc.org/2008/02/12/comet-push-http/

Wednesday, February 13, 2008

GWT en entreprise, oui et reOui!

La version 1.0 de GWT est apparu en mai 2006. Déjà à l'époque je trouvais ce framework web en avance sur son temps. Il m'avait réconcilié avec le développement d'IHM Web que je trouvais trop longue et fastidieuse surtout au moment où je devais mettre les mains dans du javascript pour faire une bidouille... beurk!!

Il s'est maintenant fait sa place parmi la multitude de framework Web aujourd'hui disponible.

Si on me demande aujourd'hui si GWT, pour faire du client léger et portable, peut fonctionner dans un contexte d'application d'entreprise, je dit OUI! En tous cas, je vote POUR intégrer le framework dans la réflexion de choix d'un framework web d'entreprise (si une entreprise à ce type de réflexion...:-)).

GWT, dès sa sortie, se voulait extensible. Encore fallait-il que la mayonnaise prenne et que des librairies graphiques apparaissent. C'est maintenant chose faite!
Pour n'en citer qu'une, prenons par exemple.... heu... il y en a tellement... allez : GWT Ext qui est maintenant en vers 2.0.1.

On peut aussi noter une communauté très active autour de ce framework ce qui est un argument majeur aux yeux des directions informatiques pour permettre de minimiser le risques de se retrouver seul au monde avec un framework bugé et qui n'évolue pas.

Ce qui peut ralentir l'intégration de GWT en entreprise :
  • La méconnaissance du framework... (genre, "il y aura de la pub dans mon application si vous utilisez GWT", si si on ne rigole pas... c'est du vécu...).
  • L'inertie des technologies dans les entreprises. Combien d'entreprises travaillent encore en jdk 1.4.x? (heu je ne dis pas que la version 1.4 c'est pas bien mais sun à commencé son processus de fin de vie sur cette version. Il serait temps de migrer!) Plus les services informatiques sont conséquents, plus il est difficile de mettre en place de nouvelle choses... comme des framework web moderne...

Tuesday, February 12, 2008

Arrêter une JVM dans une console avec Ctrl C, mais qui pense au serveur??

Que ce soit sous windows ou Linux, tout le monde connait bien le ctrl C pour arrêter un serveur ou/et une jvm qui est lancé en mode console.

Voici une façon de gérer ça proprement coté serveur au moment ou la JVM s'arrête.
http://java.sun.com/j2se/1.5.0/docs/guide/lang/hook-design.html

Cela peut permettre d'arrêter proprement votre programme et de faire un peu de ménage...

Monday, February 11, 2008

Présentation de GWT en 60 slides

Voici une présentation très intéressante de GWT. J'aime beaucoup l'aspect prise de recul sur la techno. C'est bien d'arriver à se faire comprendre par d'autres personnes que des geeks...

http://www.ongwt.com/post/2008/02/04/Presentation-%3A-Introduction-to-Google-Web-Toolkit

merci onGwt