Allo User Group Italiano su Liferay di Bologna: Overview del futuro prossimo su Liferay.
OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire applicazioni modulari a componenti (i Bundle) e che introduce una programmazione Service Oriented, permettendo una separazione tra interfaccia ed implementazione molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container) di OSGi, conformi alle specifiche.
1. OSGi e Liferay 7
Overview del futuro prossimo
da Jader e Antonio! :)
2. Chi siamo? :)
Jader Francia
Imprenditore
@JedJds
http://blog.d-vel.com
Antonio Musarra
Super Mega Consulente
@antonio_musarra
http://www.dontesta.it/blog/
Imprenditore... Super mega consulente...
3. OSGi: Quali sono gli elementi chiave
OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire
applicazioni modulari a componenti (i Bundle) e che introduce una programmazione
Service Oriented, permettendo una separazione tra interfaccia ed implementazione
molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container)
di OSGi, conformi alle specifiche.
● Modularità
● Bundle
● Declarative Services
● Semantic Version
● Microservices
4. Contiene:
- Classi java
- il file di Manifest
- le Risorse, ovvero:
- File di properties
- JSPs
- File vari (images, pdf, binary files, etc)
Cos’è un modulo?
Può definire:
- Services
- Portlets
- Servlet
- Comandi shell
Un modulo è una unità di deploy self contained.
I moduli sono pacchettizzati in file JAR
5. Moduli e Liferay 7
Modulo
Java Class Java Class
Manifest Resource (JSP)
Resource
(Properties files)
Resource
(Images)
Sviluppare moduli vuol dire:
● creare piccoli moduli
● pubblicare e consumare le features di
altri moduli
● lavorare senza dipendenze statiche
Cosa comprendere del framework
modulare:
● Moduli
● Componenti
● Ciclo di vita delle applicazioni
6. Com’è fatto un modulo?
Un modulo è un JAR che contiene (come minimo):
- Java classes
- il file MANIFEST.MF
Le risorse non sono necessarie affinché il modulo sia valido.
7. Perché sia valido, un modulo deve avere uno unique identifier.
Module Name + Module Version
Ad esempio: com.example.my.module,1.0.1
Questo significa che possiamo rilasciare differenti versioni dello stesso modulo!
Naming convention di un modulo
8. OSGi: Semantic Versioning
● Le API definiscono un contratto (come un documento WSDL)
● Assegnare un numero di versione alle funzionalità esportate dà maggior vita al
contratto
○ 1.x => 2.0 := apportati cambiamenti critici alle API
○ 1.x => 1.y := apportati cambiamenti retro-compatibili
○ 1.x.y => 1.x.z := bug fix
● Vantaggi
○ Chi utilizza le API può decidere liberamente un intervallo di versioni che accetta
○ Con queste convenzioni, i numeri di versione, ed il modo in cui essi cambiano, comunicano
significato relativamente al codice sottostante e a cosa è stato modificato da una versione all’altra.
9. Cos’è un componente?
I componenti sono i blocchi con i quali puoi costruire una applicazione.
Sono riusabili e sempre disponibili perché potenzialmente non legati ad una singola
applicazione.
Rinforzano il concetto di modularità.
10. Componenti e Liferay 7
Applicazione
Modulo Modulo
JSPs Service
Portlet
(Component)
● I componenti sono contenuti all’
interno del moduli
● I singoli componenti definiscono
funzionalità atomiche e possono essere
utilizzati in modo isolato o insieme ad
altri componenti per costruire una o
più applicazioni
● Un’applicazione è definita da uno o
più componenti che possono risiedere
all’interno dello stesso modulo o su
moduli diversi
11. Application Lifecycle
● Un’applicazione è installata
con dei moduli che
contengono dei componenti
● Il framework modulare (il
container OSGi) gestisce l’
installazione, l’attivazione e
le dipendenze tra moduli
● Il processo d’installazione e
attivazione di un modulo è
gestito tramite l’application
lifecycle
13. Application Lifecycle
On resolved:
- le dipendenze sono
risolte;
- le classi Java esportate
sono disponibili;
- tutti i servizi necessari
sono disponibili;
- il modulo può essere
messo in STARTING.
15. Application Lifecycle
- Lo stato ACTIVE è lo
stato principale;
- le applicazioni in
questo stato sono
eseguibili;
16. Application Lifecycle
On stopping:
- l’applicazione viene
“spenta”;
- torna nello stato
“resolved”;
- si può nuovamente
farla ripartire o
disinstallarla;
18. OSGi: I Services
● I Services sono costituiti da una serie d' interfacce e classi Java registrate all’
interno del Service Registry
● Un componente può essere pubblicato come servizio
● Un componente può richiedere un servizio
● I Servizi sono registrati dal Bundle Activator del modulo
19. OSGi: I Services
● Liferay utilizza il framework
modulare a Declarative Services
(DS) che fornisce un alto livello di
astrazione nella gestione dei servizi
● Un service è costituito da un’
interfaccia ed un’implementazione
● Il Service Registry è il “faldone” con
i servizi che abbiamo a disposione
20. ...qualche esempio concreto dal vivo.
● Bundle Activator
● Services
● Framework Events (Liferay Lifecycle)
● Application Configuration (Scheduler Example)
...Se poi volete provare anche voi: https://github.com/amusarra/liferay-
italia-bo-usergroup
E adesso...
21. Ci vediamo al simposio!
… Però, se siete curiosi di scoprire di più su Liferay 7:
- http://www.dontesta.it/blog
- http://blog.d-vel.com
- http://www.slideshare.net/amusarra
@antonio_musarra
@JedJds
@dvelsnc
GRAZIE! :)