Le phénomène de dispersion

L' environnement Java est composé des spécifications J2EE + un éco-système Opensource + des implémentations Editeurs. Cela a créé beaucoup de degrés de libertés (certains diront trop !). Si l'objectif affiché par Java est la portabilité, on constate sur le terrain des coûts importants en terme d’intégration, de maintenance et de gestion des évolutions.

Piloté par Microsoft, l’environnement .Net se réduit à un éditeur et son éco-système Opensource, en se concentrant sur l'interopérabilité plutôt que la portabilité. Moins d’acteurs et des investissements qui vont dans le même sens. Résultat : en .Net, les débats se limitent au framework ? Entlib ou bien Spring.Net, nHibernate...

Bref, le phénomène de dispersion observable dans l'avenir pour .Net restera sans commune mesure avec ce que vit le monde Java.

La complexité de l'accès à la plate-forme

La plate-forme Java est reconnue comme complexe, si bien qu'il existe plusieurs initiatives pour la simplifier. Plusieurs constats : Les profils Legacy, C/S et Web Dev ont du mal à développer en Java. Dans la mesure où la plate-forme Java propose un seul langage (Objet), aborder cette complexité est un pré-requis. Conséquence : Java reste réservé à une élite

Microsoft a fait un choix inverse par rapport à Java. Côté Java, Portabilité + 1 seul langage, côté .Net Interopérabilité + plusieurs languages. Le fait de disposer de plusieurs langages permet à l'environnement de s’adapter à différentes populations de développeurs. En effet si C# a la même complexité que Java, la plate-forme .Net ne se cantonne pas à ce choix. Il est possible de développer en d’autres langages (grâce aux Common Langage Specification – CLS), notamment VB.Net. Attention, VB.Net n’apporte pas des adaptations de syntaxe, mais aussi une implémentation différente des technologies du framework .Net. Sur ce point, je vous invite à consulter la session d’Erik Meijer durant les TechDays (VB isNot C#), prévue pour une mise en ligne mi Mars 2008.

Par ailleurs, au delà des langages traditionnels (C#, VB.Net), Microsoft a anticipé l’émergence de langages complémentaires (dit dynamiques, concrètement plus accessibles, plus flexibles) en facilitant leur prise en charge via un module (la DLR – Dynamic Langage Runtime). Avec la DLR, il est possible de proposer des langages adaptés (Python, Ruby …). C'est ce que cherche à favoriser SUN avec le projet DA VINCI MACHINE.

Malgré ces 2 atouts structurels face à Java, les populations traditionnelles de développeurs VB et Access n’y trouvent pas toujours leur compte. Aussi, Microsoft fait ses meilleurs efforts pour continuer la simplication de l’accès à sa plate-forme, et des partenaires tels que WINDEV ou MPOWARE se positionnent sur la commercialisation d'assistants et outils allant dans le sens d'une simplification.

L'impasse de la filière Web unique

Le développement Java en Entreprise se limite pour l’essentiel à une seule filière de développement : le Web. Pourquoi ? tout d’abord parce que c’est la filière historique de Java (Servlets / JSP durant feu l'ère de la nouvelle économie), même si ce n’est pas la filière originelle de Java (TV puis AWT en 1996) . Mais aussi parce que la technologie Java sur le poste de travail est mal intégrée, l’outillage de développement est mal adapté, sans parler des performances de Java sur le client (pour se faire une idée, il n’y a qu’à lancer l’environnment NetBeans que j’apprécie par ailleurs pour son confort par rapport à Eclipse).

Aussi, force est de constater que les projets Java sont quasi tous réalisés pour une cible Web (avec des investissements qui vont dans le sens de la simplification dans ce domaine, cf GWT).

Cette sectorisation Web de Java a un effet de bord pernicieux :  les techniciens Java ont tendance à systématiser les réalisations d’interfaces Web quels que soient les besoins en terme d’Expérience Utilisateur. Le Web pour tous, fini le bon vieux client Desktop. Remarque : cette tendance est encore plus forte en PHP puisque pour le coup, il n’existe pas d’alternative. Dans les faits, je rencontre féquemment des comptes qui ont ainsi privilégié des filières Web plutôt que des filières clients Desktop (beaucoup moins chères en terme de développement, de complexité et de côuts) simplement parce qu’ils n’avaient pas d’alternative en Java ou en PHP (12 onglets avec 30 à 40 champs par onglet dans certaines extrémités alors que la population d'utilisateur est interne, bien maitrisée et  réduite à quelques centaines d'utilisateurs).

A l’opposé, la plate-forme .Net cible toutes les filières de développement : le Web, le Desktop et la mobilité, au travers de technologies adaptées à chaque problématique : ASP.Net AJAX pour le Web, Winforms / WPF / Office Business Application pour le Desktop et le .Net Compact Framework pour les applications mobiles.

Avec des technologies adaptées, le développement .Net est bien plus simple qu'en Java, cela vaut pour le Desktop, les Mobiles et aussi mais dans un moindre mesure pour le Web.