Differences between revisions 1 and 4 (spanning 3 versions)
Revision 1 as of 2009-03-10 21:02:46
Size: 35
Editor: KeiichiroOno
Comment:
Revision 4 as of 2009-03-10 21:42:06
Size: 4959
Editor: KeiichiroOno
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
{{http://www.cytoscape.org/images/logo.png}} {{http://www.osgi.org/www/osgi_logos_supporter_final.png}} {{http://static.springframework.org/images/spring25.png}}
Line 2: Line 4:

<<TableOfContents>>

== Introduction ==
Cytoscape 3 is based on new technologies such as [[http://www.osgi.org/Main/HomePage|OSGi]] or [[http://www.springsource.org/about|Spring]] to provide maximum flexibility and expandability for all plugin writers. These technologies are very powerful, but you need to understand some new concepts to utilize them. The purpose of this document is to introduce new concepts you need to understand to develop Cytoscape 3 code and giving you a hands-on introduction to actual Cytoscape 3 code development.

== Why Do We Have To Learn These New Concepts? ==
Cytoscape 2 has several architectural problems. They are:

 * Modularity
   * View and models are coupled in some places and hard to run in command line or server backend.
   * Unnecessary
 * Expandability
   * There are no mechanism for plugins to communicate to each other
   * Cytoscape crashes if different versions of a same library load at once

The main purpose of new technologies we use is solving these problems.


=== OSGi ===

=== Spring Framework and Spring Dynamic Modules ===


= Related Frameworks and Technologies =
From 3.0, new technologies/frameworks will be used for implementation. The following is the list of links to documents related to those frameworks/technologies.

 * OSGi - Cytoscape will be modularized by following this standard.
  * [[http://neilbartlett.name/blog/osgibook/|OSGi in Practice]]
  * [[http://www.osgi.org/Main/HomePage|OSGi Alliance]]
  * [[http://felix.apache.org/site/index.html|Apache Felix]]: Although OSGi is implementation-independent, this implementation will be used as standard development/testing tool.
  * [[http://wiki.ops4j.org|OPS4J]] Products: This project has a lot of usuful scripts to develop OSGi bundles
  * [[http://www.springsource.com/repository/app/|SpringSource Bundle Repository]]: To use existing plain JAR libraries in an OSGi environment, we need to add metadata to it. This repository is a collection of OSGi-ed popular libraries, i.e., repository of OSGi bundles managed by Spring Source.

 * Dependency Injection Frameworks - One of the scopes of 3.0 is modulalization and make Cytoscape usable as a part of other programs, including server-side application or command -line tools. The following DI frameworks are POJO-base and popular among server-side application developers.
  * [[http://code.google.com/p/google-guice/|Google Guice]]: Currently focused on DI only.
  * [[http://springframework.org/about|Spring Framework]]: De facto standard framework for DI and AOP.
   * [[http://springframework.org/osgi|Spring-DM]]: Integration of Spring Framework and OSGi

 * [[http://maven.apache.org/|Apache Maven]]: 3.0 project will be moved from Ant to Maven.
  * [[http://www.sonatype.com/book/|Maven: The Definitive Guide]]
  * [[http://m2eclipse.codehaus.org/|Maven integration for Eclipse]]
  * [[http://mvnrepository.com/|Maven Repository Search]] - Note: Cytoscape cannot use most of these libraries directly. To use these, they should be re-packed as an OSGi bundle.

 * Server-Side / SCA - Once Cytoscape is modulalized based on OSGi, we can use Cytoscape bundles and these frameworks to build server-side applications or web services.
  * [[http://incubator.apache.org/tuscany/|Apache Tuscany]]: An open-source implementation of Service Component Architecture.
  * [[http://www.springsource.com/products/suite/applicationplatform|SpringSource Application Platform]]: OSGi-Spring powered application server.

 * Scripting Language Support - There are several implementations of scripting languages running on JVM. These will be used to implement scripting feature in Cytoscape.
  * [[http://jruby.codehaus.org/|JRuby]]: Ruby scripting language running on JVM. Actively developed by Sun.
  * [[http://www.mozilla.org/rhino/|Rhino]]: JavaScript. Bundled with Java SE 6.
  * [[http://www.jython.org/Project/|Jython]]: Python implementation.

  * [[http://openjdk.java.net/projects/mlvm/|Da Vinci Machine Project]]

== Developer's Tutorials and References ==
=== For Eclipse Users ===
==== Basic Tutorial ====
 * {*} [[Cytoscape_3.0/Eclipse|Developing Cytoscape 3 Core with Eclipse and its Plugins]]

==== Optional ====
 * [[Cytoscape_3.0/Spring|How to use Spring Framework in Cytoscape 3]]
 * [[Cytoscape_3.0/Maven|Create Cytoscape 3 plugin from Maven Archetype]] (incomplete)

=== For Netbeans Users ===
 * {*} [[Cytoscape_3.0/Netbeans|Setting Netbeans 6.1 or 6.5 for building and running or debugging Cytoscape 3]]

=== Other OSGi Tools and Technical Notes ===
 * [[Cytoscape_3.0/PAX|How to build bundles with Pax-Construct]]

 * [[Cytoscape_3.0/AOP|How to use AOP on Spring + OSGi environments]]

http://www.cytoscape.org/images/logo.png http://www.osgi.org/www/osgi_logos_supporter_final.png http://static.springframework.org/images/spring25.png

Cytoscape 3 Developer's Guide

Introduction

Cytoscape 3 is based on new technologies such as OSGi or Spring to provide maximum flexibility and expandability for all plugin writers. These technologies are very powerful, but you need to understand some new concepts to utilize them. The purpose of this document is to introduce new concepts you need to understand to develop Cytoscape 3 code and giving you a hands-on introduction to actual Cytoscape 3 code development.

Why Do We Have To Learn These New Concepts?

Cytoscape 2 has several architectural problems. They are:

  • Modularity
    • View and models are coupled in some places and hard to run in command line or server backend.
    • Unnecessary
  • Expandability
    • There are no mechanism for plugins to communicate to each other
    • Cytoscape crashes if different versions of a same library load at once

The main purpose of new technologies we use is solving these problems.

OSGi

=== Spring Framework and Spring Dynamic Modules ===

Related Frameworks and Technologies

From 3.0, new technologies/frameworks will be used for implementation. The following is the list of links to documents related to those frameworks/technologies.

  • OSGi - Cytoscape will be modularized by following this standard.
    • OSGi in Practice

    • OSGi Alliance

    • Apache Felix: Although OSGi is implementation-independent, this implementation will be used as standard development/testing tool.

    • OPS4J Products: This project has a lot of usuful scripts to develop OSGi bundles

    • SpringSource Bundle Repository: To use existing plain JAR libraries in an OSGi environment, we need to add metadata to it. This repository is a collection of OSGi-ed popular libraries, i.e., repository of OSGi bundles managed by Spring Source.

  • Dependency Injection Frameworks - One of the scopes of 3.0 is modulalization and make Cytoscape usable as a part of other programs, including server-side application or command -line tools. The following DI frameworks are POJO-base and popular among server-side application developers.
  • Apache Maven: 3.0 project will be moved from Ant to Maven.

  • Server-Side / SCA - Once Cytoscape is modulalized based on OSGi, we can use Cytoscape bundles and these frameworks to build server-side applications or web services.
  • Scripting Language Support - There are several implementations of scripting languages running on JVM. These will be used to implement scripting feature in Cytoscape.

Developer's Tutorials and References

For Eclipse Users

Basic Tutorial

Optional

For Netbeans Users

Other OSGi Tools and Technical Notes

Outdated_Cytoscape_3.0/Developer (last edited 2011-02-24 16:16:23 by PietMolenaar)

Funding for Cytoscape is provided by a federal grant from the U.S. National Institute of General Medical Sciences (NIGMS) of the Na tional Institutes of Health (NIH) under award number GM070743-01. Corporate funding is provided through a contract from Unilever PLC.

MoinMoin Appliance - Powered by TurnKey Linux