SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Aspect Weaving for OSGi


                                      Martin Lippert (akquinet it-agile GmbH)
                                     Heiko Seeberger (Weigle Wil
                                     H ik S b         (W i l Wilczek G bH)
                                                                      k GmbH)




© 2008 by Martin Lippert, Heiko Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license | November 7th, 2008
Aspect-oriented programming
• Modularity improved a lot by OO concepts
• AOP adds modularization for crosscutting concerns
• Meanwhile AOP is an established concept
      Established languages and frameworks available
      Used in production


       ClassA                ClassB                ClassC                         AspectX

                           ConcernX
     ConcernX                                                                    ConcernX
                                                 ConcernX




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
AspectJ = AOP for Java
• AspectJ is a powerful language extension for Java
      Hosted as an Eclipse project
      Still very active (latest release 1.6.1 in July 2008)
• AJDT:
      Great tooling for the Eclipse IDE (3.3, 3.4)
      Comes close to the JDT feeling
• Spring-IDE:
      Integrates AJDT with Spring-AOP
      AJDT feeling for Spring apps




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
The Standard Use Case



          ClassA                ClassB                ClassC                         AspectX

                              ConcernX
        ConcernX                                                                    ConcernX
                                                    ConcernX



 Project Sources

                                                                     Single Application Classpath

                                       Java Virtual Machine



 Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Library Aspects



          ClassA                ClassB                ClassC                         AspectX

                              ConcernX
        ConcernX                                                                    ConcernX
                                                    ConcernX



  Project Sources                                                              JAR

                                                                     Single Application Classpath

                                       Java Virtual Machine



 Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Aspects for Existing Code



          ClassA                         ClassB                ClassC                AspectX

                                       ConcernX
        ConcernX                                                                    ConcernX
                                                             ConcernX



  JARs                           Project Sources

                                                                     Single Application Classpath

                                       Java Virtual Machine



 Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Java + OSGi
• OSGi:
      “A dynamic module system for Java”


• Modularity
• Dynamic
• Service-Oriented




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
What does it mean for us?
• We would like to modularize
      … classes and interfaces into bundles
      … and aspects into bundles


• The obvious next step:
      modularize cross cutting concerns into bundles
                 cross-cutting


• Takes modularity to the next level




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Intra-Bundle Aspects



        ClassA                ClassB                                   ClassC               AspectX


                                                                                           ConcernX
                                                                     ConcernX



                  Bundle A                                                      Bundle B

            Bundle-Classpath                                              Bundle-Classpath

                                         Java Virtual Machine



 Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Co-Op Bundle Aspects



    ClassA                ClassB                         ClassC                             AspectX

                        ConcernX
  ConcernX                                                                                 ConcernX
                                                       ConcernX



             Bundle A                                   Bundle B                            Bundle C

       Bundle-Classpath                             Bundle-Classpath                  Bundle-Classpath

                                         Java Virtual Machine



 Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Abstract Aspect Bundles



       ClassA                ClassB                                                          Abstract
                                                                                             Ab t t
                                                       Concrete
                                                       C     t
                                                                                             Aspect
                                                        Aspect
                           ConcernX
     ConcernX
                                                                                            ConcernX
                                                      ConcernX


                              Bundle A                                                      Bundle B

                                                     Bundle-Classpath                 Bundle-Classpath

                                         Java Virtual Machine



 Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Dynamics for Aspect Bundles
• OSGi allows dynamic bundle
      … installs
      … uninstalls
      … updates


• Same should be possible for aspect bundles
      … dynamic installs, uninstalls and updates of aspect bundles
      … dynamic installs, uninstalls and updates of bundles that are
      affected by aspects
       ff t d b        t




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
How could all this possibly work?




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Equinox Aspects
• Equinox Incubator Project
      http://www.eclipse.org/equinox/incubator/aspects


• Enables AspectJ/AOP for OSGi
      Supports all presented use-cases
      Ready-to-use
      Ready to use


• Setting
      Works with Eclipse 3.4 (and 3.3 deprecated)
      Works with AJDT 1.5.2, 1.5.3, 1.6.0, 1.6.1, 1.6.2



  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
What can I do?
• Put aspects into standard OSGi bundles
      Just like Java classes
• Define what and where to weave
      aop.xml and manifest headers
• Go!



• Feels like a natural combination of AOP and OSGi
                                              OSGi…




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Load-Time Weaving for OSGi
• Let the OSGi runtime take care of weaving the aspects
      (and not the compiler)
      Leads to load-time weaving within OSGi


• This means:
      No recompilation of existing bundles necessary
      Supports “aop.xml” load-time weaving config of AspectJ




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Live Demo
• Monitoring Eclipse bundles
                     bundles…




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Caching
• Wasn’t that a fast startup?
  Wasn t

• The reason: caching for woven classes
      Load-time weaving happens only once
      Second time startup is same as without aspects
      Available for t d d JREs d
      A il bl f standard JRE and IBM J9 shared classes
                                              h dl
      Supports configuration switching




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Dynamics
• Dynamics for aspect bundles
      Means re- or un-weaving existing bundles


• How is it realized?
      Silent update of bundles to be woven again
      Bundles must behave nicely within dynamic situations




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Live Demo
• Installing
  Installing,
    updating,
        uninstalling
                                      aspects at runtime…




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
APIs and Implementation
• org eclipse equinox weaving hook
  org.eclipse.equinox.weaving.hook
      Hooks into the runtime
      Provides API for injecting weaving and caching
      implementations
• org.eclipse.equinox.weaving.aspectj
      Implements aspect weaving using AspectJ
• org.eclipse.equinox.weaving.caching
      Implements caching for standard VMs
• org.eclipse.equinox.weaving.caching.j9
      Implements caching for IBM J9 VMs (shared classes feature)



  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Conclusions
• Equinox Aspects brings full AOP to OSGi
      Load-time weaving integrated into OSGi
      Combines OSGi and AOP modularity features
• Can be used for production systems today

• Give it a try
  http://www.eclipse.org/equinox/incubator/aspects




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
Thank you for your attention!



Q&A


Heiko Seeberger: seeberger@weiglewilczek.com
Martin Lippert lippert@acm org
       Lippert: lippert@acm.org




  Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license

Mais conteúdo relacionado

Destaque

EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPEclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPHeiko Seeberger
 
OSGi DevCon 09 - OSGi on Scala
OSGi DevCon 09 - OSGi on ScalaOSGi DevCon 09 - OSGi on Scala
OSGi DevCon 09 - OSGi on ScalaHeiko Seeberger
 
OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...
OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...
OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...Heiko Seeberger
 
RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?Heiko Seeberger
 
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesW-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesHeiko Seeberger
 
JAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsJAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsHeiko Seeberger
 

Destaque (15)

EclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCPEclipseCon 08 - Agile RCP
EclipseCon 08 - Agile RCP
 
OSGi DevCon 09 - OSGi on Scala
OSGi DevCon 09 - OSGi on ScalaOSGi DevCon 09 - OSGi on Scala
OSGi DevCon 09 - OSGi on Scala
 
Smackdown
SmackdownSmackdown
Smackdown
 
Smackdown
SmackdownSmackdown
Smackdown
 
OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...
OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...
OSGi DevCon 09 - Component Oriented Development in OSGi with DS, Spring and i...
 
Smackdown
SmackdownSmackdown
Smackdown
 
RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?RheinJUG 2010 - Sprechen Sie Scala?
RheinJUG 2010 - Sprechen Sie Scala?
 
Smackdown
SmackdownSmackdown
Smackdown
 
Smackdown
SmackdownSmackdown
Smackdown
 
JAX 09 - OSGi on Scala
JAX 09 - OSGi on ScalaJAX 09 - OSGi on Scala
JAX 09 - OSGi on Scala
 
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic ModulesW-JAX 08 - Declarative Services versus Spring Dynamic Modules
W-JAX 08 - Declarative Services versus Spring Dynamic Modules
 
JAX 08 - Agile RCP
JAX 08 - Agile RCPJAX 08 - Agile RCP
JAX 08 - Agile RCP
 
W-JAX 09 - Lift
W-JAX 09 - LiftW-JAX 09 - Lift
W-JAX 09 - Lift
 
JAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components ModelsJAX 09 - OSGi Service Components Models
JAX 09 - OSGi Service Components Models
 
W-JAX 09 - ScalaModules
W-JAX 09 - ScalaModulesW-JAX 09 - ScalaModules
W-JAX 09 - ScalaModules
 

Mais de Heiko Seeberger

Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Heiko Seeberger
 
JM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewJM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewHeiko Seeberger
 
OSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaOSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaHeiko Seeberger
 
Eclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractEclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractHeiko Seeberger
 
Eclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiEclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiHeiko Seeberger
 
Eclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingEclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingHeiko Seeberger
 
Eclipse Magazin 14 - Getting hooked on Equinox
Eclipse Magazin 14 - Getting hooked on EquinoxEclipse Magazin 14 - Getting hooked on Equinox
Eclipse Magazin 14 - Getting hooked on EquinoxHeiko Seeberger
 
Eclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterEclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterHeiko Seeberger
 
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPW-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPHeiko Seeberger
 
JM 04/09 - OSGi in kleinen Dosen 5
JM 04/09 - OSGi in kleinen Dosen 5JM 04/09 - OSGi in kleinen Dosen 5
JM 04/09 - OSGi in kleinen Dosen 5Heiko Seeberger
 
JM 12/08 - OSGi in kleinen Dosen 1
JM 12/08 - OSGi in kleinen Dosen 1JM 12/08 - OSGi in kleinen Dosen 1
JM 12/08 - OSGi in kleinen Dosen 1Heiko Seeberger
 
JM 01/09 - OSGi in kleinen Dosen 2
JM 01/09 - OSGi in kleinen Dosen 2JM 01/09 - OSGi in kleinen Dosen 2
JM 01/09 - OSGi in kleinen Dosen 2Heiko Seeberger
 
JM 02/09 - OSGi in kleinen Dosen 3
JM 02/09 - OSGi in kleinen Dosen 3JM 02/09 - OSGi in kleinen Dosen 3
JM 02/09 - OSGi in kleinen Dosen 3Heiko Seeberger
 

Mais de Heiko Seeberger (19)

Java Magazin - Lift
Java Magazin - LiftJava Magazin - Lift
Java Magazin - Lift
 
JavaSPEKTRUM - Scala 3
JavaSPEKTRUM - Scala 3JavaSPEKTRUM - Scala 3
JavaSPEKTRUM - Scala 3
 
JavaSPEKTRUM - Scala 2
JavaSPEKTRUM - Scala 2JavaSPEKTRUM - Scala 2
JavaSPEKTRUM - Scala 2
 
JavaSPEKTRUM - Scala 1
JavaSPEKTRUM - Scala 1JavaSPEKTRUM - Scala 1
JavaSPEKTRUM - Scala 1
 
Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?Objektforum 2010 - Sprechen Sie Scala?
Objektforum 2010 - Sprechen Sie Scala?
 
JM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala ReviewJM 08/09 - Beginning Scala Review
JM 08/09 - Beginning Scala Review
 
JM 08/09 - ScalaModules
JM 08/09 - ScalaModulesJM 08/09 - ScalaModules
JM 08/09 - ScalaModules
 
OSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on ScalaOSGi DevCon Europe 09 - OSGi on Scala
OSGi DevCon Europe 09 - OSGi on Scala
 
Eclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by ContractEclipse Magazin 12 - Design by Contract
Eclipse Magazin 12 - Design by Contract
 
JUGM 07 - AspectJ
JUGM 07 - AspectJJUGM 07 - AspectJ
JUGM 07 - AspectJ
 
Eclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der DreiEclipse Magazin 16 - Die Stärke der Drei
Eclipse Magazin 16 - Die Stärke der Drei
 
Eclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance LoggingEclipse Magazin15 - Performance Logging
Eclipse Magazin15 - Performance Logging
 
Eclipse Magazin 14 - Getting hooked on Equinox
Eclipse Magazin 14 - Getting hooked on EquinoxEclipse Magazin 14 - Getting hooked on Equinox
Eclipse Magazin 14 - Getting hooked on Equinox
 
Eclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matterEclipse Magazin 12 - Security does matter
Eclipse Magazin 12 - Security does matter
 
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCPW-JAX 07 - AOP im Einsatz mit OSGi und RCP
W-JAX 07 - AOP im Einsatz mit OSGi und RCP
 
JM 04/09 - OSGi in kleinen Dosen 5
JM 04/09 - OSGi in kleinen Dosen 5JM 04/09 - OSGi in kleinen Dosen 5
JM 04/09 - OSGi in kleinen Dosen 5
 
JM 12/08 - OSGi in kleinen Dosen 1
JM 12/08 - OSGi in kleinen Dosen 1JM 12/08 - OSGi in kleinen Dosen 1
JM 12/08 - OSGi in kleinen Dosen 1
 
JM 01/09 - OSGi in kleinen Dosen 2
JM 01/09 - OSGi in kleinen Dosen 2JM 01/09 - OSGi in kleinen Dosen 2
JM 01/09 - OSGi in kleinen Dosen 2
 
JM 02/09 - OSGi in kleinen Dosen 3
JM 02/09 - OSGi in kleinen Dosen 3JM 02/09 - OSGi in kleinen Dosen 3
JM 02/09 - OSGi in kleinen Dosen 3
 

Último

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 

Último (20)

Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 

