Blog | Struts

18/04/08

Java, LAMP, .NET…

Allo stato attuale chi vince la “battaglia del web”? E chi ha più chanches per il futuro?
A mio modo di vedere (e in questo condivido gli articoli) bisogna fare distinzione in base al “target”: un conto è il sito web per uso personale, un conto è il blog per il social networking, un conto è il portale basato su CMS, diversa ancora è l’applicazione Enterprise (CRM, ERP, reporting, document management…) che utilizza il web solo come strato di presentation. I contendenti? Java, LAMP, .NET, RoR, Grails e la lista potrebbe proseguire…

Alcuni aspetti secondo me sono essenziali:

  • LAMP e RoR hanno dalla loro parte la facilità d’uso e l’immediatezza; PHP ad esempio é una soluzione C-based. L’approccio è quello di un processo per ogni richiesta differente. Ciò porta a notevole efficienza nelle performances. La facilità nel linguaggio deriva dal fatto che sono orientati allo “scripting” (ma supportano il paradigma OO)
  • Java si basa sul concetto di Virtual Machine (thread piuttosto che processi), non nasce per il web ma aggiunge il supporto web tramite il J2EE e numerosi frameworks: JSF, Struts, Spring MVC… la scelta è vasta è richiede un lungo tempo di apprendimento. I benefici si vedono nelle applicazioni di grandi dimensioni, nella sicurezza, nella portabilità, nell’interoperabilità, nel design…
  • .NET rappresenta una scelta più “organizzata” in quanto alla base vi è un unico produttore. L’approccio della VM nasce con Java nel 1996, .NET lo fa suo in tempi più recenti e sviluppa un buon framework con numerosi componenti (in Java invece le scelte sono molteplici e possono essere anche disorientanti!) che in alcuni casi nascono evidentemente dall’esperienza Java (NHibernate, log4net…)

Alla luce di queste considerazioni non deve stupire più di tanto che quindi molti siti (portali) che promuovano prodotti Java come TheServerSide, JavaLobby o Spring siano sviluppati usando Drupal ovvero un CMS PHP! Oppure che il portale TheServerSide.NET (versione di TheServerSide per il mondo .NET) non sia scritto in .NET 🙂

Leggi anche gli articoli originali: 1, 2 e 3

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.

24/11/06

Struts è il nuovo COBOL?

Nonostante l’età e il giudizio abbastanza diffuso che non sia più all’altezza delle moderne applicazioni web, Struts continua ad essere il framework MVC più utilizzato.

Intanto cresce l’utilizzo di JSF promosso da Sun, benchè anche questo abbia i propri detrattori, cresce l’utilizzo di Spring MVC (che sembra molto buono) e continuano ad essere utilizzati gli altri framework più o meno consolidati (Tapestry, Webwork) mentre emergono i framework rich client (Wicket, Echo2, Webstart) o, dando uno sguardo ad altri linguaggi,  RoR (Ruby on Rails) di cui molto si parla.

Ma Struts rimane, e sarà difficile scalzarlo. Proprio come il COBOL 🙂

Leggi anche l’articolo originale.

Facebook
LinkedIn
error: