Poster taggade med ‘struts’

Att välja webbramverk för ett projekt är inte alltid en lätt uppgift. Det handlar ofta om att försöka se igenom hype och isolera vad som är aktuellt för den uppgift som för dagen ska lösas.

Vanliga saker jag förväntar mig är förstås:

  • Hur interaktionen ska ske.
  • Hur multipla språk hanteras.
  • Hur validering sker på klient och server.
  • etc etc.

Detta är ju tekniska delar. Andra aspekter som ofta är minst lika viktiga är:

  • Vilken erfarenhet/kunskap har de som ska vara med och utveckla.
  • Vilken och hur stor är den community som utvecklar och underhåller ramverket.
  • Vilken hjälp finns att tillgå (dokumentation, konsult, litteratur, kurser etc).

Jag gjorde nyligen en utvärdering åt en kund i ämnet och sprang då på en annan undersökning som Matt Raible gjort med huvudutvecklarna av en mängd olika ramverk (JSF, Spring MVC, Struts, Tapestry etc). Han ställer bl.a frågor om vad ramverkets styrkor är och i vilka situationer utvecklarna skulle välja det egna eller något annat ramverk.

Till slut så måste man iallafall göra ett eller några val och kunna leva med konsekvenserna av dem. Problemet som alltid med just den här typen av undersökningar och rekommendationer är att under den tid man gör utredningen så har det kommit 3 nya ramverk för webbapplikationer.

Struts-gänget har tydligen skrivit om planerna för Struts framöver. Ett nytt underprojekt, ”Shale”, är öppnat, och befintliga Struts kallas numera ”Struts Classic”.

Kortfattat har jag fattat nyheten såhär:

  • Struts (Classic) går nu in i underhålls-läge. Inga stora förändringar är planerade och vidare arbete kommer bara att handla om felrättningar och liknande.
  • Som det verkar nu kommer Struts Classic därför aldrig att komma i en ”version 2.0″.
  • Shale är ett projekt med en helt ny kodbas, och med Java Server Faces som grund. Det är nog tänkt att det ska lösa samma typ av problem som Struts Classic, men med annat API och annat angreppssätt. (Det är förstås JSF-kopplingen som är den viktigaste aspekten här.)

Naturligtvis framkallar ett sådant här meddelande reaktioner, och i blogvärlden är det som vanligt inga problem att hitta negativa inlägg… (Exempelvis här.) Själv har jag väl ungefär de här tankarna i den här frågan:

  • Om Struts var ett kommersiellt projekt skulle det här aldrig hända! Tänk om Microsoft sa att ”Word är nu färdigt, och behöver inga fler funktioner. Vi kommer att fortsätta fixa alla buggar, men ni behöver inte köpa några fler uppgraderingar.” Yeah, right…
  • Det här är på något sätt ett fantastiskt tillfälle att bevisa att open source fungerar. Om Struts-projektet missbedömt behovet av en ny version av ”Struts Classic”, så kommer den att skapa sig själv. Struts användarskara är stor nog att underhålla och vidareutveckla produkten själva.
  • Själv tycker jag helt krasst att det är rätt beslut. Struts löser redan det problem som det designats för att lösa. Snarare har det flytit ut för mycket på sidorna och försöker lösa närliggande problem också, men det tycker jag är feltänkt. Bättre att lösa ett väldefinierat problem bra än att vara halvbra på lite av varje. Jag skulle inte ha något emot att använda ”Struts Classic” på ett problem där jag vet att det uppfyller kraven — även om det finns ett nyare projekt med ett annat angreppssätt. Och jag är inte orolig för att de projekt där jag redan använt Struts (”Classic”) ska plötsligt bli obsoleta och sluta fungera bara för att någon tycker att Struts är ”färdigt”.
  • Det roliga är att om det skulle visa sig att användarna av Struts verkligen skriker efter en ny version med någon nu okänd funktion, så kommer den att komma! Antingen som en open source-fork av Struts, eller (troligare) som ett kommersiellt tillägg. Det är ju just det som är det intressanta med open source: någon kan ta upp facklan om den tappas för tidigt.

Slutligen: med den lilla osäkerhet som finns nu med Struts (i alla fall på kort sikt) så känns det skönt att det finns gott om fullgoda alternativ, när man blir tvungen att välja. Jag tänker i första hand på Webwork och Spring, som är mina favoriter.

Denna artikel beskriver den populära opensourcekomponenten Hibernate. Hibernate är ett s.k. Object Relational Mapping (ORM) verktyg som används för att möjliggöra persistens. Hibernate är ett av de mest aktiva och populära javaprojekten på Sourceforge och kommer garanterat dyka upp mer och mer i javabaserad systemutveckling framöver. Läs mer >>

Apache-projektet, som drivs av The Apache Software Foundation, är helt klart mest kända för sin marknadsdominerande webbserver (67% av marknaden i januari 2004). De flesta som utvecklar i Java är också väl bekanta med Jakarta-projektet som fungerar som ett paraply över en mängd av Java-projekt under Apache.

I den här artikeln kommer vi att gå igenom de flesta av Apaches Java-projekt. Syftet är att få fler att få upp ögonen på vilken hög med guldklimpar som rymmer sig där… Ja, rena guldgruvan, faktiskt!

Denna artikel är även publicerad i Datormagazin nr 11, 2003.

Läs mer >>

Bakgrund

När min artikel om Java Server Faces (JSF) var klar så kände jag ett behov av att ta den kod som som skrivits under arbetet med artikeln och låta den ligga till grund ytterligare artiklar. Dessa artiklar skulle beskriva glädjen (och vedermödorna) med att vidareutveckla designen i den tämligen enkla testapplikationen till något som på ett bättre sätt underlättade:

  • enhetstestning av koden
  • byte av perssistensmekanism. Den persistensmekanism som jag primärt var intresserad av var, förutom den som byggde på xml-filer i filsystemet som jag ärvde från strutsapplikationen, Hibernate. Ambitionen var att använda Hibernate dels direkt ifrån webappen, dels göra en distribuerad lösning där persistensen sköttes av Hibernate i en J2EE server (JBoss).

Läs mer >>

Inledning

Java Server Faces (JSF) är ett nytt ramverk för att bygga webbapplikationer. Genom att beskriva konverteringen av en enkel Strutsapplikation till JSF försöker denna artikel visa hur JSF kan användas för att implementera en MVC-baserad webbapplikation. Artikeln förutsätter generella kunskaper i design av webbapplikationer och Struts i synnerhet. Läs mer >>