Dans cet article


Offres d'emploi

Tags

Quelles technologies pour une application web métier en 2020 ? Java VS C# VS PHP VS Javascript

Quelles technologies pour une application web métier en 2020 ? Java VS C# VS PHP VS Javascript

Java VS PHP VS C# VS Javascript en 2020 : pourquoi ce comparatif ?

A chaque fois que nous réalisons un nouveau projet, nous avons pour habitude de nous poser la question suivante : quelle est la meilleure technologie actuelle adaptée pour ce projet ? On ne vous cache pas que c'est souvent objet de débats passionnés en interne car chaque équipe prêche pour sa chapelle !

Loin de nous l'idée de vouloir trancher de manière franche et définitive la question, nous voulons dans cet article mettre en lumière les arguments de chacun afin que vous puissiez y voir plus clair . De toute façon, nous ne le répéterons jamais assez, il n'y a pas de technologie absolue et indépassable ! Chacune d'elle possède ses atouts ! Et c'est notamment pour cette raison que nous devons nous reposer poser la question "quelle technologie choisir pour réaliser mon application web métier en 2020"

Méthodologie de comparaison entre JAVA, C#, PHP et Javascript

Avant toute chose, nous souhaitons préciser que nous partons du principe que notre application est composée d'une API REST ainsi que d'une application web type Angular, VueJS ou ReactJs.

Ceci implique que nous n'allons pas évaluer les capacités des langages à générer des pages côté serveurs, mais plutôt toutes les questions relatives à "comment faire une super API". Dans ce test, nous aurions pu inclure d'autres technologies telles que Python par exemple, mais nous avons dû faire des choix pour ne pas faire un article fleuve !

Pour ceux qui veulent en savoir plus sur le sujet, nous avons réalisé un podcast pour traiter la question : https://soundcloud.com/axopen/quelles-technologies-pour-une-application-web-metier-en-2020

Maintenant que les règles du jeu sont posées, laissons la parole à notre partisan de JAVA.

Le Java, c'est la vie

Java : simplicité et stabilité

Le Java est un langage qui, rappelons-le, a été pensé pour les cols blanc. Il est facile d'apprentissage, très fiable, très stable et a une longue durée de support pour chaque version.

Java s'est longtemps imposé comme un standard de l'industrie du développement logiciel. Un peu chahuté au début des années 2010, il a bien rebondi avec pas mal d'apports depuis JAVA 9. Très polyvalent, il permet de réaliser simplement de grandes choses.

Généralement, utiliser un framework au-dessus de JAVA permet d'apporter des fonctionnalités indispensables. En interne, nous utilisons particulièrement Spring Boot qui permet de cadrer et de développer très efficacement des API Web avec un conteneur très léger.

Java : le passé et le futur

Avec JAVA, on sait où on va ! Ca pourrait d'ailleurs être le slogan ! Ce que je veux dire par là, c'est que vous savez que le code que vous écrivez aujourd'hui marchera encore dans 10 ans et qu'il sera toujours compatible (de même pour les librairies !). Tout ça fait de JAVA le langage de prédilection pour les applications destinées à être utilisées pendant de nombreuses années. Parce que oui… on ne le dira jamais assez mais la maintenance et les évolutions d'une application sont les clés de sa réussite ! Ces facteurs sont donc à prendre en compte dès le choix de la technologie.

Java : librairies, performances et lenteur au démarrage

Niveau librairies, vous trouverez tout ce qui se fait de mieux sur le marché , avec des connecteurs pour presque toutes les API du marché ! On l'a dit, apprendre JAVA c'est plutôt simple… mais ça peut vite se corser lorsqu'on arrive sur des fonctionnalités avancées. De même, la maîtrise de la JVM peut faire peur pour un non initié (mais pas de panique, ça s'apprend )

Dans les points négatifs, ou peut citer la « lenteur » de démarrage. En effet, lancer une application JAVA prendra toujours quelques secondes. En soit si votre serveur tourne H24 ce n'est pas problématique, mais si vous souhaitez faire tourner votre application sur un service on-demand type Lambda AWS, alors JAVA n’est pas le bon langage.

Par contre, niveau performances, JAVA est très rapide en exécution et offre des outils d'analyse aujourd'hui inégalés sur le marché pour analyser finement ce qui se passe.

Bref, vous l'aurez compris, JAVA c'est de la grosse artillerie, c'est un peu lourd mais ça passe partout !

Le C#, c'est notre destin

C# et .NETCore, le retour en force de Microsoft !

Le C# est un langage de la célèbre entreprise Microsoft. Il est tout aussi facile d’apprentissage, très fiable et stable avec une longue durée de support pour chaque version. Dans le passé, C# a souvent été associé uniquement à Windows… mais cette époque est révolue depuis la sortie du .NET Core ! Le C# est maintenant multi-plateformes et l'ensemble de ses frameworks ont été allégés dans la mouvance des systèmes cloud (Azure).

C#, s'utilise avec des outils géniaux (Nuget, Azure…)

Niveau librairies, avec le système de packages NuGET, Microsoft propose un système fiable qui vérifie les dépendances et les compatibilités entre librairies… et ça, on apprécie !

Bien que les systèmes Windows Server existent toujours et sont toujours aussi complexes à mettre en place et à maintenir , le système cloud Azure est bien pensé et simple d'utilisation. De plus, pour les adeptes des Linux (niveau serveur), .NET Core s'installe et se paramètre avec une facilité déconcertante !

Côté négatif, la migration .NET Framework en .NET Core est quasi impossible pour l'heure… et c'est bien dommage !

En revanche, niveau performances, C# est très rapide en exécution ! Pour conclure, C# est bel et bien revenu au niveau pour être l'un des acteurs principaux dans le monde du web !

Le PHP c'est un vrai langage (maintenant :))

PHP : un langage très populaire !

Le PHP est de base un langage personnel pour un petit site web qui a ensuite été publié en accès libre. Le langage est devenu extrêmement populaire du fait de sa facilité d'apprentissage et de sa souplesse au niveau du code. Wordpress est par exemple basé sur PHP et représente aujourd'hui près de 50% des sites web dans le monde !

Pour la mise en place d'une API web, nous utilisons principalement Symfony qui est aujourd'hui le framework PHP le plus utilisé en France. Dans sa dernière version, Symfony apporte des fonctionnalités indispensables à une API web, en plus d'être un framework stable et simple d'utilisation.

Coté librairies, l'outil Composer permet d'ajouter et de mettre à jour nos librairies tout en vérifiant leurs dépendances et compatibilités.

PHP : c'était lent… mais maintenant, ça va nettement mieux !

En points négatifs, PHP est un langage extrêmement permissif jusqu'à sa version 5.6 contrairement à JAVA et C#, ce qui le rend très instable et l'expose à toutes sortes de bugs très difficiles à corriger. La lenteur de PHP est aussi un gros problème, même si l'utilisation de PHP FPM permet d'un peu contourner le problème.

Mais MIRACLE !!!

Depuis PHP 7, les développeurs de PHP ont réalisé un gros travail en obtenant un +100% niveau performances. Ils ont ajouté une meilleure gestion des erreurs, et surtout, mis en place (enfin) le typage de données! Il y a également un projet en cours concernant la création d'un nouveau langage basé sur le PHP, le P++, qui sera un langage fortement typé avec encore de meilleures performances. Affaire à suivre !

Pour l'heure, PHP est de retour et pour encore très longtemps dans le monde du web !

Javascript, un langage pour les gouverner tous !

Le JS, il est loin le « Callback hell », bienvenue Async/Await !

JavaScript a pendant longtemps eu une mauvaise réputation , notamment dû à son typage dynamique, et également à des phénomènes tels que le "Callback hell" ! Pour rappel, le chainage de callback a créé un code très difficile à lire et à comprendre, ce qui nous a donné en français « l'enfer des callbacks ».

Depuis cette époque, le langage a beaucoup évolué ! Des organismes globaux s'y sont attaqués afin de le normer le plus possible et ainsi, redorer son blason au sein de la communauté. Dans ce sens, ECMAScript sort tous les ans de nouvelles normes qui sont intégrées par tous les navigateurs et par NodeJS.

Depuis ES2016, une solution a été proposée afin de régler tout particulièrement le problème du Callback hell : le couple Async/Await. Rapidement, cela permet "d'attendre" une fonction asynchrone, afin de ne plus avoir à chainer les callbacks, ce qui créée un code bien plus lisible !

Concernant le typage dynamique, la solution la plus populaire reste l'utilisation de TypeScript, qui est un langage qui permet de structurer le JavaScript tel un langage Objet (classes, interfaces, héritages…).

Aujourd'hui, même si le langage a réussi à regagner la confiance des développeurs, aux yeux du "grand public", le JS reste en grande partie un langage brouillon et dangereux… et c'est bien dommage !

NodeJS, c'est de la bombe

NodeJS est une plateforme Javascript qui permet de lancer des API web très rapidement et simplement. En quelques minutes et moins d'une dizaine de lignes de code, vous pouvez avoir un serveur web prêt à partir en production !

Cette simplicité la rend idéale pour les petites API qui demandent peu de traitements ! Par exemple, si elle sert uniquement de passerelle entre une application web et une base de données.

JavaScript étant asynchrone, il permet d'être particulièrement efficace lorsqu'une application demande de nombreux traitements concurrents. Il peut être cependant moins efficace que d'autre langages pour des traitement lourds et demandant une charge processeur.

Un des plus gros avantages concernant le NodeJS, c'est qu'il vient du JavaScript ! Ce qui permet d'avoir un seul langage pour toute la stack web (avec des Front en React/Angular/VueJS).

Côté librairie et communauté, il n'a rien à envier à d'autre langages, et possède tout ce dont vous aurez besoin pour créer votre API Web.

Vous l'aurez donc compris, NodeJS est donc le choix de la légèreté et de la rapidité d'I/O, et de l'unification des langages du web sous une seule et même bannière : le JavaScript !

Java VS PHP VS C# VS Javascript en 2020 : résumé du comparatif

Principal avantage Principal inconvénient Performances Framework/outil associé chez AXOPEN Pour quel projet ?
Java Langage robuste et fiable dans le temps ! Lent au démarrage… JAVA est très rapide en exécution et fournit de bons outils d'analyse de performances ! Springboot Grosse application web
C# Simple d'apprentissage et multi-plateformes ! Migration .NET Framework en .NET Core est quasi impossible pour l'heure. C# est très rapide en exécution ! .NET Core Grosse application web
PHP Facilité d'apprentissage et souplesse au niveau du code. Langage extrêmement permissif jusqu'à sa version 5.6… C'est lent ! PHP s'améliore avec une meilleure gestion des erreurs, et surtout, une mise en place (enfin) le typage de données ! Symfony / Laravel Site web
Javascript Javascript permet d'avoir un seul langage pour toute la stack web et est particulièrement efficace lorsqu'une application demande de nombreux traitements concurrents. Pas terrible pour les traitements lourds… NodeJS est le choix de la légèreté et de la rapidité d'I/O ! Bien pour des petites API ! NodeJS Application légère et rapide

Pour conclure : quelle technologie pour une application web métier en 2020 ?

Vous savez, on croit qu'il n'y a pas de bonnes ou de mauvaises technos… Comme on l'a dit en préambule, il n'y a pas de technologie absolue et indépassable ! Les langages qu'on vous a présenté se valent, et après, c'est surtout une histoire de préférences et de convictions.

De notre côté, lorsque l'on souhaite démarrer de nouvelles grosses applis web, le Java et le C# sont clairement les deux langages qui vont s'affronter ! Pour toutes les applications légères et rapides, on va se tourner casi-automatiquement vers du JS avec NodeJS. Et enfin, même s'il ne fait pas l'unanimité dans notre équipe, le PHP peur être utilisé pour réaliser des petites applications ou sites web !

Et vous, quelle est votre technologie préférée pour faire des applis web ?

L'équipe AXOPEN

Voir aussi les articles suivants

Flyway : l'outil pour la migration des bases de données

Flyway : l'outil pour la migration des bases de données

Le 13/11/2019 par Philippe, Arthur, Quentin et Corentin

Lors des phases de développement et de maintenance, il est souvent difficile de gérer les versions de bases de données différentes entre les différentes versions des applicatifs. On se retrouve souvent avec différents schémas de bdd qui ne possèdent jamais les bonnes versions des données. De plus, quand on souhaite mettre en production, il est difficile de faire la mise à jour des données de production en passant plein de scripts à la main.
Lire l'article

Java VS Kotlin pour une application mobile Android en 2019

Java VS Kotlin pour une application mobile Android en 2019

Le 06/11/2019 par Philippe, Arthur, Quentin et Corentin

Avis à tous les amoureux du développement mobile : le célèbre Java n'est plus l'unique langage utilisé pour développer des applications natives sur Android ! Depuis 2017, Google a lancé son nouveau langage : Kotlin! Cette nouvelle techno a pour principal objectif de remplacer le Java à long terme, et pour cause, la techno vous réserve des (bonnes) surprises ! A ce jour (Novembre 2019), sachez que vous pouvez réaliser des applications natives Android soit avec Java, soit avec Kotlin… et même en combinant les 2 langages (cela dit, on ne vous le conseille pas par souci de lisibilité projet :) ).
Lire l'article

.NET Framework vs .NET Core

.NET Framework vs .NET Core

Le 27/07/2018 par Philippe, Arthur, Quentin et Corentin

Dans le monde de Microsoft, les choses bougent ! La plateforme .NET comporte maintenant deux déclinaisons : .NET Framework et .NET Core. Mais alors, quel framework .NET utiliser pour mon projet ? Un versus s’impose ! Au programme : définitions, spécificités, compatibilité, et différences entre les deux frameworks. .NET Framework VS .NET Core : définitions .NET Core, c’est quoi ? Il est distribué par le gestionnaire de paquets « NuGET » sous forme de librairie.
Lire l'article