Model Driven Architecture e sviluppo J2EE

Abbreviato con MDA, il Model Driven Architecture è un approccio allo sviluppo di applicativi che ha radici già nel lontano 2004.

Di cosa si tratta ? E’ sostanzialmente un’Architettura del Processo di Sviluppo del Software, standardizzata dall’OMG, basata sulla modellazione UML e sulla separazione in livelli diversi di astrazione. Un manuale dell’OMG è disponibile quì.

Secondo l’approccio MDA, lo sviluppo di un sistema avviene attraverso la modellazione a due livelli:

  • livello PIM (Platform Indipent Model), modellazione UML dell’applicativo indipendente dalla piattaforma su cui sarà ospitato (uso di Design Pattern e Design by Contract)
  • livello PSM (Platform Specific Model), modellazione UML dell’applicativo caratterizzata dalla piattaforma software da usare (es WS, EJB, J2EE, .NET)

Con tale divisione, si ottengono alcuni evidenti vantaggi:

  • la suddivisione netta del lavoro fra la progettazione UML del business basato sull’analisi funzionale (modelli PIM) e la modellazione analitica del sistema basata sull’analisi tecnica (modelli PSM)
  • riuso del modello funzionale grazie all’indipendenza con i modelli tecnologici
  • disaccoppiamento forte tra funzionalità e tecnologia: separation of concern
  • migliore separazione dei ruoil, l’esperto del dominio non necessariamente deve essere esperto delle tecnologie

Alcuni aritoli interessanti sull’argomento:

Tutta questa teoria non sarebbe nulla se poi qualche folle non si fosse messo d’intento a realizzare qualche tool che permetta:

  • la modellazione visuale UML dei modelli PIM e PSM
  • la generazione automatica del codice dai modelli PIM e PSM
  • intercambiabilità della tecnologia da usare (Cartridge) per la generazione del codice (es. JSP/JSF/STRUTS-SPRING-HIBERNATE oppure ASP.NET-ASMX-NHibernate)

Qualche tool ho recensito:

  • AndroMDA, applicativo stand-alone a riga di comando basato su modelli UML prodotto da IDE in grado di esportare UML in formato XMI (es. ArgoUML e StarUML), ha diverse Cartidge sia in ambiente Java che .NET
  • Taylor, plugin per Eclipse che permette anche la modellazione UML, ha una sola Cartridge basata su EJB-JSF-JBOSS Seam
  • OptimalJ, ambiente per la modellazione UML e la generazione del codice per piattaforma J2EE, putroppo non OpenSource di Compuware

Ora vi ho detto tutto … buon divertimento e sentiamoci se sperimentate qualcosa in tal senso …

mi interesserebbe sapere se avete fatto esperienze sui framework che permettono lo sviluppo veloce di soluzioni complete per piattaforma J2EE.

Perchè vendere a M$ il proprio bius-del-chiul?

E’ stato reso pubblico l’accordo Linspire-Microsoft. [pausa di riflessione]. Dacchè la domanda del titolo.
E’ la domanda che mi ronza in testa…che ci guadagna Linspire a sottoscrivere un’accordo con Microsoft a queste condizioni? Perchè un cliente di Linspire dovrebbe continuare ad esserlo se la compagnia che gli ha venduto il software non sa nemmeno se è vero che il proprio Linux infrange dei brevetti Microsoft. E, nonostante ciò non sia stato dimostrato, firma un’accordo del genere?

Non sono mai stato estimatore dei Linux Windows-Like (e neanche di quelli Mac-Like). Linux non ha rubato nulla a Microsoft, al più lo avrà fatto a Unix di cui Windows sembra il cugino scemo. E’ vero che sono stati scritti dei software che interagiscono con brevetti Microsoft (mi vengono in mente i software che accedono a reti Microsoft o alle partizioni NTFS); ma se anche fosse, perchè in nessun angolo della rete si legge che la Microsoft ha vinto una causa contro Biggus Dickus (è un nome inventato come Marco Pisellonio) per aver infranto dei brevetti?

Certo che Ballmer è una mente, davvero!

IronRuby per .Net e Mono

Seguendo il successo del fratello IronPython, arriva alle ultime fasi di sviluppo IronRuby, che porta il linguaggio più celebre del Web 2.0 nella ricca collezione dell’ambiente .Net. Nonostante sia stato sviluppato da Microsoft, IronRuby è distribuito con la Microsoft Permissive License (^_^”) che consente una fruizione completa dei sorgenti senza null’altro a pretendere da parte di Microsoft stessa (se non, forse, il fatto che nessuno brevetti questo lavoro). IronRuby si poggia sul DLR (Dynamic Language Runtime) che è quella porzione della virtual machine che consente l’esistenza, all’interno di .Net, di tutte quelle funzioni che consentono la generazione dinamica di variabili, gestione dinamica dei metodi e tutte le altre delizie a cui i linguaggi moderni ci stanno abituando. Grazie al DLR pare che le performance siano superiori a quelle di Ruby 1.8.6.

La mossa della Microsoft non va sottovalutata in quanto la gestione dei linguaggi in .Net ne sta decretando la sempre più capillare diffusione negli ambienti di sviluppo anche a discapito di Java. Inoltre i Mono-guys stanno tenendosi al passo con tutte le novità dell’ambiente .Net, offrendo anche una valida alternativa Open Source a tutto ciò. Sun dovrebbe darsi una svegliata ed iniziare qualche contromossa prima che sia troppo tardi: non basteranno certo OpenJava o JavaFX a destare preoccupazioni alla Microsoft: occorre che Java cominci a snellirsi sul lato virtual machine e ad accelerarsi sul lato delle performance.

La mia l’ho detta.

Zac

Breve riflessione su iPhone

Leggendo i blog qui e la non è raro incappare in articoli che parlano di quanti bug ha l’iPhone, delle migliorie che si potrebbero fare all’interfaccia, del fatto che non supporta i network 3G, che la batteria è saldata all’interno, dei problemi di sicurezza del Safari integrato all’interno…ma alla fine tutti dicono vabbè, è un telefono giovane, è normale che abbia dei difetti, ma tanto è figo lo stesso e tutto finisce a tarallucci e vino. Ma nessuno si è chiesto di come sarebbero stati gli articoli se. invece della Apple, l’iPhone l’avesse fatto la Microsoft: come minimo si sarebbero scagliati tutti contro indicando quanto sono scarse le cose che fa la Microsoft, che con questi bug non avrebbero dovuto rilasciare proprio sto telefono, che Steve Ballmer così e Bill Gates colà…

In definitiva l’iPhone ha mostrato a tutto il mondo che i tempi sono maturi per avere dispositivi davvero innovativi, dotati di un’interfaccia intuitiva ed al passo coi tempi, ma i difetti ci sono, gli investimenti ci sono stati (ricordiamoci che stiamo ancora aspettando Leopard per via dell’iPhone) e quindi da parte mia l’iPhone deve beccarsi una batosta. Che poi di questi tempi qualsiasi cosa abbia una mela appicicata sopra faccia successo (compresi gli iFon cinesi (^_^), vedi il filmato ) è un discorso a parte (e cmq avrei voluto vedere la faccia di Steve Ballmer subito dopo aver visto le vendite del telefono “senza tastiera”).

Ma la Apple non deve scordarsi che la sua schiera di affezionati non l’ha abbandonata in questi anni per la qualità dei suoi prodotti e non solo per l’hype che è in grado di generare attorno ad essi.

Quale è il Web Framework J2EE del futuro ?

Questa volta provo a rifarmi con un interessante articolo recensito in JavaPortal.

Spring MVC, Struts 2, Stripes, JSF, Tapestry, Wicket…quale la tecnologia web che surclasserà le altre? Matt Raible (open source evangelist) ha presentato questo argomento molte volte a varie conferenze, confrontando i vari web framework. Nel suo blog si possono consultare sia le varie slide che i whitepaper

Per i dettagli sull’articolo eccovi il link

Vi consiglio di scaricare i due PDF dell’articolo, molto interessanti i grafici riportati in “Comparing Java Web Frameworks” e l’analisi comparata su criteri di valutazione molto realistici.

