Blog | Web

07/02/08

Web Application: accoppiamento o disaccoppiamento?

Ancora a proposito di web framework… discorso inflazionato è vero ma a quanto pare tutt’altro che concluso! Il topic in questo caso è se in una web application sia meglio codificare tutto in una action oppure separare nettamente la web logic dalla business logic. La risposta parrebbe ovvia, ma non tutti sono dello stesso avviso.
Si possono catalogare fondamentalmente 4 approcci:

  1. Due classi: 1 action basata (*) sul framework e 1 business logic non basata sul framework
  2. Due classi: 1 action non basata sul framework e 1 business logic non basata sul framework
  3. Una classe: action e business logic nella stessa classe basata sul framework
  4. Una classe: action e business logic nella stessa classe non basata sul framework
    (*) si legga “che estende classi del framework”

Tra tutte l’approccio preferito è sicuramente il numero 1, la 2 rappresenta il totale disaccoppiamento (ad esempio in Struts 2 / Webwork le azioni possono essere POJO e quindi totalmente disaccoppiate dal framework), mentre 3 e 4 sono generalmente considerate bad practise. Esistono sicuramente buone ragioni per disaccoppiare la business logic dalla action:

  • Testability: se disaccopiata la business logic può essere testata in maniera indipendente (es. JUnit)
  • Web services: la business logic può essere utilizzata in un web-service o in servizi remoti
  • Caching: riferito alle business facades

Mentawai (un framework ad approccio programmatico con supporto per l’injection di cui esiste anche una versione Ruby) sembra offrire la libertà sufficiente per implementare tutti gli approcci (1,2,3,4). A voi la scelta…

Leggi anche l’articolo originale.

27/04/07

Le JSP sono morte?

L’ennesima critica a JSP: sono da considerasi ufficialmente morte? Personalmente non credo che la loro scomparsa sarà poi così imminente. JSP fa parte delle specifiche JavaEE di Sun e ormai sono utilizzate praticamente in ogni contesto Java Web. E’ vero, consentono molta libertà in chi sviluppa (difatti sono nate come “antagoniste” di ASP!) e in pratica sono quanto di più “sbagliato” si possa utilizzare in un paradigma ad oggetti, ma per fortuna… esistono i framework!

Solito discorso: Struts in primis ha ricollocato le JSP quasi esclusivamente nello strato V del paradigma MVC (mentre il ruolo di controller è lasciato alle Servlet o meglio a Servlet specializzate dette Actions). Poi ci sono le taglib, gli include e JSTL… con questi strumenti JSP diventa utilizzabile e, addirittura, come qualcuno osserva, riusabile (anche se lo strato V è chiaramente il meno riusabile fra tutti). Il problema se mai è quello di non farne un uso improprio.

Poi è chiaro che le alternative esistono: Velocity, Freemarker, XML/XSLT, JSF (con Facelets) per citarne alcune. La mia personale esperienza con JSF non è stata delle più entusiasmanti, credo che siano ancora un po’ “acerbe” e tra le pecche, direi che hanno un pessimo livello di debugging.

Concludendo: JSP promosse, purchè usate con tutti i criteri. Consentono di essere molto produttivi, possono essere facilmente precompilate in Servlets e, entro certi limiti, possono essere riutilizzate.

Leggi anche l’articolo originale.

16/03/07

J2EE vs Spring

Ancora una volta si parla di J2EE vs Spring, ovvero di “heavyweight” vs “lightweight”, ovvero di Sun vs mondo open in senso più stretto. Secondo l’opinione ormai diffusa, viene associato un concetto di pesantezza allo standard J2EE (o JavaEE che dir si voglia).

Ma occorre fare un po’ di chiarezza. Stiamo parlando di due tecnologie (J2EE e Spring) quindi un punto è certamente vero: prima di tutto è una questione di scelta. Non esiste tecnologia vincente in assenza di un buon software architect e la scelta di quale tecnologia adottare dipende anche (e soprattutto) dal team di sviluppatori di cui si dispone.

Tutte le tecnologie richiedono una “learning curve” iniziale, ovvero un certo costo per l’apprendimento. Disponendo di programmatori Junior ad esempio l’approccio di Spring, POJO-oriented, è in qualche modo più immediato. Ma ciò non toglie che Spring sia comunque molto ricco e che occorre molto tempo per “dominare” tutte le tecnologie e i concetti in esso contenuti. Per contro J2EE costringe lo sviluppatore a conoscere abbastanza bene i dettagli del container (ad esempio il ciclo di vita degli EJB) e per tanto richiede sviluppatori più esperti.

In ogni caso non bisogna dimenticare che J2EE non è solo EJB ma anche altre importanti API come JTA, JMS and JMX. D’altra parte Spring sposa ovviamente le tecnologie open, come Hibernate, JDO per la persistenza o Burlan e Hessian per le comunicazioni remote.

Ma dato che lo sviluppo di un’applicazione web “vera” può richiedere ad esempio l’utilizzo di Struts/Spring/Hibernate o JSF/Spring/Hibernate o Struts/EJB perchè non unire il meglio delle varie tecnologie? Spring + JMS, JMX and JTA?
Insomma, meglio collaborare che farsi la guerra 🙂

Leggi anche l’articolo originale.

Facebook
LinkedIn
error: