Archivio

Archive for the ‘java’ Category

J2EE Patterns: Intercepting Filter

Intercepting Filter

Questo pattern rientra tra i pattern J2EE di tipo Presentation

Contesto
Spesso nelle applicazioni si ha la necessità di intercettare e gestire sia la richiesta che la risposta, quindi il flusso di dati in ingresso ed in uscita che si viene a instaurare sia prima che dopo il processamento.
Molto spesso questa necessità nasce da motivi disparati quali: esigenze di logging, informazioni statistiche di accesso, verifica dei diritti di accesso, verifica dell’encoding utilizzato dal client, supporto al browser utilizzato dal client, necessità di cifrare o encodare i dati ecc.
Per gestire queste problematiche spesso si riscontra l’impiego di una serie di controlli sparsi in tutte le pagine coinvolte ma questa gestione comporta non solo una duplicazione del codice ma oltretutto rende molto fragile l’applicazione a causa di questo approccio del tipo copy-and-paste e per non bastare questo genera un forte accoppiamento tra il front-end ed il back-end. Leggi tutto…

Categorie:J2EE Pattern, java

Bad Practices: Presentation, Business e Integration Tiers

18 ottobre 2013 Commenti disabilitati

Bad Practices

Nel libro “Core J2EE™ Patterns: Best Practices and Design Strategies, Second Edition” di “Deepak Alur, John Crupi, Dan Malks” sono indicate tutte una serie di bad practices che spesso vengono riscontrate su progetti e che determinano una serie di problemi. Ho pensato di ricapitolare queste casistiche in modo tale da tenerne conto sia in sede di scrittura di codice e sia in sede di refactoring. Tali bad practices vengono riscontrate su tutti i livelli: presentation, business ed integration tiers. Leggi tutto…

Categorie:J2EE Pattern, java

Architettura Esagonale

15 ottobre 2013 Commenti disabilitati

Translate in English with Google Translate

Evoluzione architettura enterprise
Nel corso degli anni l’architettura software ha subito delle continue innovazione sia per motivi commerciale che a seguito di evoluzioni tecnologiche. Focalizzandosi sulle evoluzioni tecnologiche si è passati da architetture centralizzate ad architetture distribuite.
Inizialmente le architetture erano basate su Mainframes e l’accesso avveniva esclusivamente tramite Terminali, tutto il software era residente su un singolo server, il Mainframe.
Leggi tutto…

Categorie:java

Tell, don’t Ask

3 ottobre 2013 Commenti disabilitati

Translate in English with Google Translate

Il titolo di questo articolo prende spunto da un principio di programmazione che ho letto recentemente in un articolo “The Art of Enbugging” scritto da Andrew Hunt e David Thomas, gli autori di “The Pragmatic Programmers”.
In questo articolo gli autori fanno delle interessanti considerazioni in merito ai principi di programmazione, osservando che la programmazione è sempre più orientata ad un approccio procedurare piuttosto che ad un approccio funzionale, partendo da una considerazione di Alec Sharp, autore di “Smalltalk by Example”:

Procedural code gets information then makes decisions. Object-oriented code tells objects to do things. (Alec Sharp)

Leggi tutto…

Categorie:java, programmazione

Concorrenza in Java: Thread, Executor e Fork/Join

19 giugno 2013 Commenti disabilitati

Thread, Executor e Fork/Join
La concorrenza è la capacità di eseguire in parallelo una parte o diverse parti di un programma. Nei moderni computer forniti di diverse CPU o diversi CORE è possibile sfruttare la parallelizzazione dei processi. Ciò consente di impiegare al meglio l’hardware in nostro possesso, di ridurre il tempo di elaborazione e di servire un numero sempre più elevato di utenze. Il miglioramento dell’esecuzione può essere valutato in base alla legge di Amhdal da cui si ricava che il massimo ricavo lo si ottiene ottimizzando il processo più frequente.
Leggi tutto…

Categorie:java

GoF Patterns: Visitor

Translate in English with Google Translate
In questo articolo tratterò il pattern Visitor

Motivazione
Si tratta di un pattern comportamentale basato su oggetti e viene utilizzato per eseguire delle operazioni sugli elementi di una struttura. L’utilizzo di questo pattern consente di definire le operazioni di un elemento senza doverlo modificare.
Ma com’è possibile?
Non mi riferisco alla tecnica di decorazione, trattata in un articolo precedente, ma mi riferisco ad un’altra tecnica di “arricchimento” del codice. Leggi tutto…

Categorie:GOF Pattern, java

Simple, Double e Multi Dispatch in Java

28 novembre 2012 7 commenti

Il polimorfismo
La programmazione ad oggetti si basa su alcuni concetti basilari quali ereditarietà, incapsulamento e polimorfismo. Il polimorfismo è uno dei concetti più complessi, soprattutto per chi proviene da un linguaggio di tipo procedurale o di tipo strutturato, in quanto utilizza un grado di astrazione nello sviluppo del software. Il polimorfismo rende possibile l’utilizzo di una serie di pattern, favorisce il riuso del software, il disaccoppiamento dei componenti e principalmente la determinazione a runtime dei comportamenti superando quei limiti imposti dai linguaggi monomorfici come il PASCAL.
Leggi tutto…

Categorie:GOF Pattern, java