SlideShare a Scribd company logo
1 of 196
!"#$%&'&()*+,-&./)&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'
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions
akquinet - Leading Provider of Digital Transformation Solutions

More Related Content

What's hot

20150422130351-9864-71
20150422130351-9864-7120150422130351-9864-71
20150422130351-9864-71javadazimirad
 
Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...
Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...
Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...Cendoo
 
Ridehailing vs Traditional transportation: Demand difference in Vietnam
Ridehailing vs Traditional transportation: Demand difference in VietnamRidehailing vs Traditional transportation: Demand difference in Vietnam
Ridehailing vs Traditional transportation: Demand difference in VietnamQ&Me Vietnam Market Research
 
Nearby Startup Pitch for SUU 2013 conference
Nearby Startup Pitch for SUU 2013 conferenceNearby Startup Pitch for SUU 2013 conference
Nearby Startup Pitch for SUU 2013 conferenceAdam Nemeth
 
Vers la performance globale de la commande publique
Vers la performance globale de la commande publique Vers la performance globale de la commande publique
Vers la performance globale de la commande publique CJD Côte d'Emeraude
 
Mariano cenamo juma methodological aspects
Mariano cenamo   juma methodological aspectsMariano cenamo   juma methodological aspects
Mariano cenamo juma methodological aspectstheREDDdesk
 
open innovation
open innovationopen innovation
open innovationAnto Recio
 
Blenderbookv01
Blenderbookv01Blenderbookv01
Blenderbookv01whiedhie
 

What's hot (18)

referente
referentereferente
referente
 
Vietnam market trend 2020 (Jan - Dec 2020)
Vietnam market trend 2020 (Jan - Dec 2020)Vietnam market trend 2020 (Jan - Dec 2020)
Vietnam market trend 2020 (Jan - Dec 2020)
 
Vietnamese concerns on the environment issues
Vietnamese concerns on the environment issuesVietnamese concerns on the environment issues
Vietnamese concerns on the environment issues
 
20150422130351-9864-71
20150422130351-9864-7120150422130351-9864-71
20150422130351-9864-71
 
Ph 2
Ph 2Ph 2
Ph 2
 
Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...
Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...
Czym zabłysnę gdy przyjdzie konkurencja, i jak trzymać wydatki na obsługę Kli...
 
Vietnam language learning behaviors
Vietnam language learning behaviorsVietnam language learning behaviors
Vietnam language learning behaviors
 
Ridehailing vs Traditional transportation: Demand difference in Vietnam
Ridehailing vs Traditional transportation: Demand difference in VietnamRidehailing vs Traditional transportation: Demand difference in Vietnam
Ridehailing vs Traditional transportation: Demand difference in Vietnam
 
Interview Boot Camp
Interview Boot CampInterview Boot Camp
Interview Boot Camp
 
Curriculo de primer año
Curriculo de primer añoCurriculo de primer año
Curriculo de primer año
 
Nearby Startup Pitch for SUU 2013 conference
Nearby Startup Pitch for SUU 2013 conferenceNearby Startup Pitch for SUU 2013 conference
Nearby Startup Pitch for SUU 2013 conference
 
Vers la performance globale de la commande publique
Vers la performance globale de la commande publique Vers la performance globale de la commande publique
Vers la performance globale de la commande publique
 
Sani 2013 satisfaction.
Sani 2013   satisfaction.Sani 2013   satisfaction.
Sani 2013 satisfaction.
 
Mariano cenamo juma methodological aspects
Mariano cenamo   juma methodological aspectsMariano cenamo   juma methodological aspects
Mariano cenamo juma methodological aspects
 
open innovation
open innovationopen innovation
open innovation
 
Vietnam social media popularity & characteristics
Vietnam social media popularity & characteristicsVietnam social media popularity & characteristics
Vietnam social media popularity & characteristics
 
Pres Project
Pres ProjectPres Project
Pres Project
 
Blenderbookv01
Blenderbookv01Blenderbookv01
Blenderbookv01
 

Viewers also liked

Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...
Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...
Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...Олег Федосенко
 
Kegler Brown's 2015 Managing Labor + Employee Relations Seminar
Kegler Brown's 2015 Managing Labor + Employee Relations SeminarKegler Brown's 2015 Managing Labor + Employee Relations Seminar
Kegler Brown's 2015 Managing Labor + Employee Relations SeminarKegler Brown Hill + Ritter
 
2013 stamps-intro-assembly
2013 stamps-intro-assembly2013 stamps-intro-assembly
2013 stamps-intro-assemblyc.titus.brown
 
OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...
OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...
OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...Kegler Brown Hill + Ritter
 
Laurence
LaurenceLaurence
LaurenceJURY
 
Rachel Wolfe Writing Portfolio
Rachel Wolfe Writing PortfolioRachel Wolfe Writing Portfolio
Rachel Wolfe Writing PortfolioRachel Wolfe
 
2014 nicta-reproducibility
2014 nicta-reproducibility2014 nicta-reproducibility
2014 nicta-reproducibilityc.titus.brown
 
Children Consultation Report
Children Consultation ReportChildren Consultation Report
Children Consultation ReportZafar Ahmad
 
Enroll And Survey
Enroll And SurveyEnroll And Survey
Enroll And Surveybsrmailbox
 
Presentation #1 Chapter 3B
Presentation #1 Chapter 3BPresentation #1 Chapter 3B
Presentation #1 Chapter 3Bavlainich
 
Brian Data Analysis Reduced
Brian Data Analysis ReducedBrian Data Analysis Reduced
Brian Data Analysis Reducedbriancenteno
 
Evaluaciones de jheickson noguera
Evaluaciones de jheickson nogueraEvaluaciones de jheickson noguera
Evaluaciones de jheickson nogueraLili Cardenas
 
S1031 re 5.6.13 vt realtors 2013
S1031 re   5.6.13 vt realtors 2013S1031 re   5.6.13 vt realtors 2013
S1031 re 5.6.13 vt realtors 2013Edmund_Wheeler
 
Romairone, Gregorio
Romairone, GregorioRomairone, Gregorio
Romairone, GregorioGregorio
 
Creditmanagement en cloud computing
Creditmanagement en cloud computingCreditmanagement en cloud computing
Creditmanagement en cloud computingPiet van Vugt
 

Viewers also liked (20)

Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...
Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...
Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...
 
Kegler Brown's 2015 Managing Labor + Employee Relations Seminar
Kegler Brown's 2015 Managing Labor + Employee Relations SeminarKegler Brown's 2015 Managing Labor + Employee Relations Seminar
Kegler Brown's 2015 Managing Labor + Employee Relations Seminar
 
IT & Business Centre
IT & Business CentreIT & Business Centre
IT & Business Centre
 
2013 stamps-intro-assembly
2013 stamps-intro-assembly2013 stamps-intro-assembly
2013 stamps-intro-assembly
 
OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...
OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...
OSHA Goes On the Attack as the Obama Administration Winds Down: Are You Prepa...
 
Laurence
LaurenceLaurence
Laurence
 
Rachel Wolfe Writing Portfolio
Rachel Wolfe Writing PortfolioRachel Wolfe Writing Portfolio
Rachel Wolfe Writing Portfolio
 
2014 Professional Responsibility Seminar
2014 Professional Responsibility Seminar2014 Professional Responsibility Seminar
2014 Professional Responsibility Seminar
 
2014 nicta-reproducibility
2014 nicta-reproducibility2014 nicta-reproducibility
2014 nicta-reproducibility
 
Vizerra 2010
Vizerra 2010Vizerra 2010
Vizerra 2010
 
Children Consultation Report
Children Consultation ReportChildren Consultation Report
Children Consultation Report
 
Enroll And Survey
Enroll And SurveyEnroll And Survey
Enroll And Survey
 
Presentation #1 Chapter 3B
Presentation #1 Chapter 3BPresentation #1 Chapter 3B
Presentation #1 Chapter 3B
 
Brian Data Analysis Reduced
Brian Data Analysis ReducedBrian Data Analysis Reduced
Brian Data Analysis Reduced
 
Evaluaciones de jheickson noguera
Evaluaciones de jheickson nogueraEvaluaciones de jheickson noguera
Evaluaciones de jheickson noguera
 
S1031 re 5.6.13 vt realtors 2013
S1031 re   5.6.13 vt realtors 2013S1031 re   5.6.13 vt realtors 2013
S1031 re 5.6.13 vt realtors 2013
 
Romairone, Gregorio
Romairone, GregorioRomairone, Gregorio
Romairone, Gregorio
 
Formulacion del pei
Formulacion del peiFormulacion del pei
Formulacion del pei
 
Mediation- What Every Advocate Should Know
Mediation- What Every Advocate Should Know Mediation- What Every Advocate Should Know
Mediation- What Every Advocate Should Know
 
Creditmanagement en cloud computing
Creditmanagement en cloud computingCreditmanagement en cloud computing
Creditmanagement en cloud computing
 

Similar to akquinet - Leading Provider of Digital Transformation Solutions

Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la BeautéCustomer Insight
 
Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la BeautéCustomer Insight
 
Grad survey results presentation
Grad survey results presentationGrad survey results presentation
Grad survey results presentationguyvonh
 
Grad survey results presentation
Grad survey results presentationGrad survey results presentation
Grad survey results presentationCarissa Caloud
 
Grad survey results presentation
Grad survey results presentationGrad survey results presentation
Grad survey results presentationCarissa Caloud
 
Ico corporate presentation en
Ico corporate presentation enIco corporate presentation en
Ico corporate presentation enHarpreet kaur
 
Design Management Review
Design Management ReviewDesign Management Review
Design Management Reviewedora1
 
Start-up: FanpageTrender.pl - pomiar działań marketingowych na Facebooku
Start-up: FanpageTrender.pl - pomiar działań marketingowych na FacebookuStart-up: FanpageTrender.pl - pomiar działań marketingowych na Facebooku
Start-up: FanpageTrender.pl - pomiar działań marketingowych na Facebookucendoo1
 
Fanpage Trender
Fanpage TrenderFanpage Trender
Fanpage TrenderCendoo
 
Filtrowanie treści - dylematy operatorów serwisów społecznościowych
Filtrowanie treści - dylematy operatorów serwisów społecznościowychFiltrowanie treści - dylematy operatorów serwisów społecznościowych
Filtrowanie treści - dylematy operatorów serwisów społecznościowychCendoo
 
Wierzbowski
WierzbowskiWierzbowski
Wierzbowskicendoo1
 
SEO - It Works Even if You Don’t Know How or Why
SEO - It Works Even if You Don’t Know How or Why SEO - It Works Even if You Don’t Know How or Why
SEO - It Works Even if You Don’t Know How or Why Wolfgang Weicht
 
Virtues some surahs of the noble qura'n - imaam al-albaanee
Virtues   some surahs of the noble qura'n - imaam al-albaaneeVirtues   some surahs of the noble qura'n - imaam al-albaanee
Virtues some surahs of the noble qura'n - imaam al-albaaneeShahedur
 
Arduino Programming Notebook
Arduino Programming NotebookArduino Programming Notebook
Arduino Programming NotebookRimsky Cheng
 
Arduino notebook v1-1
Arduino notebook v1-1Arduino notebook v1-1
Arduino notebook v1-1Srinivasan R
 
Rapport de Situation #3 Tempête Tropicale Sandy
Rapport de Situation #3 Tempête Tropicale SandyRapport de Situation #3 Tempête Tropicale Sandy
Rapport de Situation #3 Tempête Tropicale Sandylaurentlamothe
 
Wikimedia UK Keynote Presentation
Wikimedia UK Keynote Presentation Wikimedia UK Keynote Presentation
Wikimedia UK Keynote Presentation Ollie Bray
 

Similar to akquinet - Leading Provider of Digital Transformation Solutions (20)

Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la Beauté
 
Temps forts Printemps de la Beauté
Temps forts Printemps de la BeautéTemps forts Printemps de la Beauté
Temps forts Printemps de la Beauté
 
Grad survey results presentation
Grad survey results presentationGrad survey results presentation
Grad survey results presentation
 
Grad survey results presentation
Grad survey results presentationGrad survey results presentation
Grad survey results presentation
 
Grad survey results presentation
Grad survey results presentationGrad survey results presentation
Grad survey results presentation
 
Ico corporate presentation en
Ico corporate presentation enIco corporate presentation en
Ico corporate presentation en
 
Design Management Review
Design Management ReviewDesign Management Review
Design Management Review
 
Start-up: FanpageTrender.pl - pomiar działań marketingowych na Facebooku
Start-up: FanpageTrender.pl - pomiar działań marketingowych na FacebookuStart-up: FanpageTrender.pl - pomiar działań marketingowych na Facebooku
Start-up: FanpageTrender.pl - pomiar działań marketingowych na Facebooku
 
Fanpage Trender
Fanpage TrenderFanpage Trender
Fanpage Trender
 
Filtrowanie treści - dylematy operatorów serwisów społecznościowych
Filtrowanie treści - dylematy operatorów serwisów społecznościowychFiltrowanie treści - dylematy operatorów serwisów społecznościowych
Filtrowanie treści - dylematy operatorów serwisów społecznościowych
 
Wierzbowski
WierzbowskiWierzbowski
Wierzbowski
 
SEO - It Works Even if You Don’t Know How or Why
SEO - It Works Even if You Don’t Know How or Why SEO - It Works Even if You Don’t Know How or Why
SEO - It Works Even if You Don’t Know How or Why
 
Machine Shop Flyer
Machine Shop FlyerMachine Shop Flyer
Machine Shop Flyer
 
Virtues some surahs of the noble qura'n - imaam al-albaanee
Virtues   some surahs of the noble qura'n - imaam al-albaaneeVirtues   some surahs of the noble qura'n - imaam al-albaanee
Virtues some surahs of the noble qura'n - imaam al-albaanee
 
Arduino notebook
Arduino notebookArduino notebook
Arduino notebook
 
Arduino Programming Notebook
Arduino Programming NotebookArduino Programming Notebook
Arduino Programming Notebook
 
Arduino notebook
Arduino notebookArduino notebook
Arduino notebook
 
Arduino notebook v1-1
Arduino notebook v1-1Arduino notebook v1-1
Arduino notebook v1-1
 
Rapport de Situation #3 Tempête Tropicale Sandy
Rapport de Situation #3 Tempête Tropicale SandyRapport de Situation #3 Tempête Tropicale Sandy
Rapport de Situation #3 Tempête Tropicale Sandy
 
Wikimedia UK Keynote Presentation
Wikimedia UK Keynote Presentation Wikimedia UK Keynote Presentation
Wikimedia UK Keynote Presentation
 

More from Clément Escoffier

Devoxx France 2023 - 1,2,3 Quarkus.pdf
Devoxx France 2023 - 1,2,3 Quarkus.pdfDevoxx France 2023 - 1,2,3 Quarkus.pdf
Devoxx France 2023 - 1,2,3 Quarkus.pdfClément Escoffier
 
vert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in Javavert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in JavaClément Escoffier
 
Modularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sistersModularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sistersClément Escoffier
 
h-ubu - An industrial-strength service-oriented component model for JavaScrip...
h-ubu - An industrial-strength service-oriented component model for JavaScrip...h-ubu - An industrial-strength service-oriented component model for JavaScrip...
h-ubu - An industrial-strength service-oriented component model for JavaScrip...Clément Escoffier
 
iPOJO 2.x - a tale about dynamism
iPOJO 2.x - a tale about dynamismiPOJO 2.x - a tale about dynamism
iPOJO 2.x - a tale about dynamismClément Escoffier
 
Everest - Everything is a resource
Everest - Everything is a resourceEverest - Everything is a resource
Everest - Everything is a resourceClément Escoffier
 
Linuxtag 2012 - continuous delivery - dream to reality
Linuxtag 2012  - continuous delivery - dream to realityLinuxtag 2012  - continuous delivery - dream to reality
Linuxtag 2012 - continuous delivery - dream to realityClément Escoffier
 
The OSGi Framework Multiplication
The OSGi Framework MultiplicationThe OSGi Framework Multiplication
The OSGi Framework MultiplicationClément Escoffier
 
Android : a linux-based mobile operating system
Android : a linux-based mobile operating systemAndroid : a linux-based mobile operating system
Android : a linux-based mobile operating systemClément Escoffier
 
Experimenting with the OSGi platform in the Aspire RFID middleware
Experimenting with the OSGi platform in the Aspire RFID middlewareExperimenting with the OSGi platform in the Aspire RFID middleware
Experimenting with the OSGi platform in the Aspire RFID middlewareClément Escoffier
 
Transactional OSGi Applications Done Right
Transactional OSGi Applications Done RightTransactional OSGi Applications Done Right
Transactional OSGi Applications Done RightClément Escoffier
 

More from Clément Escoffier (15)

Devoxx France 2023 - 1,2,3 Quarkus.pdf
Devoxx France 2023 - 1,2,3 Quarkus.pdfDevoxx France 2023 - 1,2,3 Quarkus.pdf
Devoxx France 2023 - 1,2,3 Quarkus.pdf
 
vert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in Javavert.x 3.1 - be reactive on the JVM but not only in Java
vert.x 3.1 - be reactive on the JVM but not only in Java
 
Modularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sistersModularity and Dynamism - The tale of two sisters
Modularity and Dynamism - The tale of two sisters
 
h-ubu - An industrial-strength service-oriented component model for JavaScrip...
h-ubu - An industrial-strength service-oriented component model for JavaScrip...h-ubu - An industrial-strength service-oriented component model for JavaScrip...
h-ubu - An industrial-strength service-oriented component model for JavaScrip...
 
OW2 Nanoko
OW2 NanokoOW2 Nanoko
OW2 Nanoko
 
iPOJO 2.x - a tale about dynamism
iPOJO 2.x - a tale about dynamismiPOJO 2.x - a tale about dynamism
iPOJO 2.x - a tale about dynamism
 
Everest - Everything is a resource
Everest - Everything is a resourceEverest - Everything is a resource
Everest - Everything is a resource
 
h-ubu - CDI in JavaScript
h-ubu - CDI in JavaScripth-ubu - CDI in JavaScript
h-ubu - CDI in JavaScript
 
h-ubu : CDI in JavaScript
h-ubu : CDI in JavaScripth-ubu : CDI in JavaScript
h-ubu : CDI in JavaScript
 
Linuxtag 2012 - continuous delivery - dream to reality
Linuxtag 2012  - continuous delivery - dream to realityLinuxtag 2012  - continuous delivery - dream to reality
Linuxtag 2012 - continuous delivery - dream to reality
 
One year-with-chameleon
One year-with-chameleonOne year-with-chameleon
One year-with-chameleon
 
The OSGi Framework Multiplication
The OSGi Framework MultiplicationThe OSGi Framework Multiplication
The OSGi Framework Multiplication
 
Android : a linux-based mobile operating system
Android : a linux-based mobile operating systemAndroid : a linux-based mobile operating system
Android : a linux-based mobile operating system
 
Experimenting with the OSGi platform in the Aspire RFID middleware
Experimenting with the OSGi platform in the Aspire RFID middlewareExperimenting with the OSGi platform in the Aspire RFID middleware
Experimenting with the OSGi platform in the Aspire RFID middleware
 
Transactional OSGi Applications Done Right
Transactional OSGi Applications Done RightTransactional OSGi Applications Done Right
Transactional OSGi Applications Done Right
 

Recently uploaded

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

akquinet - Leading Provider of Digital Transformation Solutions