SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...
Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...
Наглядне роз'яснення розподілу державного бюджету або чому потрібен новий Под...Олег Федосенко
 
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
 

Destacado (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 a 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 presentationCarissa Caloud
 
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
 
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 notebook v1-1
Arduino notebook v1-1Arduino notebook v1-1
Arduino notebook v1-1Srinivasan R
 
Arduino Programming Notebook
Arduino Programming NotebookArduino Programming Notebook
Arduino Programming NotebookRimsky Cheng
 
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 a 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 notebook v1-1
Arduino notebook v1-1Arduino notebook v1-1
Arduino notebook v1-1
 
Arduino Programming Notebook
Arduino Programming NotebookArduino Programming Notebook
Arduino Programming Notebook
 
Arduino notebook
Arduino notebookArduino notebook
Arduino notebook
 
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
 

Más de 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
 

Más de 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
 

Último

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

akquinet - Leading Provider of Digital Transformation Solutions