L'Etat de Java : où en est la technologie en 2014 ?
Entretien croisé avec le CTO France, le responsable du pôle JAVA et un expert de DigitasLBi

Le , par Gordon Fowler, Expert éminent sénior
NB : cet entretien est en deux parties

S'il y a une technologie de développement qui alimente les chroniques des gazettes (IT et même grand public), c'est bien Java.

Sécurité critiquée ou louée, rachat par Oracle, avantages et faiblesses de la JVM, procès Android, nouveaux frameworks, orientations prises… les sujets ne manquent pas.

À tel point qu'il nous a paru bon de prendre un peu de recul pour dresser un « État de Java », sur le modèle de l'« État de l'Union » en politique, loin du flux continu de news et de « trolls » plus ou moins argumentés qui, à la longue, aveugle.

Nous avons envisagé plusieurs options. Faire cet « État » avec Oracle, par exemple. Mais l'entreprise de Larry Ellison étant partie prenante sur toutes les questions sensibles (GlassFish, Android, mises à jour, etc.), nous avons cherché une autre option. Avec des SSII (ESN) ? L’idée nous paraissait bonne. Jusqu’à ce que nous rencontrions des développeurs de DigitasLBi.

Pourquoi ? D’abord, parce que DigitasLBi – un réseau d'agences de « digitalisation & d'innovation technologique » (6.000 experts dont 300 en France) qui gère des projets globaux pour des marques comme Nissan, eBay, American Express ou La Poste - est totalement indépendant des éditeurs (voir aussi : sa page sur Developpez.com)

Ensuite, parce que cette agence d’un nouveau genre se place à la croisée d’une multitude de chemins (beaucoup plus que les ESN). DigitasLBi fait aussi bien de la communication numérique, du design d’UI que du développement. Et dans le développement pur, l’agence touche aussi bien au web (HTML, CSS, JS) qu’au .NET ou, donc, à Java (sans oublier les bases de données). Simple exemple, DigitasLBi a pris en charge toute la communication numérique de Nissan (site web, applis mobiles, etc.)… mais va jusqu’à concevoir tout l'embarqué de ses véhicules.

Enfin - et surtout - parce que son pôle Java/JEE est un nid d'expertises. Cette équipe d’environ 40 personnes est chapeautée depuis maintenant cinq ans par Romaric Le Bever, doté d'un riche background (e-commerce, ingénieur d’études, chef de projets techniques, etc.) et dont le bras droit est un passionné diplômé de l'Ecole des Mines de Nantes. Les deux, ainsi que le CTO – Arnaud Defrenne – se sont révélés être loin de toute querelle de chapelles malgré plus d'une dizaines d'années de carrière dédiée à leur technologie de prédilection.

Dans la première partie de cet entretien nous avons abordé avec eux la popularité du langage, sa sécurité, Java 7 et Java 8, et le virage vers l’embarqué. N'hésitez pas à nous faire part de vos propres points de vue d’experts et à interagir avec eux (nous savons de source sûre qu'ils gardent un œil sur Developpez.com). La deuxième partie est ici

Developpez.com : Quatre années après son rachat par Oracle, comment se porte Java aujourd’hui ? Vous semble-t-il toujours aussi populaire en France ?

DigitasLBi : Je vous ferai une réponse influencée par ma perception de l’utilisation des technologies Java dans l’univers du marketing numérique. Cette mise en garde effectuée, il me semble que le Java se porte comme un charme. Nous assistons même à une recrudescence des projets web en Java.

Une certaine image de sécurité, fiabilité et de solidité le rend populaire auprès des entreprises industrielles et aussi banques et assurances. Enfin à l’heure où les appareils connectés mobiles se multiplient, où la diversité des systèmes d’exploitation est de mise, finalement Java est un langage de développement multi-device, multi-OS, ce qui est très précieux. Android y est aussi pour quelque chose.

Developpez.com : Certains accusent Java d’être lourd, lent et verbeux. Côté technique, comment voyez-vous le travail d’Oracle et de la communauté sur l’amélioration du langage avec l’arrivée de Java 7, et à l’aube de Java 8 ?

DigitasLBi : Java a été à l’origine conçu comme un meilleur C++ dans les années 1990, incorporant des concepts de SmallTalk, Objective-C et Ada. À cette époque, Internet était balbutiant et la plupart des technologies d’aujourd’hui n’existaient pas.

Java 7 est la reconnaissance qu’un langage unique n’est pas forcément adapté à toutes les situations, et s’est ouvert à des langages dérivés de la JVM avec l’instruction invokedynamic (qui est la 1ère nouvelle instruction JVM depuis Java 1.0 !). Oracle ne reste pas en plan, s’inspirant du meilleur des autres langages pour rendre Java plus productif — je parle ici du Project Coin incorporé à Java 7, et des lambda attendues avec impatience avec Java 8.

Bien évidemment, toute modification substantielle de Java prend du temps (et parfois beaucoup !). Mais je pense que nous avons un équilibre entre évolution et stabilité du langage, ce qui est très important dans le monde de l’entreprise.

Enfin, oui, Java est verbeux, particulièrement face à des langages comme Groovy ou Ruby. Nous supportons ici l’héritage des années 1990.

Par contre, je ne peux pas laisser dire que Java est lent ! Ce qui est lent, ce sont les algorithmes pas toujours très optimisés pondus par certains développeurs (tous langages confondus). Ce qui est lent, c’est la masse de données à traiter, en augmentation constante. Ce qui est lent, ce sont les frameworks et solutions toujours plus complexes, libérant le développeur de considérations bas niveau en cachant la complexité (gain de productivité) mais également le coût associé.

Java en lui-même est grossièrement aussi rapide que le C (ceci n’est pas un appel à troll…). Je teste régulièrement mes applications personnelles sur un vieux Pentium M (en fin de vie) de 2005 ainsi que sur un Raspberry Pi, ce qui me permet de détecter d’éventuel code non optimal.

Developpez.com : Au passage, si l’on ne devait retenir que trois nouveautés de Java 7, quelles seraient-elles ?

DigitasLBi : Je retiendrais principalement les améliorations apportées par Project Coin qui facilitent la vie quotidienne du développeur.

Java 7 a également connu depuis sa sortie en 2011 une évolution « transparente » sur la JVM (début de l’intégration Hotspot et JRockit, notamment les aspects monitoring). C’est à mon sens important pour optimiser au maximum les performances d’applications toujours plus riches.

Developpez.com : Que peut-on espérer pour Java 8 ?

DigitasLBi : Personnellement j'attends de Java 8 de substantielles améliorations tant au niveau de la JVM (continuation de la fusion de HotSpot et JRockit, même si G1 a été repoussé à Java 9) qu’au niveau de la productivité développeur (les lambda, mais également javac multi-threadé).

Malheureusement, pour certains de nos projets, nous ne pourrons passer à Java 8 que lorsque les éditeurs le supporteront officiellement !

Developpez.com : Java a été beaucoup critiqué sur ses failles de sécurité. Vous parait-il plus sûr aujourd’hui, voire très sûr, ou pensez-vous - comme le disent certains - que régler ce problème prendra encore quelques années ?

DigitasLBi : Le sujet de la sécurité est à prendre très au sérieux. La recrudescence des attaques et des piratages est une réalité. D’autre part avec le développement des applications « cloud » nous assistons à une explosions du stockage d’informations personnelles sur les réseaux. L’enjeu est donc doublement important.

Par Java on peut entendre deux choses :

- l’utilisation de Java comme langage Backend ;
- les applets Java compilées et exécutées côté client.

Les technologies utilisées en particulier en backend ont un rôle important dans la sécurisation des applications, quand on compare les différentes options, Java comme framework backend est plutôt bien placé. Néanmoins au-delà de cela, choisir un environnement ne suffit pas. Pour garantir à nos clients des applications sûres, nos propositions combinent des bons choix d’architecture avec exigences sur les processus, la documentation, la fréquence des mises à jours logiciels, et aussi certains services de sécurité qui vont simuler régulièrement des attaques pour éprouver les solutions.

Sécuriser les serveurs c’est une choses, mais côté navigateur c’est un peu plus compliqué.

Developpez.com : Sur ce sujet de la sécurité, Mozilla a désactivé tous les plug-ins par défaut de Firefox 26 (sauf Flash). Les applets Java sont au centre de cette décision. Vous parait-elle bonne ou mauvaise ?

DigitasLBi : À partir du moment où des codes dangereux se diffusent comme des virus à l’échelle de la planète c’est une décision défensive mais sage.

Nous n’utilisons pas cette technique qui tend à disparaître avec l’enrichissement du JavaScript coté client. Le véritable enjeu maintenant c’est garantir l’absence de faille en JavaScript.

Developpez.com : Ces derniers temps, Oracle met beaucoup en avant l’embarqué (Java SE Embedded, Java ME, Java Card sur les cartes à puces, Java TV pour les téléviseurs connectés et les Box, etc.) comment analysez-vous ce mouvement ?

DigitasLBi : Oui c’est le grand retour d’une des principales forces de Java : un langage qui s’exécute sur n’importe quel assembleur grâce à la machine virtuelle Java.

L’explosion du DIGITAL c’est avant tout un très grand cycle d’innovation pour les périphériques. Téléphones, baladeurs, télé numériques furent les précurseurs mais on assiste maintenant à l’exploration systématique du potentiel de connecter tous les objets de la vie de tous les jours… Une balance pour se peser (et suivre son poids avec une appli), une montre pour se localiser et courir avec ses amis, un collier qui localise son animal familier etc…

Cette formidable innovation sur le terrain des périphériques s’accompagne d’une diversité de systèmes d’exploitation très difficile à gérer !
Dans ce monde de diversité il y a une recherche pour des solutions multi-device.

Java apparaît comme une réponse pour les applications. HTML/JS une autre réponse pour les interfaces. Android est un système qu’on voit se répandre dans de nombreux appareils. D’autres systèmes open-source sont aussi très intéressants.


Publications techniques et offres d’emplois de DigitasLBi sur Developpez.com


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de dfiad77pro dfiad77pro - Membre expérimenté https://www.developpez.com
le 11/02/2014 à 18:43
Je ne suis pas du tout convaincu.
Je travail en java et en .net, niveau web ça se vaut mais coté client lourds ,
je suis plus productif en .net.

LA multitude de framework JAVA est intéressante technologiquement mais ça deviens rapidement bordélique.
Avatar de LSMetag LSMetag - Membre expert https://www.developpez.com
le 11/02/2014 à 19:41
C'est une bonne chose d'avoir des avis d'experts essayant d'être objectifs.

Globalement je suis d'accord avec ce qui est dit.

Donc si je comprends bien, il y a beaucoup de développeurs Java qui développent avec les pieds. Sur la plupart des applications Java que j'ai utilisé, j'ai toujours senti une sorte de lourdeur, de latence.
Justement Java se traîne un héritage des années 90, qui le rendent parfois inutilement complexe (tous ces fichiers de configurations...). Honnêtement, j'ai expérimenté récemment Eclipse (j'ai même testé Kepler), c'était une horreur. Long à démarrer, lentissime, peu réactif, colorations syntaxiques et helpers pas tops (il faut toujours aller chercher des Javadocs...). Par contre, même si je sens des latences, je donne un bon point à IntelliJ de JetBrain, qui supporte d'ailleurs Java 8.
C'est clair que c'est verbeux. Ca va changer, mais j'ai souffert avec les Calendar...

