## page was renamed from Cytoscape_3/PluginDeveloper == Cytoscape 3.0 App Development == === Introduction === Cytoscape 3.0 has a clearly defined, simplified API. API jars are strictly separate from the implementation jars. We believe that [[/LessonsFrom2x|we’ve learned our lessons with 2.x]] and have greatly improved the usability of the API to benefit our active developer community. The API is versioned using the [[http://www.semver.org|Semantic Versioning standard]]. This means that the API won't change throughout 3.x, so an app designed to work with an early version of 3.x will be guaranteed to work up to version 4.0 of Cytoscape. Our commitment to supporting app developers is stated in an explicit '''''backwards compatibility contract''''' found in each class in the public API so that both core developers and app writers will understand how a class might change. For a jumpstart to app development, see the [[http://wiki.cytoscape.org/Cytoscape_3/AppDeveloper/Cytoscape_App_Ladder| App Ladder]]. === Architecture and Technologies === Cytoscape 3.0 strives for a modular architecture where the application consists of a set of jar files where each jar contributes a well defined subset of functionality to the application. The design is oriented around the OSGi service model (i.e. micro service) with API and implementation separated into different jar files. We’ve introduced the use of OSGi as a way to create and enforce a modular, sustainable code base. We’ve also introduced Maven as a build system to help manage the many jar files created. * [[../CoreDevelopment/Architecture|Architecture]] * [[../CoreDevelopment/Architecture#OSGi_Basics|OSGi]] * [[../CoreDevelopment/Architecture#Maven_Basics|Maven]] === API and Javadocs === * [[../CoreDevelopment/APIOverview|API overview]] * [[http://code.cytoscape.org/jenkins/job/cytoscape-3-javadoc/javadoc/|Javadocs]] === Plugins and Apps === If you've developed Cytoscape plugins before, then you will notice quite a few changes in developing for Cytoscape 3.0. These changes cover both core and plugin architectures. To highlight the differences and added benefits of developing on the Cytoscape 3.0 platform, we're now calling them ''apps''. So, consider porting your 2.x plugins to 3.0 apps. And if you are new to Cytoscape development, you can pretty much ignore plugins and focus on the app developer documentation. * [[/PluginPortingGuide|How to port a 2.x Plugin to a 3.0 App]] * [[https://docs.google.com/spreadsheet/ccc?key=0ArzUWDuvdBn-dDI0R0kwOERjN1ZhcDZseC00dVZNNlE&authkey=CMGe99EM|List of Plugins Being Ported]] ==== Getting Started ==== Here is a guide to set up your development environment for Cytoscape 3.0 apps. * [[http://opentutorials.cgl.ucsf.edu/index.php/Tutorial:Setup_App_development_environment|Setup app development environment]] * [[http://opentutorials.cgl.ucsf.edu/index.php/Tutorial:Creating_an_OSGi_Bundle_Cytoscape_3_App|Here's how to create a bundle app using the command line]] * [[http://opentutorials.cgl.ucsf.edu/index.php/Tutorial:Create_a_Bundle_App_Using_IDE|Here's how to create a bundle app using Eclipse]]. To help app developers to develop their own app, the Cytoscape developer team developed a ''cookbook'', a collection of small code snippets. * [[/Cytoscape_3_App_Cookbook|Cytoscape 3 App Cookbook]] If you are developing an OSGi bundle app and would like to learn how to include library dependencies, check out the following guide: * [[HowToAddLibraryDependencies|How to add library dependencies to your OSGi bundle app]]