7. 4F
32 00 F0
21 1C A0
4E
23
7E
Hex
23
BE
D2 13 A0
7E
0A
0D
C2 0D A0
32 23 A0
76
donderdag 24 maart 2011
8. MOV C,A
STA F000H
LXI H,A01CH
MOV C,M
INX H
Code
MOV A,M
INX H
CMP M
JNC A013H
MOV A,M
DCR C
JNZ A00DH
STA A023H
HLT
donderdag 24 maart 2011
9. MOV C,A
STA F000H
LXI H,A01CH
MOV C,M
INX H
Code
MOV A,M
INX H
CMP M
JNC A013H
MOV A,M
DCR C
JNZ A00DH
STA A023H
HLT
donderdag 24 maart 2011
10. Code
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
donderdag 24 maart 2011
11. Code
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
donderdag 24 maart 2011
12. int global;
int shared;
int local;
Code
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
donderdag 24 maart 2011
13. int global;
int shared;
int local;
Functions
void foo() {
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
}
donderdag 24 maart 2011
14. int global;
int shared;
int local;
Functions
void foo() {
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
}
donderdag 24 maart 2011
15. int global;
int shared;
int local;
Functions
void foo() {
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
}
void bar() {
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
}
donderdag 24 maart 2011
16. int global;
int shared;
void foo() {
Functions
int local
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
}
void bar() {
int local;
global = shared;
for (local=0;
local<10; local++)
shared *= 10;
}
donderdag 24 maart 2011
17. int global;
int shared;
A
Modules
void foo() { void bar() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
B
void foo() { void xyz() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
donderdag 24 maart 2011
18. int global;
int shared;
A
Modules
void foo() { void bar() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
B
void foo() { void xyz() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
donderdag 24 maart 2011
19. int global;
A int shared;
Modules
void foo() { void bar() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
B int shared;
void foo() { void xyz() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
donderdag 24 maart 2011
20. Class A int shared;
void foo() { void bar() {
Objects
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
Class B int shared;
void foo() { void xyz() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
donderdag 24 maart 2011
21. Class A int shared;
void foo() { void bar() {
Objects
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
Class B int shared;
void foo() { void xyz() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
donderdag 24 maart 2011
22. ces
Class A
tan
Class A
Class A
ins
Class A
Class A int shared;
void foo() { void bar() {
Objects
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
Class B int shared;
void foo() { void xyz() {
int local int local
global = shared; global = shared;
for (local=0; for (local=0;
local<10; local++) local<10; local++)
shared *= 10; shared *= 10;
} }
donderdag 24 maart 2011
23. “Chapter 7 describes the structure of a
program which is organized into packages
similar to the modules of Modula.”
Java Language Specification, 3rd edition
donderdag 24 maart 2011
24. “Chapter 7 describes the structure of a
program which is organized into packages
similar to the modules of Modula.”
Java Language Specification, 3rd edition
donderdag 24 maart 2011
25. package com.acme.abc
Packages
Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local
global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local+ local<10; local+ local<10; local+ local<10; local+
+) +) +) +)
shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } }
package com.acme.def
Class A int shared; Class C int shared;
void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local
global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local+ local<10; local+ local<10; local+ local<10; local+
+) +) +) +)
shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } }
donderdag 24 maart 2011
26. The Face of Modularity
donderdag 24 maart 2011
27. The Face of Modularity
donderdag 24 maart 2011
28. Modularity’s Secret
• modules have a private
space and share a
public space A B
• modules limit their
visibility and exposure
C D
• From geometric to
linear complexity
• And something extra ...
donderdag 24 maart 2011
29. Modularity’s Secret
• modules have a private
space and share a
public space A B
• modules limit their Pub
visibility and exposure
C D
• From geometric to
linear complexity
• And something extra ...
donderdag 24 maart 2011
30. Modularity’s Secret
• modules have a private
space and share a
public space A B
• modules limit their Pub
visibility and exposure
C D
• From geometric to
linear complexity
• And something extra ...
donderdag 24 maart 2011
31. JAR abc-1.2.3-SNAPSHOT.jar
com.acme.abc com.acme.def
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
JARs
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
JAR def-4.5.6.jar
com.acme.abc com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
32. JAR abc-1.2.3-SNAPSHOT.jar
com.acme.abc com.acme.def
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
JARs
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
JAR def-4.5.6.jar
com.acme.abc com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
33. 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 24 maart 2011
34. 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 24 maart 2011
35. bundle com.acme.abc-1.2.3
package com.acme.abc package com.acme.def
Bundles
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
bundle com.acme.def-9.9.1
package com.acme.abc package com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
36. bundle com.acme.abc-1.2.3
package com.acme.abc package com.acme.def
Bundles
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
bundle com.acme.def-9.9.1
package com.acme.abc package com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
37. bundle com.acme.abc-1.2.3
package com.acme.abc package com.acme.def
Bundles
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
bundle com.acme.def-9.9.1
package com.acme.abc package com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
38. bundle com.acme.abc-1.2.3
package com.acme.abc package com.acme.def
Bundles
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
bundle com.acme.def-9.9.1
package com.acme.abc package com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
39. bundle com.acme.abc-1.2.3
package com.acme.abc package com.acme.def
Bundles
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
X
bundle com.acme.def-9.9.1
package com.acme.abc package com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
Private Exported
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
42. bundle com.acme.abc-1.2.3
package com.acme.abc package com.acme.def
Bundles
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
bundle com.acme.def-9.9.1
package com.acme.abc package com.acme.ghi
Class A int shared; Class B int shared; Class A int shared; Class B int shared;
void foo() { void bar() { void foo() { void xyz() { void foo() { void bar() { void foo() { void xyz() {
int local int local int local int local int local int local int local int local
global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared; global = shared;
for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0; for (local=0;
local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local local<10; local
++) ++) ++) ++) ++) ++) ++) ++)
shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10; shared *= 10;
} } } } } } } }
donderdag 24 maart 2011
46. Interfaces/API
Consumer Provider
Interface
Class Class
donderdag 24 maart 2011
47. Interfaces/API
package com.consumer.impl package com.api package com.provider.impl
Consumer Provider
Interface
Class Class
donderdag 24 maart 2011
48. Interfaces/API
package com.consumer.impl package com.api package com.provider.impl
Consumer Provider
Interface
Class Class
Your App
donderdag 24 maart 2011
49. Interfaces/API
package com.consumer.impl package com.api package com.provider.impl
Consumer Provider
Interface
Class Class
Your App DocumentBuilder
donderdag 24 maart 2011
50. Interfaces/API
package com.consumer.impl package com.api package com.provider.impl
Consumer Provider
Interface
Class Class
Your App DocumentBuilder Xerces
donderdag 24 maart 2011
51. Access to
Implementations
package com.consumer.impl package com.api package com.provider.impl
Consumer Provider
Interface
Class Class
donderdag 24 maart 2011
52. Access to
Implementations
package com.consumer.impl package com.api package com.provider.impl
Consumer Provider
Interface
Class Class
donderdag 24 maart 2011
53. Access to
Implementations
package com.consumer.impl package com.api package com.provider.impl
te
Consumer Provider
Interface
iva
Class Class
donderdag 24 maart 2011 pr
54. Access to
Implementations
package com.consumer.impl
com.consumer.impl package
com.api com.api package com.provider.impl
com.provider.impl
Consumer
Con- Provider
Interface Provider
sumer
Class Class
donderdag 24 maart 2011
68. µServices
bundle
bundle
com.
ed
com.
consumer.
provider.impl
impl
bundle
com.other.
ifi bundle
re
com.other.
consumer.
provider.impl
impl
donderdag 24 maart 2011
69. Service Specifications
condpermadmin permission admin measurement
url service hooks position
bundle hooks info.dmtree xml
application blueprint jpa persistence
cm component web applications
deployment admin device JDBC
event http sca configuration
io log Blueprint
metatype monitor mobile
prefs provisioning tracker
remote service admin UPNP coordinator
user admin wire admin jndi
cdma gsm transactions
JMX autoconf
donderdag 24 maart 2011
70. OSGi
• Next generation of strong modularity in Bundles
• Imports and Exports Packages
• Extensive support for legacy use cases
• Communicates via µServices
• Dynamic Binding
• Unifies Factories, Listeners, Brokers, DI
• Bundles and Services are all reified with small but powerful API
• Security
• Provides growing library of standard services
donderdag 24 maart 2011
71. JAX London London
jaxlondon.com 11-13 April 2011
donderdag 24 maart 2011
72. Join us
!
JAX London London
jaxlondon.com 11-13 April 2011
donderdag 24 maart 2011