JavaRush /Blog Java /Random-FR /Pause café #157. Utiliser Java pour les applications Web ...

Pause café #157. Utiliser Java pour les applications Web frontales en 2022

Publié dans le groupe Random-FR
Source : Nocodefunctions Nous attirons votre attention sur un article sur l'expérience de développement d'une application Web indépendante utilisant Java. Pause café #157.  Utiliser Java pour les applications Web frontales en 2022 - 1

Java pour le frontend – est-ce vraiment possible ?

Beaucoup de gens pensent qu’utiliser Java pour le développement front-end est tout simplement impossible : après tout, Java est conçu pour le back-end. Oui, il y a longtemps, les applets Java et Java Webstart vous permettaient d'exécuter des applications Java à partir du navigateur. Mais c’est une histoire ancienne, aussi vieille que les plugins Flash. Mais même sans applets, il existe un moyen d'utiliser Java pour le front-end - ce sont les JSP (Java Server Pages), que de nombreux écoliers ont étudié dans les cours d'informatique. Cependant, bien que JSP soit encore abordé dans certains livres Java, la technologie est obsolète depuis les années 2010. Est-ce vraiment une autre impasse ? Il existe également des frameworks qui permettent aux développeurs Java de « transpiler » (transformer de manière complexe) leur code en JavaScript à l'aide de Google Web Toolkit (GWT, c'est pas super nouveau non plus ) ou via J2Cl (de Google également). Il est important de noter que GWT et J2Cl ne conviennent pas aux débutants, il s'agit plutôt d'outils d'entreprise développés par Google pour une utilisation dans de grands projets.

Le héros méconnu de Java pour le frontend : Jakarta Faces (JSF)

Java Server Faces (JSF), désormais connu sous le nom de « Jakarta Faces », existe depuis au moins le début des années 2010. Je suis toujours surpris qu'il soit peu connu et rarement évoqué car ce framework permet de développer facilement des applications web de manière rapide, sécurisée et fiable. JSF est facile à apprendre et tire pleinement parti de l'écosystème Java. Voici par exemple comment créer une page Web avec du contenu dynamique :
  • Créez une page html (avec l'extension .xhtml).
  • Remplacez les balises HTML <head> et <body> par les balises <h:head> et <h:body>.
  • Désormais, pour afficher du contenu dynamique en appelant une propriété dans le backend, placez simplement ce code après le hashtag et entre les barres de contrôle :

    #{backendscript.myText}
Créez ensuite un fichier Backendscript.java dans votre backend, ajoutez une variable appelée String myText = "salut ! bienvenue sur ma page !" . Il sera affiché sur la page Web. JSF est vraiment très simple. Il est bien documenté grâce à de nombreuses questions sur Stackoverflow , de la documentation officielle , plusieurs livres ( ce lien , et j'aime aussi les livres de David Heffelfinger ) et bien sûr des vidéos Youtube .

Est-ce que JSF est compliqué ? Quels sont ses avantages ?

JSF n'est pas compliqué du tout. De plus:
  1. Il est bien intégré aux IDE Java classiques (NetBeans, IntelliJ IDEA et Eclipse). Chaque IDE fournit :
    • Projets de modèles qui remplissent le modèle de configuration Maven (qui, soit dit en passant, est très simple).
    • Outils de débogage (avec rechargement à chaud, du moins pour NetBeans).
    • Puissants outils d’autocomplétion, de refactorisation, de navigation et de mise en évidence des erreurs pour l’écosystème Java. L'EDI peut fournir des informations utiles sur toute classe que vous mentionnez dans la page HTML (comme le #{backendscript.myText} mentionné ci-dessus). Les pages HTML s'intégreront réellement au reste de votre base de code !
  2. Il gère très facilement les variations de code complexes sur les pages HTML.
    • Avez-vous besoin de rafraîchir une partie d’une page d’un simple clic sur un bouton ? Ajoutez une propriété de mise à jour à votre bouton, suivie de l'ID du composant que vous souhaitez mettre à jour.
    • Concernant la mise à jour et le contenu dynamique : j'aime beaucoup la simplicité de JSF : le frontend met à jour le backend, se met à jour lui-même, ou le backend met à jour le frontend. Ce sont toutes les exigences de base d’une application Web et elles sont présentes ici.
    • Si vous souhaitez que l'utilisateur puisse télécharger un ou plusieurs fichiers avec des conditions de types et de tailles de fichiers, ajoutez simplement une ligne au code avec des paramètres clairs .
    • Besoin de créer un site Web en plusieurs langues ? Ajoutez la balise <f:view> à votre code HTML et obtenez la langue de l'utilisateur avec une seule ligne dans le backend.
  3. Vous pouvez ajouter et mélanger des balises HTML, des scripts JS et CSS, et tout est optimisé pour le référencement.
Vous avez un contrôle total sur le HTML généré par JSF et vous pouvez toujours ajouter du code HTML et JS. Cela facilite la collaboration avec des concepteurs et des développeurs front-end qui ne connaissent pas ou ne s'intéressent pas à JSF. Lorsque je travaillais avec CSS, j'avais l'aide d'un concepteur capable de travailler avec les pages HTML que j'avais créées avec JSF, en apportant les modifications nécessaires sans aucune difficulté. JSF génère du code HTML que vous pouvez visualiser et lire dans votre navigateur. Ceci est très utile pour déboguer avec les outils de développement habituels et vérifier que vos actions SEO sont correctement mises en œuvre.

Primefaces : énorme liste de composants et de thèmes JSF gratuits

JSF est livré avec une longue liste de composants prêts à l'emploi qui créent les parties classiques d'une page HTML, vous n'avez donc pas à le faire vous-même. Par exemple, utilisez la balise <h:dataTable> pour créer un tableau qui affiche des données spécifiques chargées depuis votre backend, sans avoir à le recréer à partir de zéro. Et il existe une meilleure option : Prime Tek a développé un ensemble de composants open source appelé Primefaces . Ils sont dotés de fonctionnalités supplémentaires et présentent plusieurs avantages. Par exemple, au lieu de <h:dataTable>, utilisez simplement la balise Primefaces <p:dataTable>. Cela crée un tableau de données de base auquel vous pouvez facilement ajouter des commutateurs de colonnes , des colonnes dynamiques ou modifier des fonctions dans le tableau.

Mais Java est lent et lourd ?

1. Java est-il lent ?

Non. Le plus drôle, c'est que les frameworks JS comme React, Angular et Vue ont été créés avec la promesse d'être plus rapides et plus intelligents que JSF en Java, car ils envoyaient immédiatement toute la logique de l'application au navigateur du visiteur du site. JSF fonctionne différemment : lorsqu'un utilisateur appelle une page (par exemple https://nocodefunctions.com), l'application dans le backend génère le code HTML pour cette page uniquement et le renvoie. C'est ce qu'on appelle le « rendu côté serveur » (SSR). En pratique, les applications monopages peuvent nécessiter un temps très long pour que l'utilisateur récupère et charge les fichiers javascript qui composent l'ensemble de l'application. Cela peut entraîner une mauvaise expérience utilisateur (devoir attendre le chargement de la première page) et des problèmes de référencement. En conséquence, le rendu côté serveur de style Java a regagné en popularité car il est considéré comme supérieur au rendu côté client en termes de vitesse et de performances. De nouveaux frameworks SSR émergent qui obligent les développeurs habitués au rendu côté client à gérer et mélanger ces deux logiques différentes.

2. Java est-il difficile ?

Non. Ce dont vous avez besoin pour déployer une application JSF :
  • L'application elle-même. Une simple application JSF « hello world » fait probablement 10 Ko ou moins.
  • Les Primefaces (discutés ci-dessus) sont facultatifs si vous avez besoin de composants de meilleure qualité. Cela représente 4,5 Mo supplémentaires .
Maintenant, exécutez le tout sur le serveur. Pour ce faire, vous avez besoin de :
  1. Avoir un serveur dans le cloud ou ailleurs. Pour la version test de Nocodefunctions (https://test.nocodefunctions.com) j'utilise Hetzner, où je loue un serveur bare metal avec 2 Go de RAM pour 4,15 euros par mois. Je pourrais utiliser moins de RAM, mais mon application fournit des services gourmands en données et doit tenir dans la mémoire. La version réelle (non test) de nocodefunctions fonctionne sur un serveur plus grand (également avec Hetzner) pour prendre en charge en parallèle les tâches gourmandes en données d'un plus grand nombre d'utilisateurs - pour moins de 50 € par mois.

  2. Vous devez avoir Java installé. Il s'agit d'un téléchargement de fichier unique de moins de 200 Mo pour Mac, Win ou Linux, entièrement gratuit même pour un usage commercial.

  3. Vous devez disposer d'un serveur Web Java pour l'exécuter. Beaucoup d'entre eux. Personnellement, j'utilise Payara Micro (Community Edition), qui est gratuit et téléchargeable en un seul fichier de 77 Mo.

  4. Lancez votre application.

Conclusion : pensez à Java !

J'ai l'impression que certains programmeurs pensent que Python, Ruby, PHP, NodeJS + React... sont le seul choix lors du démarrage d'une petite application web. Mais maintenant, j'espère qu'ils envisageront également Java + JSF pour leur prochain projet.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION