>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Java

Jak Apache Struts pomaga utrzymywać strukturę w aplikacjach Java i dlaczego nie warto go jeszcze skreślać

Wielu programistów Java, słysząc słowo Struts, nie może powstrzymać skojarzeń ze starymi projektami legacy lub sensacyjnymi nagłówkami o podatnościach bezpieczeństwa sprzed lat. Jednak jeśli odłożymy na bok uprzedzenia i przyjrzymy się repozytorium, zobaczymy żywy framework, który wciąż dźwiga ogromną część sektora enterprise na swoich barkach. W erze mikrousług i programowania reaktywnego, Struts wydaje się być gościem z przeszłości, ale wciąż oferuje jasny i przewidywalny sposób budowania aplikacji webowych.

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

Kto tego potrzebuje i dlaczego warto dziś

Struts to klasyczny framework MVC. Jego głównym celem jest rozdzielenie logiki biznesowej, prezentacji i sterowania nawigacją. Na początku lat 2000 było to rewolucyjne rozwiązanie: wcześniej programiści często mieszali zapytania SQL, kod Java i tagi HTML bezpośrednio na stronach JSP. Efektem był chaos, którego nie sposób było utrzymać.

Dziś projekt działa pod parasolem Apache Software Foundation. Jeśli pracujesz w sektorze enterprise, z pewnością będziesz musiał się z nim zmierzyć. I nie chodzi tylko o utrzymywanie starego kodu. Struts 2 (który wyewoluował z WebWork 2) to w pełni nowoczesne narzędzie dla tych, którzy preferują model Request/Response i nie chcą ukrywać specyfiki protokołu webowego za skomplikowanymi abstrakcjami frameworków komponentowych takich jak JSF czy Tapestry.

Co kryje się w środku

Architektura Struts opiera się na trzech filarach. Po pierwsze, są to obsługiwacze żądań (Actions). Piszesz klasę wykonującą użyteczną pracę i mapujesz ją na konkretny URL. Po drugie, mechanizm przepływu sterowania. Po wykonaniu logiki framework decyduje, który zasób (na przykład stronę lub JSON) zwrócić użytkownikowi. Po trzecie, biblioteka tagów upraszczająca tworzenie interaktywnych formularzy.

Co ciekawe, Struts nie próbuje narzucać konkretnego stosu frontendowego ani warstwy dostępu do danych. Równie dobrze współpracuje z Hibernate, JDBC czy Apache Cayenne. Po stronie klienta możesz użyć starego dobrego JSP, ale możesz też oddać wszystko Angularowi lub Reactowi, przekształcając Struts w backend dla usług REST.

Oto jak wygląda prosty action w Struts 2:

public class HelloAction extends ActionSupport {
    private String message;

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

    public String getMessage() {
        return message;
    }
}

Konfiguracja (tradycyjnie w XML, ale注解 też działają) wiąże ten kod ze ścieżką przeglądarki. Wszystko jest przejrzyste i łatwe do debugowania.

Uczciwa wolność i bezpieczeństwo

Deweloperzy Apache Struts podkreślają „czystość" licencji i niezależność. Projekt opiera się w całości na pracy wolontariuszy. Oznacza to, że jutro żadna korporacja nie może zmienić warunków użytkowania ani zamknąć dostępu do kodu źródłowego.

Jeśli chodzi o bezpieczeństwo: po kilku głośnych incydentach społeczność stała się paranoiczna jeśli chodzi o kontrole. Projekt ma obecnie wysoką ocenę w OpenSSF Scorecard. W repozytorium znajduje się szczegółowy przewodnik bezpieczeństwa, a krytyczne poprawki dla bieżącej gałęzi Struts 2 są wydawane niezwłocznie.

A propos wersji. Ważna kwestia: Struts 1 jest oficjalnie martwy. Deweloperzy zdecydowanie odradzają rozpoczynanie nowych projektów na nim i zalecają migrację do Struts 2 whenever possible. Pierwsza gałąź nie otrzymuje już aktualizacji bezpieczeństwa, więc używanie jej w produkcji to świadome ryzyko.

Elastyczność bez magii

W przeciwieństwie do wielu nowoczesnych „magicznych" frameworków, Struts nie ukrywa faktu, że web jest zasadniczo bezstanowy. Wyraźnie widzisz cykl request-response.

Jeśli potrzebujesz zintegrować konkretne technologie, Struts oferuje mechanizmy rozszerzeń. Chcesz użyć SOAP? Nie ma problemu. Potrzebujesz AJAX? Istnieją gotowe rozwiązania. Chcesz podłączyć silniki szablonów Freemarker lub Velocity zamiast JSP? To odbywa się za pomocą standardowych narzędzi.

Jednocześnie deweloperzy uczciwie mówią: jeśli twoim celem jest budowanie UI z gotowych komponentów serwerowych, Struts nie jest dla ciebie. Do takich zadań lepiej spojrzeć na Wicket. Struts wybierają ci, którzy chcą kontrolować HTML i JavaScript na niskim poziomie.

Czy warto spróbować i dla kogo to jest

Struts to wybór konserwatystów w najlepszym tego słowa znaczeniu. Nadaje się dla zespołów, które cenią sprawdzone wzorce architektoniczne i stabilność Apache.

Kto powinien przyjrzeć się repozytorium:

  1. Programiści Java utrzymujący duże systemy enterprise.
  2. Ci, którzy szukają przewidywalnego frameworka MVC bez niepotrzebnej złożoności i ukrytej magii.
  3. Architekci, dla których czystość licencji i open-source bez vendor lock-in są ważne.

Najlepiej zacząć od oficjalnej dokumentacji i samouczków Struts 2 na stronie projektu. Repozytorium GitHub to świetne miejsce, aby zobaczyć, jak zbudowane są wnętrza jednego z najbardziej znanych frameworków w historii Javy. Czasami warto wiedzieć, na czym opierają się „niewidzialne podpory" (struts) branży.

Powiązane projekty