>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Java

Hoe Apache Struts Helpt bij het Onderhouden van Structuur in Java-applicaties en Waarom Het Nog Te Vroeg Is om Het Af te Schrijven

Veel Java-ontwikkelaars kunnen, wanneer ze het woord Struts horen, niet anders dan denken aan oude legacy-projecten of sensationele koppen over beveiligingsproblemen uit het verleden. Maar als je het vooroordeel opzij zet en naar de repository kijkt, zie je een levend framework dat nog steeds een enorm deel van het enterprise-segment draagt. In het tijdperk van microservices en reactieve programmering lijkt Struts een bezoeker uit het verleden, maar het biedt nog steeds een duidelijke en voorspelbare manier om webapplicaties te bouwen.

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

Wie heeft het nodig en waarom vandaag de dag

Struts is een klassiek MVC-framework. Het hoofddoel is het scheiden van bedrijfslogica, presentatie en navigatiebesturing. In het begin van de jaren 2000 was dit een openbaring: daarvoor mengden ontwikkelaars vaak SQL-queries, Java-code en HTML-tags rechtstreeks in JSP-pagina's. Het resultaat was een rommel die onmogelijk te onderhouden was.

Vandaag de dag leeft het project onder de vlag van de Apache Software Foundation. Als je in de enterprise-sector werkt, zul je er waarschijnlijk mee te maken krijgen. En het gaat niet alleen om het onderhouden van oude code. Struts 2 (dat voortkwam uit WebWork 2) is een volledig modern hulpmiddel voor degenen die het Request/Response-model prefereren en de webprotocolspecificaties niet willen verbergen achter complexe abstracties van component-frameworks zoals JSF of Tapestry.

Wat zit er in de doos

De Struts-architectuur is gebouwd op drie pijlers. Ten eerste zijn er request handlers (Actions). Je schrijft een klasse die nuttig werk verricht en je koppelt deze aan een specifieke URL. Ten tweede is er het control flow-mechanisme. Nadat de logica is uitgevoerd, beslist het framework welke bron (bijvoorbeeld een pagina of JSON) aan de gebruiker moet worden geretourneerd. Ten derde is er een tag library die het maken van interactieve formulieren vereenvoudigt.

Interessant is dat Struts niet probeert om een specifieke frontend-stack of data access layer op te leggen. Het werkt even goed samen met Hibernate, JDBC of Apache Cayenne. Aan de clientzijde kun je goede oude JSP gebruiken, of je kunt alles overlaten aan Angular of React, waardoor Struts een backend wordt voor REST-services.

Zo ziet een eenvoudige action in Struts 2 eruit:

public class HelloAction extends ActionSupport {
    private String message;

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

    public String getMessage() {
        return message;
    }
}

Configuratie (traditioneel in XML, maar annotaties werken ook) koppelt deze code aan een browserpad. Het is transparant en gemakkelijk te debuggen.

Eerlijke vrijheid en beveiliging

Apache Struts-ontwikkelaars benadrukken de "netheid" van de licentie en onafhankelijkheid. Het project wordt volledig door vrijwilligers aangedreven. Dit betekent dat morgen geen enkel bedrijf de gebruiksvoorwaarden kan veranderen of de toegang tot de broncode kan sluiten.

Wat betreft beveiliging: na verschillende hooggeprofileerde incidenten is de gemeenschap paranoïde geworden over controles. Het project heeft nu een hoge score op de OpenSSF Scorecard. De repository bevat een gedetailleerde Security Guide, en kritieke patches voor de huidige Struts 2-branch worden tijdig uitgebracht.

Trouwens, over versies. Een belangrijk punt: Struts 1 is officieel dood. Ontwikkelaars dringen er sterk op aan om geen nieuwe projecten meer op te starten en raden aan om waar mogelijk te migreren naar Struts 2. De eerste branch ontvangt geen beveiligingsupdates meer, dus het gebruiken ervan in productie is een bewust risico.

Flexibiliteit zonder magie

In tegenstelling tot veel moderne "magische" frameworks verbergt Struts niet het feit dat het web essentieel staatloos is. Je ziet duidelijk de request-response-cyclus.

Als je specifieke technologieën moet integreren, biedt Struts uitbreidingsmechanismen. Wil je SOAP gebruiken? Geen probleem. AJAX nodig? Er zijn kant-en-klare oplossingen. Freemarker of Velocity templating engines in plaats van JSP aansluiten? Dat wordt gedaan met standaardtools.

Tegelijkertijd zeggen ontwikkelaars eerlijk: als je doel is om een UI te bouwen van kant-en-klare server-componenten, is Struts niets voor jou. Voor die taken kun je beter naar Wicket kijken. Struts wordt gekozen door degenen die HTML en JavaScript op een laag niveau willen controleren.

Is het de moeite waard om te proberen en voor wie is het geschikt

Struts is een keuze van conservatieven in de beste zin van het woord. Het is geschikt voor teams die tijdgevestigde architecturale patronen en de stabiliteit van Apache waarderen.

Wie zou een blik in de repository moeten werpen:

  1. Java-ontwikkelaars die grote enterprise-systemen onderhouden.
  2. Degenen die op zoek zijn naar een voorspelbaar MVC-framework zonder onnodige complexiteit en verborgen magie.
  3. Architecten voor wie licentienettigheid en open-source zonder vendor lock-in belangrijk zijn.

Het beste is om te beginnen met de officiële documentatie en Struts 2-tutorials op de projectwebsite. De GitHub-repository is een geweldige plek om te zien hoe de interne werking van een van de meest bekende frameworks in de Java-ontwikkelingsgeschiedenis is gestructureerd. Soms is het nuttig om te weten waar de "onzichtbare dragers" (struts) van de industrie op gebouwd zijn.

Gerelateerde projecten