jeudi 3 juin 2010

Architecture java contre framework légers

Quand on voit la pile complète d'une application Java standard hébergée par un framework MVC, on peut à juste titre être tenté de qualifier ce montage d'usine à gaz ou encore mieux de Rube Goldberg machine.


(Détails )




Or il n'en est rien de tout ca. Chaque couche a sa justification. Un spécialiste JEE arriverait facilement à faire la démonstration du bien fondé de cet échafaudage : ET IL AURAIT RAISON. Le langage JAVA n'est pas pire qu'un autre : il reprend les lignes directrices du C++ à son compte.
Java et JEE mettent en pratique chacun à leur façon cette formule: diviser pour résoudre.
En java: diviser en objet pour résoudre le problème.
En JEE: diviser en couche pour assurer l'indépendance des parties clientes, web métier et données.
Avec un système comme ca, tout le monde trouve son compte:

Les vendeurs de serveur : ce n'est pas pour rien si c'est un fabriquant de serveur qui à eu l'idée de promouvoir ce modèle.

Les sociétés de service : une tel architecture justifie des ressources en nombre, des experts par couche. Cest aussi la certitude de trouver des developpeurs et de banaliser les ressources.

Les informaticiens: une filière reconnue, normée favorise la fluidité du marché du travail dans ce domaine. C'est un confort , une assurance pour un bon déroulement de carrière.

Les DSI: ils ont le sentiment de faire des choix 'raisonnables' , d'investir dans des techniques sures,pérennes et évolutives. Une filière technologique unique , étoffée par un ecosystème fort et couvrant tout le cycle de vie du logiciel.

Avec une telle armada, java aurait du être hégémonique vis à vis des autres langages.
Il n'y a rien de mieux que JEE pour réaliser de manière industrielle des applications métiers traditionnelles.

Alors pourquoi aller contre cette évidence ?.

Le principal reproche à l'ensemble Java/JEE est le coût global d'un projet. Une application est forcement 'lourde' en terme de ressources machines et humaines.

Les développeurs JAVA.

Dans la réalité les développeurs Java ne sont pas aussi interchangeables et banalisés que çà. Le cycle de formation d'un développeur Java est au moins deux fois plus long que celui d'une autre filière (6 mois PHP , 1 an pour le Cobol 2 ans pour le Java/JEE). Avec une remise à niveau tous les 3 ans. La tentation est alors grande de rogner sur le cursus de formation.
Un poste d'architecte applicatif est nécessaire avec un découpage en couche complexifié par le morcellement de l'approche objet. Or les personnes capables de maitriser toute la pile du système et l'architecture globale d'un projet sont très rares et donc chères .
Un investissement dans une équipe complète de développement Java/JEE ne se justifie vraiment que pour des industriels du logiciel. Quel est votre métier: fabriquer du logiciel ou fabriquer des voitures , vendre des aspirateurs ? .

Les applicatifs à produire.

Les applicatifs issus de cette filière se prête mal aux nouvelles contraintes :
Temps de réalisation court pour éviter l'effet tunnel.
Dans l'industrie automobile le temps entre la prise de décision de lancer un nouveau modèle et la sortie du véhicule des chaines doit être le plus court possible. Dans un projet informatique, cette contrainte est identique.
Les 'clients' élaborent des spécifications qui vont fixer les besoins à un instant donné. Hélas, ces besoins évoluent, les donneurs d'ordre vont avoir tendance à anticiper cette évolutions dans l'expression de leurs besoins . Seule une approche itérative avec un cycle court et une mise ne production rapide par 'morceaux' est capable de répondre correctement à ces besoins.

Explosion du volume de données.

L'idée de traiter massivement ses données par un seul serveur est obsolète. La parallélisation est devenue une nécessité. Dans ce mode de traitement, la communication inter-processus , le style de programmation et le traitement des erreurs sont stratégiques. Or Java n'est le langage le mieux adapté pour cela. Plutôt que de faire évoluer Java, les experts préfèrent redessiner un langage à partir de java et de sa très bonne JVM : le SCALA (utilisé par twitter) .

Passage au web 2.0


Pour l'avenir, les développeurs Java......script seront des ressources demandées. Avec javascript, les applications métiers en web surclassent les applications lourdes. Jquery, prototype ou script.aculo.us sont des librairies qu'il faut connaitre. Javascript, et un framework léger (Rails , symphony etc ) sont largement suffisants pour répondre aux besoins de nos utilisateurs.

Un jeune doit il se former à java ou basculer directement vers d'autres technologies ? . La bonne stratégie est de sortir des sentiers battus et de ne pas faire comme tout le monde. Pour une raison bien simple , il sera confronté un jour ou l'autre au java et sa culture alternative sera un plus. d'autant que l'approche MVC par un framework léger permet par la suite d'appréhender plus facilement des architectures complexes.

Demain il y aura trop de developpeurs Java, dans des pays divers et à des prix cassés. en revanche , les architecte-maquetteurs ( développement Agile) seront les rois du marché.

Aucun commentaire: