Your SlideShare is downloading. ×
Webbit 2004: Aspectj
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Webbit 2004: Aspectj

700
views

Published on

Introduzione alla …

Introduzione alla
programmazione AOP con
AspectJ

Published in: Technology

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
700
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Padova 7 Maggio 2004 Introduzione alla programmazione AOP con AspectJ by Matteo Baccan http://www.baccan.it www.JavaPortal.it www JavaPortal
  • 2. Introduzione alla programmazione AOP con AspectJ • Relatore: Matteo Baccan matteo@baccan.it • Data: Padova 07/05/2004 13:30 • Area: Programming & development • Target: Tecnici • Difficoltà: Facile Nel corso degli anni, nuove correnti di pensiero hanno fatto nascere e sviluppare la programmazione strutturata, la programmazione ad oggetti ed ora la programmazione ad aspetti (Aspect Oriented Programming). Vediamo di cosa si tratta, andando ad utilizzarla tramite AspectJ, un compilatore portabile in grado di gestire questi nuovi costrutti www.JavaPortal.it www JavaPortal
  • 3. Obiettivi Dopo aver completato questo seminario sarai in grado di: • Comprendere le basi di AOP • Conoscere il concetto AOP di AspectJ • Scrivere i primi programmi AOP • Sfruttare la programmazione AOP nei tuoi programmi www.JavaPortal.it www JavaPortal
  • 4. AOP - prima Sviluppo tradizionale • Lo sviluppo di applicazioni è faticoso • La progettazione di un buon framework richiede tempo e progettazione • Riuscire a soddisfare delle richieste orizzontali all'intero progetto rischia di stravolgere l'architettura progettata • Dietro l'angolo c'è sempre la possibilità di avere del codice ridondante e copiato fra un componente e l'altro www.JavaPortal.it www JavaPortal
  • 5. AOP – perché AOP permette di astrarre funzionalità orizzontali alle applicazioni, definendole all'interno di aspect www.JavaPortal.it www JavaPortal
  • 6. AOP - evoluzione • Programmazione destrutturata/batch una sola procedura • Programmazione procedurale a funzioni • Programmazione ad oggetti tramite classi • Programmazione ad aspetti Aspetti (crosscutting concerns) – problematiche comuni a più classi www.JavaPortal.it www JavaPortal
  • 7. AOP - crosscutting concerns Come direbbe google: “preoccupazioni trasversali di taglio”... ...o per meglio dire: problematiche trasversali a tutto un framework o ad un'applicazione Esempi • Logging • Exception • Accesso controllato • Monitoring • Profiling www.JavaPortal.it www JavaPortal
  • 8. AOP - prima www.JavaPortal.it www JavaPortal
  • 9. AOP – la soluzione • Permette di definire un concetto trasversale • Evita la modifica delle classi in caso di crosscutting • Separa i framework dalle modifiche “cross” • Programmazione simile a un “reverse engineering” autorizzato www.JavaPortal.it www JavaPortal
  • 10. AOP – dopo www.JavaPortal.it www JavaPortal
  • 11. AspectJ Per programmare in AOP serve un compilatore • AspectJ è uno dei compilatori in grado di utilizzare AOP • Non è l'unico. Alternative: Hyper/J, JbossAOP, JAC, AspectWerkz, Spring etc. www.JavaPortal.it www JavaPortal
  • 12. AspectJ - crosscutting Dinamico • Viene applicato a tutto il framework/programma o ad un sottoinsieme di codice e ne modifica l'esecuzione. Il codice cambia la modalità di funzionamento Statico • Viene applicato a tutto il framework/programma o ad un sottoinsieme di codice e ne modifica la struttura. Le classi hanno nuovi metodi o variabili d'istanza www.JavaPortal.it www JavaPortal
  • 13. AspectJ – elementi Join point: un punto di esecuzione del programma: il richiamo di un metodo o l'assegnamento di una variabile d'istanza Pointcut: è il costrutto che permette di selezionare i join point dove andrà ad agire un advice Advice: è il codice che deve essere eseguito nel join point selezionato dal pointcut Aspect: è l'insieme di advice e pointcut www.JavaPortal.it www JavaPortal
  • 14. AspectJ – join point Method execution execution(MethodSignature) Method call call(MethodSignature) Constructor execution execution(ConstructorSignature) Constructor call call(ConstructorSignature) Class initialization staticinitialization(TypeSignature) Field read access get(FieldSignature) Field write access set(FieldSignature) Exception handler execution handler(TypeSignature) Object initialization initialization(ConstructorSignature) Object pre-initialization preinitialization(ConstructorSignature) Advice execution adviceexecution() www.JavaPortal.it www JavaPortal
  • 15. Join point – execution call • call(...) Viene modificato il programma chiamante • execution(...) Viene modificato il metodo Esempio... www.JavaPortal.it www JavaPortal
  • 16. Join point - staticinitialization • staticinitialization( ... ) permette di intercettare le inizializzazioni statiche delle classi static{ // faccio qualcosa } Esempio... www.JavaPortal.it www JavaPortal
  • 17. Join point - get/set • set( ... ) Intercetta gli assegnamenti ad una variabile • get( ... ) Intercetta le letture di una variabile Esempio... www.JavaPortal.it www JavaPortal
  • 18. Pointcut - this/target • this( ... ) Condizione sull'oggetto corrente • target( ... ) Condizione sull'oggetto chiamato Esempio... www.JavaPortal.it www JavaPortal
  • 19. Pointcut - args • args( ... ) condiziona un pointcut a certi parametri Esempio... www.JavaPortal.it www JavaPortal
  • 20. Advice- before/after/around • before Richiamo del codice prima di un pointcut • after Richiamo del codice dopo un pointcut • around Richiamo del codice prima e dopo un pointcut Esempio... www.JavaPortal.it www JavaPortal
  • 21. Advice/metodi Come un metodo • Segue delle regole di accesso per essere eseguito • Può generare un'eccezione • Può fare riferimento all'aspect corrente tramite this Al contrario dei metodi • Non ha un nome • Non può essere chiamato direttamente, è il sistema che lo esegue • Ha accesso ad alcune variabili valorizzate all'interno di this che possono servire a prendere informazioni sui join point catturati: thisJoinPoint www.JavaPortal.it www JavaPortal
  • 22. Advice - after • returning Permette di porre del codice dopo il ritorno di un valore • throwing Permette di porre del codice al verificarsi di un'eccezione Esempio... www.JavaPortal.it www JavaPortal
  • 23. Crosscutting statico • Permette di aggiungere variabili e metodi alla classe • Permette di modificarne l'ereditarietà Esempio... www.JavaPortal.it www JavaPortal
  • 24. Crosscutting compilazione È possibile condizionare la compilazione con: • warning avvisa l'utente di una certa condizione • error blocca la compilazione Esempio... www.JavaPortal.it www JavaPortal
  • 25. Riferimenti • AspectJ http://www.aspectj.org • Il progetto Eclipse http://www.eclipse.org • Pagina di download di AspectJ http://dev.eclipse.org/viewcvs/indextech.cgi/~checkout~/aspectj -home/downloads.html • Dove poter scaricare questo materiale http://www.baccan.it http://www.javaportal.it www.JavaPortal.it www JavaPortal
  • 26. and now ... Q&A www.JavaPortal.it www JavaPortal
  • 27. Ringraziamenti GRAZIE da Matteo Baccan www.JavaPortal.it www JavaPortal
  • 28. Ringraziamenti… • Le aziende grazie alle quali posso essere qui oggi http://www.grupposisge.it/ www.JavaPortal.it www JavaPortal