Java Reference
In-Depth Information
But these techniques are inherently brittle and error prone because they aren't
enforceable via any compile-time or execution-time checks. The end result has detri-
mental impacts on multiple stages of an application's lifecycle:
Development —You're unable to clearly and explicitly partition development into
independent pieces.
Deployment —You're unable to easily analyze, understand, and resolve require-
ments imposed by the independently developed pieces composing a complete
system.
Execution —You're unable to manage and evolve the constituent pieces of a run-
ning system, nor minimize the impact of doing so.
It's possible to manage these issues in Java, and lots of projects do so using the custom
techniques mentioned earlier, but it's much more difficult than it should be. We're
tying ourselves in knots to work around the lack of a fundamental feature. If Java had
explicit support for modularity, then you'd be freed from such issues and could
concentrate on what you really want to do, which is developing the functionality of
your application.
Welcome to the OSG i Service Platform. The OSG i Service Platform is an industry
standard defined by the OSG i Alliance to specifically address the lack of support for
modularity in the Java platform. As a continuation of its modularity support, it intro-
duces a service-oriented programming model, referred to by some as SOA in a VM , to
help you clearly separate interface from implementation. This chapter will give you an
overview of the OSG i Service Platform and how it helps you create modular and man-
ageable applications using an interface-based development model.
When we've finished this chapter, you'll
understand what role OSG i technology plays
among the arsenal of Java technologies and
why Java and/or other Java-related technolo-
gies don't address the specific features pro-
vided by OSG i technology.
Module
A
1.1
The what and why of OSGi
The $64,000 question is, “What is OSG i?” The
simplest answer to this question is that it's a
modularity layer for the Java platform. Of
course, the next question that may spring to
mind is, “What do you mean by modularity ?”
Here we use modularity more or less in the tra-
ditional computer-science sense, where the
code of your software application is divided
into logical parts representing separate con-
cerns, as shown in figure 1.1. If your software is
modular, you can simplify development and
Module
B
Module
C
uses
Figure 1.1 Modularity refers to the
logical decomposition of a large system
into smaller collaborating pieces.
Search WWH ::




Custom Search