!"#$%&'&()*+,-&./)&0*./&

!"#$#%&'()*+,#-.'/0123%#&'4565'
1/2.&23+4.&5)&6&


&
!  7+"28+%'4-*93&#*&'3%'&9#':+;2"/-'/%;':+<3"#'!!'
!  4=/*9#'7+>?/-#'@+2%;/8+%'
   A  B:!'4=/*9#'@#"3C.''4=/*9#'4*#'
   A  4=/*9#'@#"3C'3BDED'=-+F#*&'"#/;#-'
!  DGH'
   A  !9/$#"#+%'=-+F#*&'"#/;#-'
!  4'"+&'+I'+&9#-)'*+%&-3<28+%)''
   A  $/J#%K/%;-+3;K="2L3%'
   A  MKNON'




D763'P'O#Q+%;'&9#':Q&9'                              H'
2784$,).&



                                                                         akquinet AG
                          akquinet                                        !1300k SE
                          business consulting
                          GmbH !60k SE



                              International       Microsoft / .NET       Outsourcing          JAVA / SAP
                          akquinet              akquinet             akquinet             akquinet
                          IBS                   dynamic solutions    outsourcing          it-agile
                          GmbH !250k SE         GmbH !300k SE        gGmbH !250k SE       GmbH !100k SE
                          akquinet              akquinet             akquinet             akquinet
                          IBS Brüssel           SLS logistics        system integration   tech@spree
                          GmbH !40k SE          GmbH !250k SE        GmbH !125k SE        GmbH !300k SE
                          akquinet                                                        akquinet
                          eurosoft Sp. z o.o.                                             enterprise solutions
                          !100k SE                                                        GmbH !80k SE
                          HKS
                          GmbH !75k SE




D763'P'O#Q+%;'&9#':Q&9'                                                                                          R'
0+-492:&2,-&0+3$9)&"+94;+,<&


=+5>).),?)&=),.):&@+?4<$,A&+,&
!  :+;2"/-'7Q)&#$)'
   A  :+;2"/-3S/8+%'#C=#-8)#'
   A  D763K</)#;'
   A  7+=93)8*/&#;.'T/-L#')*/"#.'U3)&-3<2&#;')Q)&#$)'
!  :+<3"#'7+"28+%)'
   A  !"#$%&#'()*&#
          "  :+<3"#';#J3*#).'V%&#-/*8+%)'$3;;"#?/-#.'7#-J#-K)3;#'W'
          "  :H:.'OHO'

!>),&B)?/,+9+A$)<&
!  D763'X4=/*9#'@#"3C.'4=/*#'4*#.'DGH'!9/$#"#+%.'4=/*9#'7"3%LWY'
!  4%;-+3;'
!  4=/*9#':/J#%'
!  E/J/'(('XEOD77.'DGH'ED%47Y'

D763'P'O#Q+%;'&9#':Q&9'                                               Z'
!C):$,A&


D:?/$.)?.4:)E&=+,<49;,AE&B:2$,$,A&2,-&0),.+:$,A&+,&
!  7Q)&#$)'2)3%L'D763'/%;[+-'$+<3"#';#J3*#)'
!  :+;2"/-3S/8+%'
!  U#J#"+=$#%&'3%I-/)&-2*&2-#.'O23";'=-+*#))'
!  #$+&#'$/%/L#$#%&.'B-+J3)3+%3%L')+"28+%)'

F:+G)?.&:)29$H2;+,&
!  :/*93%#'&+':/*93%#'/=="3*/8+%)'
   A  @VU.'U#J3*#'3%&#-/*8+%.'U/&/'*+""#*8+%.'!+%&-+"K"++='
!  :#;3/8+%'['V%&#L-/8+%'
   A  U/&/'=-+*#))3%L'/%;'$#;3/8+%.'M+-3S+%&/"':#;3/8+%'X(7OY'
!  :+<3"#'/=="3*/8+%)'
   A  4%;-+3;'
!  U#)0&+='/=="3*/8+%)'
   A  N)#-'#C=#-3#%*#'
!  G#<'/=="3*/8+%)'

D763'P'O#Q+%;'&9#':Q&9'                                          ]'
!"#$&$,&IJKJ&

  L!"#$&M+&B/2,7<NE&         &+,'&-./#       O5>9)5),.2;+,&02.4:$.*&
                                               •  (123%+C.'@#"3C'
  '                                            •  _#?'7=#*3`*/8+%'3%'=-+L-#))'
                                             B++9<&
  '0.$#1,)&#2%($31#%(44&"#5"#6'(11751%#        •  V%F#*8+%'@-/$#?+-0'X3BDED.'O"2#=-3%&.'
                                                    7!Y'
     89#:,$#5$#1&&;1#<=$;.14%&)&#,1&)1#        •  VU('X<%;&++").'BU(Y'
     %(8&#$).,:'&#25$%#5$#>?@#AAB.)C1#         •  O23";'&++")'X$/J#%.'/%&WY'
     4&)D&E$'F#2&''#5"#8GAAA!#%($&#<H-65I#     •  a#)&)'XF2%3&Z+)L3.'=/CP#C/$Y'
                                             P?9$><)&
  -4&"J5"*#G"J#J(F#$)F5"*#K,1$#$.#               •  (*"3=)#'VU('
     ,4*)(J&#',E&"&#8&)15."A#!#%($&#             •  BH.'!B'W'
     H-65L#5$#;(C&1#15;4'&#$%5"*1#           D>>9$?2;+,&"):Q):<&
     E.;4'&MA#                                   •  6"/))`)9.'ED%47.'G#<)=9#-#'
                                                 •  E<+))'4575''
  =$#'&(1$#1.;&."&#E("#1(F#$%&#C5"*#51#      !./):<&
                                                 •  7#-J3*#':3C'['@2)#'
      "(C&JA#N%("C1I#O."3$#PQRG#1$.)F#
                                                 •  G7DH'X(7O.'V%&#L-/8+%Y'
      $&(E%#$%.1&#*,F1#("F#'&11."S#<H-65#        •  7"3%L''
      <D(5'#
                                                '
  #
D763'P'O#Q+%;'&9#':Q&9'                                                              ^'
!"#$&"4??)<<&PQ+94;+,&

c3)3<3"3&Q'




                                                                    Y'($&(,#.D#4).J,EX85$F#
                                           !$#1,EC1#
                                           @<D(5'V#
                           !$T1#1.#E..'#
                           @:,UUV#
                                                       W.))&E$#,1(*&#("J##
                                                       :&1$#4)(EXE&1#




                 R5)$%#

                                                                                              a3$#'
 D763'P'O#Q+%;'&9#':Q&9'                                                                        b'
D763'P'O#Q+%;'&9#':Q&9'   d'
0*&<+RS2:)&$<&3$AA):&./2,&*+4:<&T&

  U2Q2&
  •  a!fP'DJ#-'g':3""3+%'TD!'
  •  M/-$+%QP'g5H]':3""3+%'TD!&
  VWV&>92*):&&
  •     */%'*+%&/3%'g':3""3+%'TD!'
  D&(01&
  •  */-'*/%'*+%&/3%'2='&+']h'%#&?+-0#;'
     *+$=2&#-3S#;';#J3*#)'
  P?9$><)&&OVP&
  •  R5]':3""3+%'TD!'
  ">2?)&</4X9)&
  •  'ih5]':3""3+%'"3%#)&
                          Y&KJ&9$,)<&2&-2*&
              Z$3:2:$)<&2:)&2&,)?)<<$.*E&34.&[&
  &
D763'P'O#Q+%;'&9#':Q&9'                           e'
Z$5$.<&+@&!!F&

  =+4>9$,A&<)Q):)9*&9$5$.<&
    :)4<23$9$.*&
  !  N)3%L'/'L#%#-3*'+<F#*&.'*/%';-/L'3%'/'"/-L#'
     %2$<#-'+I'+&9#-'+<F#*&)'


  =:)2.)<&+Q):9*&92:A)&<*<.)5<&
    2R):&2&?):.2$,&?+5>9)$.*&$<&
    :)2?/)-&
  &
  ]9)$3$9$.*&54<.&3)&34$9.&$,&3*&./)&
     >:+A:255):&
  !  B"2L3%'/-*93&#*&2-#)'
  !  @/*&+-3#).'U#=#%;#%*Q'V%F#*8+%'

  &
  &
D763'P'O#Q+%;'&9#':Q&9'                             gh'
0+-492:$H)&T&




                                        Modular and     Modular and
 Monolithic                Modular       Dynamic           Dynamic
 Application              Application   Application   Killer Application



D763'P'O#Q+%;'&9#':Q&9'                                                    gg'
U$A<2S&


!,?)&4>+,&2&;5)E&./)&5+-492:$.*&
&
!  E7'HbbP'E/J/':+;2"#'7Q)&#$'
!  E7'HeZ'P'V$=-+J#;':+;2"/-3&Q'3%'&9#'E/J/'B-+L-/$$3%L'T/%L2/L#'
&
!  E3L)/?P':+;2"/-3S/8+%'+I'&9#'EUf'
   A  :/Q'+-'$/Q'%+&'<#')&/%;/-;3S#;'
   A  E/J/'7('d'j'
   A  79+2";'?#'-#/""Q'?/3&.'+-';+'?#'9/J#')+$#&93%L'/"-#/;Q'-+<2)&'
      #%+2L9'j'
&

D763'P'O#Q+%;'&9#':Q&9'                                            gH'
1/*&!"#$&6&

  M))-&<$5>9):&S2*<&.+&
    ?+,<.:4?.&<+RS2:)&
    <*<.)5<&
  &
  !  D763'3)'/<+2&'<+RS2:)&
     ?+,<.:4?;+,P'<23";3%L')Q)&#$)'
     +2&'+I')$/""#-'*+$=+%#%&)'W'
  !  D763'3)'/<+2&'?+5>+,),.<&./2.&
     S+:7&.+A)./):'W'
  !  D763'3)'/<+2&'52,2A$,A&2,-&
     4>-2;,A'*+$=+%#%&)'W'
  !  D763'3)'/<+2&''
     kN%3J#-)/"'0$--9)S2:)l'
  &
D763'P'O#Q+%;'&9#':Q&9'               gR'
1/*&!"#$&6&

  M))-&<$5>9):&S2*<&.+&
    ?+,<.:4?.&<+RS2:)&
    <*<.)5<&
  &
  !  D763'3)'/<+2&'<+RS2:)&
     ?+,<.:4?;+,P'<23";3%L')Q)&#$)'
     +2&'+I')$/""#-'*+$=+%#%&)'W'
  !  D763'3)'/<+2&'?+5>+,),.<&./2.&
     S+:7&.+A)./):'W'
  !  D763'3)'/<+2&'52,2A$,A&2,-&
     4>-2;,A'*+$=+%#%&)'W'
  !  D763'3)'/<+2&''
     kN%3J#-)/"'0$--9)S2:)l'
  &
D763'P'O#Q+%;'&9#':Q&9'               gZ'
D763'P'O#Q+%;'&9#':Q&9'   g]'
!"#$&D99$2,?)&


O,-4<.:*&?+,<+:;45&
&
!"#$&"):Q$?)&F92^+:5&<>)?$_?2;+,&
!  @-/$#?+-0')=#*3`*/8+%'I+-'9+)8%L';Q%/$3*/""Q';+?%"+/;/<"#')#-J3*#)'
!  7&/%;/-;')#-J3*#')=#*3`*/8+%)'
&
")Q):29&)>):.&A:+4><&-)_,)&./)&<>)?$_?2;+,<&
!  !+-#'B"/m+-$'(C=#-&'6-+2='X!B(6Y'
!  :+<3"#'(C=#-&'6-+2='X:(6Y'
!  c#93*"#'(C=#-&'6-+2='Xc(6Y'
!  (%&#-=-3)#'(C=#-&'6-+2='X((6Y'


D763'P'O#Q+%;'&9#':Q&9'                                                  g^'
!"#$&D:?/$.)?.4:29&!Q):Q$)S&




                                        78.$9&'



                                                           +06)'
                                                   5"*"'

                                    +,&#"-./'0123&4'
                          (#)*&#'        (#)*&#'           (#)*&#'

                                     !"#$%"#&'

D763'P'O#Q+%;'&9#':Q&9'                                              gb'
!"#$&]:25)S+:7&Z2*):$,A&




                                      L3 – Provides a publish/find/bind
                          SERVICE     service model to decouple bundles

                                      L2 - Manages the lifecycle of bundle in
                          LIFECYCLE   a bundle repository without requiring
                                      the VM be restarted
                                      L1 - Creates the concept of bundles
                           MODULE     that use classes from each other in a
                                      controlled way according to constraints




D763'P'O#Q+%;'&9#':Q&9'                                                         gd'
!"#$&]:25)S+:7&`KaIb&


=+5>+,),.c+:$),.)-&@:25)S+:7&
!  O2%;"#)'X35#5.'$+;2"#)[*+$=+%#%&)Y'
!  B/*0/L#')9/-3%L'/%;'J#-)3+%'$/%/L#$#%&'
!  T3I#K*Q*"#'$/%/L#$#%&'/%;'%+8`*/8+%'


"):Q$?)c+:$),.)-&2:?/$.)?.4:)&a&?+5>4;,A&
!  B2<"3)9[`%;[<3%;'3%&-/Kc:')#-J3*#'$+;#"'


!>),&:)5+.)&52,2A)5),.&2:?/$.)?.4:)&
!  _+'=-#)*-3<#;'=+"3*Q'+-'=-+&+*+"'

D763'P'O#Q+%;'&9#':Q&9'                       ge'
!"#$&]:25)S+:7&`IaIb&


d4,<&549;>9)&2>>9$?2;+,<&2,-&<):Q$?)<&
"$,A9)&W0&$,<.2,?)&
")>2:2.)&?92<<&9+2-):&>):&34,-9)&
!  !"/))'"+/;#-'L-/=9'
!  V%;#=#%;#%&'%/$#)=/*#)'
!  !"/))')9/-3%L'/&'&9#'E/J/'=/*0/L#'"#J#"'
U2Q2&F):5$<<$+,<&.+&<)?4:)&@:25)S+:7&
P>9$?$.9*&?+,<$-):<&-*,25$?&<?),2:$+<&
!  2%K8$#'3%)&/"".'2=;/&#.'/%;'2%3%)&/""'+I'<2%;"#)'




D763'P'O#Q+%;'&9#':Q&9'                                 Hh'
D763'P'O#Q+%;'&9#':Q&9'   Hg'
0+-492:$.*&


1/2.6&




D763'P'O#Q+%;'&9#':Q&9'   HH'
0+-492:$.*&


1/2.6&
!  7#=/-/8+%'+I'*+%*#-%)'
!  7&-2*&2-#'
!  (%*/=)2"/8+%'
!  @+*2)#)'+%'
   A  !+9#)3+%'X"+?'3)'</;.'93L9'3)'L++;Y'
   A  !+2="3%L'X"+?'3)'L++;.'93L9'3)'</;Y'
