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}
Est-ce que JSF est compliqué ? Quels sont ses avantages ?
JSF n'est pas compliqué du tout. De plus:- 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 !
- 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.
- Vous pouvez ajouter et mélanger des balises HTML, des scripts JS et CSS, et tout est optimisé pour le référencement.
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 .
-
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.
-
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.
-
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.
-
Lancez votre application.
GO TO FULL VERSION