Aspect Weaving for OSGi Explained

  • 1. Aspect Weaving for OSGi Martin Lippert (akquinet it-agile GmbH) Heiko Seeberger (Weigle Wil H ik S b (W i l Wilczek G bH) k GmbH) © 2008 by Martin Lippert, Heiko Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license | November 7th, 2008
  • 2. Aspect-oriented programming • Modularity improved a lot by OO concepts • AOP adds modularization for crosscutting concerns • Meanwhile AOP is an established concept Established languages and frameworks available Used in production ClassA ClassB ClassC AspectX ConcernX ConcernX ConcernX ConcernX Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 3. AspectJ = AOP for Java • AspectJ is a powerful language extension for Java Hosted as an Eclipse project Still very active (latest release 1.6.1 in July 2008) • AJDT: Great tooling for the Eclipse IDE (3.3, 3.4) Comes close to the JDT feeling • Spring-IDE: Integrates AJDT with Spring-AOP AJDT feeling for Spring apps Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 4. The Standard Use Case ClassA ClassB ClassC AspectX ConcernX ConcernX ConcernX ConcernX Project Sources Single Application Classpath Java Virtual Machine Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 5. Library Aspects ClassA ClassB ClassC AspectX ConcernX ConcernX ConcernX ConcernX Project Sources JAR Single Application Classpath Java Virtual Machine Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 6. Aspects for Existing Code ClassA ClassB ClassC AspectX ConcernX ConcernX ConcernX ConcernX JARs Project Sources Single Application Classpath Java Virtual Machine Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 7. Java + OSGi • OSGi: “A dynamic module system for Java” • Modularity • Dynamic • Service-Oriented Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 8. What does it mean for us? • We would like to modularize … classes and interfaces into bundles … and aspects into bundles • The obvious next step: modularize cross cutting concerns into bundles cross-cutting • Takes modularity to the next level Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 9. Intra-Bundle Aspects ClassA ClassB ClassC AspectX ConcernX ConcernX Bundle A Bundle B Bundle-Classpath Bundle-Classpath Java Virtual Machine Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 10. Co-Op Bundle Aspects ClassA ClassB ClassC AspectX ConcernX ConcernX ConcernX ConcernX Bundle A Bundle B Bundle C Bundle-Classpath Bundle-Classpath Bundle-Classpath Java Virtual Machine Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 11. Abstract Aspect Bundles ClassA ClassB Abstract Ab t t Concrete C t Aspect Aspect ConcernX ConcernX ConcernX ConcernX Bundle A Bundle B Bundle-Classpath Bundle-Classpath Java Virtual Machine Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 12. Dynamics for Aspect Bundles • OSGi allows dynamic bundle … installs … uninstalls … updates • Same should be possible for aspect bundles … dynamic installs, uninstalls and updates of aspect bundles … dynamic installs, uninstalls and updates of bundles that are affected by aspects ff t d b t Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 13. How could all this possibly work? Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 14. Equinox Aspects • Equinox Incubator Project http://www.eclipse.org/equinox/incubator/aspects • Enables AspectJ/AOP for OSGi Supports all presented use-cases Ready-to-use Ready to use • Setting Works with Eclipse 3.4 (and 3.3 deprecated) Works with AJDT 1.5.2, 1.5.3, 1.6.0, 1.6.1, 1.6.2 Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 15. What can I do? • Put aspects into standard OSGi bundles Just like Java classes • Define what and where to weave aop.xml and manifest headers • Go! • Feels like a natural combination of AOP and OSGi OSGi… Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 16. Load-Time Weaving for OSGi • Let the OSGi runtime take care of weaving the aspects (and not the compiler) Leads to load-time weaving within OSGi • This means: No recompilation of existing bundles necessary Supports “aop.xml” load-time weaving config of AspectJ Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 17. Live Demo • Monitoring Eclipse bundles bundles… Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 18. Caching • Wasn’t that a fast startup? Wasn t • The reason: caching for woven classes Load-time weaving happens only once Second time startup is same as without aspects Available for t d d JREs d A il bl f standard JRE and IBM J9 shared classes h dl Supports configuration switching Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 19. Dynamics • Dynamics for aspect bundles Means re- or un-weaving existing bundles • How is it realized? Silent update of bundles to be woven again Bundles must behave nicely within dynamic situations Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 20. Live Demo • Installing Installing, updating, uninstalling aspects at runtime… Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 21. APIs and Implementation • org eclipse equinox weaving hook org.eclipse.equinox.weaving.hook Hooks into the runtime Provides API for injecting weaving and caching implementations • org.eclipse.equinox.weaving.aspectj Implements aspect weaving using AspectJ • org.eclipse.equinox.weaving.caching Implements caching for standard VMs • org.eclipse.equinox.weaving.caching.j9 Implements caching for IBM J9 VMs (shared classes feature) Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 22. Conclusions • Equinox Aspects brings full AOP to OSGi Load-time weaving integrated into OSGi Combines OSGi and AOP modularity features • Can be used for production systems today • Give it a try http://www.eclipse.org/equinox/incubator/aspects Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license
  • 23. Thank you for your attention! Q&A Heiko Seeberger: seeberger@weiglewilczek.com Martin Lippert lippert@acm org Lippert: lippert@acm.org Aspect Weaving for OSGi | © 2008 by M. Lippert, H. Seeberger; made available under Creative Commons Att. Nc Nd 2.5 license