In sintesi, Struts rimane ancora il capostipite dei web framework j2ee, ma la strada da seguire sembra sia Struts2 e JSF … a voi l’ardua sentenza.

Benvenuto Eclipse 3.3 – Europa

E’ da molto che non ci sentiamo … ma eccovi una buona nuova !

E’ dai primi di Luglio che è disponibile l’annuale versione di Eclipse,questa volta siamo alla 3.3 denominata Europa.

L’ambiente vanta la sinergia di ben 21 sotto progetti

Molto interessante anche la versione “for J2EE Developer” ed i suoi plugin “Test and Performance Tools” e “Reporting Tools” (quasi come BugZilla)

Ora non ci resta che provarlo … buon divertimento.

Zak perdonami … ma ho visto il tuo MiniBlog sull’argomento solo ora … aggiornatissimo come al solito.

Spatial Image Based Lighting

So che pochi si dilettano (me compreso) nella generazione di immagini 3D fotorealistiche (ad esempio usando Blender), che di questi pochi ancora meno conoscono L’Image Based Lighting (IBL) e ancor meno lo Spatial Image Based Lighting (SIBL).

Per la prima tecnica dobbiamo ringraziare tale Paul Debevec che con dei semplici mezzuci (per noi) ha fatto fare balzi da gigante nella qualità dei rendering. Per la seconda tecnica i mezzi richiesti saranno un pò più articolati ma penso che a breve vedremo i frutti di questi studi nei film di prossima uscita; quest’ultima tecnica è stata sviluppata come tesi da Jeremy Pronk.

Normalmente, per fare un rendering di qualità occorre una sapiente gestione delle luci. Chi ha visto qualche inserto speciale dei dvd di film d’animazione avrà visto che una scena ben fatta presenta molte luci, utilizzate per evidenziare particolari importanti ma anche per rendere realistica la scena. Se infatti ci mettiamo seduti in una stanza (che non sia vuota) su di noi arriveranno i contributi delle luci del lampadario dall’alto (supponiamo bianche), i riflessi del pavimento dal basso (ad esempio grigi), il riflesso di un tavolo vicino (ad esempio marrone) e l’illuminazione del cielo (molto articolata dato che, di giorno, il cielo è blu, con nuvole bianche e, se ci sono alberi, ci sono contributi di verde e di marrone). Se in questa scena, che supponiamo disponibile in fotografia, vogliamo inserire un elemento artificiale dovremmo creare delle luci artificiali per ricreare il contesto descritto. Paul Debevec ha messo a punto un sistema semplice ed ingegnoso:

  1. fotografo una palla riflettente (alcuni usano con successo delle grosse palle di Natale argentate) a differenti aperture di diaframma/esposizioni; la palla va posta nella posizione dell’oggetto artificiale in modo da raccogliere tutto l’ambiente circostante;
  2. realizzo una sola immagine che, per ciascun pixel, racchiuda le informazioni di colore ed intensità luminosa provenienti da tutte queste foto; infatti lo scopo di fare più fotografie è proprio quello di capireda dove provengono le fonti luminose e la loro intensità; un’immagine di questo tipo si chiamerà HDRI (High Dinamic Range Image);
  3. Attorno all’oggetto artificiale creo una sfera e su di essa ci appicico la texture HDR ottenuta al punto 2;
  4. Renderizzo ed il gioco è fatto!!

La tecnica è così semplice che ha avuto subito larghissima diffusione (il rendering di sopra è stata realizzata da un 17-enne che ha fotografato la sua casa e ci ha immerso un personaggio di half life 2). Il problema della tecnica succitata è che è ottima per la realizzazione di sincole immagini, ma mal si adatta alle immagini in movimento: in qualche modo si perde di realismo (a voler pretendere il massimo). Ecco allora che ci viene incontro il lavoro di Pronk che, con la sua tesi ci fornisce un modo per superare questo inconveniente. Vedete voi stessi la differenza (la stanza è fotografata mentre il coniglio è di sintesi)!

Zac