SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Plugins 2.0: The
   overview  

 Don Brown, Atlassian
Confluence Team Hosted
JIRA Studio
Why do we need a new plugin
        framework?
One feature * five products = 




Dashboard
Multiple teams across the globe




 Gdańsk, Poland
                             San Francisco, USA




    Kuala Lumpur, Malaysia
                                Sydney, Australia
Plugin development slow

     Write plugin code

     Build plugin

     Copy plugin to
      WEB-INF/lib

     Start app

     Discover bug

     Wash, rinse, repeat
Inconsistency between products




          . . . Constructor injection? Setter
          injection? Pico? Spring?
Plugins break on product
               upgrade 

     Plugins have
      unrestricted access
      to application
      classes, objects,
      and configuration


     Broken plugins after
      a product upgrade
      make us look bad
Plugins 2 gives you. . .
 
     Ability for plugins to depend on each
       other
 
     Ability for plugins to define their own
       extension points
 
     Consistent plugin development platform
       across products
 
     Better insulation of plugins from product
       changes
Backwards compatibility

     Version 1 plugins - 100% compatible
      o WEB-INF/lib
      o Confluenceʼs dynamic plugins



     Version 2 (OSGi-based) plugins
      o Compatibility varies by product
Which products?

     Crowd 1.5 ✔

     FishEye 1.5 ✔

     Crucible 1.5 ✔

     Confluence 2.10 ✔

     JIRA 4.0

     Bamboo 2.3
OSGi in one slide

   Bundles    contain code,
      configuration, manifest
      metadata

     Runtime dependencies at
      Java package, service,
      and bundle levels

     Supports multiple versions
      of code

     Can share dynamic
      service objects

     Lifecycle: install, resolve,
      active, uninstall
Goal - Minimal OSGi required

     Can we scale the learning curve to keep
      the easy plugins easy?
Each team can “own” a bundle

     Only JAX-RS exposed


     Complete freedom to
      switch to another JAX-
      RS implementation


     Can run multiple
      versions of the bundle
      side-by-side
Features written once

     Example: OpenSocial-
      based dashboard as
      an OSGi plugin


     Written and owned by
      San Francisco team


     Contains UI, Shindig,
      internal services, SPI,
      and API
Dynamic deployment = faster
dev cycle

      Without OSGi
               
      With OSGi
      1.  Code
                          1.  Code
      2.  Compile
                       2.  Build and push to
      3.  Copy to WEB-INF/lib
               running web
      4.  Restart application
               application
      5.  Test in browser
               3.  Test in browser




        . . . from code to browser in one or two seconds
Standard plugin modules

     Servlet
               
     Component
      o  servlet
                  o  component
      o  servlet-filter
            o  component-import
      o  servlet-listener
   
     Web Items
      o  servlet-context-          o  web-item
         param
                    o  web-section
                             
     Misc
                                   o  module-type
                                   o  web-resource
Sandboxed plugins
DEMO: Using Atlassian Plugins
Plugins architecture
Plugin descriptor

 atlassian-plugin.xml
   
 <atlassian-plugin key=quot;com.xyz.examplequot; 	
                   name=quot;Example Plugin”	
                   plugins-version=“2”>	
   <plugin-info>	
     <description>A sample plugin</description>	
     <version>1.0</version>	
   </plugin-info>	
   <servlet key=”testquot; name=”Test Servletquot; 	
            class=quot;com.xyz.TestServletquot;>	
     <description>An example servlet</description>	
   </servlet>	
 </atlassian-plugin>
Plugin descriptor - Hidden OSGi

 atlassian-plugin.xml
   


<atlassian-plugin key=quot;com.xyz.examplequot; 	
                   name=quot;Example Plugin”	
                   plugins-version=“2”>	
  …	
  <component key=”myComponentquot; class=quot;com.xyz.MyComponent”	
              public=“true”>	
     <interface>com.xyz.Component</interface>	
  </component>	

  <component-import key=”otherComponentquot; 	
                   interface=quot;com.abc.OtherComponent” />	

