Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti

Nel numero:

103 gennaio
, anno 2006

Servlet 2.5: ne vale la pena?

Un‘analisi della versione 2.5

Avatar
Massimiliano Bigatti

Massimiliano Bigatti è sviluppatore senior, autore tecnico e appassionato di fotografia.
Certificato, tra le altre, come SUN Certified Enterprise Architect for Java2 Enterprise
Edition Technology, lavora presso un importante business solution provider.
Nel tempo libero scrive per diverse riviste di informatica e ha scritto una decina di libri,
quasi tutti su Java, tra cui "Java e Open Source", Tecniche Nuove 2005.
Il suo sito personale è raggiungibile all‘indirizzo www.bigatti.it.

MokaByte

Servlet 2.5: ne vale la pena?

Un‘analisi della versione 2.5

Picture of Massimiliano Bigatti

Massimiliano Bigatti

  • Questo articolo parla di: Java, Programmazione & Linguaggi

La questione che viene posta è la seguente: è corretto che una versione di manutenzione, che avrebbe dovuto portare piccole migliorie, sia poi cresciuta fino a diventare una vera e propria versione delle API per i contenuti dinamici per il Web? In altre parole, le modifiche apportate valgono così tanto da giustificare una nuova versione?

Nel settembre 2005 il gruppo di manutenzione del JCP ha rilasciato una serie di modifiche alle specifiche delle Servlet, che sono state riprese e discusse all‘inizio di quest‘anno, prima in un articolo di JavaWorld, e poi su TheServerSide.com. Queste modifiche sono raccolte sotto il JSR 154.
La questione che viene posta è la seguente: è corretto che una versione di manutenzione, che avrebbe dovuto portare piccole migliorie, sia poi cresciuta fino a diventare una vera e propria versione delle API per i contenuti dinamici per il Web? In altre parole, le modifiche apportate valgono così tanto da giustificare una nuova versione? Per provare a dare una risposta a questa domanda è opportuno analizzare, anche sommariamente, quali sono state le variazioni effettuate.

Un taglio con il passato

Si può dire che le Servlet 2.5 diano un netto taglio con il passato. Una delle modifiche principali infatti è relativa all‘utilizzo delle annotazioni, una delle funzionalità  più recenti del linguaggio Java (versione 5.0). Come si saprà , questa permette di aggiungere marcatori al codice Java che indicano al contenitore di seguire un determinato comportamento. Le annotazioni non sono codice, ma marcano il codice in modo che il contenitore alteri il proprio comportamento di conseguenza. Il linguaggio stesso definisce pochissime annotazioni, oltre ovviamente al fatto che questi nuovi elementi sono supportati dalla sintassi. Le annotazioni che è possibile utilizzare nel codice sono infatti definite in JSR appositi. Un semplice esempio di annotazione è illustrato nel listato seguente, che non è altro che l‘implementazione di un semplicissimo Web Service. Le annotazioni utilizzate sono definite nel JSR 181:

import javax.jws.WebService;import javax.jws.WebMethod;@WebServicepublic class HelloWorldService {@WebMethodpublic String helloWorld() {return "Hello World!";}}

Caricando questa classe in un contenitore apposito, che ne riconosca il significato, si ottiene un servizio Web già  pronto, senza la necessità  di codificare parti di codice che supportino SOAP.
In merito alle Servlet, l‘elenco delle annotazioni non è ancora disponibili, ma le principali sono le seguenti:

  • @Resource e @Resources permettono di eliminare il codice JNDI. Marcando un campo con questa annotazione, il contenitore si preoccupa di valorizzare la variabile con la risorsa richiesta, prima che la Servlet venga attivata. @Resources è come @Resource, con la differenza che permette di gestire un vettore di risorse.
  • @PostConstruct e @PreDestroy permettono di rendere metodi personalizzati della Servlet parte del ciclo di vita. Sostanzialmente consentono di definire metodi init() e destroy() alternativi. Questi possono essere utilizzati per inizializzare e distruggere risorse attivate tramite @Resource.
  • @EJB, @PersistenceContext, @PersistenceContexts, @PersistenceUnit e @PersistenceUnits permettono di operare con EJB3. In particolare la prima annotazione permette di valorizzare un campo con un riferimento ad un EJB.