1/*6&




D763'P'O#Q+%;'&9#':Q&9'                      HR'
0+-492:$.*&


1/2.6&
!  7#=/-/8+%'+I'*+%*#-%)'
!  7&-2*&2-#'
!  (%*/=)2"/8+%'
!  @+*2)#)'+%'
   A  !+9#)3+%'X"+?'3)'</;.'93L9'3)'L++;Y'
   A  !+2="3%L'X"+?'3)'L++;.'93L9'3)'</;Y'
1/*6&
!  V%;#=#%;#%&';#J#"+=$#%&'
!  V%;#=#%;#%&'$/3%&#%/%*#'/%;'#J+"28+%'
!  V$=-+J#'-#2)/<3"3&Q'




D763'P'O#Q+%;'&9#':Q&9'                      HZ'
!"#$&(4,-9)&


D&34,-9)&$<&2&5+-49)&$,&!"#$&.):5$,+9+A*&
D&34,-9)&$<&2&UDd&_9)&?+,.2$,$,A&
!  !+;#'
!  #)+2-*#)'
!  :#&/;/&/'



                                      E'(11#Z'&1#


                                                    Module

                          )&1.,)E&#Z'&1#
                                           +=0!#
                                           7P-N#
                                            A+7#


                                     ;&$(J($(#

D763'P'O#Q+%;'&9#':Q&9'                                      H]'
=+-)&W$<$3$9$.*&0).2-2.2&


D&34,-9)&$<&2&UDd&_9)&?+,.2$,$,A&?+-)&
!  G9/&'*+;#'3%'&9#'E4'`"#'3)'J3)3<"#'&+'+&9#-'*+;#'3%'&9#'E4'`"#j'
!  G9/&'*+;#'3%'&9#'E4'`"#'3)'J3)3<"#'&+'*+;#'+2&)3;#'&9#'E4'`"#j'
!  G9/&'*+;#'+2&)3;#'&9#'E4'`"#'3)'J3)3<"#'&+'*+;#'3%)3;#'&9#'E4'`"#j'


e,9$7)&<.2,-2:-&UDd&_9)<E&!"#$&5).2-2.2&)>9$?$.9*&2,<S):<&299&+@&./)<)&
   84)<;+,<&




D763'P'O#Q+%;'&9#':Q&9'                                                    H^'
O,.):,29&=+-)&W$<$3$9$.*&


O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'




D763'P'O#Q+%;'&9#':Q&9'                                             Hb'
O,.):,29&=+-)&W$<$3$9$.*&


O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./&
!  !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4'`"#'?9#%'"++03%L'
   I+-'*"/))#)'




D763'P'O#Q+%;'&9#':Q&9'                                                          Hd'
O,.):,29&=+-)&W$<$3$9$.*&


O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./&
!  !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4'`"#'?9#%'"++03%L'
   I+-'*"/))#)'
B+&A).&<.2,-2:-&UDd&3)/2Q$+:&
!  O2%;"#K!"/))B/&9P'5'




D763'P'O#Q+%;'&9#':Q&9'                                                          He'
O,.):,29&=+-)&W$<$3$9$.*&


O,.):,29&?+-)&$,&<.2,-2:-&UDd<&?2,&<))&299&:++.c:)92;Q)&>2?72A)<&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&(4,-9)c=92<<F2./&
!  !+$$/K;#"3$3&#;'"3)&'3%;3*/8%L'?9#-#'&+')#/-*9'3%'&9#'E4'`"#'?9#%'"++03%L'
   I+-'*"/))#)'
B+&A).&<.2,-2:-&UDd&3)/2Q$+:&
!  O2%;"#K!"/))B/&9P'5'
02*&29<+&$,?94-)&)53)--)-&UDd<&2,-&-$:)?.+:$)<&
P25>9)<&
!  O2%;"#K!"/))B/&9P'"3<[I++5F/-.*"/))#)['
!  O2%;"#K!"/))B/&9P'"3<[I++5F/-.5'



D763'P'O#Q+%;'&9#':Q&9'                                                          Rh'
P>+<$,A&O,.):,29&=+-)&`KaIb&


".2,-2:-&UDd&_9)<&)>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'




D763'P'O#Q+%;'&9#':Q&9'                                        Rg'
P>+<$,A&O,.):,29&=+-)&`KaIb&


".2,-2:-&UDd&_9)<&)>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&P>+:.cF2?72A)&
!  T3)&'+I'=/*0/L#)'I-+$'&9#'<2%;"#'*"/))'=/&9'&+'#C=+)#'
!  N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-'
1/*&-+&./$<6&




D763'P'O#Q+%;'&9#':Q&9'                                        RH'
P>+<$,A&O,.):,29&=+-)&`KaIb&


".2,-2:-&UDd&_9)<&)>+<)&299&$,.):,29&:++.c:)92;Q)&>2?72A)<&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&P>+:.cF2?72A)&
!  T3)&'+I'=/*0/L#)'I-+$'&9#'<2%;"#'*"/))'=/&9'&+'#C=+)#'
!  N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-'
1/*&-+&./$<6&
!  V&')#=/-/&#)'3%&#-%/"'J3)3<3"3&Q'I-+$'#C&#-%/"'J3)3<3"3&Q'
!  V%'+&9#-'?+-;).'3&'/""+?)'<2%;"#)'&+'9/J#'=-3J/&#'*+%&#%&'




D763'P'O#Q+%;'&9#':Q&9'                                         RR'
D??)<<$,A&P.):,29&=+-)&`KaIb&


".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'




D763'P'O#Q+%;'&9#':Q&9'                                                  RZ'
D??)<<$,A&P.):,29&=+-)&`KaIb&


".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)&
!  T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)'
!  N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-'




D763'P'O#Q+%;'&9#':Q&9'                                                  R]'
D??)<<$,A&P.):,29&=+-)&`KaIb&


".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)&
!  T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)'
!  N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-'
(4,-9)<&54<.&$5>+:.&)Q):*&,))-)-&>2?72A)&,+.&?+,.2$,)-&$,&./)&34,-9)&$.<)9@E&
  )?)>.&G2Q2fg&
1/*&-+&./$<6&




D763'P'O#Q+%;'&9#':Q&9'                                                         R^'
D??)<<$,A&P.):,29&=+-)&`KaIb&


".2,-2:-&UDd<&$5>9$?$.9*&<))&)Q):*./$,A&+./):&?92<<&+,&./)&?92<<&>2./&
!  _+&'&9#'*/)#'?3&9'<2%;"#)'
(4,-9)<&54<.&<>)?$@*&O5>+:.cF2?72A)&
!  T3)&'+I'=/*0/L#)'%##;#;'I-+$'+&9#-'<2%;"#)'
!  N)#)'*+$$+%'D763')Q%&/C'$#%8+%#;'#/-"3#-'
(4,-9)<&54<.&$5>+:.&)Q):*&,))-)-&>2?72A)&,+.&?+,.2$,)-&$,&./)&34,-9)&$.<)9@E&
  )?)>.&G2Q2fg&
1/*&-+&./$<6&
!  :/0#';#=#%;#%*3#)')>9$?$.&
!  :/0#';#=#%;#%*3#)'52,2A)239)&




D763'P'O#Q+%;'&9#':Q&9'                                                         Rb'
O5>+:;,A&h&P>+:;,A&2&F2?72A)&`Kaib&


O52A$,)&34,-9)&D&<+5)/+S&A).<&<):Q9).&$,<.2,?)<&@:+5&34,-9)&(&


                                                                  B
                              5;4.)$#
                              K(8(MA1&)8'&$[#          &M4.)$#
                          A                     K(8(MA1&)8'&$[#

                                                                          H"&#E.4F#.D#
                                                                      K(8(MA1&)8'&$A-&)8'&$#




D763'P'O#Q+%;'&9#':Q&9'                                                                        Rd'
O5>+:;,A&h&P>+:;,A&2&F2?72A)&`Kaib&


1/2.&$@&34,-9)&D&29<+&S2,.)-&.+&A).&<):Q9).&$,<.2,?)<&<+5)/+S&@:+5&34,-9)&=6&


                                                                  B
                              5;4.)$#
                              K(8(MA1&)8'&$[#          &M4.)$#
                          A                     K(8(MA1&)8'&$[#

                                                                          H"&#E.4F#.D#
                                                                      K(8(MA1&)8'&$A-&)8'&$#




D763'P'O#Q+%;'&9#':Q&9'                                                                        Re'
O5>+:;,A&h&P>+:;,A&2&F2?72A)&`Iaib&


(4,-9)&=&?+49-&$5>+:.&@:+5&34,-9)&(E&34.&./),&$.&$<&-)>),-),.&+,&$.&


                                                        &M4.)$#
                                                 K(8(MA1&)8'&$[#   B
                              5;4.)$#
                              K(8(MA1&)8'&$[#
                          A
                                                                           H"&#E.4F#.D#
                                                                       K(8(MA1&)8'&$A-&)8'&$#

                          C
                               5;4.)$#
                               K(8(MA1&)8'&$[#




D763'P'O#Q+%;'&9#':Q&9'                                                                         Zh'
O5>+:;,A&h&P>+:;,A&2&F2?72A)&`jaib&


(4,-9)&=&?+49-&)>+:.&$.<&+S,&<):Q9).&>2?72A)E&34.&34,-9)&D&?+49-&+,9*&<))&
  )$./):&=&+:&(&



                                                        &M4.)$#
                                                 K(8(MA1&)8'&$[#   C
                          5;4.)$#
                          K(8(MA1&)8'&$[#
                      A
                                            :'          &M4.)$#           N2.#E.45&1#.D#
                                                 K(8(MA1&)8'&$[#   B   K(8(MA1&)8'&$A-&)8'&$#




D763'P'O#Q+%;'&9#':Q&9'                                                                         Zg'
O5>+:;,A&h&P>+:;,A&2&F2?72A)&`iaib&


(4,-9)&=&?+49-&$5>+:.E&?+,.2$,&2,-&)>+:.&<):Q9).&.+&<+9Q)&./)&-$9)552&




                PM4.)$#("J#5;4.)$#
                  K(8(MA1&)8'&$[#
                          C                     PM4.)$#("J#5;4.)$#
                                                  K(8(MA1&)8'&$[#
                                                       B

                              5;4.)$#
                              K(8(MA1&)8'&$[#
                          A




D763'P'O#Q+%;'&9#':Q&9'                                                   ZH'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: org.foo.simplebundle
  Bundle-Version: 1.0.0
  Bundle-ClassPath: .,org/foo/embedded.jar
  Import-Package:
   osgi.service.log; version="[1.0.0,1.1.0)",
   org.foo.service; version="1.1"
  Export-Package:
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                         ZR'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: org.foo.simplebundle
  Bundle-Version: 1.0.0
  Bundle-ClassPath: .,org/foo/embedded.jar
  Import-Package: Indicates R4
                semantics and syntax
   osgi.service.log; version="[1.0.0,1.1.0)",
   org.foo.service; version="1.1"
  Export-Package:
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                         ZZ'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: org.foo.simplebundle
  Bundle-Version: 1.0.0
  Bundle-ClassPath: .,org/foo/embedded.jar
  Import-Package:
   osgi.service.log; version="[1.0.0,1.1.0)",
                        Indicates R4
   org.foo.service; version="1.1"
                     Globally unique ID
                     semantics and syntax
  Export-Package:
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                         Z]'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: org.foo.simplebundle
  Bundle-Version: 1.0.0
  Bundle-ClassPath: .,org/foo/embedded.jar
  Import-Package:
   osgi.service.log; version="[1.0.0,1.1.0)",
   org.foo.service; version="1.1"
           Internal bundle class path
  Export-Package:
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                         Z^'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: Import of a
                         org.foo.simplebundle
  Bundle-Version: 1.0.0 version range
                   package
  Bundle-ClassPath: .,org/foo/embedded.jar
  Import-Package:
   osgi.service.log; version="[1.0.0,1.1.0)",
   org.foo.service; version="1.1"
  Export-Package:
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                         Zb'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: org.foo.simplebundle
  Bundle-Version: 1.0.0 an exported
                   Importing
  Bundle-ClassPath: .,org/foo/embedded.jar
                          package
  Import-Package:
   osgi.service.log; version="[1.0.0,1.1.0)",
   org.foo.service; version="1.1"
  Export-Package:
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                         Zd'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: org.foo.simplebundle
  Bundle-Version: 1.0.0
  Bundle-ClassPath: .,org/foo/embedded.jar
                  Exported package with
  Import-Package: version and arbitrary
   osgi.service.log; version="[1.0.0,1.1.0)",
                         attribute
   org.foo.service; version="1.1"
  Export-Package:
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                         Ze'
(4,-9)&02,$@)<.&P25>9)&


  Bundle-ManifestVersion: 2
  Bundle-SymbolicName: org.foo.simplebundle
  Bundle-Version: 1.0.0
  Bundle-ClassPath: .,org/foo/embedded.jar
  Import-Package:
   osgi.service.log; version="[1.0.0,1.1.0)",
                         Provided package with
   org.foo.service; version="1.1"
                        dependency on exported
  Export-Package:              package
   org.foo.service; version="1.1";
     vendor="org.foo",
   org.foo.service.bar; version="1.1";
     uses:="org.foo.service"




D763'P'O#Q+%;'&9#':Q&9'                          ]h'
!"#$&V)>),-),?*&0+-)9&


F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<&
!  G9+'J)'?9/&'




D763'P'O#Q+%;'&9#':Q&9'                       ]g'
!"#$&V)>),-),?*&0+-)9&


F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<&
!  G9+'J)'?9/&'
0+-49)c9)Q)9&-)>),-),?$)<&
!  !+/-)#'L-/3%#;'
!  4-#'<-3n"#'
!  M3;#'&9#'&-2#';#=#%;#%*3#)'




D763'P'O#Q+%;'&9#':Q&9'                       ]H'
!"#$&V)>),-),?*&0+-)9&


F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<&
!  G9+'J)'?9/&'
0+-49)c9)Q)9&-)>),-),?$)<&
!  !+/-)#'L-/3%#;'
!  4-#'<-3n"#'
!  M3;#'&9#'&-2#';#=#%;#%*3#)'
F2?72A)c9)Q)9&-)>),-),?$)<&
!  @3%#'L-/3%#;'
!  @"#C3<"#.'#%/<"#'-#I/*&+-3%L'
!  4-#'&9#'&-2#';#=#%;#%*3#)'X35#5.'&9#Qo-#'3%'&9#'*+;#Y'




D763'P'O#Q+%;'&9#':Q&9'                                     ]R'
!"#$&V)>),-),?*&0+-)9&


F2?72A)c9)Q)9&Q<&5+-49)c9)Q)9&-)>),-),?$)<&
!  G9+'J)'?9/&'
0+-49)c9)Q)9&-)>),-),?$)<&
!  !+/-)#'L-/3%#;'
!  4-#'<-3n"#'
!  M3;#'&9#'&-2#';#=#%;#%*3#)'
F2?72A)c9)Q)9&-)>),-),?$)<&
!  @3%#'L-/3%#;'
!  @"#C3<"#.'#%/<"#'-#I/*&+-3%L'
!  4-#'&9#'&-2#';#=#%;#%*3#)'X35#5.'&9#Qo-#'3%'&9#'*+;#Y'
F2?72A)c9)Q)9&-)>),-),?$)<&:)84$:)&>2?72A)<&.+&3)&2.+5$?&`$f)fE&$,&2&<$,A9)&
   34,-9)b&

D763'P'O#Q+%;'&9#':Q&9'                                                        ]Z'
V)>),-),?*&d)<+94;+,&`KaIb&


D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7&
!  (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;'




D763'P'O#Q+%;'&9#':Q&9'                                                         ]]'
V)>),-),?*&d)<+94;+,&`KaIb&


D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7&
!  (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;'
O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<&
    >:+Q$-$,A&./)5&
&
                                                             5;4.)$#
&                             5;4.)$#
                                                             K(8(MA1&)8'&$#
                              K(8(MA1&)8'&$A%4#
&                         A                           B                                 C
                                             &M4.)$#                          &M4.)$#
                                             K(8(MA1&)8'&$A%4#               K(8(MA1&)8'&$#




D763'P'O#Q+%;'&9#':Q&9'                                                                        ]^'
V)>),-),?*&d)<+94;+,&`KaIb&


D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7&
!  (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;'
O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<&
    >:+Q$-$,A&./)5&
&
                                                             5;4.)$#
&                             5;4.)$#
                                                             K(8(MA1&)8'&$#
                              K(8(MA1&)8'&$A%4#
&                         A                           B                                 C
                                             &M4.)$#                          &M4.)$#
&                                            K(8(MA1&)8'&$A%4#               K(8(MA1&)8'&$#

&
!  aQ=3*/""Q.'-#)+"J3%L'/'<2%;"#'?3""'-#)2"&'3%'+&9#-'<2%;"#)'<#3%L'&-/%)38J#"Q'
   -#)+"J#;'


