Vision et usages de Java : Témoignages de développeurs

Nos experts affectionnent et maîtrisent différents environnements techniques en développement Web, Mobile, Infra/ Cloud et Data.
Nous poursuivons notre tour d’horizon de ces différentes technologies avec l’univers Java.

CBTW
L’Actualité Tech — Blog CBTW
9 min readJul 29, 2021

--

François Onimus et Karl Accadebled, développeurs Java expérimentés, partagent leur vision et leur approche de ce langage.

Écosystème Java— Photo by Reka Yllies on Unsplash

Rendu public à partir de 1995, Java est un langage de programmation aujourd’hui détenu par Oracle. Sur les 30 millions de développeurs interrogés par Slash Data dans le cadre de son étude State of the Developer Nation du 1er trimestre 2021, 9,4 millions d’entre eux utilisent Java, notamment dans les domaines du mobile et du cloud. Populaire, Java est un langage compilé orienté objet utilisé dans de nombreux domaines et supports, mais qui reste indépendant de la machine employée pour l’exécution.

C’est quoi Java pour toi ?

  • François : Il s’agit plutôt d’un langage d’entreprise qui permet de réaliser des applications robustes et performantes. Le gros avantage c’est qu’il comporte énormément de librairies, ce qui permet d’utiliser beaucoup d’Open Source dans les différents projets sans avoir à réinventer la roue à chaque fois. Il y a déjà des choses qui le font et qui le font très bien, donc autant le réutiliser. Il y a aussi pas mal d’intégrations avec tout ce qui peut exister au niveau des bases de données, des API, … À peu près tout existe du coup c’est pratique d’aller utiliser ces librairies.
    Java c’est aussi un langage stable, ce qui n’est pas forcément qu’une force car il peut avoir du mal à se mettre à jour, au niveau des facilités d’écriture notamment.
  • Karl : Java est un langage de programmation orienté objet, qui permet de faire communiquer des classes entre elles afin de répondre à un besoin fonctionnel. Une classe Java est un fichier qui contient du code rédigé, exprimé par une entité.

Comment as-tu découvert Java ?

  • François : La première fois que j’en ai entendu parler c’était dans mon école d’ingé. On avait un cours sur le Java qui n’était pas forcément passionnant. En amphi on nous montrait des bouts de code qu’on n’avait jamais vus. Et c’était la première fois qu’on parlait d’un langage objet. Après la théorie, il y a aussi eu des exercices pratiques en TP. Mais au premier abord je n’ai pas vraiment apprécié ce langage.
    Je n’en ai plus entendu parler pendant 1 à 2 ans et puis dans mon stage de fin d’études je suis arrivé dans une grande entreprise qui faisait des applications Java. Du coup c’est à partir de là que j’ai appris Java (comme jusqu’alors j’avais vu de la théorie mais sans vraiment pouvoir l’appliquer) et que j’ai appris à l’aimer. J’ai vu tout ce qu’on pouvait faire avec toutes les complexités qu’on ne voit pas forcément en cours.
  • Karl : À la fac, c’était le langage le plus utilisé à ce moment-là.

Quel est ton framework / ton outil de prédilection basé sur Java ?

  • François : En Java il y a un framework nommé Spring Boot qui est écrit en Java également et qui permet de faire énormément de choses sans écrire de code. Lors de la création d’une application, il permet de mettre en place ce qu’on veut que l’application fasse sans avoir à se concentrer sur ‘comment je vais faire un serveur web’, ‘comment je vais faire pour exposer mes données’, etc. Du coup c’est très rapide à mettre en place, donc on peut vraiment se concentrer sur les besoins et fonctionnalités de l’application. C’est très bien intégré dans tout ce qui est architecture micro-services, que j’affectionne, qui permet d’être souple sur plein de points, notamment avec des technos comme Docker ou Kubernetes, Gougle Cloud Platform, Amazon Web Services, … En bref avec Spring Boot on peut faire plein de choses et le framework est aussi extensible avec des librairies.
  • Karl : Spring revient tout le temps, que ce soit Spring Batch, Spring MVC, Spring Boot... C’est une valeur sûre et un framework qui permet de faciliter le déploiement d’applications fonctionnelles sur des serveurs de différents types et de faciliter la réalisation des tests unitaires et des tests d’intégration.
    Spring Boot permet aussi de s’affranchir des serveurs de déploiement avec des embedded servers comme Tomcat, Jetty et Undertow, ... Cela se fait automatiquement via des configurations pré-embarquées. Mais du fait de l’effet boîte noire, nous sommes parfois confrontés à certains problèmes qui peuvent alors être réglés en agissant sur des options et des paramètres.
    Avant d’utiliser un framework, il est aussi intéressant de bien lire la documentation associée et de connaître certaines fonctionnalités de Java qui évite de refaire inutilement certaines choses.

    De manière générale il s’agit d’utiliser les solutions qui répondent au mieux au besoin et aussi d’utiliser des solutions performantes et économes en énergie. Pour ma part je fais attention à ce que mon code soit le moins consommateur d’énergie possible. Et souvent moins de consommation va de pair avec plus de performance, comme avec l’optimisation du nombre de lectures par exemple.

