Introduction to Cytoscape App Development
Overview
Cytoscape and OSGi
Cytoscape 3 design goals:
- Scalability
- Performance
- Stability
- Application stability
- API stability
- Modularity
- Enforced by OSGi
Definition of OSGi from Wikipedia: The OSGi framework is a module system and service pla9orm for the Java programming language that implements a complete and dynamic component model, something that does not exist in standalone Java/VM environments. ApplicaAons or components (coming in the form of bundles for deployment) can be remotely installed, started, stopped, updated, and uninstalled without requiring a reboot; management of Java packages/ classes is specified in great detail. ApplicaAon life cycle management (start, stop, install, etc.) is done via APIs that allow for remote downloading of management policies. The service registry allows bundles to detect the addiAon of new services, or the removal of services, and adapt accordingly.
Important definitions:
- OSGi is service-oriented
A bundle is the unit of access
- Bundles can be started and stopped independently
- Bundles implement services
- Can be registered and unregistered
- Generally, inter-bundle access is through a service
- Enforced separation of API and Implementation – Rules are that you can depend on API bundles, but not implementation bundles
Anatomy of a Bundle
A bundle is a JAR with extra metadata:
- Imports: The Java packages used by the bundle
- Exports: Java packages in the bundle that other bundles are allowed to use (usually just API)
- Activator: Triggered when bundle is started/stopped