D763'P'O#Q+%;'&9#':Q&9'                                                                        ]b'
V)>),-),?*&d)<+94;+,&`KaIb&


D4.+52;?299*&52,2A)-&3*&./)&!"#$&@:25)S+:7&
!  (%)2-#)'/'<2%;"#o)';#=#%;#%*3#)'/-#')/8)`#;'<#I+-#'&9#'<2%;"#'*/%'<#'2)#;'
O,&<$5>9)&.):5<E&:)<+9Q$,A&2&34,-9)&52.?/)<&$.<&$5>+:.)-&>2?72A)<&.+&34,-9)<&
    >:+Q$-$,A&./)5&
&
                              5;4.)$#                        5;4.)$#
                                                             K(8(MA1&)8'&$#
&                             K(8(MA1&)8'&$A%4#
                          A                           B                                 C
&                                            &M4.)$#                          &M4.)$#
                                             K(8(MA1&)8'&$A%4#               K(8(MA1&)8'&$#
&
!  aQ=3*/""Q.'-#)+"J3%L'/'<2%;"#'?3""'-#)2"&'3%'+&9#-'<2%;"#)'<#3%L'&-/%)38J#"Q'
   -#)+"J#;'
!  VI'/'J#-)3+%'+-'/-<3&-/-Q'/n-3<2&#)'/-#')=#*3`#;'+%'3$=+-&).'&9#%'#C=+-&)'$2)&'
   $/&*9'
   A  :2"8="#'/n-3<2&#)'+%'/%'3$=+-&'/-#'"+L3*/""Q'DMV)-&
D763'P'O#Q+%;'&9#':Q&9'                                                                        ]d'
V)>),-),?*&d)<+94;+,&`IaIb&


049;>9)&52.?/$,A&>:+Q$-):<&
&
                                                                     B
&
                              5;4.)$#                     &M4.)$#
&                             K(8(MA1&)8'&$[#      K(8(MA1&)8'&$[#
                              8&)15."]^GA_A`^#   8&)15."]^GA_A`^#
&
&
                          A
                                            :'                       C
                                                          &M4.)$#
&                                                  K(8(MA1&)8'&$[#
                                                 8&)15."]^GAaA`^#
&




D763'P'O#Q+%;'&9#':Q&9'                                                  ]e'
V)>),-),?*&d)<+94;+,&`IaIb&


049;>9)&52.?/$,A&>:+Q$-):<&
&
&                                                                    B
&                             5;4.)$#                     &M4.)$#
                              K(8(MA1&)8'&$[#      K(8(MA1&)8'&$[#
&                             8&)15."]^GA_A`^#   8&)15."]^GA_A`^#
&
                          A
                                            :'                       C
&                                                         &M4.)$#
                                                   K(8(MA1&)8'&$[#
&                                                8&)15."]^GAaA`^#

!  #)+"28+%'/"L+-3&9$'+-;#-)'$/&*93%L'=-+J3;#-)'
   A  4"-#/;Q'-#)+"J#;'=-+J3;#-)'+-;#-#;'<Q';#*-#/)3%L'J#-)3+%'
   A  N%-#)+"J#;'=-+J3;#-)'+-;#-#;'<Q';#*-#/)3%L'J#-)3+%'
   A  VI'J#-)3+%)'/-#'#12/".'$/&*93%L'=-+J3;#-)'/-#'+-;#-#;'</)#;'+%'3%)&/""/8+%'+-;#-'

D763'P'O#Q+%;'&9#':Q&9'                                                              ^h'
M+,c0+-492:&F2$,.&F:+A:25&`Kajb&


1)&/2Q)&2&<$5>9)&>2$,.&>:+A:25&




                                   7).;#$%&#H-65#5"#=EX."#
                                   :..C#
D763'P'O#Q+%;'&9#':Q&9'                              ^g'
M+,c0+-492:&F2$,.&F:+A:25&`Iajb&


O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'&

            META-INF/
            META-INF/MANIFEST.MF
            org/
            org/foo/
            org/foo/paint/
            org/foo/paint/PaintFrame$1$1.class
            org/foo/paint/PaintFrame$1.class
            org/foo/paint/PaintFrame$ShapeActionListener.class
            org/foo/paint/PaintFrame.class
            org/foo/paint/SimpleShape.class
            org/foo/paint/ShapeComponent.class
            org/foo/shape/
            org/foo/shape/Circle.class
            org/foo/shape/circle.png
            org/foo/shape/Square.class
            org/foo/shape/square.png
            org/foo/shape/Triangle.class
            org/foo/shape/triangle.png


D763'P'O#Q+%;'&9#':Q&9'                                            ^H'
M+,c0+-492:&F2$,.&F:+A:25&`Iajb&


O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'&

            META-INF/                        Main implementation
            META-INF/MANIFEST.MF                 package is
            org/                              org.foo.paint
            org/foo/
            org/foo/paint/
            org/foo/paint/PaintFrame$1$1.class
            org/foo/paint/PaintFrame$1.class
            org/foo/paint/PaintFrame$ShapeActionListener.class
            org/foo/paint/PaintFrame.class
            org/foo/paint/SimpleShape.class
            org/foo/paint/ShapeComponent.class
            org/foo/shape/
            org/foo/shape/Circle.class
            org/foo/shape/circle.png
            org/foo/shape/Square.class
            org/foo/shape/square.png
            org/foo/shape/Triangle.class
            org/foo/shape/triangle.png


D763'P'O#Q+%;'&9#':Q&9'                                            ^R'
M+,c0+-492:&F2$,.&F:+A:25&`Iajb&


O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'&

            META-INF/
            META-INF/MANIFEST.MF
            org/
            org/foo/
            org/foo/paint/                        Static main method in
            org/foo/paint/PaintFrame$1$1.class
            org/foo/paint/PaintFrame$1.class
                                                      PaintFrame
            org/foo/paint/PaintFrame$ShapeActionListener.class
            org/foo/paint/PaintFrame.class
            org/foo/paint/SimpleShape.class
            org/foo/paint/ShapeComponent.class
            org/foo/shape/
            org/foo/shape/Circle.class
            org/foo/shape/circle.png
            org/foo/shape/Square.class
            org/foo/shape/square.png
            org/foo/shape/Triangle.class
            org/foo/shape/triangle.png


D763'P'O#Q+%;'&9#':Q&9'                                                   ^Z'
M+,c0+-492:&F2$,.&F:+A:25&`Iajb&


O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'&

            META-INF/
            META-INF/MANIFEST.MF
            org/
            org/foo/
            org/foo/paint/
            org/foo/paint/PaintFrame$1$1.class    Interface SimpleShape
            org/foo/paint/PaintFrame$1.class      supports multiple shape
            org/foo/paint/PaintFrame$ShapeActionListener.class
                                                      implementations
            org/foo/paint/PaintFrame.class
            org/foo/paint/SimpleShape.class
            org/foo/paint/ShapeComponent.class
            org/foo/shape/
            org/foo/shape/Circle.class
            org/foo/shape/circle.png
            org/foo/shape/Square.class
            org/foo/shape/square.png
            org/foo/shape/Triangle.class
            org/foo/shape/triangle.png


D763'P'O#Q+%;'&9#':Q&9'                                                     ^]'
M+,c0+-492:&F2$,.&F:+A:25&`Iajb&


O.&$<&>2?72A)-&2<&2&<$,A9)&UDd&_9)&S$./&./)&@+99+S$,A&?+,.),.<'&

            META-INF/
            META-INF/MANIFEST.MF
            org/
            org/foo/
            org/foo/paint/
            org/foo/paint/PaintFrame$1$1.class
            org/foo/paint/PaintFrame$1.class
            org/foo/paint/PaintFrame$ShapeActionListener.class
            org/foo/paint/PaintFrame.class
            org/foo/paint/SimpleShape.class
            org/foo/paint/ShapeComponent.class
            org/foo/shape/
            org/foo/shape/Circle.class            Shape implementations
            org/foo/shape/circle.png            defined in org.foo.shape
            org/foo/shape/Square.class
            org/foo/shape/square.png
            org/foo/shape/Triangle.class
            org/foo/shape/triangle.png


D763'P'O#Q+%;'&9#':Q&9'                                                    ^^'
M+,c0+-492:&F2$,.&F:+A:25&`jajb&


d)92;+,</$>&25+,A&?92<<)<&




                   Paint   b#            c#   Simple
                   Frame                      Shape

                   b#

                   c#

                Shape
                                Circle        Square   Triangle
              Component




D763'P'O#Q+%;'&9#':Q&9'                                           ^b'
M+,c0+-492:&F2$,.&F:+A:25&`jajb&


d)92;+,</$>&25+,A&?92<<)<&




                   Paint   b#            c#    Simple
                   Frame                       Shape

                   b#

                   c#

                Shape
                                Circle         Square            Triangle
              Component

                                              How to decompose
                                                into bundles?



D763'P'O#Q+%;'&9#':Q&9'                                                     ^d'
0+-492:&F2$,.&F:+A:25&V)<$A,&

                                                                                  &M4.)$#




                                                                                            Shape
                                                                           .)*AD..A1%(4&#
                Paint




                                                                Circle
                                                    &M4.)$#
                                        .)*AD..A1%(4&AE5)E'&#




                                                                Square
                                                    &M4.)$#
                                      .)*AD..A1%(4&A1d,()&#
                                                                Triangle




                                          &M4.)$#
                          .)*AD..A1%(4&A$)5("*'&#

D763'P'O#Q+%;'&9#':Q&9'                                                                             ^e'
(),)_.<&+@&0+-492:$H)-&F2$,.&F:+A:25&


P,@+:?)-&9+A$?29&3+4,-2:$)<&
&
D4.+52;?&-)>),-),?*&:)<+94;+,&
!  (%)2-#)'=-+=#-'*+%`L2-/8+%'
'
O5>:+Q)<&:)4<23$9$.*&+@&?+-)&
&
O5>:+Q)<&23$9$.*&.+&?:)2.)&-$C):),.&?+,_A4:2;+,<&




D763'P'O#Q+%;'&9#':Q&9'                             bh'
D763'P'O#Q+%;'&9#':Q&9'   bg'
1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):&


!,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6&
!  G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&'




D763'P'O#Q+%;'&9#':Q&9'                                   bH'
1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):&


!,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6&
!  G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&'
1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6&
!  G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0'




D763'P'O#Q+%;'&9#':Q&9'                                   bR'
1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):&


!,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6&
!  G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&'
1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6&
!  G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0'
1/2.&$@&S)&S2,.&.+&2--&2,-&:)5+Q)&34,-9)<&2.&:4,&;5)6&
!  G#'%##;')+$#?/Q'&+'/**#))'&9#'2%;#-"Q3%L'I-/$#?+-0'




D763'P'O#Q+%;'&9#':Q&9'                                   bZ'
1/2.&h&1/*&+@&Z$@)?*?9)&Z2*):&


!,?)&S)&/2Q)&2&34,-9)E&S/2.&-+&S)&-+&S$./&$.6&
!  G#'%##;'&+')+$#9+?'&#""'&9#'D763'I-/$#?+-0'/<+2&'3&'
1/2.&$@&+4:&34,-9)&,))-<&.+&3)&$,$;29$H)-&<+5)/+S6&
!  G#'%##;')+$#')+-&'+I'9++0'3%'&9#'I-/$#?+-0'
1/2.&$@&S)&S2,.&.+&2--&2,-&:)5+Q)&34,-9)<&2.&:4,&;5)6&
!  G#'%##;')+$#?/Q'&+'/**#))'&9#'2%;#-"Q3%L'I-/$#?+-0'
1)&?2,&-+&299&+@&./)<)&./$,A<&S$./&2&S)99c-)_,)-&9$@)?*?9)&@+:&34,-9)<&
!  4'"3I#*Q*"#';#`%#)'&9#')&/L#)'+I'/'<2%;"#o)'"3I#8$#'
   A  a9#'I-/$#?+-0'/))+*3/&#)'/'"3I#*Q*"#')&/&#'?3&9'#/*9'<2%;"#'




D763'P'O#Q+%;'&9#':Q&9'                                                   b]'
(4,-9)&Z$@)&=*?9)&


                                         5"1$(''#


                                       INSTALLED

                          ,"5"1$(''#                         )&1.'8&#           ,4J($&#

                                          ,"5"1$(''#
               UNINSTALLED                                   RESOLVED

                                                    1$()$#

                                         STARTING                       STOPPING


                           &M4'5E5$#                                    1$.4#
                           (,$.;(XE#
                                                               ACTIVE

D763'P'O#Q+%;'&9#':Q&9'                                                                   b^'
(4,-9)&Z$@)&=*?9)&


                                         5"1$(''#


                                       INSTALLED

                          ,"5"1$(''#                         )&1.'8&#           ,4J($&#

                                          ,"5"1$(''#
               UNINSTALLED                                   RESOLVED

                                                    1$()$#
                           ;&2<9*)./'"'=8.$9&>'#&2<9*&2')32'
                                 ?<$&'$&,&.$&.?)&2' STOPPING
                                   STARTING


                           &M4'5E5$#                                    1$.4#
                           (,$.;(XE#
                                                               ACTIVE

D763'P'O#Q+%;'&9#':Q&9'                                                                   bb'
(4,-9)&Z$@)&=*?9)&


                          @?-*"-./'"'=8.$9&>',#<*)$&2'".'
                                   5"1$(''#
                            <,,<#38.)31'3<').)-"9)A&'".$'
                              "??&22'3B&'C#"4&%<#D'
                                INSTALLED

                          ,"5"1$(''#                     )&1.'8&#           ,4J($&#

                                       ,"5"1$(''#
               UNINSTALLED                               RESOLVED

                                                1$()$#

                                       STARTING                     STOPPING


                           &M4'5E5$#                                1$.4#
                           (,$.;(XE#
                                                           ACTIVE
D763'P'O#Q+%;'&9#':Q&9'                                                               bd'
(4,-9)&D?;Q2.+:&


B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-&
   </4.-+S,&




D763'P'O#Q+%;'&9#':Q&9'                                                    be'
(4,-9)&D?;Q2.+:&


B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-&
   </4.-+S,&
!  a9#'9++0'3)'3%J+0#;'3%'&9#'7a4aV_6[7aDBBV_6')&/&#)'




D763'P'O#Q+%;'&9#':Q&9'                                                    dh'
(4,-9)&D?;Q2.+:&


B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-&
   </4.-+S,&
!  a9#'9++0'3)'3%J+0#;'3%'&9#'7a4aV_6[7aDBBV_6')&/&#)'
!  4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4'
   `"#'
&          public interface BundleActivator {
             void start(BundleContext context) throws Exception;
             void stop(BundleContext context) throws Exception;
           }




D763'P'O#Q+%;'&9#':Q&9'                                                           dg'
(4,-9)&D?;Q2.+:&


B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-&
   </4.-+S,&
!  a9#'9++0'3)'3%J+0#;'3%'&9#'7a4aV_6[7aDBBV_6')&/&#)'
!  4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4'
   `"#'
&          public interface BundleActivator {
             void start(BundleContext context) throws Exception;
&            void stop(BundleContext context) throws Exception;
           }
&
!  4;;38+%/"'$/%3I#)&'$#&/;/&/'3)'%##;#;'&+';#*"/-#'&9#'/*8J/&+-'
           Bundle-Activator: <fully-qualified-class-name>
           &A*A>#
           Bundle-Activator: org.foo.MyActivator




D763'P'O#Q+%;'&9#':Q&9'                                                           dH'
(4,-9)&D?;Q2.+:&


B/)&34,-9)&2?;Q2.+:&$<&2&@:25)S+:7&/++7&.+&299+S&34,-9)<&.+&<.2:.4>&2,-&
   </4.-+S,&
!  a9#'9++0'3)'3%J+0#;'3%'&9#'7a4aV_6[7aDBBV_6')&/&#)'
!  4%'/*8J/&+-'3$="#$#%&)'/')3$="#'3%&#-I/*#'/%;'3)'3%*"2;#;'3%'&9#'<2%;"#'E4'
   `"#'
&          public interface BundleActivator {
             void start(BundleContext context) throws Exception;
&            void stop(BundleContext context) throws Exception;
           }
&
!  4;;38+%/"'$/%3I#)&'$#&/;/&/'3)'%##;#;'&+';#*"/-#'&9#'/*8J/&+-'
           Bundle-Activator: <fully-qualified-class-name>
           &A*A>#                  What are these?
           Bundle-Activator: org.foo.MyActivator




D763'P'O#Q+%;'&9#':Q&9'                                                           dR'
(4,-9)&=+,.).&


d)>:)<),.<&./)&34,-9)k<&))?4;+,&?+,.).&

 public interface BundleContext {
   String getProperty(String key);
   Bundle getBundle();
   Bundle installBundle(String location) throws BundleException;
   Bundle installBundle(String location, InputStream input)
     throws BundleException;
   Bundle getBundle(long id);
   Bundle[] getBundles();
   ...
   void addBundleListener(BundleListener listener);
   void removeBundleListener(BundleListener listener);
   void addFrameworkListener(FrameworkListener listener);
   void removeFrameworkListener(FrameworkListener listener);
   ...
   File getDataFile(String filename);
   ...
 }


D763'P'O#Q+%;'&9#':Q&9'                                            dZ'
(4,-9)&=+,.).&


d)>:)<),.<&./)&34,-9)k<&))?4;+,&?+,.).&
                                                   Lifecycle method
public interface BundleContext {               to install other bundles
  String getProperty(String key);
  Bundle getBundle();
  Bundle installBundle(String location) throws BundleException;
  Bundle installBundle(String location, InputStream input)
    throws BundleException;
  Bundle getBundle(long id);
  Bundle[] getBundles();
  ...
  void addBundleListener(BundleListener listener);
  void removeBundleListener(BundleListener listener);
  void addFrameworkListener(FrameworkListener listener);
  void removeFrameworkListener(FrameworkListener listener);
  ...
  File getDataFile(String filename);
  ...
}


D763'P'O#Q+%;'&9#':Q&9'                                              d]'
(4,-9)&=+,.).&


d)>:)<),.<&./)&34,-9)k<&))?4;+,&?+,.).&

 public interface BundleContext {
   String getProperty(String key);
   Bundle getBundle();
   Bundle installBundle(String location) throws BundleException;
   Bundle installBundle(String location, InputStream input)
     throws BundleException;
   Bundle getBundle(long id);           Access to other
   Bundle[] getBundles();              installed bundles
   ...
   void addBundleListener(BundleListener listener);
   void removeBundleListener(BundleListener listener);
   void addFrameworkListener(FrameworkListener listener);
   void removeFrameworkListener(FrameworkListener listener);
   ...
   File getDataFile(String filename);
   ...
 }


D763'P'O#Q+%;'&9#':Q&9'                                            d^'
(4,-9)&=+,.).&


d)>:)<),.<&./)&34,-9)k<&))?4;+,&?+,.).&

 public interface BundleContext {
   String getProperty(String key);
                            Access to our own bundle...
   Bundle getBundle();
                                   what's that?
   Bundle installBundle(String location) throws BundleException;
   Bundle installBundle(String location, InputStream input)
     throws BundleException;
   Bundle getBundle(long id);
   Bundle[] getBundles();
   ...
   void addBundleListener(BundleListener listener);
   void removeBundleListener(BundleListener listener);
   void addFrameworkListener(FrameworkListener listener);
   void removeFrameworkListener(FrameworkListener listener);
   ...
   File getDataFile(String filename);
   ...
 }


D763'P'O#Q+%;'&9#':Q&9'                                            db'
(4,-9)&


d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)&
public interface Bundle {
  ...
  int getState();
  void start(int options) throws BundleException;
  void start() throws BundleException;
  void stop(int options) throws BundleException;
  void stop() throws BundleException;
  void update() throws BundleException;
  void update(InputStream in) throws BundleException;
  void uninstall() throws BundleException;
  Dictionary getHeaders();
  String getSymbolicName();
  long getBundleId();
  String getLocation();
  ...
  URL getResource(String name);
  Enumeration getResources(String name) throws IOException;
  Class loadClass(String name) throws ClassNotFoundException;
  ...
  BundleContext getBundleContext();
}
D763'P'O#Q+%;'&9#':Q&9'                                         dd'
(4,-9)&


d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)&
public interface Bundle {                      Lifecycle method to
  ...                                              start bundle
  int getState();
  void start(int options) throws BundleException;
  void start() throws BundleException;
  void stop(int options) throws BundleException;
  void stop() throws BundleException;
  void update() throws BundleException;
  void update(InputStream in) throws BundleException;
  void uninstall() throws BundleException;
  Dictionary getHeaders();
  String getSymbolicName();
  long getBundleId();
  String getLocation();
  ...
  URL getResource(String name);
  Enumeration getResources(String name) throws IOException;
  Class loadClass(String name) throws ClassNotFoundException;
  ...
  BundleContext getBundleContext();
}
D763'P'O#Q+%;'&9#':Q&9'                                              de'
(4,-9)&


d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)&
public interface Bundle {                       Lifecycle method to
  ...                                               stop bundle
  int getState();
  void start(int options) throws BundleException;
  void start() throws BundleException;
  void stop(int options) throws BundleException;
  void stop() throws BundleException;
  void update() throws BundleException;
  void update(InputStream in) throws BundleException;
  void uninstall() throws BundleException;
  Dictionary getHeaders();
  String getSymbolicName();
  long getBundleId();
  String getLocation();
  ...
  URL getResource(String name);
  Enumeration getResources(String name) throws IOException;
  Class loadClass(String name) throws ClassNotFoundException;
  ...
  BundleContext getBundleContext();
}
D763'P'O#Q+%;'&9#':Q&9'                                               eh'
(4,-9)&


d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)&
public interface Bundle {
  ...
  int getState();
  void start(int options) throws BundleException;
  void start() throws BundleException;
  void stop(int options) throws BundleException;
  void stop() throws BundleException;
  void update() throws BundleException;
  void update(InputStream in) throws BundleException;
  void uninstall() throws BundleException;
  Dictionary getHeaders();
  String getSymbolicName();
  long getBundleId();                           Lifecycle method to
  String getLocation();                            update bundle
  ...
  URL getResource(String name);
  Enumeration getResources(String name) throws IOException;
  Class loadClass(String name) throws ClassNotFoundException;
  ...
  BundleContext getBundleContext();
}
D763'P'O#Q+%;'&9#':Q&9'                                               eg'
(4,-9)&


d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)&
public interface Bundle {
  ...
  int getState();
  void start(int options) throws BundleException;
  void start() throws BundleException;
  void stop(int options) throws BundleException;
  void stop() throws BundleException;
  void update() throws BundleException;
  void update(InputStream in) throws BundleException;
  void uninstall() throws BundleException;
  Dictionary getHeaders();
  String getSymbolicName();
  long getBundleId();                           Lifecycle method to
  String getLocation();                           uninstall bundle
  ...
  URL getResource(String name);
  Enumeration getResources(String name) throws IOException;
  Class loadClass(String name) throws ClassNotFoundException;
  ...
  BundleContext getBundleContext();
}
D763'P'O#Q+%;'&9#':Q&9'                                               eH'
(4,-9)&


d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)&
public interface Bundle {
  ...
  int getState();
  void start(int options) throws BundleException;
  void start() throws BundleException;
  void stop(int options) throws BundleException;
  void stop() throws BundleException;
  void update() throws BundleException;
  void update(InputStream in) throws BundleException;
  void uninstall() throws BundleException;
  Dictionary getHeaders();
  String getSymbolicName();
  long getBundleId();                               Access to
  String getLocation();                          bundle resources
  ...
  URL getResource(String name);
  Enumeration getResources(String name) throws IOException;
  Class loadClass(String name) throws ClassNotFoundException;
  ...
  BundleContext getBundleContext();
}
D763'P'O#Q+%;'&9#':Q&9'                                             eR'
(4,-9)&


d4,c;5)&:)>:)<),.2;+,&+@&2&34,-9)&
public interface Bundle {
  ...
  int getState();
  void start(int options) throws BundleException;
  void start() throws BundleException;
  void stop(int options) throws BundleException;
  void stop() throws BundleException;
  void update() throws BundleException;
  void update(InputStream in) throws BundleException;
  void uninstall() throws BundleException;
  Dictionary getHeaders();
  String getSymbolicName();
  long getBundleId();                                 Access to
  String getLocation();                           accessible classes
  ...
  URL getResource(String name);
  Enumeration getResources(String name) throws IOException;
  Class loadClass(String name) throws ClassNotFoundException;
  ...
  BundleContext getBundleContext();
}
D763'P'O#Q+%;'&9#':Q&9'                                                eZ'
(4,-9)&V*,25$<5&


(4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)&
!  O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)'


     N.#'51$&"#D.)#&8&"$1#
     BundleContext.addBundleListener()




D763'P'O#Q+%;'&9#':Q&9'                                                        e]'
(4,-9)&V*,25$<5&


(4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)&
!  O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)'


     !;4'&;&"$#'51$&"&)#5"$&)D(E&#
     public interface BundleListener extends EventListener {
       public void bundleChanged(BundleEvent event);
     }




D763'P'O#Q+%;'&9#':Q&9'                                                        e^'
(4,-9)&V*,25$<5&


(4,-9)<&?2,&3)&$,<.299)-E&<.2:.)-E&<.+>>)-E&4>-2.)-E&2,-&4,$,<.299)-&2.&:4,&;5)&
!  O2%;"#'#J#%&)')3L%/"'"3I#*Q*"#'*9/%L#)'


     e&E&58&J#&8&"$#
     public class BundleEvent extends EventObject {
       public final static int    INSTALLED   = 0x00000001;
       public final static int    STARTED     = 0x00000002;
       public final static int    STOPPED     = 0x00000004;
       public final static int    UPDATED     = 0x00000008;
       public final static int    UNINSTALLED = 0x00000010;
       public final static int    RESOLVED    = 0x00000020;
       public final static int    UNRESOLVED = 0x00000040;
       public final static int    STARTING    = 0x00000080;
       public final static int    STOPPING    = 0x00000100;
       …
       public Bundle getBundle() { … }
       public int getType() { … }
     }
D763'P'O#Q+%;'&9#':Q&9'                                                        eb'
(4,-9)c(2<)-&V*,25$?&P.),<$3$9$.*&


(4,-9)&9$@)?*?9)&)Q),.<&>:+Q$-)&2&5)?/2,$<5&@+:&-*,25$?&).),<$3$9$.*&
B/)&).),-):&>2X):,&
!  4%'/=="3*/8+%'*+$=+%#%&.'*/""#;'&9#'#C&#%;#-.'"3)&#%)'I+-'<2%;"#)'&+'<#'
   3%)&/""#;.')&/-&#;.'/%;')&+==#;'
!  D%'3%)&/"".'&9#'#C&#%;#-'=-+<#)'<2%;"#)'&+')##'3I'&9#Q'/-#'#C&#%)3+%)'
   A  aQ=3*/""Q.'#C&#%)3+%'*+%&/3%')=#*3/"'$#&/;/&/'+-'-#)+2-*#)'&+'3%;3*/&#'&9#Q'
      =-+J3;#'/%'#C&#%)3+%'
!  G9#%')&/-&#;.'&9#'#C&#%;#-'=#-I+-$)')+$#'/*8+%'&+'3%&#L-/&#'&9#'#C&#%)3+%'
   3%&+'&9#'/=="3*/8+%'
!  G9#%')&+==#;.'&9#'#C&#%;#-'=#-I+-$)')+$#'/*8+%'&+'-#$+J#'&9#'#C&#%)3+%'
   I-+$'&9#'/=="3*/8+%'




D763'P'O#Q+%;'&9#':Q&9'                                                              ed'
P.),-):&F2X):,&




                                    Installed
                                    bundles




                          Tracker

                          Frame

                           W.)&#




D763'P'O#Q+%;'&9#':Q&9'                         ee'
P.),-):&F2X):,&




                                    Installed
                                    bundles
                e&*51$&)#
          :,"J'&#'51$&"&)#




                          Tracker

                          Frame

                           W.)&#




D763'P'O#Q+%;'&9#':Q&9'                         ghh'
P.),-):&F2X):,&




                                    Installed
                                    bundles     !"1$(''#
                                                :,"J'&AK()#




                          Tracker

                          Frame

                           W.)&#




D763'P'O#Q+%;'&9#':Q&9'                                       ghg'
P.),-):&F2X):,&




                                    Installed
                                    bundles
                                                W)&($&#
                                                '.*5E('#:,"J'&#




                          Tracker

                          Frame

                           W.)&#                     -%(4&#
                                                      5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                           ghH'
P.),-):&F2X):,&




                                     Installed
                                     bundles




                          Tracker

                          Frame
                                    -$()X"*#1%(4&#
                           W.)&#    :,"J'&#)&1.'8&1#5$#   -%(4&#
                                                           5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                            ghR'
P.),-):&F2X):,&




                                                   Installed
                                                   bundles


                                        R,"J'&#
                                    1$()$#&8&"$#


                          Tracker

                          Frame

                           W.)&#                               -%(4&#
                                                                5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                                 ghZ'
P.),-):&F2X):,&




                                             Installed
                                             bundles




                                    !"$&)).*($&#D.)#;&$(J($(L#
                                      )&1.,)E&1L#E'(11&1L#&$EA#
                          Tracker

                          Frame

                           W.)&#                                  -%(4&#
                                                                   5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                                    gh]'
P.),-):&F2X):,&




                                  Installed
                                  bundles




                       Tracker
                    ).E&?3'
                          Frame

                          W.)&#               -%(4&#
                                               5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                gh^'
P.),-):&F2X):,&




                                                Installed
                                                bundles




                          Tracker

                          Frame

                           W.)&#                                            -%(4&#
                                    7.)#$%&#)&8&)1&L#5D#$%&#1%(4&#:,"J'&#
                                                                             5;4'#
                                    51#1$.44&JL#$%&#$)(EC&)#)&;.8&1#5$1#
                                             (11.E5($&J#1%(4&A#

D763'P'O#Q+%;'&9#':Q&9'                                                              ghb'
P.),-):&F2$,.&F:+A:25&!Q):Q$)S&`KaIb&


V*,25$?299*&).),<$39)&>2$,.&>:+A:25&&
!  N)#)'&9#'#C&#%;#-'=/n#-%'&+';#"3J#-')9/=#)'
!  a9#'=/3%&'<2%;"#'3)'&9#'#C&#%;#-.'35#5.'3&'"3)&#%)'I+-'<2%;"#)'*+%&/3%3%L')9/=#)'
!  D%'3%)&/"".'&9#'#C&#%;#-'=-+<#)'<2%;"#)'&+')##'3I'&9#Q'/-#'#C&#%)3+%)'
   A  7=#*3/"'$#&/;/&/'3%'&9#'$/%3I#)&';#%+&#)'&9#'%/$#.'*"/)).'/%;'3*+%'+I'&9#'
      )9/=#'
e<)<&>92?)/+9-):&S/),&</2>)&/2<&3)),&4<)-E&34.&?4::),.9*&4,2Q2$9239)&3)?24<)&
   ./)&34,-9)&$<&,+.&2?;Q)&




D763'P'O#Q+%;'&9#':Q&9'                                                                ghd'
P.),-):&F2$,.&F:+A:25&V)<$A,&`KaIb&



                Shape                    c#   Default
               Extension
                                              Shape
                Tracker



                           b#
                   Paint                      Simple
                   Frame                      Shape

                   b#

                   c#

                Shape
                                Circle        Square    Triangle
              Component


D763'P'O#Q+%;'&9#':Q&9'                                        ghe'
P.),-):&F2$,.&F:+A:25&V)<$A,&`IaIb&

                                                          &M4.)$#
                                                   .)*AD..A1%(4&#




                                                                    Shape
                Paint




                                        Circle
Extension-Name: 	
  Circle	
Extension-Class: 	



                                        Square
  org.foo.shape.circle.Circle	
Extension-Icon: 	
  org/foo/shape/circle/circle.png	
                                        Triangle




D763'P'O#Q+%;'&9#':Q&9'                                                     ggh'
d)@:)</$,A&./)&]:25)S+:7&


e>-2.)&2,-&4,$,<.299&9$@)?*?9)&+>):2;+,<&2:)&2&9$X9)&?+5>9$?2.)-&
!  G9Qj'




D763'P'O#Q+%;'&9#':Q&9'                                             ggg'
d)@:)</$,A&./)&]:25)S+:7&


e>-2.)&2,-&4,$,<.299&9$@)?*?9)&+>):2;+,<&2:)&2&9$X9)&?+5>9$?2.)-&
!  G9Qj'
   A  (C3)8%L'<2%;"#'$/Q<#'<#'2)3%L'*"/))#)'I-+$'&9#'<2%;"#'<#3%L'2=;/&#;'+-'
      2%3%)&/""#;'
   A  !/%%+&'=2""'&9#'-2L'+2&'I-+$'2%;#-';#=#%;#%&'<2%;"#)'




D763'P'O#Q+%;'&9#':Q&9'                                                         ggH'
d)@:)</$,A&./)&]:25)S+:7&


e>-2.)&2,-&4,$,<.299&9$@)?*?9)&+>):2;+,<&2:)&2&9$X9)&?+5>9$?2.)-&
!  G9Qj'
   A  (C3)8%L'<2%;"#'$/Q<#'<#'2)3%L'*"/))#)'I-+$'&9#'<2%;"#'<#3%L'2=;/&#;'+-'
      2%3%)&/""#;'
   A  !/%%+&'=2""'&9#'-2L'+2&'I-+$'2%;#-';#=#%;#%&'<2%;"#)'
B+&-)29&S$./&./$<E&./)&@:25)S+:7&.:)2.<&4>-2.)&2,-&4,$,<.299&2<&2&.S+c<.)>&
   >:+?)<<&
!  N=;/&#)'/%;'2%3%)&/"")';+'%+&'9/==#%'3$$#;3/&#"Q'
!  @-/$#?+-0'$2)&'<#'k-#I-#)9#;l'&+'=2&'&9#$'3%&+'#p#*&'
   A  4*&2/""Q.'I+-'2=;/&#)'3&'3)'/'"3n"#'$+-#'*+$="3*/&#;'&9/%'&93).'<2&'?#'*/%'
      /**#=&'&93)'J3#?'I+-'%+?555'




D763'P'O#Q+%;'&9#':Q&9'                                                             ggR'
d)@:)</$,A&./)&]:25)S+:7&


e>-2.)&2,-&4,$,<.299&9$@)?*?9)&+>):2;+,<&2:)&2&9$X9)&?+5>9$?2.)-&
!  G9Qj'
   A  (C3)8%L'<2%;"#'$/Q<#'<#'2)3%L'*"/))#)'I-+$'&9#'<2%;"#'<#3%L'2=;/&#;'+-'
      2%3%)&/""#;'
   A  !/%%+&'=2""'&9#'-2L'+2&'I-+$'2%;#-';#=#%;#%&'<2%;"#)'
B+&-)29&S$./&./$<E&./)&@:25)S+:7&.:)2.<&4>-2.)&2,-&4,$,<.299&2<&2&.S+c<.)>&
   >:+?)<<&
!  N=;/&#)'/%;'2%3%)&/"")';+'%+&'9/==#%'3$$#;3/&#"Q'
!  @-/$#?+-0'$2)&'<#'k-#I-#)9#;l'&+'=2&'&9#$'3%&+'#p#*&'
   A  4*&2/""Q.'I+-'2=;/&#)'3&'3)'/'"3n"#'$+-#'*+$="3*/&#;'&9/%'&93).'<2&'?#'*/%'
      /**#=&'&93)'J3#?'I+-'%+?555'
l+S&-+&S)&:)@:)</&./)&@:25)S+:76&



D763'P'O#Q+%;'&9#':Q&9'                                                             ggZ'
F2?72A)&D-5$,&


]:25)S+:7&>:+Q$-)<&<>)?$29&DFO&.+&-)29&S$./&34,-9)<&$,.):2?;+,<&

   public interface PackageAdmin {
     static final int BUNDLE_TYPE_FRAGMENT = 0x00000001;
     Bundle getBundle(Class clazz);
     Bundle[] getBundles(String symbolicName, String
   versionRange);
     int getBundleType(Bundle bundle);
     ExportedPackage getExportedPackage(String name);
     ExportedPackage[] getExportedPackages(Bundle bundle);
     ExportedPackage[] getExportedPackages(String name);
     Bundle[] getFragments(Bundle bundle);
     RequiredBundle[] getRequiredBundles(String symbolicName);
     Bundle[] getHosts(Bundle bundle);
     void refreshPackages(Bundle[] bundles);
     boolean resolveBundles(Bundle[] bundles);
   }


D763'P'O#Q+%;'&9#':Q&9'                                            gg]'
F2?72A)&D-5$,&


]:25)S+:7&>:+Q$-)<&<>)?$29&DFO&.+&-)29&S$./&34,-9)<&$,.):2?;+,<&

   public interface PackageAdmin {
     static final int BUNDLE_TYPE_FRAGMENT = 0x00000001;
     Bundle getBundle(Class clazz);
     Bundle[] getBundles(String symbolicName, String
   versionRange);
     int getBundleType(Bundle bundle);
     ExportedPackage getExportedPackage(String name);
     ExportedPackage[] getExportedPackages(Bundle bundle);
     ExportedPackage[] getExportedPackages(String name);
     Bundle[] getFragments(Bundle bundle);
     RequiredBundle[] getRequiredBundles(String symbolicName);
     Bundle[] getHosts(Bundle bundle);
     void refreshPackages(Bundle[] bundles);
     boolean resolveBundles(Bundle[] bundles); various methods
                                         Provides
   }                                        to introspect bundle
                                                dependencies

D763'P'O#Q+%;'&9#':Q&9'                                            gg^'
F2?72A)&D-5$,&


]:25)S+:7&>:+Q$-)<&<>)?$29&DFO&.+&-)29&S$./&34,-9)<&$,.):2?;+,<&

   public interface PackageAdmin {
     static final int BUNDLE_TYPE_FRAGMENT = 0x00000001;
     Bundle getBundle(Class clazz);
     Bundle[] getBundles(String symbolicName, String
   versionRange);
     int getBundleType(Bundle bundle);
     ExportedPackage getExportedPackage(String name);
     ExportedPackage[] getExportedPackages(Bundle bundle);
     ExportedPackage[] getExportedPackages(String name);
                                           So, how do we gain
     Bundle[] getFragments(Bundle bundle);
                                           access to this API?
     RequiredBundle[] getRequiredBundles(String symbolicName);
     Bundle[] getHosts(Bundle bundle);
     void refreshPackages(Bundle[] bundles);
     boolean resolveBundles(Bundle[] bundles);
   }


D763'P'O#Q+%;'&9#':Q&9'                                            ggb'
D763'P'O#Q+%;'&9#':Q&9'   ggd'
"):Q$?)&!:$),.2;+,&


B/)&!"#$&@:25)S+:7&>:+5+.)<&2&<):Q$?)c+:$),.)-&$,.):2?;+,&>2X):,&25+,A&
   34,-9)<&




D763'P'O#Q+%;'&9#':Q&9'                                                   gge'
"):Q$?)&!:$),.2;+,&


B/)&!"#$&@:25)S+:7&>:+5+.)<&2&<):Q$?)c+:$),.)-&$,.):2?;+,&>2X):,&25+,A&
   34,-9)<&




                               Service
                               Registry




D763'P'O#Q+%;'&9#':Q&9'                                                   gHh'
"):Q$?)&!:$),.2;+,&


B/)&!"#$&@:25)S+:7&>:+5+.)<&2&<):Q$?)c+:$),.)-&$,.):2?;+,&>2X):,&25+,A&
   34,-9)<&




                                       Service
                                       Registry
                          Y,:'51%#

                                       Service
                                      Description

                           Service
                           Provider




D763'P'O#Q+%;'&9#':Q&9'                                                   gHg'
"):Q$?)&!:$),.2;+,&


B/)&!"#$&@:25)S+:7&>:+5+.)<&2&<):Q$?)c+:$),.)-&$,.):2?;+,&>2X):,&25+,A&
   34,-9)<&




                                       Service
                                       Registry
                          Y,:'51%#                      75"J#

                                       Service
                                      Description

                           Service                   Service
                           Provider                 Requester




D763'P'O#Q+%;'&9#':Q&9'                                                   gHH'
"):Q$?)&!:$),.2;+,&


B/)&!"#$&@:25)S+:7&>:+5+.)<&2&<):Q$?)c+:$),.)-&$,.):2?;+,&>2X):,&25+,A&
   34,-9)<&




                                       Service
                                       Registry
                          Y,:'51%#                      75"J#

                                       Service
                                      Description

                           Service                   Service
                           Provider                 Requester
                                       R5"J#



D763'P'O#Q+%;'&9#':Q&9'                                                   gHR'
!"#$&"):Q$?)&D>>:+2?/&D-Q2,.2A)<&


Z$A/.S)$A/.&<):Q$?)<&
!  U3-#*&'$#&9+;'3%J+*/8+%'
".:4?.4:)-&?+-)&
!  B-+$+&#)')#=/-/8+%'+I'3%&#-I/*#'I-+$'3$="#$#%&/8+%'
!  (%/<"#)'-#2)#.')2<)8&2&/<3"3&Q.'"++)#'*+2="3%L.'/%;'"/&#'<3%;3%L'
V*,25$?<&
!  T++)#'*+2="3%L'/%;'"/&#'<3%;3%L'$/0#'3&'=+))3<"#'&+')2==+-&'-2%K8$#'
   $/%/L#$#%&'+I'$+;2"#'




D763'P'O#Q+%;'&9#':Q&9'                                                   gHZ'
!"#$&D>>9$?2;+,<&


D&?+99)?;+,&+@&34,-9)<&./2.&$,.):2?.&Q$2&<):Q$?)&$,.):@2?)<&
!  O2%;"#)'$/Q'<#'3%;#=#%;#%&"Q';#J#"+=#;'/%;';#="+Q#;'
!  O2%;"#)'/%;'&9#3-'/))+*3/&#;')#-J3*#)'$/Q'/==#/-'+-';3)/==#/-'/&'/%Q'8$#'
&
d)<49;,A&2>>9$?2;+,&@+99+S<&2&"):Q$?)c!:$),.)-&=+5>+,),.&0+-)9&2>>:+2?/&
!  !+$<3%#)'3;#/)'I-+$'<+&9'*+$=+%#%&'/%;')#-J3*#'+-3#%&/8+%'




D763'P'O#Q+%;'&9#':Q&9'                                                        gH]'
(4,-9)&Z$@)&=*?9)&`d)Q$<$.)-b&


                                         5"1$(''#


                                       INSTALLED

                          ,"5"1$(''#                         )&1.'8&#           ,4J($&#

                                          ,"5"1$(''#
               UNINSTALLED                                   RESOLVED

                                                    1$()$#

                                         STARTING                       STOPPING


                           &M4'5E5$#                                    1$.4#
                           (,$.;(XE#
                                                               ACTIVE

D763'P'O#Q+%;'&9#':Q&9'                                                                   gH^'
(4,-9)&Z$@)&=*?9)&`d)Q$<$.)-b&


                                         5"1$(''#


                                       INSTALLED
                              @?-*"-./'"'=8.$9&'"99<%2')3'
                          ,"5"1$(''#          )&1.'8&#      ,4J($&#
                               3<',#<*)$&'".$'82&'2&#*)?&2'
                                          ,"5"1$(''#
               UNINSTALLED                                   RESOLVED

                                                    1$()$#

                                         STARTING                       STOPPING


                           &M4'5E5$#                                    1$.4#
                           (,$.;(XE#
                                                              ACTIVE

D763'P'O#Q+%;'&9#':Q&9'                                                            gHb'
1/2.k<&2&"):Q$?)6&


U4<.&2&<$5>9)&U2Q2&+3G)?.&
B*>$?299*&-)<?:$3)-&3*&2&U2Q2&$,.):@2?)&
!  4""+?)'I+-'$2"8="#'=-+J3;#-)'
e<$,A&2&<):Q$?)&$<&G4<.&9$7)&4<$,A&2,*&+3G)?.&




D763'P'O#Q+%;'&9#':Q&9'                          gHd'
l)99+&1+:9-&"):Q$?)&P25>9)&


Z).k<&2<<45)&S)&/2Q)&./$<&<):Q$?)&$,.):@2?)&
&                         package com.foo.hello;
                          public interface Hello {
&                           void sayHello(String name);
                          }




D763'P'O#Q+%;'&9#':Q&9'                                   gHe'
l)99+&1+:9-&"):Q$?)&P25>9)&


Z).k<&2<<45)&S)&/2Q)&./$<&<):Q$?)&$,.):@2?)&
&                         package com.foo.hello;
                          public interface Hello {
&                           void sayHello(String name);
                          }
&
D,-&./$<&$5>9)5),.2;+,&

                          package com.foo.hello.impl;
                          import com.foo.hello;
                          public class HelloImpl implements Hello {
                            public void sayHello(String name) {
                              System.out.println("Hello " + name + "!");
                            }
                          }




D763'P'O#Q+%;'&9#':Q&9'                                                    gRh'
F439$</$,A&2&"):Q$?)&`KaIb&


(4,-9)=+,.).&299+S<&34,-9)<&.+&>439$</&<):Q$?)<&

public interface BundleContext {
  …
  void addServiceListener(ServiceListener listener, String
filter)
  throws InvalidSyntaxException;
  void addServiceListener(ServiceListener listener);
  void removeServiceListener(ServiceListener listener);
  ServiceRegistration registerService(
    String[] clazzes, Object service, Dictionary props);
  ServiceRegistration registerService(
    String clazz, Object service, Dictionary props);
  ServiceReference[] getServiceReferences(String clazz, String
filter)
    throws InvalidSyntaxException;
  ServiceReference getServiceReference(String clazz);
  Object getService(ServiceReference reference);
  boolean ungetService(ServiceReference reference);
}
D763'P'O#Q+%;'&9#':Q&9'                                      gRg'
F439$</$,A&2&"):Q$?)&`KaIb&


(4,-9)=+,.).&299+S<&34,-9)<&.+&>439$</&<):Q$?)<&

public interface BundleContext {
  …
  void addServiceListener(ServiceListener listener, String
filter)
  throws InvalidSyntaxException;
  void addServiceListener(ServiceListener listener);
  void removeServiceListener(ServiceListener listener);
  ServiceRegistration registerService(
    String[] clazzes, Object service, Dictionary props);
  ServiceRegistration registerService(
    String clazz, Object service, Dictionary props);
  ServiceReference[] getServiceReferences(String clazz, String
filter)
    throws InvalidSyntaxException;
  ServiceReference getServiceReference(Stringhave two methods
                                          We clazz);
                                          for publishing services
  Object getService(ServiceReference reference);
  boolean ungetService(ServiceReference reference);
}
D763'P'O#Q+%;'&9#':Q&9'                                         gRH'
F439$</$,A&2&"):Q$?)&`IaIb&


(4,-9)<&+R),&>439$</&<):Q$?)<&$,&./)$:&2?;Q2.+:&

 package com.foo.hello.impl;
 import org.osgi.framework.*;
 public class Activator implements BundleActivator {
   private ServiceRegistration m_reg = null;
   public void start(BundleContext context) {
     m_reg = context.registerService(
        com.foo.hello.Hello.class.getName(), new HelloImpl(),
 null);
   }

      public void stop(BundleContext context) {
        m_reg.unregister();
      }
 }




D763'P'O#Q+%;'&9#':Q&9'                                         gRR'
F439$</$,A&2&"):Q$?)&`IaIb&


(4,-9)<&+R),&>439$</&<):Q$?)<&$,&./)$:&2?;Q2.+:&

 package com.foo.hello.impl;
 import org.osgi.framework.*;
 public class Activator implements BundleActivator {
   private ServiceRegistration m_reg = null;
   public void start(BundleContext context) {
     m_reg = context.registerService(
        com.foo.hello.Hello.class.getName(), new HelloImpl(),
 null);
   }

   public void stop(BundleContext context) {
     m_reg.unregister();                  We register the service
   }                                    when starting, which makes
 }                                         it available to other
                                                 bundles



D763'P'O#Q+%;'&9#':Q&9'                                              gRZ'
F439$</$,A&2&"):Q$?)&`IaIb&


(4,-9)<&+R),&>439$</&<):Q$?)<&$,&./)$:&2?;Q2.+:&

 package com.foo.hello.impl;
 import org.osgi.framework.*;
 public class Activator implements BundleActivator {
   private ServiceRegistration m_reg = null;
   public void start(BundleContext context) {
     m_reg = context.registerService(
        com.foo.hello.Hello.class.getName(), new HelloImpl(),
 null);
   }

   public void stop(BundleContext context) {
     m_reg.unregister();
   }
 }                                         We unregister it
                                            when stopping



D763'P'O#Q+%;'&9#':Q&9'                                         gR]'
F2?72A$,A&./)&l)99+&1+:9-&"):Q$?)&


!4:&<):Q$?)&$5>9)5),.2;+,&34,-9)&?+,.2$,<&./)<)&>2?72A)<&
!  *+$5I++59#""+'
!  *+$5I++59#""+53$="'




D763'P'O#Q+%;'&9#':Q&9'                                     gR^'
F2?72A$,A&./)&l)99+&1+:9-&"):Q$?)&


!4:&<):Q$?)&$5>9)5),.2;+,&34,-9)&?+,.2$,<&./)<)&>2?72A)<&
!  *+$5I++59#""+'
!  *+$5I++59#""+53$="'
D,-&./)&@+99+S$,A&52,$@)<.&5).2-2.2&


            Bundle-ManifestVersion: 2
            Bundle-SymbolicName: com.foo.hello.impl
            Export-Package: com.foo.hello
            Import-Package: org.osgi.framework,
            com.foo.hello
            Bundle-Activator: com.foo.hello.impl.Activator




D763'P'O#Q+%;'&9#':Q&9'                                      gRb'
e<$,A&2&"):Q$?)&`KaIb&


(4,-9)=+,.).&299+S<&34,-9)<&.+&_,-&<):Q$?)<&

public interface BundleContext {
  …
  void addServiceListener(ServiceListener listener, String
filter)
  throws InvalidSyntaxException;
  void addServiceListener(ServiceListener listener);
  void removeServiceListener(ServiceListener listener);
  ServiceRegistration registerService(
    String[] clazzes, Object service, Dictionary props);
  ServiceRegistration registerService(
    String clazz, Object service, Dictionary props);
  ServiceReference[] getServiceReferences(String clazz, String
filter)
    throws InvalidSyntaxException;
  ServiceReference getServiceReference(String clazz);
  Object getService(ServiceReference reference);
  boolean ungetService(ServiceReference reference);
}
D763'P'O#Q+%;'&9#':Q&9'                                      gRd'
e<$,A&2&"):Q$?)&`KaIb&


 (4,-9)=+,.).&299+S<&34,-9)<&.+&_,-&<):Q$?)<&

public interface BundleContext {
  …
  void addServiceListener(ServiceListener listener, String
filter)
  throws InvalidSyntaxException;
  void addServiceListener(ServiceListener listener);
  void removeServiceListener(ServiceListener We have methods to find
                                             listener);
  ServiceRegistration registerService(      service references and get
    String[] clazzes, Object service, Dictionary service objects
                                                   props);
  ServiceRegistration registerService(
    String clazz, Object service, Dictionary props);
  ServiceReference[] getServiceReferences(String clazz, String
filter)
    throws InvalidSyntaxException;
  ServiceReference getServiceReference(String clazz);
  Object getService(ServiceReference reference);
  boolean ungetService(ServiceReference reference);
}
 D763'P'O#Q+%;'&9#':Q&9'                                           gRe'
e<$,A&2&"):Q$?)&`IaIb&


(4,-9)<&:).:$)Q)&<):Q$?)&:)@):),?)<&
!  V%;3-#*&'-#I#-#%*#)'&+')#-J3*#'+<F#*&'
 package com.foo.hello.client;
 import org.osgi.framework.*;
 import com.foo.hello.Hello;
 public class HelloClient implements BundleActivator {
   public void start(BundleContext context) {
     ServiceReference ref = context.getServiceReference(
       com.foo.hello.Hello.class.getName());
     if (ref != null) {
       Hello h = (Hello) context.getService(ref);
       if (h != null) {
         h.sayHello("World");
         context.ungetService(h);
       }
     }
   }
 …
 }


D763'P'O#Q+%;'&9#':Q&9'                                    gZh'
e<$,A&2&"):Q$?)&`IaIb&


(4,-9)<&:).:$)Q)&<):Q$?)&:)@):),?)<&
!  V%;3-#*&'-#I#-#%*#)'&+')#-J3*#'+<F#*&'
 package com.foo.hello.client;
 import org.osgi.framework.*;
 import com.foo.hello.Hello;
 public class HelloClient implements BundleActivator {
   public void start(BundleContext context) {
     ServiceReference ref = context.getServiceReference(
       com.foo.hello.Hello.class.getName());
     if (ref != null) {
       Hello h = (Hello) context.getService(ref);
       if (h != null) {
         h.sayHello("World");
         context.ungetService(h);
       }
     }                                     We first get the
   }                                      service reference
 …
 }


D763'P'O#Q+%;'&9#':Q&9'                                       gZg'
e<$,A&2&"):Q$?)&`IaIb&


(4,-9)<&:).:$)Q)&<):Q$?)&:)@):),?)<&
!  V%;3-#*&'-#I#-#%*#)'&+')#-J3*#'+<F#*&'
 package com.foo.hello.client;
 import org.osgi.framework.*;
 import com.foo.hello.Hello;
 public class HelloClient implements BundleActivator {
   public void start(BundleContext context) {
     ServiceReference ref = context.getServiceReference(
       com.foo.hello.Hello.class.getName());
     if (ref != null) {
       Hello h = (Hello) context.getService(ref);
       if (h != null) {
         h.sayHello("World");
         context.ungetService(h);
       }
     }
   }                                             From the service
 …                                             reference we get the
 }
                                                    service object

D763'P'O#Q+%;'&9#':Q&9'                                               gZH'
e<$,A&2&"):Q$?)&`IaIb&


(4,-9)<&:).:$)Q)&<):Q$?)&:)@):),?)<&
!  V%;3-#*&'-#I#-#%*#)'&+')#-J3*#'+<F#*&'
 package com.foo.hello.client;
 import org.osgi.framework.*;
 import com.foo.hello.Hello;
 public class HelloClient implements BundleActivator {
   public void start(BundleContext context) {
     ServiceReference ref = context.getServiceReference(
       com.foo.hello.Hello.class.getName());
     if (ref != null) {
       Hello h = (Hello) context.getService(ref);
       if (h != null) {
         h.sayHello("World");
         context.ungetService(h);
       }
     }
   }                            We use the service like
 …
 }
                                   a normal object


D763'P'O#Q+%;'&9#':Q&9'                                    gZR'
e<$,A&2&"):Q$?)&`IaIb&


(4,-9)<&:).:$)Q)&<):Q$?)&:)@):),?)<&
!  V%;3-#*&'-#I#-#%*#)'&+')#-J3*#'+<F#*&'
 package com.foo.hello.client;
 import org.osgi.framework.*;
 import com.foo.hello.Hello;
 public class HelloClient implements BundleActivator {
   public void start(BundleContext context) {
     ServiceReference ref = context.getServiceReference(
       com.foo.hello.Hello.class.getName());
     if (ref != null) {
       Hello h = (Hello) context.getService(ref);
       if (h != null) {
         h.sayHello("World");
         context.ungetService(h);
       }
     }
   }
 …                                      And release the
 }                                    service object when
                                            we are done with it
D763'P'O#Q+%;'&9#':Q&9'                                           gZZ'
F2?72A$,A&./)&l)99+&1+:9-&"):Q$?)&


!4:&?9$),.&$5>9)5),.2;+,&34,-9)&?+,.2$,<&./$<&>2?72A)&
!  *+$5I++59#""+5*"3#%&'
D,-&./)&@+99+S$,A&52,$@)<.&5).2-2.2&

            Bundle-ManifestVersion: 2
            Bundle-SymbolicName: com.foo.hello.client
            Import-Package: com.foo.hello,
            org.osgi.framework
            Bundle-Activator: com.foo.hello.client.Activator




D763'P'O#Q+%;'&9#':Q&9'                                        gZ]'
"):Q$?)&V*,25$<5&


"):Q$?)<&?2,&3)&>439$</)-&2,-&:)Q+7)-&2.&:4,&;5)&
!  7#-J3*#'#J#%&)')3L%/"')#-J3*#'*9/%L#)'
   A  :2)&'&-/*0'#J#%&)'I+-'/%Q')#-J3*#)'<#3%L'2)#;'
     N.#'51$&"#D.)#&8&"$1#
     BundleContext.addServiceListener()




D763'P'O#Q+%;'&9#':Q&9'                                gZ^'
"):Q$?)<&V*,25$<5&


"):Q$?)<&?2,&3)&>439$</)-&2,-&:)Q+7)-&2.&:4,&;5)&
!  7#-J3*#'#J#%&)')3L%/"')#-J3*#'*9/%L#)'
   A  :2)&'&-/*0'#J#%&)'I+-'/%Q')#-J3*#)'<#3%L'2)#;'
     !;4'&;&"$#'51$&"&)#5"$&)D(E&#
     public interface ServiceListener extends EventListener {
       public void serviceChanged(ServiceEvent event);
     }




D763'P'O#Q+%;'&9#':Q&9'                                         gZb'
"):Q$?)<&V*,25$<5&


"):Q$?)<&?2,&3)&>439$</)-&2,-&:)Q+7)-&2.&:4,&;5)&
!  7#-J3*#'#J#%&)')3L%/"')#-J3*#'*9/%L#)'
   A  :2)&'&-/*0'#J#%&)'I+-'/%Q')#-J3*#)'<#3%L'2)#;'
     e&E&58&J#&8&"$#
     public class ServiceEvent extends EventObject {
       public final static int REGISTERED    = 0x00000001;
       public final static int MODIFIED      = 0x00000002;
       public final static int UNREGISTERING = 0x00000004;
       …
       public ServiceReference getServiceReference() { … }
       public int getType() { … }
     }




D763'P'O#Q+%;'&9#':Q&9'                                      gZd'
"):Q$?)<&V*,25$<5&


"):Q$?)<&?2,&3)&>439$</)-&2,-&:)Q+7)-&2.&:4,&;5)&
!  7#-J3*#'#J#%&)')3L%/"')#-J3*#'*9/%L#)'
   A  :2)&'&-/*0'#J#%&)'I+-'/%Q')#-J3*#)'<#3%L'2)#;'
     e&E&58&J#&8&"$#
     public class ServiceEvent extends EventObject {
       public final static int REGISTERED        = 0x00000001;
       public final static int MODIFIED          = 0x00000002;
       public final static int UNREGISTERING = 0x00000004;
       …
       public ServiceReference getServiceReference() { … }
       public int getType() { … }
     }                               Even though service are just
                                       normal objects, they are
                                        potentially much more
                                      volatile, so service events
                                          are very important


D763'P'O#Q+%;'&9#':Q&9'                                             gZe'
"):Q$?)c(2<)-&V*,25$?&P.),<$3$9$.*&


"):Q$?)&)Q),.<&>:+Q$-)&2&5)?/2,$<5&@+:&-*,25$?&).),<$3$9$.*&
B/)&S/$.)3+2:-&>2X):,&
!  a-#/&)'&9#')#-J3*#'-#L3)&-Q'/)'/'?93&#<+/-;'
   A  4'-#J#-)#'?/Q'&+'*-#/&#'/')#-J3*#'
!  4%'/=="3*/8+%'*+$=+%#%&'"3)&#%)'I+-')#-J3*#)'+I'/'=/-8*2"/-'&Q=#'&+'<#'/;;#;'
   /%;'-#$+J#;'
!  D%'/;;38+%.'&9#')#-J3*#'3)'3%&#L-/&#;'3%&+'&9#'/=="3*/8+%'
!  D%'-#$+J/".'&9#')#-J3*#'3)'-#$+J#;'I-+$'&9#'/=="3*/8+%'




D763'P'O#Q+%;'&9#':Q&9'                                                        g]h'
1/$.)3+2:-&F2X):,&



                                    Framework
                                      Service
                                      registry




                          Tracker

                          Frame

                           W.)&#                 -%(4&#
                                                  5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                   g]g'
1/$.)3+2:-&F2X):,&



                                              Framework
                                                Service
                                                registry
                                 e&*51$&)#
                          1&)85E&#'51$&"&)#



                           Tracker

                           Frame

                            W.)&#                          -%(4&#
                                                            5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                             g]H'
1/$.)3+2:-&F2X):,&



                                    Framework
                                      Service
                                      registry

                                                 -&)85E&#
                                                 4,:'5E(X."#


                          Tracker

                          Frame

                           W.)&#                     -%(4&#
                                                      5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                        g]R'
1/$.)3+2:-&F2X):,&



                                        Framework
                                          Service
                                          registry




                                    -&)85E&#
                                    &8&"$#
                          Tracker

                          Frame

                           W.)&#                     -%(4&#
                                                      5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                       g]Z'
1/$.)3+2:-&F2X):,&



                                           Framework
                                             Service
                                             registry

                                -&)85E&#
                               )&d,&1$#



                          Tracker

                          Frame

                           W.)&#                        -%(4&#
                                                         5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                          g]]'
1/$.)3+2:-&F2X):,&



                                    Framework
                                      Service
                                      registry




                                      -&)85E&#:5"J5"*#
                          Tracker

                          Frame

                           W.)&#                         -%(4&#
                                                          5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                           g]^'
1/$.)3+2:-&F2X):,&



                                    Framework
                                      Service
                                      registry




                          Tracker

                          Frame

                           W.)&#                 -%(4&#
                                                  5;4'#



D763'P'O#Q+%;'&9#':Q&9'                                   g]b'
1/$.)3+2:-&F2X):,&



                                               Framework
                                                 Service
                                                 registry




                          Tracker

                          Frame

                           W.)&#                                             -%(4&#
                                    7.)#$%&#)&8&)1&L#5D#$%&#1%(4&#1&)85E&#
                                                                              5;4'#
                                    51#)&;.8&JL#$%&#$)(EC&)#)&;.8&1#5$1#
                                             (11.E5($&J#1%(4&A#

D763'P'O#Q+%;'&9#':Q&9'                                                               g]d'
"):Q$?)&F2$,.&F:+A:25&!Q):Q$)S&


V*,25$?299*&).),<$39)&>2$,.&>:+A:25&&
!  N)#)'&9#'?93&#<+/-;'=/n#-%'&+';#"3J#-')9/=#)'
!  a9#'=/3%&'<2%;"#'"3)&#%)'I+-')9/=#')#-J3*#)'&9/&'*+$#'/%;'L+'
!  N)#)')#-J3*#'=-+=#-8#)'I+-'&9#'%/$#'/%;'3*+%'+I'&9#')9/=#'
e<)<&>92?)/+9-):&S/),&</2>)&/2<&3)),&4<)-E&34.&$<&?4::),.9*&4,2Q2$9239)&
   3)?24<)&./)&<):Q$?)&$<&,+.&2Q2$9239)&




D763'P'O#Q+%;'&9#':Q&9'                                                    g]e'
"):Q$?)&F2$,.&F:+A:25&V)<$A,&`KaIb&



                 Shape                   c#   Default
                 Service
                                              Shape
                 Tracker



                           b#
                   Paint                      Simple
                   Frame                      Shape

                   b#

                   c#

                Shape
                                Circle        Square    Triangle
              Component


D763'P'O#Q+%;'&9#':Q&9'                                        g^h'
"):Q$?)&F2$,.&F:+A:25&V)<$A,&`IaIb&

                                                           &M4.)$#




                                                                     Shape
                                                    .)*AD..A1%(4&#
                Paint




                                         Circle
                                         Square
                                         Triangle




D763'P'O#Q+%;'&9#':Q&9'                                                      g^g'
=/299),A)<&+@&V*,25$<5&


(+./&34,-9)<&2,-&<):Q$?)<&2:)&-*,25$?&
!"#$&$<&$,/):),.9*&549;c./:)2-)-&
B/$<&5)2,<&*+4&/2Q)&.+&-)29&S$./&./)&@2?.&./2.&
!  q+2-'/=="3*/8+%'?3""'"30#"Q')##'$2"8="#'&9-#/;)'
!  4=="3*/8+%'*+$=+%#%&)'*/%'/==#/-'+-';3)/==#/-'/&'/%Q'8$#'
B/):)&$<&/)9>&
!  7#-J3*#'a-/*0#-'
!  7#-J3*#'!+$=+%#%&':+;#"'P'U#*"/-/8J#'7#-J3*#).'3BDED.'O"2#=-3%&'




D763'P'O#Q+%;'&9#':Q&9'                                               g^H'
D763'P'O#Q+%;'&9#':Q&9'   g^R'
1/2.&2&>2$,&T&


0+-492:$.*&2,-&V*,25$<5&2:)&.S+&:)299*&$,.):)<;,A&>:+>):;)<&
!  N)3%L'3&'"++0)'/'%3L9&$/-#r'
!  :3L-/8%L'&+'D763.'"++0)'&#--3<"#'


D99&2<>)?.<&2:)&$5>+:.2,.&$,&!"#OE&)<>)?$299*&/2:-)<.&+,)<'&
!  B/*0/L3%L'
!  :2"8&9-#/;3%L'/%;')Q%*9-+%3S/8+%'
!  !"/))"+/;3%L'


&




D763'P'O#Q+%;'&9#':Q&9'                                        g^Z'
F2$,&d)9$)Q):<&


F2?72A$,A&
!  O_U.'O_Ua++")'
!  7=-3%L7+2-*#'O2%;"+-'X?-/==3%LY'
!  4=/*9#'@#"3C'73L3".':/J#%KaQ*9+W'
"):Q$?)&=+5>+,),.&d4,;5)&`-)>),-),?*&$,G)?;+,b&
!  U#*"/-/8J#'7#-J3*#).'O"2#=-3%&'
!  4=/*9#'@#"3C'3BDED'
P,.):>:$<)&!"#$&
!  4=/*9#'4-3#)'
!  (*"3=)#'6#$3%3.'c3-L+'
D-5$,$<.:2;+,&.++9<&2,-&V)>9+*5),.&
!  G#<'!+%)+"#'
!  DO'
D763'P'O#Q+%;'&9#':Q&9'                           g^]'
D763'P'O#Q+%;'&9#':Q&9'   g^^'
(MV&


(MV&
!  M+?'&+'$/0#'<2%;"#)'#/)3"Q'
!  U#)*-3=8+%'+I'&9#'<2%;"#'*+%&#%&'3%'&#-$'+I'
   A  V$=+-&#;[(C=+-&#;[B-3J/&#'=/*0/L#)' PM4.)$?Y(EC(*&>#E.;AD..A(E;&[#8&)15."]bA`##
   A  #)+2-*#)'                           Y)58($&?Y(EC(*&>#E.;AD..A(E;&A5;4'#
   A  ($<#;;#;'E/-'
!  !+$=2&#'&9#'*+--#*&'$#&/;/&/'
                                           +("5D&1$?f&)15.">#b#
]:+,.),-<&                                 #R,"J'&?0(;&>#E.;AD..A(E;&#
!  !+$$/%;'T3%#'                           #Y)58($&?Y(EC(*&>#E.;AD..A(E;&A5;4'#
                                           #!;4.)$?Y(EC(*&>#E.;AD..A(E;&[8&)15."]bA`L#
!  4%&'                                    ###.)*A.1*5AD)(;&2.)C[#8&)15."]bA9#
!  :/J#%'X$/J#%K<2%;"#K="2L3%Y'            R,"J'&?+("5D&1$f&)15.">#G#
                                           #R,"J'&?-F;:.'5E0(;&>#E.;AD..A(E;&#
!  O%;a++"'X(*"3=)#'B"2L3%Y'
                                           #PM4.)$?Y(EC(*&>#E.;AD..A(E;&[8&)15."]bA`#
&                                          #R,"J'&?f&)15.">#`#

&
D763'P'O#Q+%;'&9#':Q&9'                                                           g^b'
52Q),c34,-9)c>94A$,&

                g4',*5"h#
                ##g*).,4!Jh.)*A(4(E%&AD&'5Mgi*).,4!Jh#
                ##g()XD(E$!Jh;(8&"?:,"J'&?4',*5"gi()XD(E$!Jh#
                ##g&M$&"15."1h$),&gi&M$&"15."1h#
                ##gE."Z*,)(X."h#
                ####g5"1$),EX."1h#
                #######gPM4.)$?Y(EC(*&h#
                ########E.;AD..A(E;&[#8&)15."]bA`A`#
                #######giPM4.)$?Y(EC(*&h#
                #######gY)58($&?Y(EC(*&h#
                ########E.;AD..A(E;&A5;4'#
                #######giY)58($&?Y(EC(*&h#
                ####gi5"1$),EX."1h#
                ##giE."Z*,)(X."h#
                gi4',*5"h#
D763'P'O#Q+%;'&9#':Q&9'                                         g^d'
B/)&m/+S&.+&_,-&34,-9)n&-$9)552&


l+S&.+&.:2,<@+:5&2&>92$,&U2:&$,.+&2&(4,-9)&
!  O_U'/%;'O2%;"+-')2==+-&'&93)'2)#'*/)#'+2&'+I'&9#'<+C'
!  !+$$+%'7&-/&#LQ'
   A  (C=+-&'/""'=/*0/L#)'X#C*#=&'s53$=".'s53%&#-%/")Y'
   A  !+$=2&#'3$=+-&)'X/)'+=8+%/"Y'
O<&$.&A++-&6&
!  U+'%+&'$/%/L#'&9#'J3)3<3"3&Q.'+=8+%/"3&Q.'-#t#*8+%'
!  U+'%+&'2)#')#-J3*#)'
P$<;,A&:)>+<$.+:$)<&
!  7=-3%L'7+2-*#'P'9n=)P[[#<-5)=-3%L)+2-*#5*+$[-#=+)3&+-Q[/==['
!  7#-J3*#':3C'P'9n=P[[)#-J3*#$3C5/=/*9#5+-L[7:uZ[<2%;"#)K-#=+)3&+-Q59&$"'
!  !9/$#"#+%'!+$$+%'P
   9n=P[[?3035*9/$#"#+%5+?H5+-L[C?303[<3%[J3#?[:/3%[G#<M+$#'
!  4'"+&'+I'=-+F#*&)'/-#'/"-#/;Q'D763K/?/-#'r'
D763'P'O#Q+%;'&9#':Q&9'                                                      g^e'
D763'P'O#Q+%;'&9#':Q&9'   gbh'
"):Q$?)c=+5>+,),.&0+-)9&


1/*&6&
!  73$="3`*/8+%'+I'&9#';#J#"+=$#%&'$+;#"'
   A  UQ%/$3)$'
   A  :/%/L#$#%&'
   A  #*+%`L2-/8+%'
!  4-*93&#*&2-/"'J3#?'
!  4""+?'&+'#/)3"Q'*-#/&#')+=93)8*/&#;'/=="3*/8+%)'


&




D763'P'O#Q+%;'&9#':Q&9'                               gbg'
"):Q$?)c=+5>+,),.&0+-)9&


1/*&6&
!  73$="3`*/8+%'+I'&9#';#J#"+=$#%&'$+;#"'
   A  UQ%/$3)$'
   A  :/%/L#$#%&'
   A  #*+%`L2-/8+%'
!  4-*93&#*&2-/"'J3#?'
!  4""+?'&+'#/)3"Q'*-#/&#')+=93)8*/&#;'/=="3*/8+%)'


"):Q$?)c=+5>+,),.&5+-)9<&
!  V%I2)#')#-J3*#K+-3#%&#;'$#*9/%3)$)'3%'/'*+$=+%#%&'$+;#"'
!  B-+J3;#'
   A  73$="#';#J#"+=$#%&'$+;#"'
   A  4-*93&#*&2-/"'J3#?).'*+$=+)38+%'$#*9/%3)$)'

D763'P'O#Q+%;'&9#':Q&9'                                       gbH'
P$<;,A&"):Q$?)&=+5>+,),.&0+-)9<&


V)?92:2;Q)&"):Q$?)<&
!  7=#*3`#;'3%'D763'Z''
!  U#`%#'/';#*"/-/8J#'*+$=+%#%&'$+;#"'&+';#/"'?3&9'&9#')#-J3*#';Q%/$3)$'
(94)>:$,.&
!  7=#*3`#;'3%'&9#'D763'(%&#-=-3)#'B-+`"#'
!  7=-3%L'+%'&9#'&+='+I'D763'
!  O#/%)'*/%'2)#')#-J3*#)'/%;'<#'#C=+)#;'/)')#-J3*#)'
D>2?/)&])9$&$F!U!&
!  BDEDK</)#;'*+$=+%#%&'$+;#"'
!  (C&#%)3<"#'
   A  V)'%+&'"3$3&#;'&+';Q%/$3)$'
!  72==+-&)'/%%+&/8+%)'
!  a9#'$+)&'/;J/%*#;'&+;/Q'
!  9n=P[[3=+F+5+-L'

D763'P'O#Q+%;'&9#':Q&9'                                                    gbR'
F:+Q$-$,A&./)&"/2>)&<):Q$?)&S$./&$F!U!&



    @Component
    @Provides
    public class Circle implements SimpleShape {
             @ServiceProperty(name=SimpleShape.NAME_PROPERTY)
             private String name;

                    @ServiceProperty(name=SimpleShape.ICON_PROPERTY)
                    private ImageIcon icon;

             @Validate
             public void start() {
                      icon = new ImageIcon(this.getClass().getResource
    ("circle.png")));
                      name = "Circle";
             }

                    public void draw(Graphics2D g2, Point p) {
                       // Draw a circle
                    }
    }



D763'P'O#Q+%;'&9#':Q&9'                                                  gbZ'
d)84$:$,A&</2>)<&S$./&$F!U!&



    @Component
    @Instantiate
    public class Host {

                    public Host() {
                      // Create the frame...
                    }

                    @Bind
                    public synchronized void bindShape(SimpleShape shape) {
                      // Update the frame
                    }

                    @Unbind
                    public synchronized void unbindShape(SimpleShape shape) {
                      // Update the frame
                    }

                    //...
    }


D763'P'O#Q+%;'&9#':Q&9'                                                         gb]'
1/2.&$F!U!&52,2A)<&@+:&*+4&6&


"):Q$?)<&
!  U#=#%;#%*3#)P';Q%/$3)$.')Q%*9-+%3S/8+%'
!  7#-J3*#'B-+J3;3%LP'=2<"3*/8+%.')#-J3%L.')#-J3*#'=-+=#-8#).'2=;/&#)'

Z$@)?*?9)&
!  V%)&/%*#'"3I#*Q*"#'
!  !/""</*0)'
!  !+%&-+""/<"#r'

!./):<&
!  4)Q%*9-+%+2)'*+$$2%3*/8+%'
!  (C&#%;#-'=/n#-%.'G93&#<+/-;'=/n#-%'
!  E:u'
!  a-/%)/*8+%.'EB4W'
!  P.),<$39)T&

D763'P'O#Q+%;'&9#':Q&9'                                                  gb^'
1/2.&$F!U!&52,2A)<&@+:&*+4&6&


]2?.+:*&a&O,<.2,?)&-$<;,?;+,&
!  v!+$=+%#%&'wx'!+$=+%#%&'aQ=#'
!  q+2'*/%'*-#/&#')#J#-/"'3%)&/%*#'I-+$'&9#')/$#'&Q=#'?3&9';3p#-#%&'*+%`L2-/8+%)'
   A  R')9/=#)'X3%)&/%*#)Y.'g'*+$=+%#%&'&Q=#'


02,2A)5),.&
!  V%&#-/*8+%'?3&9'&9#'D763'!+%`L'4;$3%'
!  G#<!+%)+"#'B"2L3%'
!  V%&-+)=#*&/<"#'


O,G)?;+,&
!  O/)#;'+%'<Q&#*+;#'#%9/%*#$#%&'
   A  Dy3%#'+-'V%)&/""K8$#'
   A  a#)&#;'+%'/'"+&'+I'Ec:)'
!  @3#";'3%F#*8+%'
!  :#&9+;'*/""</*0'
!  !+%)&-2*&+-'3%F#*8+%'


D763'P'O#Q+%;'&9#':Q&9'                                                             gbb'
1/):)&$F!U!&$<&4<)-6&


D>>9$?2;+,<&"):Q):<&
!  M+$#'6/&#?/Q'
!  @VU'723&#'
!  E(('4=="3*/8+%'7#-J#-'XDGH'ED%47Y'
'
"*<.)5&
!  V%)2-/%*#')+>?/-#)'
!  ($<#;;#;';#J3*#)'


!./):<&
!  U#)0&+='/=="3*/8+%)'X7?3%L.'7Ga.'zaWY'
!  4%;-+3;''
!  :+<3"#'6/$#)'X2647BY'

D763'P'O#Q+%;'&9#':Q&9'                     gbd'
D763'P'O#Q+%;'&9#':Q&9'   ge]'
P,.):>:$<)&!"#$&


O,.)A:2.)&UPP&B)?/,+9+A$)<&$,.+&!"#$'&!,)&A+29E&BS+&.:),-<'&
P,.):>:$<)&!"#$&'&./)&<>)?$_?2;+,&
!  @3-)&')=#*3`*/8+%'-#"#/)#;'3%':/-*9'Hhgh'
!  U#`%#)'
   A  G#<'4=="3*/8+%)'XG4O)Y'
   A  #$+&#'7#-J3*#).'7!4'U#`%38+%)'
   A  Es'P'EUO!.'E_UV.'Ea4.'EB4.'E:u'
l*3:$-&2>>9$?2;+,&<):Q):<&
!  E(('/=="3*/8+%')#-J#-)'-#"Q3%L'+%'D763'/%;'#C=+)3%L'D763'
   A  DGH'E+_47.'D-/*"#'6"/))`)9.'VO:'G#<)=9#-#'
   A  #;9/&'E<+))'
!  D763'4=="3*/8+%)'2)3%L'E((')#-J3*#)'{'E(('*+$=+%#%&)'2)3%L'D763')#-J3*#)'
!  9n=P[[<"+L5/0123%#&5;#[Hhhe[hb[Hb[F+%/)K)9+?*/)#K9/J3%LK&9#K<#)&K+IKF##K
   /%;K+)L3['
D763'P'O#Q+%;'&9#':Q&9'                                                        ge^'
P?9$><)&#)5$,$&


"+RS2:)&"4$.)&?+,.2$,$,A&P,.):>:$<)c.)?/,+9+A$)<&<4>>+:.&
!  #I#-#%*#'V$="#$#%&/8+%'I+-'$/%Q'+I'&9#'(%&#-=-3)#'D763'7=#*3`*/8+%)'
!  !+%&/3%)'
   A  O"2#=-3%&'
   A  G#<'!+%&/3%#-'
   A  EB4'
   A  EUO!'
   A  E:u'
   A  E_UV'
   A  W'




D763'P'O#Q+%;'&9#':Q&9'                                                    geb'
D>2?/)&D:$)<&


O5>9)5),.2;+,<&2,-&).),<$+,<&+@&./)&P,.):>:$<)&!"#$&">)?$_?2;+,<&
!  !+%&/3%)'
   A  O"2#=-3%&'
   A  EB4'
   A  Ea4'
   A  EUO!'
   A  E:u'
   A  7BV'
   A  E_UV'
   A  W'
!  4))#$<"Q'['4=="3*/8+%'I+-$/&P'(O4'




D763'P'O#Q+%;'&9#':Q&9'                                              ged'
P?9$><)&W$:A+&


!:$A$,299*&">:$,A"+4:?)&-5"):Q):&`-*,25$?&5+-49)<b&
!  H-65#?#<'*+%&/3%#-#
   A  4=="3*/8+%';#)*-3=8+%.';#="+Q$#%&'/%;'$/%/L#$#%&'P'B"/%).'3)+"/&#;.'
      /&+$3*)'
   A  B-+J3)3+%3%LP'B4)'
   A  T#L/*Q'"3<-/-3#)'
   A  4;$3%3)&-/8+%'
   A  a++"3%L)'




D763'P'O#Q+%;'&9#':Q&9'                                                      gee'
!./):<&


d)5+.)&"):Q$?)<&
!  !u@'U3)&-3<2&#;'D763'
   A  G#<'7#-J3*#)'
!  DGH'!9/$#"#+%'+)#'
   A  a#*9%+"+LQ'/L%+)8*)'
   A  E7D_B!.'G#<'7#-J3*#.'(7a'XE#-)#QYW'
V$<.:$34.)-&PQ),.<&
!  (J#%&'4;$3%'<-3;L#)'
!  DGH'+)#'E:7'O-3;L#)'X/*8J#:z.'M+-%#&z.'E+-/$Y'
P"(<&
!  7#-J3*#':3C'
!  !/$#"'


D763'P'O#Q+%;'&9#':Q&9'                              Hhh'
D763'P'O#Q+%;'&9#':Q&9'   Hhg'
D>2?/)&])9$&1)3&=+,<+9)&




D763'P'O#Q+%;'&9#':Q&9'       HhH'
D>2?/)&D?)&


"+RS2:)&V$<.:$34;+,&@:25)S+:7&
!  O/)#;'+%'D763'
   A  @+-'D763'<2&'%+&'+%"Q'


])2.4:)<&
!  !-#/8+%'+I';#="+Q$#%&'=/*0/L#'
   A  4""+?'&+'=2)9'3%)&/""/8+%'&+'/')#&'+I'L/&#?/Q'
   A  72==+-&'3%)&/""/8+%)'['2=;/&#)'['2%3%)&/""/8+%)'
   A  B2""'/%;'B2)9'
!  U#=#%;#%*Q':/%/L#$#%&'
   A  7$/-&';#="+Q$#%&'
!  7*/"/<3"3&Q'
   A  _+&'"3$3&#;'3%'&#-$)'+I'/;$3%3)&#-#;'L/&#?/Q)'
!  9n=P[[3%*2</&+-5/=/*9#5+-L[/*#['
D763'P'O#Q+%;'&9#':Q&9'                                  HhR'
!./):<&


B/):)&2:)&2&9+.&+@&.++9<&
&
F:+Q$<$+,$,A&
!  D763'O2%;"#'#=+)3&+-QP'U#="+Q$#%&')+"28+%'&+'-#)+"J#';#=#%;#%*3#)'
!  (*"3=)#'BH'


d)5+.)&2-5$,$<.:2;+,&
!  E:u'
!  77M'#$+&#'79#""'
!  c3)2/"c:'D763'B"2L3%'X;#J#"+=#;'+%'DGH'!9/$#"#+%Y'



&
D763'P'O#Q+%;'&9#':Q&9'                                                  HhZ'
D763'P'O#Q+%;'&9#':Q&9'   Hh]'
!"#$&?2,&3)&2&:)299*&A++-&.)?/,+9+A*&




D763'P'O#Q+%;'&9#':Q&9'                 Hh^'
0$,-&./)&#2>&




D763'P'O#Q+%;'&9#':Q&9'   Hhb'
0+-492:$.*&2,-&V*,25$<5&2:)&/2:-&


V+,n.&)?)>.&<+5)./$,A&)2<*&
!  :+;2"/-3&Q'3)'lDdV'r'
   A  G-38%L'$+;2"/-'*+;#'3)'9/-;'
   A  :+;2"/-3S3%L'#C3)8%L'*+;#'3)'/'"+&'9/-;#-'

!  O3LL#-'3)'Q+2-'*+;#</)#.'9/-;#-'3&'?3""'<#'
   A  !+$="#C'*+;#'X-#t#*8+%.';Q%/$3*'"+/;3%LY'*/%'<#'-#/""Q'/'%3L9&$/-#'

!  a93%0'/<+2&'?9/&'Q+2-'/-#';+3%L'r'
   A  G9/&|)'&9#'=+3%&'j'
   A  G9Q'/-#'Q+2';+3%L')2*9'03%;'+I'I/%*Q'$#*9/%3)$'
          "  @+-L#&'&9#'kE2)&'@+-'@2%l'/%)?#-'
          "  o))>&$.&<$5>9)&




&
D763'P'O#Q+%;'&9#':Q&9'                                                     Hhd'
!"#$&


1)kQ)&<)),&299&!"#$&/2<&.+&+C):&
!  :+;2"#'"/Q#-'
!  T3I#*Q*"#'"/Q#-'
!  7#-J3*#'"/Q#-'


1/$9)&./):)&2:)&>9),.*&+@&5+:)&-).2$9<&.+&./)<)&92*):<E&*+4&</+49-&,+S&3)&
  @25$9$2:&S$./&./)&5+<.&$5>+:.2,.&>2:.<&
!  a9#'$+)&'*+$$+%"Q'2)#;[%##;#;'I#/&2-#)'
!  a9#'$+)&'*+$$+%"Q'2)#;'=/n#-%)'


D&9+.&+@&.++9<&2:)&2Q2$9239)E&4<)&./)5&T&
!  (C3)8%L')#-J3*#)'
!  !+$=+%#%&':+;#")'
&
D763'P'O#Q+%;'&9#':Q&9'                                                      Hhe'
1:$;,A&0+-492:&=+-)&


=2:)@499*&52,A)&*+4:&>2?72A)<&
!  4J+3;')="3&'=/*0/L#'
!  7#=/-/&#')=#*3`*/8+%'['3$="#$#%&/8+%'
!  B/*0/L#')=#*3`*/8+%)'3%'&9#3-'+?%'<2%;"#'
DQ+$-&=92<<f@+:M25)&
!  _+'L"+</"'J3)3<3"3&Q'3%'D763'
!  VI'-#/""Q'%##;'<#.'L3J#'&9#'*+--#*&'*"/))"+/;#-'
e<)&"):Q$?)<&
!  N)#'7#-J3*#)'rrr'
e<)&?+5>+,),.&5+-)9<&
!  U+%|&'2)#'&9#'D763'4BV'U3-#*&"Q'


&
D763'P'O#Q+%;'&9#':Q&9'                               Hgh'
d)?+55),-2;+,<&



 +06)').'@?-<.'
 e5E%()J#-A#j(''L#k()'#Y(,'1L#-$,()$#+EW,''.E%L#O(85J#-(8(*&#




D763'P'O#Q+%;'&9#':Q&9'                                   Hgg'
p4)<;+,<&6&




                   k()'#Y(,'1#                                   O)A#W'&;&"$#P1E.t&)#
                   C()'A4(,'1l(Cd,5"&$AJ&#             E'&;&"$A&1E.t&)l(Cd,5"&$AJ&#
                   Rm'.21$)(n&#ooL#b`pq9#R&)'5"#         Rm'.21$)(n&#ooL#b`pq9#R&)'5"#
                   r_s#bab#GGo#_s#q_a#                               r_s#bpa#G_oppbp#
                   #                               #
D763'P'O#Q+%;'&9#':Q&9'                                                                  HgH'

OSGi - beyond the myth