Dans quels cas recommanderais-tu l’utilisation de Java ?

  • François : Pour moi Java ne se prête clairement pas à la réalisation de sites Web. J’ai essayé, car il y a des frameworks comme Tapestry ou autres qui ont essayé de faire des applications où on écrivait en Java avec des petits bouts de templates avec du html. Mais ce n’était pas convaincant.
    Java c’est plutôt pour tout ce qui est côté serveur, pour faire des traitements de données en arrière-plan et servir des APIs qui permettent aux sites web d’afficher des données proprement et clairement.
    Pour moi c’est uniquement back, en tout cas je ne recommanderai jamais de faire du front avec. Même s’il est possible de faire des choses ce n’est pas très utile. Il vaut mieux avoir une petite connaissance en front et le faire en VueJS ou autre plutôt que d’essayer de le faire en Java.
  • Karl : Java est un langage puissant, utile et utilisable sur n’importe quelle plateforme : Mac, Windows, Linux, … Et ce sans modification de code. Sa puissance repose sur l’utilisation de la JVM (Java Virtual Machine) qui fait le lien entre le code et l’OS. Oracle propose régulièrement des mises à jour de la JVM qui amèneront potentiellement à des mises à jour locales du code lors de montées de versions.
    C’est un langage particulièrement adaptatif et simple d’utilisation. Il peut être employé dans énormément de domaines applicatifs.
    Java est utile pour des applications et services en back-end. Il est à noter qu’il y a également une partie liée à l’UI, JavaFX. Côté back Java permet de gérer la communication avec des bases de données (Postgres, Oracle, MongoDB, …), l’interprétation de données, l’intégration métier ou encore de la recherche de données avec des frameworks types Elastic Search ou SolR. Et avec Spring Batch on peut aussi automatiser des tâches récurrentes à un certain rythme, comme la mise à jour de données, sans interface à gérer et avec la possibilité de paralléliser.

Quel a été l’impact de Java dans ta vision du développement ?

  • François : Ça n’a pas vraiment changé mais plutôt modeler ma façon de voir les choses, car en fait j’ai commencé à vraiment développer des applications avec Java. Du coup ça a clairement formaté mon esprit, et aujourd’hui je n’aime pas particulièrement travailler avec d’autres langages plus permissifs, comme notamment JavaScript ou PHP, qui à l’époque n’étaient pas du tout typés.
    J’ai besoin de savoir que ce que j’ai écrit compile et que ça ne laisse pas passer un certain nombre d’erreurs, même si c’est toujours possible d’avoir des bugs. Mais au moins on vérifie que la structure du code est correcte avant de l’envoyer quelque part. Je n’ai pas envie de découvrir le problème en arrivant sur la page sans savoir pourquoi.
    Ma vision du développement s’est forgée avec Java et donc avec ses avantages. J’apprécie la qualité de code et les langages compilés pour être sûr de ce que je fais et pour pouvoir faire plein de tests.
    Après si je devais faire une application aujourd’hui je la ferai en Kotlin. J’ai découvert Kotlin il y a 3 - 4 ans pour faire des applications mobiles et micro-services. Ça tourne sur une JVM, donc en soi le code qui est exécuté sur le serveur est exactement le même. Par contre tout vient de comment on écrit le code et pour le coup c’est beaucoup plus agréable. On écrit du code beaucoup plus facilement et clairement. Après derrière ça fait exactement la même chose donc il n’y a pas de problème particulier de compatibilité.
  • Karl : C, Delphi, Assembleur, C++, … Chacun m’a apporté une façon différente de voir les choses. Mais ce que je retiens c’est que chaque langage est adapté à un type de besoin. Il faut donc bien réfléchir au besoin pour choisir le bon langage.
    Pour ma part Java est un langage qui me correspond car c’est un langage de programmation orienté objet. C’est un langage strict, c’est-à-dire qu’on ne peut pas faire tout et n’importe quoi avec. Il y a des garde-fous. Et dans cette façon de faire, Java est le langage le plus simple à appréhender. De plus il évolue toujours puisque j’ai démarré avec JDK 6 et que nous sommes aujourd’hui à JDK 16.

Pourquoi devrait-on apprendre à développer en Java ?

  • François : Pour quelqu’un qui souhaite travailler côté back, il y a beaucoup d’entreprises qui utilisent ce langage-là, notamment grâce à tout ce qu’il est possible de faire via les frameworks qui existent comme Spring Boot et l’intégration à des plateformes de conteneurisations.
    Il y a aussi plein d’autres langages, comme le Node ou Python, mais je recommande Java pour quelqu’un qui veut faire du code sûr sur une plateforme plutôt back, côté serveur, afin de faire du code de qualité et avoir accès à toutes les librairies. La force de Java c’est qu’il existe depuis très longtemps, donc il y a déjà beaucoup de choses qui ont été créées pour nous faciliter la vie.
  • Karl : Il s’agit d’un langage facile à appréhender. Après il faut tout de même avoir une façon de penser qui corresponde à la programmation et une certaine aisance à comprendre l’algorithme. Si c’est le cas, alors Java reste très accessible, surtout avec l’utilisation de frameworks. Sans être expert et avec des tests unitaires, on comprend facilement le fonctionnement. De plus c’est un langage typé, qui apporte donc un cadre et permet de limiter les erreurs.

Quel est le ‘truc en plus’ de Java et de ses frameworks ?

  • François : Par rapport à d’autres langages back, il apporte de la stabilité et de la fiabilité. Je travaille dessus depuis des années et il arrive très rarement qu’on tombe sur un problème dans l’exécution du code Java, mis à part si c’est nous qui avons écrit n’importe quoi. Il y a des serveurs qui sont démarrés depuis des années et qui ne sont jamais redémarrés ensuite puisqu’il n’y a pas eu de correction à faire dessus et qu’ils tournent très bien.
  • Karl : Avec Java il n’y a pas besoin de gérer la mémoire. Ce qui est un poids en moins à gérer en tant que développeur. Avec Java on indique ce dont on a besoin, puis la gestion de la mémoire se fait de façon autonome. Il y a un garbage collector qui parcourt le code et libère automatiquement de la mémoire en supprimant les objets qui ne sont plus utilisés et auxquels on ne fait plus référence.

Quelles sont les limites de Java ?

  • François : Ce sont les limites de n’importe quel langage typé : il faut faire les choses proprement. Ce n’est pas forcément une contrainte, mais du coup ça va apporter un peu de lourdeur à écrire, surtout si l’on n’y est pas habitué. Il faut être rigoureux et faire attention au typage, ce qui peut être vu comme une limite par certains.
  • Karl : Je n’en vois pas forcément.

Nos experts techniques évoluent également sur d’autres environnements web. Vous pouvez découvrir leur retour d’expérience dans ces articles :

Nous publions régulièrement des articles sur des sujets de développement produit web et mobile, data et analytics, sécurité, cloud, hyperautomatisation et digital workplace.
Suivez-nous pour être notifié des prochains articles et réaliser votre veille professionnelle.

Retrouvez aussi nos publications et notre actualité via notre newsletter, ainsi que nos différents réseaux sociaux : LinkedIn, Twitter, Youtube, Twitch et Instagram

Vous souhaitez en savoir plus ? Consultez notre site web et nos offres d’emploi.

--

--

CBTW
L’Actualité Tech — Blog CBTW

Nos experts partagent leur vision et leur veille en développement web et mobile, data et analytics, sécurité, cloud, hyperautomation et digital workplace.