Alors peut-être aussi que certains Frameworks sont mal conçus. Car quand on ajoute Maven + Spring + JBoss + AspectJ + JUnit (ou son successeur) + Log4J + ..., les projets deviennent imbuvables je trouve. Il y en a partout, ça met 3 plombes à compiler, il faut déployer ensuite (heureusement on n'a plus trop à écrire les descripteurs de déploiement) ce qui met du temps également, l'autocomplétion met du temps à se dérouler,....

Peut-être que le niveau d'expertise requis pour faire du très bon boulot sous J2EE est supérieur à du .NET. Peut-être que la portabilité du langage peut être un frein niveau performances ? Je ne sais pas.
J'ai récemment porté une appli de Java 7 à C#.NET 3.5. J'ai mis une semaine car j'ai fait beaucoup de copier/coller adapté. Je n'ai pas fait de bench mais le résultat me semblait plus rapide et réactif. Et j'ai surtout remplacé des pages de code Java par des requêtes Lambda de quelques lignes, et les ##### de Calendar par de simples méthodes de la classe DateTime... J'ai en gros divisé la quantité de code par 4.

Par contre, il me semble que MagicDraw UML soit un exemple d'appli Java bien codée. C'est réactif, fonctionnel, ça se lance assez vite,...

Alors voila. Si on me donne l'occasion de me réconcilier avec Java, je ne dirai pas non (une bonne partie de mes études s'est basée sur Java. J'ai appris .NET en lisant des tutoriaux, par curiosité, et puis dans le monde professionnel. Mais contrairement à Java et Eclipse, dès que j'ai ouvert mon premier projet .NET avec Visual Studio (c'était quand même une plateforme de E-Commerce en entreprise), je me suis senti directement à l'aise et j'ai dès le premier jour réussi à corriger des bugs).
Avatar de Johnny P. Johnny P. - Membre actif https://www.developpez.com
le 11/02/2014 à 22:51
Le principal problème de Java c'est un langage assez ancien et qui n'a pas évolué comme on le pourrait le penser voir très tard en outre l'autre problème c'est les sociétés qui utilisent des vieux technos et qui ne veulent pas mettre à jour pour xyz raisons , ce problème n'existe pas avec une solution propriétaire.

Par exemple côté client lourd à mon sens on devrait plus utiliser swing et d'autre UI vieux d'une dizaine d'année et surtout pas adapter à aujourd'hui mais plutôt passer à JavaFX qui est une merveilleuse technologie pour la création d'UI et qui offre ce que le .NET fait depuis des années avec le WPF.

Car quand on ajoute Maven + Spring + JBoss + AspectJ + JUnit (ou son successeur) + Log4J + ..., les projets deviennent imbuvables je trouve.
C'est justement le problème dans l'univers Java , tant que ton application fonctionne , le reste ça importe peu...
Avatar de eclesia eclesia - Rédacteur https://www.developpez.com
le 11/02/2014 à 22:58
On n'attend pas parler de plusieurs éléments marquant, entre autre :
- le départ de la fondation Apache du JCP.
- la fin de la JVM Harmony
- l'arret de OpenSolaris qui était un exellent OS pour java
- les divers forks plus ou moins lié a la politique d'oracle, MySQL,OpenOffice,Hudson,...etc...

Java a toujours été plus qu'un simple language, avec tout un environnement. et depuis 4ans meme si Java est tres présent, il évolu globalement moins vite que sous la direction de Sun, il y avait plus de création et d'innovation. parmis les projets dont on entend parler, javafx, coin, lambda etc... tout cela on en entend parler depuis bien plus de 4 ans.

Quoi de nouveau depuis qu'oracle est la ? ... je n'arrive meme pas a en trouver...

Personnellement j'aime bien java et j'en fais enormement, mais a ce que je vois oracle est en train de couler le navire, ou plutot de repaindre un navire couleur Open-source/Community en une couleur Business. c'est triste, ce qui faisait tout l'esprit de Java.
Avatar de Robin56 Robin56 - Responsable Java https://www.developpez.com
le 11/02/2014 à 23:01
Citation Envoyé par Johnny P. Voir le message
Par exemple côté client lourd à mon sens on devrait plus utiliser swing et d'autre UI vieux d'une dizaine d'année et surtout pas adapter à aujourd'hui mais plutôt passer à JavaFX qui est une merveilleuse technologie pour la création d'UI et qui offre ce que le .NET fait depuis des années avec le WPF.
Ça doit dépendre des domaines mais pour ma part, ça fait un moment que je n'ai pas vu une application professionnelle en Swing. Tout ce qui est application complexe qui reste client lourd tend à se faire en Eclipse RCP. Pour les autres, elles se tournent de plus en plus vers le full web.

Je ne sais donc pas si c'est du au fait que les applications tendent à se centraliser (et avec le web c'est plus pratique), que les gens ont une méconnaissance des nouveautés (JavaFX en est un exemple flagrant) ou que ce genre de technologie est boudé pour une autre raison.

Citation Envoyé par Johnny P.
C'est justement le problème dans l'univers Java , tant que ton application fonctionne , le reste ça importe peu...
Que veux tu dire par là ?
Avatar de eclesia eclesia - Rédacteur https://www.developpez.com
le 11/02/2014 à 23:19
Citation Envoyé par Robin56 Voir le message
Ça doit dépendre des domaines mais pour ma part, ça fait un moment que je n'ai pas vu une application professionnelle en Swing. Tout ce qui est application complexe qui reste client lourd tend à se faire en Eclipse RCP. Pour les autres, elles se tournent de plus en plus vers le full web.
Je fais le constat inverse dans ma boite. Le SWT est au contraire mourrant, pas un contrat le demandant en 6ans de boite.

Pour le web meme constat, la portabilité est toujours problématique et le roulement des librairies suit un cycle de 2 ou 3ans. ce qui force des changements assez radicaux régulièrement ou lors des mises a jours. Nos gros clients ne font que des web-services et ont des applis lourd souvent sur netbeans platforme et déployé en JavaWebStart.
Globalment c'est une augmentation des demandes pour du desktop au détriment du web.
Avatar de Robin56 Robin56 - Responsable Java https://www.developpez.com
le 11/02/2014 à 23:27
Citation Envoyé par eclesia Voir le message
Globalment c'est une augmentation des demandes pour du desktop au détriment du web.
Et c'est dans quel domaine par curiosité, les SIG je suppose ?
Avatar de Népomucène Népomucène - Modérateur https://www.developpez.com
le 12/02/2014 à 9:53
Citation Envoyé par Robin56 Voir le message
ça fait un moment que je n'ai pas vu une application professionnelle en Swing
Je peux te faire visiter mes clients si tu veux
Pour rebondir un peu sur la remarque d'Eclesia, je pense que chaque boîte de développement
a ses habitudes qui correspondent au style des clients donc il n'y a pas de quoi en faire un troll.
Je fais du Swing parce que mes clients ont tous des besoins desktop et c'est devenu ma spécialité.

Ce que je trouve sympa dans Java c'est que je peux toujours faire aboutir les projets du client.
Et je suppose que les participants à cette discussion sont dans le même état d'esprit.
Après, il est normal que chacun "fasse son marché" dans les bibliothèques java en fonction de ses besoins et sensibilités.
Avatar de professeur shadoko professeur shadoko - Membre expérimenté https://www.developpez.com
le 12/02/2014 à 12:23
je bosse uniquement en JavaSE sur un projet scientifique avec des tas d'aspects critiques.
L'accusation de verbosité me fait marrer: heureusement que Java est verbeux! dans un équipe avec des programmeurs éparpillés à différents endroits de la planête il vaut mieux être extrèmement explicite.
Certes j'utilise Groovy pour des maquettes et des scripts mais pas pour des runtime critiques.

Je développe des éléments de framework ... mais aussi j'utilise d'autres framework et là il faut être très vigilant sur les aspects maintenabilité et durabilité des autres frameworks
citation : Maven + Spring + JBoss + AspectJ + JUnit (ou son successeur) + Log4J +
Maven: m'empoisonne la vie mais j'ai pas le choix
AspectJ: utilisé au début ... mais en sommeil
JBoss: était utilisé uniquement pour un besoin ponctuel : JMS -> remplacement par communication JGroups
Spring: éliminé ...j'ai re-écrit cette partie de framework (trop fragile pour ce que l'on fait)
JUnit: éliminé et remplacé par notre propre framework de test (je n'ai jamais compris pourquoi Junit est un "standard": les sources ne sont même pas documentées sérieusement et les fonctionnalités sont bancales)
Log4J: pour des besoins particuliers de logging j'ai voulu faire ma propre librairie ... mais là je me suis planté car la librairie standard de Java (JUL) est un vrai caca de programmation (je m'en suis rendu compte trop tard) ... comme quoi on n'est pas toujours gagnant en s'imaginant être plus astucieux que les autres

moralité: dans un milieu où Python est le langage dominant ... je suis bien content d'avoir Java! Après c'est vrai que le choix des bibliothèques sur lesquelles s'appuyer est un vrai casse-tête stratégique.
Avatar de super_navide super_navide - Provisoirement toléré https://www.developpez.com
le 12/02/2014 à 12:25
Je pense la seul chose qui manque qui devrait faire l'objet d'un JSR , c l'ajout de type structure et tableau comme en c pour alloué des données sur la pile d'execution.
Cela permetrait d'éviter d'utiliser le GC, a d'avoir des fonctions rapide pour manipuler des vecteurs des matrices etc...
Et surtout le langage pour servir pour des applications de bas niveaux comme des drivers etc...
Sinon Lejos (programmation java sur la LEGO NXT ) est un bon example du standard qu'est JAVA et de ca puissance
Contacter le responsable de la rubrique Accueil