Shipka JDF combines service-based application architecture and virtualization to simplify the application development. It facilitates the development of collaborative applications and the implementation of SOA.
Virtualization is a powerful concept that has changed our life in many ways (JVM, cloud computing, etc.). If it is so powerful though, why don’t we use it more often – in application development for example?
What makes the virtualization particularly difficult to implement is finding the right abstraction model that works for all platforms being virtualized. It is almost impossible to get it right the first time, so you need to keep iterating until things come into place. Sometimes it is really long process, but when it happens – life becomes so much easier.
What does it mean to virtualize application development?
We started with the basic concept that all applications can be composed from three main elements:
  • data (persisted and non-persisted).
  • operations – data transformations that can be applied to data.
  • user interface components – determine how the users view and interact with data.
Based on that we came up with the following plan – if we virtualize all those elements and create facility for building application functionality with them, our applications will be completely virtualized. The immediate benefits are:
  • Simplified application development – we hide most of the complexities behind virtualization layers and end up with single data, operation and presentation component interfaces.
  • Low-cost maintenance – we can replace the implementation of any component (data, operation or presentation) without affecting the application functionality.
Moving forward in our design we came with application architecture consisting of:
  • Data virtualization service
  • Operation virtualization service
  • Presentation component virtualization service
  • Application orchestration – facility for creating application functionality from virtualized components.
Data Virtualization Service hides the complexity of dealing with different types of data objects (database, memory, XML, remote, etc.). That includes managing persistence, transactions, data searches, data query, sorting, change tracking, remote access, etc.
Operation Virtualization Service is based on the concept of operation – stateless unit of programmatic data manipulation. It hides the complexity of dealing with different operation implementations (local or remote over WebServices, JMS, EJB, etc.).

Presentation Virtualization Service is based on the concept of presentation component – reusable, self-contained unit of presentation functionality that is implemented without engaging in data management or operation implementation. It hides the complexity of dealing with different presentation technologies as well as connecting to remote presentation components.

Application orchestration is a construction facility that enables developers to grab components from the virtualized services and create application functionality. It is important to notice the following:

  • Application process can access all components available through virtualization services running within the application
  • Virtualized components (data objects, operations and presentation components) are defined outside of the application process. They have no application dependencies and can be reused in other applications.
  • Virtualization services can be configured to expose components to other applications as well.

At the current state of the application development there are many concerns when it comes to the application architecture. We are all suffering the pain of implementing SOA. I am sure that everybody has opinion, but in my mind it stems from the fact that the existing application architectures were not designed to support collaborating applications. As result developers do not get guidance how to make the transition to SOA.

Being new-generation application architecture, Virtualized Application Architecture accounts for the new application development trends. It serves as a foundation for the development of collaborative applications. How?
  • Applications are developed with virtualized components (data, operations and presentation components).
  • Developers can change the implementation of any component from local to remote and vice versa without affecting the application functionality.
  • Developers can configure virtualization services to expose components to other applications.
The development of collaborating applications is always tricky:
  • Applications become dependent upon services provided by other applications, which creates scheduling issues.
  • The blueprint of the enterprise information system is never finalized and keeps on changing, etc.
The reason why Virtualized Application Architecture fits so well in this picture is because it prepares the applications for change.
  • Developers may start by implementing the functionality as standalone application (all virtualized components implemented locally).
  • If enterprise architects decide to serve some components remotely, developers will remove the local implementations and point them to the remote application. It results in configuration change at the virtualization service level.
  • If enterprise architects decide to expose local services to other applications, developers can add required configuration, including required access control.
  • The enterprise architects have the option of sharing services from the context of individual applications or consolidate shared services in enterprise repositories: Enterprise Object Repository, Enterprise Operation Repository and Enterprise Presentation Repository.
We will throw couple more features for those, who are concerned with the application integration in portals. Virtualized Presentation Service enables developers to:
  • Deploy an entire application as local or remote presentation component.
  • Implement two-way communication between the main application and integrated application.
  • Extend the user session of the main application into the integrated applications. It ensures that the session of integrated applications expires only when the session of the main application expires. It also ensures that the main application can access objects at the application model of integrated application.
If you want to get started with virtualized application development, see our products at: There are plenty of opportunities to contribute ideas, code, etc.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s