Old wiki

From Java CoG Kit

Jump to: navigation, search

GUSS Please create your own community project page. Include a Short description (one sentence), a description (one or more paragraphs), a contact person (including e-mail), pointers to your development CVS, svn, http server, ... or other relevant information.

To qualify your software needs to use the Java CoG Kit or the cog-jglobus.jar that are distributed in GT4 and GT3 (e.g. org.globus.security, org.globus.gridftp, ....)

Contents

List of Community Projects

List of Project ideas

  • Please contact gregor@mcs.anl.gov

SourceForge.net

We have established a project at sourceforge at the following link.

http://sourceforge.net/projects/cogkit/

All contributions in this repository are conducted under the Apache license. This will enable to simplify contributions by others to the Java CoG Kit. We explore at this time if the entire Java CoG Kit can be distributed under the apache license.

We have created the followng mailing lists

cogkit-developers@lists.sourcefourge.org - Here developers discuss technical issues.

cogkit-help@lists.sourceforge.org - Here you can ask questions about the use of the CoG Kit.

cogkit-cvs@lists.sourceforge.org - Mailinglist that sends out notifications about CVS updates.

Java CoG Kit version 4

Based on our experience from last year and many changes that took place in the Grid community, we have made great progress to develop the next version of the Java CoG Kit known under the name Java CoG Kit version 4. The code is worked on actively in our CVS and is available from our download pages.

  • It provides a significant enhancement of the functionality provided by GT4.
  • It has a new concept of "providers" that allows us to manage integration more easily with current and future Grid middleware.
  • It has an extensive workflow concept ant integrates nicely for Portal development.
  • It has a simple API
  • We welcome contributors and like your participation.
  • Current Contributors include ANL, Indiana University NCSA Alliance, IBM, NRC/CNRC, NTU, the UNICORE consortium.

The Java CoG Kit has over the years successfully provided access to Grid services through the Java framework. Components providing client and limited server side capabilities are available. A subset of the Java CoG Kit is distributed with the Globus Toolkit versions 3.0.2, 3.2, 3.9 and 4.0 as they use it. The Java CoG Kit significantly enhances the capabilities of the Globus Toolkit by introducing Grid workflows, control flows, and a task based programming model. A testing framework is available to conduct client side functionality tests. Portals and Swing components are under development. These add on features are not yet included in the Globus Toolkit release and must be downloaded separatly.

If you would like to be notified about Java CoG Kit release updates, please visit our mailinglist subscription page.BRBR

Community Participation

We are trying to involve the community in a more integrated fashion into the development of CoG Kits. If you like to participate and have a suggestion for an area you like to participate in, please let us know.

Special needs?

Our close collaborators and sponsors have the benefit of obtaining specialized versions and receive priority in bug resolution. If you like to sponsor us or engage in more direct fashion as part of your projects, please contact gregor@mcs.anl.gov. We have PI status in DOE, NSF, and can also subcontract or consult with commercial companies. We have expertise in Grid workflows, middleware, portals, gateways, applications, and naturally the Java CoG Kit.

Highlights

This page summarizes the development effort of the Java CoG Kit 4.

Some of the features we consider to implement are

  • accessing Globus Toolkit version 2.4, 3.02, 3.2, and GT4 Job submission services without much change to the user
  • accessing the Globus Toolkit version 2.4, 3.2, and 4.0 file transfer services based on GridFTP (In fact, the The Java Cog Kit provides them for GT2, GT3, and GT4)
  • providing a task abstraction that was introduced by the Cog KIt and is more intuitive for the application programmer
  • providing workflow abstraction that is intuitive for the application programmer
  • providing alternative implementations to workflow engines, such as Gridant and Karajan developed by the Cog team
  • providing the ability for the community do develop other hosting environments such as ssh, Condor, and Unicore
  • Developing Graphical user interfaces to the Gird that abstract portals and native windowing system supports (OGCE.org, Swing, SWT, KDE, ...)
  • Developing a GridIDE based on the !JavaBeans standard
  • Supporting the development of contributions by the community
  • Develop an extensive manual

Feature Comparison

A small feature comparison will give you an overview about the extended functionality.

||<|3> Feature                     || cog-jglobus || cog      || GT || GT ||
||<-4:> Version ||
|| 1.2         || 4.1.2          || 3.0.2 || 3.2 ||
||<-5 bgcolor='#8080FF'>                                      ||
|| cog-jglobus                 || (./) 1.2    || (./) 1.2     || (./) 1.1     || (./) 1.2     ||
|| workflow                    || .           || (./)         || .            || .            ||
|| task model                  || .           || (./)         || .            || .            ||
|| testing                     || .           || (./)         || .            || .            ||
|| portlets                    || .           || (./)         || .            || .            ||
|| manual                      || .           || (./) . {X}   || .            || .            ||
|| multiple GT runtime support || .           || (./)         || .            || .            ||
|| ...GT 2.4   provider        || .           || (./)         || .            || .            ||
|| ...GT 3.02 provider         || .|| (./)     || .            || .            ||
|| ...GT 3.2.1 provider        || .|| (./)     || .            || .            ||
|| ...NMI RC 5 portable||  (./)  || (./) || . || (./) ||
|| ...GT 4.0                   || .|| (./)    || .            ||
|| Grid desktop                || .           || (./) . {X}   || .            || .            ||
|| Grid shell                  || .           || (./) . {X}   || .            || .            ||
|| advanced setup              || .           || (./)         || .            || .            ||
|| NTP support                 || .           || (./)         || .            || .            ||
|| matlab                      || .           || (./)          || .            || .            ||
||<-5 bgcolor='#8080FF'>                                      ||

{X} not available yet.

Examples

A small set of examples illustrate how easy Grid programming with the Java CoG Kit becomes. These examples need to be adapted to fit your environment.

GridAnt/Karajan Workflow

Job Subsmission

File Operations File Transfer

Hierarchical Queue

Download

The Java CoG Kit can be downloaded after you registered. The download page is

http://www.cogkit.org/php/download.html


Previous releases of the Java CoG Kit jglobus module

The well known jglobus library is developed as part of the Java CoG Kit. A changes summary is avalable from our CVS.

   * Java CoG Kit Component cog-jglobus version 1.2
         * Fixes to GSI,  distributed with GT3.2.1
         * Deprecation of the RLS and the Gara components.
   * Java CoG Kit Component cog-jglobus version 1.1
         * Compatible with version 2.2.x or 2.4.x of the Globus Toolkit
         * In part (cog-jglobus) distributed with Globus Toolkit 3.02 and 3.2
   * Java CoG Kit Component cog-jglobus version 0.9.13
         * Compatible with version 2.0 of the Globus Toolkit.

[wiki:CoG/Community]

Register

To register your project, please fill out this form.

CoG Kit Community Projects

CogProjectTemplate

Sc2003Activities

Sc2004Activities

|| Details || Class || Remark || Link || || [wiki:Community/Project/OGCE OGCE] || Portal || A Grid portal framework using jetspeed || WWW || || [wiki:Community/Project/Pegasus Pegasus] || . || . || WWW || || [wiki:Community/Project/GriPhyN GriPhyN] || . || . || WWW || || ["Community/Project/ToqGridEngine"] Toq || Queuing interface || Enterprise sharing of resources || WWW || || Crystalography Portal || Portal || A portal to do x-ray crystalography || WWW || || ["Community/Project/Expresso"] Expresso || Climate || A grid interface to MM5 || WWW || || ["Community/Project/XCAT"] XCAT || Framework || CCA Implementation || WWW || || ["Community/Project/GPDK"] GPDK || Portal || no longer supported, use OGCE || WWW || || ["Community/Project/MyProxy"] Myproxy || Security || Credential Repository || WWW || || ["Community/Project/AscPortal"] ASC Portal || Portal || Collaborative Environment || WWW || || ["Community/Project/NASAIPG"] NASA IPG Launchpad || Portal || . || WWW || || ["Community/Project/Ninf"] Ninf || Framework || Grid RPC System || WWW || || ["Community/Project/JiPang"] Jipang || Framework || Provides uniform access interface layer for Grid systems || WWW || || ["Community/Project/NcsaSciencePortal"] NCSA Science Portal || Portal|| Problem solving environment || WWW || || ["Community/Project/ICENI"] ICENI || Framework || Provides High-Level Abstractions for E-science || WWW || || ["Community/Project/TRASC"] TRSAC || Launcher || Allows users to easy use spare cycles || WWW || || ["Community/Project/GAF4J"] GAF4J || Framework || Abstracts all Grid semantics in common Java models || WWW || || ["Community/Project/GeoDise"] Geodise || Matlab || not open source || WWW || || ["Community/Project/Reptor"] Reptor || Datgrid || . || WWW || || ["Community/Project/BioGridRunner"] || Biology || A Distributed computing application for bioinformatics || WWW || || ["Community/Project/Symphonie"] Symphonie || Framework || A Java-based Composition and Manipulation Framework for Computational Grids || WWW || || ["Community/Project/EzGrid"] Ezgrid || Launcher || Resource brokerage system || WWW || || ["Community/Project/ProActive"] Proactive || Library/Framework || Library for parallel distributed and concurrent computing|| WWW || || ["Community/Project/TENT"] TENT || Environment || A Distributed workflow management & integrated system for Engineering Applications|| WWW || || ["Community/Project/CogBox"] Extreme Lab C'ogBox || Application || Unifies CoG with a useful GUI || WWW || || ["Community/Project/XGWS"] XGWS || . || Web Services in Scientific Applications || WWW || || ["Community/Project/MyProxyUploadTool"]  !MyProxy Upload Tool || Application || Credential Repository Upload Tool || WWW || || ["Community/Project/Matrix"] SDSC Matrix Project || GfMS || Grid Workflow Management System || WWW ||