</atlassian-plugin>
Plugin descriptor - Hidden OSGi

 Generates
                 atlassian-plugin-spring.xml


<beans …>	
  <bean id=“myComponent class=“com.xyz.MyComponent” />	

  <osgi:service id=“myComponent_service” ref=“myComponent”	
                interface=“com.xyz.Component” />	

  <osgi:reference id=“otherComponentquot; 	
                  interface=quot;com.abc.OtherComponent” />	
</beans>
Plugin to bundle process
                 
     Goal: Allow simple
                       plugins with no OSGi
                       knowledge

                 
     Three types of plugins:
                        o  Simple - no OSGi
                        o  Moderate - OSGi
                           via plugin descriptor
                        o  Complex - OSGi
                           via Spring XML
                           directly
Plugins 2 showcase
Atlassian Gadgets
Shared Access Layer (SAL)

    Plugin upgrade
     framework

   Plugin settings

   Job scheduling

   i18n 

   Search

   HTTP calls
. . . and much more
Atlassian REST Module Type

     Implemented as a      GET rest/name/1.0/bob
      dynamic module
      type
                 {

     Uses JAX-RS
            quot;firstNamequot;:”Bobquot;,

     Can be extended
                              quot;lastNamequot;:quot;Smithquot;
      by other plugins to
      add new data          }
      mappers
Plugin Exchange Client




    
Uses REST plugin type for JSON, XML, and
     HTML
Confluence Widget Connector




   
Widget types extendable via plugins
And many more. . . 

     Applinks 2

     Streams 2

     Confluence Repository
      Client

     Template renderer

     Team Hosted plugins

     Studio plugins

     All Crucible and
      FishEye plugins

     All OSGi bundles
Join the fun!
Questions

Más contenido relacionado

La actualidad más candente

Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiAgile Testing Alliance
 
Continuous Integration and Deployment Patterns for Magento
Continuous Integration and Deployment Patterns for MagentoContinuous Integration and Deployment Patterns for Magento
Continuous Integration and Deployment Patterns for MagentoAOE
 
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Julian Robichaux
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and HowRussell Maher
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesJesse Gallagher
 
Selenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web ApplicationsSelenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web Applicationsqooxdoo
 
Web components Introduction
Web components IntroductionWeb components Introduction
Web components IntroductionEugenio Romano
 
Introduction in the play framework
Introduction in the play frameworkIntroduction in the play framework
Introduction in the play frameworkAlexander Reelsen
 
DNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance BoostDNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance BoostChristoph Adler
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsJim Jeffers
 
Command Box ColdFusion Package Manager, Automation
Command Box ColdFusion Package Manager, AutomationCommand Box ColdFusion Package Manager, Automation
Command Box ColdFusion Package Manager, AutomationColdFusionConference
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupalsparkfabrik
 
HotPush with Ionic 2 and CodePush
HotPush with Ionic 2 and CodePushHotPush with Ionic 2 and CodePush
HotPush with Ionic 2 and CodePushEvan Schultz
 
Automatic Functional Testing with Selenium and SauceLabs
Automatic Functional Testing with Selenium and SauceLabsAutomatic Functional Testing with Selenium and SauceLabs
Automatic Functional Testing with Selenium and SauceLabsJoseph Chiang
 
探討Web ui自動化測試工具
探討Web ui自動化測試工具探討Web ui自動化測試工具
探討Web ui自動化測試工具政億 林
 
Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Sergii Shymko
 

La actualidad más candente (20)

React Ecosystem
React EcosystemReact Ecosystem
React Ecosystem
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
 
Continuous Integration and Deployment Patterns for Magento
Continuous Integration and Deployment Patterns for MagentoContinuous Integration and Deployment Patterns for Magento
Continuous Integration and Deployment Patterns for Magento
 
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
Connect2017 DEV-1550 Why Java 8? Or, What's a Lambda?
 
Managed Beans: When, Why and How
Managed Beans: When, Why and HowManaged Beans: When, Why and How
Managed Beans: When, Why and How
 
CollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPagesCollabSphere 2018 - Java in Domino After XPages
CollabSphere 2018 - Java in Domino After XPages
 
Selenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web ApplicationsSelenium RC: Automated Testing of Modern Web Applications
Selenium RC: Automated Testing of Modern Web Applications
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Web components Introduction
Web components IntroductionWeb components Introduction
Web components Introduction
 
Introduction in the play framework
Introduction in the play frameworkIntroduction in the play framework
Introduction in the play framework
 
DNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance BoostDNUG Webcast: IBM Notes V10 Performance Boost
DNUG Webcast: IBM Notes V10 Performance Boost
 
Selenium using C# by Yogesh Kumar
Selenium using C# by  Yogesh KumarSelenium using C# by  Yogesh Kumar
Selenium using C# by Yogesh Kumar
 
Java FX Tools Aquarium Paris
Java FX Tools Aquarium ParisJava FX Tools Aquarium Paris
Java FX Tools Aquarium Paris
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
Command Box ColdFusion Package Manager, Automation
Command Box ColdFusion Package Manager, AutomationCommand Box ColdFusion Package Manager, Automation
Command Box ColdFusion Package Manager, Automation
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
HotPush with Ionic 2 and CodePush
HotPush with Ionic 2 and CodePushHotPush with Ionic 2 and CodePush
HotPush with Ionic 2 and CodePush
 
Automatic Functional Testing with Selenium and SauceLabs
Automatic Functional Testing with Selenium and SauceLabsAutomatic Functional Testing with Selenium and SauceLabs
Automatic Functional Testing with Selenium and SauceLabs
 
探討Web ui自動化測試工具
探討Web ui自動化測試工具探討Web ui自動化測試工具
探討Web ui自動化測試工具
 
Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2Composer for Magento 1.x and Magento 2
Composer for Magento 1.x and Magento 2
 

Destacado

UW-Platteville EMS Expo 2013
UW-Platteville EMS Expo 2013UW-Platteville EMS Expo 2013
UW-Platteville EMS Expo 2013Jon Zickermann
 
[Frends] go together with nodejs
[Frends] go together with nodejs[Frends] go together with nodejs
[Frends] go together with nodejsNanha Park
 
PCF Roadshow - Learn the past
PCF Roadshow - Learn the pastPCF Roadshow - Learn the past
PCF Roadshow - Learn the pastseungdon Choi
 
[Hands on]pws가입하기
[Hands on]pws가입하기[Hands on]pws가입하기
[Hands on]pws가입하기seungdon Choi
 
CA LISA 서비스가상화
CA LISA 서비스가상화CA LISA 서비스가상화
CA LISA 서비스가상화Eugene Chung
 
웹 사이트 시각화 및 성능 관리
웹 사이트 시각화 및 성능 관리웹 사이트 시각화 및 성능 관리
웹 사이트 시각화 및 성능 관리mosaicnet
 
기획전략 특강 Final
기획전략 특강 Final기획전략 특강 Final
기획전략 특강 Final진호 안
 
멀티 티어 시스템을 위한 통합 성능 관리 방안_APM
멀티 티어 시스템을 위한 통합 성능 관리 방안_APM멀티 티어 시스템을 위한 통합 성능 관리 방안_APM
멀티 티어 시스템을 위한 통합 성능 관리 방안_APMEN PHAROS
 
5 제니퍼 2013 호프데이 제니퍼_어쩌다
5 제니퍼 2013 호프데이 제니퍼_어쩌다5 제니퍼 2013 호프데이 제니퍼_어쩌다
5 제니퍼 2013 호프데이 제니퍼_어쩌다Creative Commons Korea
 
2009년 시무식 Apm
2009년 시무식 Apm2009년 시무식 Apm
2009년 시무식 ApmEXEM
 
Network Manager소개 08년5월1
Network Manager소개 08년5월1Network Manager소개 08년5월1
Network Manager소개 08년5월1uchung
 
Pivotal HD 3.0 설치가이드
Pivotal HD 3.0 설치가이드Pivotal HD 3.0 설치가이드
Pivotal HD 3.0 설치가이드seungdon Choi
 
nGrinder3 : だれもが簡単にできる性能テスト
nGrinder3 : だれもが簡単にできる性能テストnGrinder3 : だれもが簡単にできる性能テスト
nGrinder3 : だれもが簡単にできる性能テストJunHo Yoon
 
nGrinder 3.0 : Load Test even kids can do
nGrinder 3.0 : Load Test even kids can donGrinder 3.0 : Load Test even kids can do
nGrinder 3.0 : Load Test even kids can doJunHo Yoon
 
2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안
2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안
2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안Suji Lee
 
PCF installation guide
PCF installation guidePCF installation guide
PCF installation guideseungdon Choi
 
자바 성능 강의
자바 성능 강의자바 성능 강의
자바 성능 강의Terry Cho
 
Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinderJunHo Yoon
 

Destacado (20)

Pivotal CF 소개
Pivotal CF 소개 Pivotal CF 소개
Pivotal CF 소개
 
UW-Platteville EMS Expo 2013
UW-Platteville EMS Expo 2013UW-Platteville EMS Expo 2013
UW-Platteville EMS Expo 2013
 
[Frends] go together with nodejs
[Frends] go together with nodejs[Frends] go together with nodejs
[Frends] go together with nodejs
 
PCF Roadshow - Learn the past
PCF Roadshow - Learn the pastPCF Roadshow - Learn the past
PCF Roadshow - Learn the past
 
[Hands on]pws가입하기
[Hands on]pws가입하기[Hands on]pws가입하기
[Hands on]pws가입하기
 
CA LISA 서비스가상화
CA LISA 서비스가상화CA LISA 서비스가상화
CA LISA 서비스가상화
 
웹 사이트 시각화 및 성능 관리
웹 사이트 시각화 및 성능 관리웹 사이트 시각화 및 성능 관리
웹 사이트 시각화 및 성능 관리
 
협업과제
협업과제협업과제
협업과제
 
기획전략 특강 Final
기획전략 특강 Final기획전략 특강 Final
기획전략 특강 Final
 
멀티 티어 시스템을 위한 통합 성능 관리 방안_APM
멀티 티어 시스템을 위한 통합 성능 관리 방안_APM멀티 티어 시스템을 위한 통합 성능 관리 방안_APM
멀티 티어 시스템을 위한 통합 성능 관리 방안_APM
 
5 제니퍼 2013 호프데이 제니퍼_어쩌다
5 제니퍼 2013 호프데이 제니퍼_어쩌다5 제니퍼 2013 호프데이 제니퍼_어쩌다
5 제니퍼 2013 호프데이 제니퍼_어쩌다
 
2009년 시무식 Apm
2009년 시무식 Apm2009년 시무식 Apm
2009년 시무식 Apm
 
Network Manager소개 08년5월1
Network Manager소개 08년5월1Network Manager소개 08년5월1
Network Manager소개 08년5월1
 
Pivotal HD 3.0 설치가이드
Pivotal HD 3.0 설치가이드Pivotal HD 3.0 설치가이드
Pivotal HD 3.0 설치가이드
 
nGrinder3 : だれもが簡単にできる性能テスト
nGrinder3 : だれもが簡単にできる性能テストnGrinder3 : だれもが簡単にできる性能テスト
nGrinder3 : だれもが簡単にできる性能テスト
 
nGrinder 3.0 : Load Test even kids can do
nGrinder 3.0 : Load Test even kids can donGrinder 3.0 : Load Test even kids can do
nGrinder 3.0 : Load Test even kids can do
 
2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안
2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안
2016 SINVAS DAY - SINVAS ALM을 활용한 IT 운영 방안
 
PCF installation guide
PCF installation guidePCF installation guide
PCF installation guide
 
자바 성능 강의
자바 성능 강의자바 성능 강의
자바 성능 강의
 
Advanced nGrinder
Advanced nGrinderAdvanced nGrinder
Advanced nGrinder
 

Similar a Plugins 2.0: The OSGi-powered overview

Plugins 2.0: The Overview
Plugins 2.0: The OverviewPlugins 2.0: The Overview
Plugins 2.0: The Overviewmrdon
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client DevelopmentTamir Khason
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)Fabien Potencier
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCPwhbath
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
 
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTYWilliam Chong
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13Fred Sauer
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JSFestUA
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And MavenPerconaPerformance
 
Systems Automation with Puppet
Systems Automation with PuppetSystems Automation with Puppet
Systems Automation with Puppetelliando dias
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationNicolas Fränkel
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendVlad Fedosov
 
Galaxy
GalaxyGalaxy
Galaxybosc
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010JUG Lausanne
 
WebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET CoreWebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET CoreChen Yu Pao
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introductionvstorm83
 

Similar a Plugins 2.0: The OSGi-powered overview (20)

Plugins 2.0: The Overview
Plugins 2.0: The OverviewPlugins 2.0: The Overview
Plugins 2.0: The Overview
 
GlassFish v3 at JavaZone 09
GlassFish v3 at JavaZone 09GlassFish v3 at JavaZone 09
GlassFish v3 at JavaZone 09
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client Development
 
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
symfony: An Open-Source Framework for Professionals (Dutch Php Conference 2008)
 
Introduction To Eclipse RCP
Introduction To Eclipse RCPIntroduction To Eclipse RCP
Introduction To Eclipse RCP
 
Extending the GFv3 Admin Console
Extending the GFv3 Admin ConsoleExtending the GFv3 Admin Console
Extending the GFv3 Admin Console
 
Using Maven2
Using Maven2Using Maven2
Using Maven2
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
Automated Performance Testing With J Meter And Maven
Automated  Performance  Testing With  J Meter And  MavenAutomated  Performance  Testing With  J Meter And  Maven
Automated Performance Testing With J Meter And Maven
 
Systems Automation with Puppet
Systems Automation with PuppetSystems Automation with Puppet
Systems Automation with Puppet
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
 
JSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontendJSFest 2019: Technology agnostic microservices at SPA frontend
JSFest 2019: Technology agnostic microservices at SPA frontend
 
Galaxy
GalaxyGalaxy
Galaxy
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
 
WebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET CoreWebSocket on client & server using websocket-sharp & ASP.NET Core
WebSocket on client & server using websocket-sharp & ASP.NET Core
 
Fuji Overview
Fuji OverviewFuji Overview
Fuji Overview
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 

Más de Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Más de Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Último

SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
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
 
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
 
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
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
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
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 

Último (20)

SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
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
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
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
 
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
 
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
 
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
 
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
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
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?
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 

Plugins 2.0: The OSGi-powered overview

  • 1. Plugins 2.0: The overview Don Brown, Atlassian
  • 4. Why do we need a new plugin framework?
  • 5. One feature * five products = Dashboard
  • 6. Multiple teams across the globe Gdańsk, Poland San Francisco, USA Kuala Lumpur, Malaysia Sydney, Australia
  • 7. Plugin development slow   Write plugin code   Build plugin   Copy plugin to WEB-INF/lib   Start app   Discover bug   Wash, rinse, repeat
  • 8. Inconsistency between products . . . Constructor injection? Setter injection? Pico? Spring?
  • 9. Plugins break on product upgrade   Plugins have unrestricted access to application classes, objects, and configuration   Broken plugins after a product upgrade make us look bad
  • 10. Plugins 2 gives you. . .   Ability for plugins to depend on each other   Ability for plugins to define their own extension points   Consistent plugin development platform across products   Better insulation of plugins from product changes
  • 11. Backwards compatibility   Version 1 plugins - 100% compatible o WEB-INF/lib o Confluenceʼs dynamic plugins   Version 2 (OSGi-based) plugins o Compatibility varies by product
  • 12. Which products?   Crowd 1.5 ✔   FishEye 1.5 ✔   Crucible 1.5 ✔   Confluence 2.10 ✔   JIRA 4.0   Bamboo 2.3
  • 13. OSGi in one slide   Bundles contain code, configuration, manifest metadata   Runtime dependencies at Java package, service, and bundle levels   Supports multiple versions of code   Can share dynamic service objects   Lifecycle: install, resolve, active, uninstall
  • 14. Goal - Minimal OSGi required   Can we scale the learning curve to keep the easy plugins easy?
  • 15. Each team can “own” a bundle   Only JAX-RS exposed   Complete freedom to switch to another JAX- RS implementation   Can run multiple versions of the bundle side-by-side
  • 16. Features written once   Example: OpenSocial- based dashboard as an OSGi plugin   Written and owned by San Francisco team   Contains UI, Shindig, internal services, SPI, and API
  • 17. Dynamic deployment = faster dev cycle   Without OSGi   With OSGi 1.  Code 1.  Code 2.  Compile 2.  Build and push to 3.  Copy to WEB-INF/lib running web 4.  Restart application application 5.  Test in browser 3.  Test in browser . . . from code to browser in one or two seconds
  • 18. Standard plugin modules   Servlet   Component o  servlet o  component o  servlet-filter o  component-import o  servlet-listener   Web Items o  servlet-context- o  web-item param o  web-section   Misc o  module-type o  web-resource
  • 22. Plugin descriptor atlassian-plugin.xml   <atlassian-plugin key=quot;com.xyz.examplequot; name=quot;Example Plugin” plugins-version=“2”> <plugin-info> <description>A sample plugin</description> <version>1.0</version> </plugin-info> <servlet key=”testquot; name=”Test Servletquot; class=quot;com.xyz.TestServletquot;> <description>An example servlet</description> </servlet> </atlassian-plugin>
  • 23. Plugin descriptor - Hidden OSGi atlassian-plugin.xml   <atlassian-plugin key=quot;com.xyz.examplequot; name=quot;Example Plugin” plugins-version=“2”> … <component key=”myComponentquot; class=quot;com.xyz.MyComponent” public=“true”> <interface>com.xyz.Component</interface> </component> <component-import key=”otherComponentquot; interface=quot;com.abc.OtherComponent” /> </atlassian-plugin>
  • 24. Plugin descriptor - Hidden OSGi Generates   atlassian-plugin-spring.xml <beans …> <bean id=“myComponent class=“com.xyz.MyComponent” /> <osgi:service id=“myComponent_service” ref=“myComponent” interface=“com.xyz.Component” /> <osgi:reference id=“otherComponentquot; interface=quot;com.abc.OtherComponent” /> </beans>
  • 25. Plugin to bundle process   Goal: Allow simple plugins with no OSGi knowledge   Three types of plugins: o  Simple - no OSGi o  Moderate - OSGi via plugin descriptor o  Complex - OSGi via Spring XML directly
  • 28. Shared Access Layer (SAL)   Plugin upgrade framework   Plugin settings   Job scheduling   i18n   Search   HTTP calls . . . and much more
  • 29. Atlassian REST Module Type   Implemented as a GET rest/name/1.0/bob dynamic module type {   Uses JAX-RS quot;firstNamequot;:”Bobquot;,   Can be extended quot;lastNamequot;:quot;Smithquot; by other plugins to add new data } mappers
  • 30. Plugin Exchange Client Uses REST plugin type for JSON, XML, and HTML
  • 31. Confluence Widget Connector Widget types extendable via plugins
  • 32. And many more. . .   Applinks 2   Streams 2   Confluence Repository Client   Template renderer   Team Hosted plugins   Studio plugins   All Crucible and FishEye plugins   All OSGi bundles