Tante piccole modifiche

Oltre alla funzionalità  più eclatante, l‘utilizzo delle annotazioni, le nuove specifiche includono una serie di modifiche minori:

  • possibilità  di utilizzo di wildcard per il mapping delle servlet e dei filtri.
  • Rimozioni di restrizioni per la gesitione degli errori e per la gestione della sessione. In particolare, le pagine di errore configurate in web.xml con il tag ora possono chiamare il metodo setStatus().
  • Chiarificazioni varie, relative alle intestazioni, all‘encoding ed alle sessioni.

Ma l‘appettito vien mangiando, ed ancora adesso, nella lista dei desiderata, sono presenti molte idee. Purtroppo, la natura dell‘intervento sulle specifiche è di pura revisione, quindi modifiche più corpose sono state postposte, forse alla versione 3.0 delle specifiche. Bisogna anche notare che molto del tempo dedicato allo sviluppo del JSR 154 è stato dedicato ad assicurarsi che le specifiche funzionassero bene con gli altri elementi di quel grande puzzle che è Java EE 5.0.

Networking ad altre prestazioni

Forse l‘elemento più essenziale che il gruppo di sviluppo del JSR 154 ha dovuto rimandare alla prossima versione delle specifiche è l‘utilizzo del package NIO, le nuovi API Java per la comunicazione asincrona.
La presenza della sola comunicazione sincrona è stata sempre un cruccio per la piattaforma Java, che le ha impedito di scalare facilmente le applicazioni al fine di supportare un numero considerevole di utenti. Il classico approccio “un thread – una connessione”, proposto nelle prime versioni dei server di rete scritti in Java, infatti, ha il fastidioso problema di esaurire presto nel risorse disponibili. Con NIO è possibile ovviare a questo problema, ma ancora le Servlet non ne fanno uso. E probabilmente non ne faranno uso fino a Java EE 6.0.
Gli sviluppatori di Jakarta Tomcat hanno fatto un lavoro eccellente nell‘implementare il proprio Servlet Contaniner senza utilizzare NIO, ottenendo comunque performance di tutto rispetto, dato che questo software open source è integrato in JBoss, che si propone anche come strumento pronto per la produzione. Purtroppo ci sono anche casi in cui questo non è sufficiente, come nel caso della piattaforma di gaming condiviso brasiliana MegaJogos. Altri containter, come Jetty, hanno migrato a NIO principalmente per problemi di prestazioni. Ma questo uso rimane dietro le quinte, perché le API delle Servlet volutamente, per ora, non presuppongono l‘uso di NIO.

Conclusioni

La nuova versione delle specifiche delle Servlet è interessante, ma l‘allineamento con la versione 5.0 del linguaggio significa anche due cose: in primis lo sviluppatore può utilizzare tutte le caratteristiche di questa versione del linguaggio. In altre parole, l‘essere in presenza di un contenitore Servlet 2.5 significa automaticamente avere a disposizione la versione 5.0 di Java. Quindi è possibile utilizzare annotazioni, generici, boxing/unboxing, cicli migliorati, ed altro).
Lo svantaggio è che le funzionalità  delle Servlet 2.5 non strettamente legate a caratteristiche di Java 5.0 non saranno disponibili con runtime più datati.
Come sempre, la scelta se saltare sul carrozzone delle nuove specifiche o restare ancorati alle più comprovate versioni precedenti è una decisione che solo chi lavora sul proprio specifico progetto può prendere. Ad ogni modo, sicuramente passerà  del tempo prima che le aziende si allineeranno alle nuove versioni, e di conseguenza, nolenti o volenti, anche noi dovremmo comportarci di conseguenza.

Avatar
Massimiliano Bigatti

Massimiliano Bigatti è sviluppatore senior, autore tecnico e appassionato di fotografia.
Certificato, tra le altre, come SUN Certified Enterprise Architect for Java2 Enterprise
Edition Technology, lavora presso un importante business solution provider.
Nel tempo libero scrive per diverse riviste di informatica e ha scritto una decina di libri,
quasi tutti su Java, tra cui "Java e Open Source", Tecniche Nuove 2005.
Il suo sito personale è raggiungibile all‘indirizzo www.bigatti.it.

Facebook
Twitter
LinkedIn
Picture of Massimiliano Bigatti

Massimiliano Bigatti

Massimiliano Bigatti è sviluppatore senior, autore tecnico e appassionato di fotografia. Certificato, tra le altre, come SUN Certified Enterprise Architect for Java2 Enterprise Edition Technology, lavora presso un importante business solution provider. Nel tempo libero scrive per diverse riviste di informatica e ha scritto una decina di libri, quasi tutti su Java, tra cui "Java e Open Source", Tecniche Nuove 2005. Il suo sito personale è raggiungibile all‘indirizzo www.bigatti.it.
Tutti gli articoli
Nello stesso numero
Loading...

Architetture e tecniche di progettazione EJB

IV parte: trasmissione dati fra strati con DTO

Service Oriented Architecture

Parte IV: la Roadmap

Applicazioni Desktop

La misteriosa JTable

La Reflection in Java

Parte III

Firma digitale con dispositivo crittografico sicuro

Parte II: certificati digitali e processo di verif

Enterprise Application Integration

L‘host approda sul web con J2EE

Nella stessa serie
Loading...

Il dilemma del prigioniero

Un “gioco serio” per comprendere la cooperazione

Accessibilità in team di prodotto: sfide, normative e best practice

II parte: Analisi di un caso reale

Adattare l’agilità ai contesti: una chiave di lettura

I parte: Un caso di studio con le sue peculiarità

Accessibilità in team di prodotto: sfide, normative e best practice

I parte: Cosa è l’accessibilità e perché implementarla

Il web al tempo della GEO (Generative Engine Optimization)

II parte: Strategie per strutturare i contenuti

Un backlog non tanto buono

II parte: Caratteristiche e ruolo del backlog.

FIWARE: Open APIs for Open Minds

V parte: Implementazione del sistema di ricarica

Il web al tempo della GEO (Generative Engine Optimization)

I parte: Struttura e ricerca delle informazioni

Un backlog non tanto buono

I parte: Un progetto con qualche difficoltà

DDD, microservizi e architetture evolutive: uno sguardo d’insieme

X parte: Il ruolo del Software Architect

FIWARE: Open APIs for Open Minds

IV parte: Sistema di ricarica intelligente per veicoli elettrici

Tra Play14 e serious gaming

Un ponte tra gioco e apprendimento

DDD, microservizi e architetture evolutive: uno sguardo d’insieme

IX parte: Event Sourcing is not Event Streaming

FIWARE: Open APIs for Open Minds

III parte: Tecnologie e implementazione

Agilità organizzativa

II parte: Qualche caso d’esempio

Agilità organizzativa

I parte: Individui e interazioni nelle aziende moderne

FIWARE: Open APIs for Open Minds

II parte: Generic Enablers per costruire ecosistemi smart

Intelligenza artificiale e industria

Riflessioni sull’uomo e sulla macchina

Effetto Forrester e dinamiche dei sistemi di produzione

La storiella di una birra per comprendere il Lean

DDD, microservizi e architetture evolutive: uno sguardo d’insieme

VIII parte: La filosofia dell’architettura del software

Digital revolution: trasformare le aziende in ecosistemi digitali

XVIII parte: Una piattaforma comune a tutti gli eventi

Scene dalla “neolingua”

Panoramica semiseria dell’incomunicabilità aziendale

Autenticazione schede elettorali… lean!

Simulazione lean nella gestione di un seggio

FIWARE: Open APIs for Open Minds

I parte: Fondamenti e architettura

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte