A presentation about OSGi and Java modularity given on DevCon 2009. It lays out what is wrong with Java with respect to modularity and how OSGi fixes these flaws.
39. Context Class Loaders
boot
X {} ext
Thread -> Context
ClassLoader app app
Y {} cust
donderdag 25 juni 2009
40. Context Class Loaders
boot
X {} ext
Thread -> Context
ClassLoader app app
Y {} cust
donderdag 25 juni 2009
41. Accessibility
public
module
package
private
donderdag 25 juni 2009
42. Accessibility
Class module
V
Class Class Class
W S T
class
Class
U
package
donderdag 25 juni 2009
43. Java VM party common resolver axis xerces
Begin rt assetmaint catalina mail ezmorph xmlapis
jce hhfacility base jenks servlets xmlrpc
Here jsse pos. datafile jakarta jetty xmlgraphics
plugin content entity log4j looks
sunjce_prov. manufact. widget httpunit jdbm
dnsns product … mx4j bsf
.. bi rome batik bsh
marketing workflow jpos18 fop velocity
workeffort ecommerce jcl tomcat ws-commons
ebay oagis barcode4j poi geronimo
minerva … freemarker lucene ..
minilang googlebase serializer jdom json
accounting order naming commons xalan
guiapp ofbiz jython derby wsdl4j
donderdag 25 juni 2009
44. Java VM party common resolver axis xerces
Begin rt assetmaint catalina mail ezmorph xmlapis
jce hhfacility base jenks servlets xmlrpc
Here jsse pos. datafile jakarta jetty xmlgraphics
plugin content entity log4j looks
sunjce_prov. manufact. widget httpunit jdbm
dnsns product … mx4j bsf
.. bi rome batik bsh
Class
marketing workflow jpos18 fop velocity
Not
workeffort ecommerce jcl tomcat ws-commons
Found
ebay oagis barcode4j poi geronimo
Exception
minerva … freemarker lucene ..
minilang googlebase serializer jdom json
accounting order naming commons xalan
guiapp ofbiz jython derby wsdl4j
donderdag 25 juni 2009
45. Split Packages
JARs A
2 B
C
import private export
donderdag 25 juni 2009
46. Split Packages
package com.foo: X, Y
JARs A
package com.foo: X, Y, Z
2 B
package com.foo: X, Y, Z
C
import private export
donderdag 25 juni 2009
47. Split Packages
package com.foo: X, Y
JARs A
package com.foo: X, Y, Z
2 B
package com.foo: X, Y, Z
C
import private export
donderdag 25 juni 2009
48. Split Packages
package com.foo: X, Y
JARs A
package com.foo: X, Y, Z
2 B
package com.foo: X, Y, Z
C
import private export
donderdag 25 juni 2009
49. Versioning
JARs
package com.foo: X, Y
A
package com.foo: X, Z
2 B
package com.foo: X, Y, Z
C
import private export
donderdag 25 juni 2009
50. Versioning
JARs
package com.foo: X, Y
A package com.bar: A,B,C;1.0
package com.foo: X, Z
2 B package com.bar: A;2.0
package com.foo: X, Y, Z
C package com.bar: A,B,C;2.0
import private export
donderdag 25 juni 2009
51. Versioning
JARs
package com.foo: X, Y
A package com.bar: A,B,C;1.0
package com.foo: X, Z
2 B package com.bar: A;2.0
package com.foo: X, Y, Z
C package com.bar: A,B,C;2.0
import private export
donderdag 25 juni 2009
52. Private Packages
package com.foo: X, Y
JARs A package com.bar: A,B,C;1.0
package com.foo: X, Z
2 B package com.bar: A;2.0
package com.foo: X, Y, Z
C package com.bar: A,B,C;2.0
import private export
donderdag 25 juni 2009
53. Private Packages
package com.foo: X, Y
JARs A package com.bar: A,B,C;1.0
package com.foo: X, Z
2 B package com.bar: A;2.0
package com.private: G
package com.foo: X, Y, Z
C package com.bar: A,B,C;2.0
package com.private: G,H,I
import private export
donderdag 25 juni 2009
54. Private Packages
package com.foo: X, Y
JARs A package com.bar: A,B,C;1.0
package com.foo: X, Z
2 B package com.bar: A;2.0
package com.private: G
package com.foo: X, Y, Z
C package com.bar: A,B,C;2.0
package com.private: G,H,I
import private export
donderdag 25 juni 2009
55. How Do We
Handle This
Complexity
in Java?
donderdag 25 juni 2009
70. Uses Constraints
Bundle A Bundle B
r;1.0 r;2.0
p p
q-1.4 q-[1.2,1.8)
Bundle C Bundle D
r;1.0 r;2.0
import private export
donderdag 25 juni 2009
71. Uses Constraints
Bundle A Bundle B
r;1.0 r;2.0
imports
p p
q-1.4 q-[1.2,1.8)
Bundle C Bundle D
r;1.0 r;2.0
import private export
donderdag 25 juni 2009
72. Uses Constraints
Bundle A Bundle B
r;1.0 r;2.0
imports
p p
exports
q-1.4 q-[1.2,1.8)
Bundle C Bundle D
r;1.0 r;2.0
import private export
donderdag 25 juni 2009
73. Uses Constraints
Bundle A Bundle B
r;1.0 r;2.0
imports
p p
exports
q-1.4 q-[1.2,1.8)
Bundle C Bundle D
r;1.0 r;2.0
import private export
donderdag 25 juni 2009
74. System
Loader
Extension
Loader
Application B
Loader
Custom
Loader
donderdag 25 juni 2009
75. System
Loader
Extension
Loader
Application B OSGi
Loader
Custom
Loader
donderdag 25 juni 2009
76. System
Loader Bundle A
Extension Bundle G Bundle B
Loader
OSGi Bundle C
Application B Framework
Loader Loader
Bundle F Bundle D
Custom
Loader
Bundle E
donderdag 25 juni 2009