• JAVA,  Programmazione

    Java design patterns: Observer

    Eccoci ad una nuova puntata della serie dedicata ai design patterns, implementati in particolare utilizzando il linguaggio JAVA, parleremo dell’Observer pattern. Con questo pattern un oggetto, definito “il soggetto”, mantiene una lista di oggetti dipendenti, definiti “osservatori”, che vengono notificati istantaneamente di ogni cambiamento nello stato del “soggetto” stesso, normalmente chiamando uno dei loro metodi. Principalmente è utilizzato per implementare sistemi distribuiti di gestione degli eventi. Nella figura che segue lo schema UML relativo al pattern “Observer”. Nell’esempio pratico di implementazione in JAVA del pattern, l’input ogni linea di input da tastiera viene trattata come un evento, l’esempio è basato sulla libreria di classi java.util.Observer e java.util.Observable. Quando viene acquisita…

  • JAVA,  Programmazione

    Caricare jars e classi Java dinamicamente

    Java fornisce una funzionalità in cui è possibile modificare le variabili di ambiente di sistema utilizzando l’oggetto System. Quindi non si può modificare il classpath e risolvere il problema? No! il problema sta proprio qui, il classloader di sistema viene inizializzato proprio all’inizio della sequenza di avvio e copia il in esso classpath. Quindi, non servirebbe modificare dinamicamente il classpath visto che il classloader di sistema avrebbe già letto il classpath “vecchio” e caricato le classi di conseguenza. C’è una soluzione a tutto cio?…. Sì! i class loaders … Ma prima entrare nel dettaglio, facciamo una veloce disamina dei class loaders. Il caricamento di una classe è gestito dai class loaders della JVM, il Bootstrap loader è il loader principale che carica tutte le classi Java di base durante la fase di avvio, come molti sviluppatori Java già sanno non ci sono passi separati di linking come avviene in altri linguaggi di programmazione (vedi linguaggio C). Quando…

  • JAVA,  Programmazione

    Java design patterns: il Singleton

    Oggi iniziamo con una sorta di rubrica dedicata ai design patterns relativamente alla programmazione Java, faccio questa precisazione visto che un design pattern come recita anche Wikipedia è “un modo formale di documentare una soluzione a un problema di progettazione in un particolare campo di competenza“. Infatti i design patterns possono essere applicati all’architettura così come allo sviluppo del software, visto il mio lavoro e la mia dedizione a Java, ho deciso di scrivere una serie di articoli sui patterns che preferisco. Un software design pattern è una soluzione generale a un problema comune nella progettazione del software, è una descrizione o un template che indica come risolvere un problema,…