>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Java

Comment Apache Struts aide à maintenir la structure dans les applications Java et pourquoi il est trop tôt pour l'enterrer

Beaucoup de développeurs Java, quand ils entendent le mot Struts, ne peuvent s'empêcher de penser à de vieux projets legacy ou aux gros titres sensationnels sur les vulnérabilités de sécurité d'il y a des années. Mais si vous mettez de côté les préjugés et que vous regardez le dépôt, vous verrez un framework vivant qui porte encore une énorme partie du segment enterprise sur ses épaules. À l'ère des microservices et de la programmation réactive, Struts ressemble à un visiteur du passé, mais il offre toujours un moyen clair et prévisible de construire des applications web.

Build Status Java Build Maven Central Javadocs Coverage OpenSSF Scorecard CII Best Practices License

À qui c'est destiné et pourquoi aujourd'hui

Struts est un framework MVC classique. Son objectif principal est de séparer la logique métier, la présentation et le contrôle de navigation. Au début des années 2000, c'était une révélation : avant cela, les développeurs mélangeaient souvent les requêtes SQL, le code Java et les balises HTML directement dans les pages JSP. Le résultat était un désordre impossible à maintenir.

Aujourd'hui, le projet vit sous l'égide de la Apache Software Foundation. Si vous travaillez dans le secteur enterprise, vous devrez probablement y faire face. Et il ne s'agit pas seulement de maintenir de l'ancien code. Struts 2 (qui est né de WebWork 2) est un outil entièrement moderne pour ceux qui préfèrent le modèle Request/Response et qui ne veulent pas cacher les spécificités du protocole web derrière des abstractions complexes de frameworks de composants comme JSF ou Tapestry.

Ce qu'il y a dans la boîte

L'architecture de Struts repose sur trois piliers. Premièrement, il y a les gestionnaires de requêtes (Actions). Vous écrivez une classe qui effectue un travail utile et vous la mappez à une URL spécifique. Deuxièmement, il y a le mécanisme de flux de contrôle. Après l'exécution de la logique, le framework décide quelle ressource (par exemple, une page ou du JSON) retourner à l'utilisateur. Troisièmement, il y a une bibliothèque de balises qui simplifie la création de formulaires interactifs.

Curieusement, Struts n'essaie pas de vous imposer une stack frontend ou une couche d'accès aux données spécifique. Il s'entend aussi bien avec Hibernate, JDBC ou Apache Cayenne. Du côté client, vous pouvez utiliser les bonnes vieilles JSP, ou vous pouvez tout confier à Angular ou React, transformant Struts en backend pour les services REST.

Voici à quoi ressemble une action simple dans Struts 2 :

public class HelloAction extends ActionSupport {
    private String message;

    public String execute() {
        message = "Привет из Struts!";
        return SUCCESS;
    }

    public String getMessage() {
        return message;
    }
}

La configuration (traditionnellement en XML, mais les annotations fonctionnent aussi) lie ce code à un chemin du navigateur. C'est transparent et facile à déboguer.

Liberté honnête et sécurité

Les développeurs d'Apache Struts insistent sur la « propreté » de la licence et l'indépendance. Le projet est entièrement géré par des bénévoles. Cela signifie que demain aucune corporation ne peut changer les conditions d'utilisation ou fermer l'accès au code source.

En ce qui concerne la sécurité : après plusieurs incidents très médiatisés, la communauté est devenue paranoïaque concernant les vérifications. Le projet a maintenant une note élevée sur l'OpenSSF Scorecard. Le dépôt contient un guide de sécurité détaillé, et les correctifs critiques pour la branche actuelle de Struts 2 sont publiés rapidement.

Au fait, à propos des versions. Un point important : Struts 1 est officiellement mort. Les développeurs recommandent vivement de ne pas démarrer de nouveaux projets avec et conseillent de migrer vers Struts 2 dans la mesure du possible. La première branche ne reçoit plus de mises à jour de sécurité, donc l'utiliser en production est un risque conscient.

Flexibilité sans magie

Contrairement à de nombreux frameworks modernes « magiques », Struts ne cache pas le fait que le web est essentiellement sans état. Vous voyez clairement le cycle request-response.

Si vous avez besoin d'intégrer des technologies spécifiques, Struts propose des mécanismes d'extension. Vous voulez utiliser SOAP ? Pas de problème. Besoin d'AJAX ? Il y a des solutions prêtes à l'emploi. Vous voulez brancher des moteurs de templating Freemarker ou Velocity au lieu de JSP ? C'est fait avec les outils standards.

Dans le même temps, les développeurs disent honnêtement : si votre objectif est de construire une UI à partir de composants serveur prêts à l'emploi, Struts n'est pas fait pour vous. Pour ces tâches, mieux vaut regarder Wicket. Struts est choisi par ceux qui veulent contrôler HTML et JavaScript à un bas niveau.

Est-ce que ça vaut le coup et pour qui

Struts est le choix des conservateurs au meilleur sens du terme. Il convient aux équipes qui valorisent les patterns architecturaux éprouvés et la stabilité d'Apache.

Qui devrait jeter un œil au dépôt :

  1. Les développeurs Java qui maintiennent de grands systèmes enterprise.
  2. Ceux qui recherchent un framework MVC prévisible sans complexité inutile et magie cachée.
  3. Les architectes pour lesquels la propreté de la licence et l'open-source sans verrouillage fournisseur sont importantes.

Le mieux est de commencer votre découverte par la documentation officielle et les tutoriels Struts 2 sur le site du projet. Le dépôt GitHub est un excellent endroit pour voir comment sont structurées les entrailles de l'un des frameworks les plus connus de l'histoire du développement Java. Parfois, il est utile de savoir sur quoi sont bâties les « colonnes vertébrales » (struts) de l'industrie.

Projets similaires