Upload
clement-escoffier
View
373
Download
5
Embed Size (px)
DESCRIPTION
A short history of modularity and dynamism followed by a presentation of the iPOJO latest features.
Citation preview
Modularity & Dynamism
A Tale of Two Sisters
Dr. Clement Escoffier
Time Travel
–R. Gauthier and S. Pont, Designing Systems Programs, 1970.
“Each task forms a separate, distinct program module. At implementation time each module
and its inputs and outputs are well-defined. At checkout time the integrity of the module is tested independently. Finally, the system is
maintained in modular fashion.”
–D. Parnas, On the Criteria to Be Used in Decomposing Systems into Modules, 1972.
“The major advancement in the area of modular programming has been the development of coding techniques and assemblers which (l) allow one module to be written with little knowledge of the code in another module, and !(2) allow modules to be reassembled and replaced without reassembly of the whole system.”
–R.S. Fabry, How to design a system in which modules can be changed on the fly, 1976.
If the module does manage permanent data structures which must be modified
and the system is one which is expected to continue operation throughout the
change, the problem is more difficult, but it can be solved. This paper discusses a
solution.
Modularity a (not that) simple idea
The trend…
Dependencies
Compatibility
Boot Sequence &
Stabilization
Reuse / Generic vs.
Performance
DynamismThe forgotten sister
Dynamism
(Asynchronous) Update
Event in the surrounding environment
Change in the application
context
Very specific and limited to
particular domains
Ubiquitous Computing
Machineto
Machine
Internetof
Things
Pervasive Environment
Application Servers
Set-top Box
Enterprise Server
(JavaEE)
Custom App
Servers
Enterprise Applications
Heavily Distributed
Managed by many
stakeholders
Mal leable Topology
Cloud, Mobile…
Ever-Changing Dynamic Resources
Disruptions
Dynamism breaks the simplest assumptions
if (service != null) {
service.serve();
}
Simplif ication of the development
model
Al l types of dynamism
Adaptable , Flexible and
Customizable
C omponents
Interfaces
Required
Provided
Dependency Injection
Lifecycle
Dynamic Availability
Dynamic Availability
X! X!
On the role of the Service RegistryRegistry
1 - Publication2 - Lookup,
Notifications, Selection
3 - Binding
The new super-powers
Constructor injection
public Component (
@Requires ApplicationConfiguration configuration, @Property(name="p",value="d") String prop, @Context BundleContext ctx) {
//…
}
Temporal => Timeout
Hold the line,back in a sec
@Configuration
@Configuration public class MyConfiguration { ! Instance businessA = instance() .named("A") .of(BusinessImpl.class) .with("name").setto("A"); }
Context-Sources
filter= “(version=${my.version})”
Stereotypes & Manipulator Modules
@Controller
@Component @Provides @Instantiate
Interceptors
iPOJO 2.x Roadmap
Manip@Runtime
Inheritance
New Manipulation Machine
Interceptor Chains Indy ?
Intra-Bundle Injection
End Of File