The text for the Projects is still in CogCommunity. It should be moved in seperate pages

The following list is no longer maintained: [1]

The following list is no longer maintained. please use this page CogCommunity - Link to some community Projects using the CoG Kit


Sightings

* The Grid Job Handler of the Fraunhofer Resource Grid, Fraunhofer FIRST, Berlin, WWW

http://pollux.swm.iao.fhg.de/english/Main/downloads/Grid_Job_Handler_README.pdf

* http://wikihip.cern.ch/twiki/pub/Grid/MobileAnalyzer/maposter.html
* http://www-1.ibm.com/grid/solutions/grid_toolbox.shtml?Open&ca=daw-prod-gridtoolbox
* http://www-106.ibm.com/developerworks/java/library/j-tuecke.html?ca=dgr-gridw07GridGuru
* http://www.epcc.ed.ac.uk/~neilc/gsiws/
* http://www.soton.ac.uk/~gship/hicog/
* http://vpac.org/VDT/TRASC/
* http://www.thegridreport.com/index.php?page=6
* www.cs.vu.nl/CMSGA/slides/hernandez.ppt
* http://www.wrg.york.ac.uk:8080/WhiteRoseGridYork/Help/From%20Home/
* http://dps.uibk.ac.at/index.pl/master_theses?proxiedUrl=http://dps.uibk.ac.at%2F~radu%2FWIEN2K%2F&wid=170&func=view
* http://www-sop.inria.fr/oasis/ProActive/doc/ProActive_src_html/org/objectweb/proactive/core/process/globus/GridJob.java.html
* http://www.allhands.org.uk/proceedings/papers/101.pdf


http://www.alphaworks.ibm.com/tech/drg

http://www.physics.helsinki.fi/~tlinden/NorduGridWS2002/talks/Talk_Root.pdf

http://www.wrg.york.ac.uk:8080/WhiteRoseGridYork/News/News_Item.2003-06-05.5612/view

http://www-106.ibm.com/developerworks/library/gr-ggsi/

http://access.ncsa.uiuc.edu/CoverStories/portal/esam_side2.html

http://www.sun.com/products-n-solutions/edu/events/archive/hpc/presentations/june01/laszewski_heidelberg.pdf

http://www.eng.uab.edu/me/ETLab/projects/gridreport.pdf

GridLab

http://www.hep.ucl.ac.uk/~jgd/

https://gridport.npaci.edu/cog/

http://hpcf.nersc.gov/storage/hpss/probe/gfy/gfy.pdf python

http://www.soton.ac.uk/~gship/hicog/


Java Bean Summary

The information provided in this document was obtained through the links in the References section and my limited experience.

Introduction

Java Beans is a specification that allows an IDE to use a component that you created. There are a number of references, tutorials, and API's listed in the References section (at the end of this document) that may be of use. This document is intended to summarize a massive amount of information. If you do not understand finish this reading and then refer to the references if you have problems.


Key Concepts

 * Properties, Methods, and Events of a Bean are discovered through what is called Introspection
 * Introspection (investigation of what a bean allows to be seen) occurs in two ways:
   * By following design patterns (ie String getName() / void setName(String newName) would imply that a String called "name" has read/write access). Using desing patterns is used by default.
   * By specifically stating what is allowed to be seen using BeanInfo
 * Beans MUST
   * implement java.io.Serializable or Externalization
   * have a manifest file that tells what classes are Beans (see below for example)

{{{ Name: org/globus/cog/gridface/impl/shell/ShellPanelImpl.class Java-Bean: True }}}

 * There are different types of properties
   * Simple Properties - a property that has a single value and is accessed using accessor functions
   * Indexed Properties - a property that can contain multiple values (ie a list) and uses an index to access a value at a given point. At this point index MUST be an int. The desgn pattern for this is as follows: {{{IndexPropertyType getIndexedPropertyName(int i); void setIndexedPropertyName(int i, IndexPropertyType value)}}}.
     * Index Properties - use a Customizer to allow you change the value
   * Bound Properties - a property that will notify registered listeners if they have been changed using PropertyChangeSupport.
     * To get this to work simply fire a {{{propertyChangeEvent}}} each type you change a Bound Property. Note that the developer decides what properties are Bound. These are properties that other programs would want to know when they have been modified.
     * NOTE: a property change event will not be fired by {{{PropertyChangeSupport}}} if the two old-value and new-value values are non-null and equal. This means you must clone your object prior to modifying them!
   * Constrained Properties - a property that will allow regestered listeners to deny a modification to a given property VetoableChangeListener
     * To do this you must fire a {{{propertyChangeEvent}}} to potential vetoers before you change the value. A vetoer will listen and decide if they want to veto. If they do wish to veto they throw a {{{PropertyVetoException}}} this cancels the change. If no one vetos the method will modify the variable and then fire a {{{propertyChangeEvent}}} again to those listening for {{{propertyChangeEvents}}}(potentially different than the vetoers).
     * NOTE: a property change event will not be fired by {{{PropertyChangeSupport}}} if the two old-value and new-value values are non-null and equal. This means you must clone your object prior to modifying them!


Creating your first JavaBean

 * Download the Java Bean Development Kit
 * Follow the tutorial "Creating a Simple Bean"
 * NOTES
   * if you have problems using the Bean Box you may want to use "Using the BeanBox", however, it is fairly easy so you probably won't need it.
   * The manifest:
     * it is important ensure it looks like what is below

{{{ Name: SimpleBean.class Java-Bean: True }}}

     * Despite the example using manifest.tmp it is recomended use manifest.mf (apparently if you do not use .mf it cause problems at times - happened to me!)
     * Also you want to have some sort of character after the last line a space a newline will do nicely. This is not always necesary, however, the same site that fixed my .mf problem recommended this as well
   * JAR file
     * the command syntax is 

{{{ jar cfmv OutputFileName.jar manfiest.mf [classes and other files to be added] }}}

     * the f and m may be switched, however, you must then switch the output file name and the manifest file name      
     * v allows you to see verbos output. Ensure that all of your classes/other files were added
     * you will probably want to remove the old file prior to creating a new jar file as often something (Java Bean Box, J'Builder, etc) will have a lock on the file and no error is produced (at least on my computer) when it cannot modify the current jar

Changing a class into a Bean

 * Convert your code to Java Bean tutorial
 * your bean must implement Serializable
 * your bean must have a default constructor (a constructor with no arguments)
 * you must create a manifest
   a) I created the file manifest.mf (it looks like below)      

{{{ Name: org/globus/cog/gridface/impl/shell/ShellPanelImpl.class Java-Bean: True }}}

   b) note that my class name is org.globus.cog.gridface.impl.shell.S'hellP'anelImpl
 * decide which methods should be bound and constrained (use Key Concepts section to help)
 * if you want to expose Indexed Properties (see Key Concepts section for help) then you must provide a Customizer class
 * create your B'eanInfo class (mine is "S'hellP'anelI'mplB'eanInfo.java". the name is your class followed by "B'eanInfo"; this is required!!). It is best to put the B'eanInfo in the same package as your class.


 * Create your jar file
   * First note my directory structure:
     * classes are in some_dir/classes/p1/p2/p3/C'lassName.class
     * such that:
       * some_dir is any directory (my workspace)
       * p1.p2.p3 form the package that C'lassName is in
       * C'lassName.class is the name of the class
   * i then go into the directory some_dir/classes
   * remove the old jar file rm ../C'lassName.jar or del ../C'lassName.jar
   * ensure that the manifest is in some_dir
   * ensure that the icons for your bean are in some_dir/classes/p1/p2/p3/ and are gifs
   * ensure you are in directory some_dir/classes/
   * here is the format for your jar command:

{{{ jar cfmv ../ShellPanelImpl.jar ../manifest.mf ./p1/p2/p3/*.class ./p1/p2/p3/*.gif }}}

   * after the manifest.mf parameter ensure that you specify all the files that your class uses. you may use wild card characters such as * (the first statment says get all the classes in ./p1/p2/p3/). 
   * the second statement was to get the gif files
   * Ensure to add your interfaces
   * ensure that your path p1/p2/p3 is the same case as your package names otherwise thing will break
   * HINT: I use a script to do the deletion and creation for me
 * Load your bean (jar file) into the BDK (Bean Developement Kit)

References

 1. Sun's Beans Tutorial
 2. Sun's Java Bean API
 3. Introspection
 4. BeanInfo
 5. Customizer
 6. PropertyChangeSupport
 7. VetoableChangeListener
 8. Java Bean Development Kit
 9. "Creating a Simple Bean"
 10. "Using the BeanBox",
Personal tools
Collaboration and Jobs