Shipka JDF - Home
Technology agnostic application development and collaboration
|
|
|
|
|
 
 
 
Shipka Applies Virtualization To Application Development
The virtualization is a powerful concept that has changed our life in many ways. Few examples:
  • Java Virtual Machine (JVM) – propelled Java to the top by allowing it to run on any operating system and hardware.
  • Cloud computing – enabled application deployment to any machine at the cloud.

The virtualization of application development is based on the fact that all applications can be composed from three main elements: data (persisted and non-persisted), operations (data transformations) and user interface components. It consists of:

  • Data virtualization
  • Operation virtualization
  • Presentation component virtualization
  • Application orchestration – ability to create application functionality from virtualized resources.
Data Virtualization
It hides the complexity of dealing with different types of data objects (database, memory, XML, remote, LDAP, etc.). That includes managing persistence, transactions, data searches, data query, sorting, change tracking, remote access, etc. Data virtualization services provide developers with much simpler paradigm to work with.

It is based on the concept of virtualized data object and the concept of Centralized Object Repository. Virtual objects are organized semantically in collections that are identified by objectId. Developers retrieve virtual objects, do some work with them and apply the changes back to the repository. Data Virtualization Services provide generic capabilities to search, query and sort collections of virtual data objects.

Operation Virtualization
The term Operation means standalone unit of programming logic. It takes 0-many input parameters and returns result and 0-many output parameters. Operations enables developers to separate the implementation of business logic and other algorithms from data objects managed by Data Virtualization Service.

Operation Virtualization Service hides the complexity of dealing with different operation implementations (local or remote (over WebServices, JMS, EJB, etc.)). It is based on the concept of virtual operation and Centralized Operation Repository. Each operation has unique identifier (operationId). Developers execute operations through Operation Virtualization Service by providing operationId and required input parameters. They receive back the output parameters.

Presentation Virtualization
It is based on the concept of virtual presentation component and the concept of Centralized Presentation Repository. The term virtual presentation component means reusable, self-contained unit of presentation functionality that is implemented without engaging into data management or operation implementation. Presentation components are not application-context aware. They are intended for deployment within applications, where they are customized and wired to the application context. Each presentation component has unique identifier within the Presentation component repository.

Presentation Virtualization Service hides the complexity of dealing with different presentation technologies as well as connecting to remote presentation components. It also enables developers to integrate every application as presentation component within other applications. The applications interact with presentation components through Presentation Virtualization Service interface by providing presentationId.

Application Orchestration
Application orchestration is a construction facility that enables developers to grab components from virtualized services and create final product from them. It defines the application functionality declaratively as a hierarchy of application nodes. Presentation components are deployed at the nodes of the application hierarchy and customized through resource files. As part of the application orchestration deployed presentation components are wired to the application context. It includes:
  • Implementing the application data flow
  • Resolving the operation references
  • Resolving the presentation components references
  • Implementing application navigation and exception handling
Application Architecture
Application architecture consists of three main layers:
  • Local Services - provides resources to the application instance and implementation of all virtualization interfaces: Data Virtualization, Operation Virtualization and Presentation Virtualization
  • Local Application Instance - implement application functionality by consuming resources available from Local Services
  • Remote Services - expose locally implemented resources (data objects, operations and presentations) to other applications. The layer implements access control and provides remote implementations of all virtualization interfaces: Data Virtualization, Operation Virtualization and Presentation Virtualization.
Application Development Process
The virtualization impacts application development process in the following way:
  • Developers can access and manipulate data objects without writing any programming code. They simply configure data objects and generate data interfaces from the configuration files. Configuration files and data object interfaces may be placed in a JAR file and shared with other applications.
  • Developers create operation implementations by writing programming code. Since those operations are stateless and are maintained in centralized repository, over time the number of available operations will grow. Developers might also be able to leverage libraries of operations provided by third parties. It means fewer operations to code going forward.
  • Developers create presentation components by using templates, programming code or combination of both. While it might be challenging at first to make the transition to reusable presentation components, the enormous rewards coming with it outweigh the challenges. The reusable search presentation component distributed with Shipka JDF is a good example of that. The ability to deploy an entire application as presentation component makes it possible to share workflow-type of functionality between applications. Developers might also be able to leverage packages of presentation components provided by third parties. We expect the ratio of new versus reused presentation components to get lower and lower over time.
  • Application development is simplified to the point that developers do not need to write programming code to create application functionality. It makes it possible for less-technical people to get involved in it.
Transparent Application Collaboration (TAC)
TAC is comprehensive solution for application collaboration. Instead of generalizing shared resources to a single concept like service (everything is a service - SOA) or web resource (everything is a web resource - ROA), TAC recognizes the differences between resource types. It defines separate interface for each resource type, reflecting the functionality needed by developers to interact with it. The application integration is transparent, since TAC provides remote implementations of the virtualization interfaces that are available to the local application. Any application may be a client and server of shared resources at the same time. TAC provides access to resources exposed as SOA services or ROA web resources. It simplifies the application collaboration by eliminating the need of:
  • Custom interfaces (like SOA)
  • URI hierarchy (like ROA)
  • Custom code associated with shared resources

The combination of technology-agnostic application development and transparent collaboration holds many promises for the enterprises:

  • Achieve maximum reusability of enterprise resources (data objects, operations and presentation components).
  • Lower the cost of application development – developers save time by reusing more functionality.
  • Lower the cost of application maintenance – developers can change the implementation of any application resource at the Local Services layer without affecting the application functionality (for example changing DB objects to remote objects). The architecture makes it easier to add new or change existing functionality of the application.
  • Increase business agility – by maintaining single authoritative source of critical enterprise resources (data, operations and presentation components) and sharing them with all applications the enterprises can quickly change the way their entire business operates.