Struts vs Struts2
Struts (også kendt som Apache Struts eller Struts 1) er en open source-ramme på tværs af platforme skrevet i Java, som er beregnet til udvikling af Java EE-webapplikationer. Det var en af de indledende Java EE-webapplikationsrammer. Men få år senere ankom Struts2 (eller Struts version 2), og det var en helt anden og stærkt forbedret webapplikationsramme. Den havde behandlet få problemer, der blev opfattet som mangler i den oprindelige version. Nu bliver Struts2 meget brugt til at udvikle Java EE-applikationer i verden.
Hvad er Struts?
Struts (Struts 1) framework var en af de første webapplikationsframeworks til udvikling af Java EE webapplikationer. Struts framework tilskynder til brugen af MVC (Model-View-Controller) arkitektur. Det er en udvidelse af Java Servlet API. Craig McClanahan er den oprindelige skaber af Struts. Oprindeligt var det kendt som Jakaratha Struts og blev vedligeholdt under Jakarta Project of Apache Software Foundation. Det er udgivet under Apache License 2.0. Struts framework kaldes en request-baseret framework, og den består af tre hovedkomponenter: en request handler, en response handler og et tag-bibliotek. Standard URI (Uniform Resource Identifier) tilknyttes en anmodningsbehandler. Response handler er ansvarlig for at overføre kontrol. For at skabe interaktive applikationer med formularer kan de funktioner, der tilbydes af tagbiblioteket, bruges. Struts understøtter REST-applikationer og forskellige teknologier som SOAP, AJAX osv.
Hvad er Struts2?
Struts framework blev opfattet at indeholde visse begrænsninger (hovedsageligt manglen på adskillelse mellem præsentationslaget, anmodningshåndteringslaget og modellen) af Java EE-udviklerne på det tidspunkt, og følgelig nogle år senere ankom Struts2. Faktisk var Struts2 helt anderledes end Struts. Faktisk delte de ikke engang den samme kodebase, fordi Struts2 simpelthen var resultatet af at omdøbe WebWork 2.2-rammerne (dvs. WebWork- og Struts-fællesskaber, der arbejdede hver for sig i nogen tid, sluttede sig til sidst sammen for at komme med Struts2). Dens nuværende stabile udgivelse er version 2.2.3, som blev udgivet i maj 2011.
Hvad er forskellen mellem Struts og Struts2?
Et af de mange problemer med Struts framework var behovet for programmering til abstrakte klasser i stedet for grænseflader. Dette blev løst af Struts2 framework. For eksempel krævede Struts framework, at Action-klasser blev udvidet fra de abstrakte basisklasser, men Struts2 Actions kan implementere en Action-grænseflade. På grund af forskellene i threading-modellen mellem de to versioner forekommer trådsikkerhedsproblemer, der dukkede op i Struts framework vedrørende handlingsobjekter, ikke i Struts2 framework. Årsagen er, at Struts2 Action-objekter instantieres for hver anmodning, mens en Action in Struts-ramme kun har én instans til at håndtere alle anmodninger for den handling. I modsætning til Actions in Struts-rammen er Struts2 Actions ikke afhængige af Servlet API.
Testbarheden af Struts2-rammen er forholdsvis højere end Struts-rammen. Du kan teste Struts2 Actions ved blot at følge de tre trin: instansiering, indstilling af egenskaber og påkaldelse af metoder. Det er nemmere at høste input i Struts2 framework, da handlingsegenskaber bruges som inputegenskaber uden at skulle beholde et andet inputobjekt. Bortset fra understøttelsen af JSTL-integration (som er til stede i Struts), kan Struts2 framework bruge mere kraftfuld og udtryksfuld OGNL (Object Graph Notation Language). Til typekonvertering bruger Strut og Strut2 henholdsvis Commons-Beanutils og OGNL. På grund af disse forbedringer betragtes Struts2 framework som et meget modent framework, og det er meget populært blandt Java EE programmører. På den anden side anses Struts framework nu for at være forældet.