Experiences gained from enabling Interoperability in Aladin Pierre Fernique [CDS]
Two interaction levels Lower coupled level: a classical approach => command line parameters & files => http parameters & urls, => script commands (stdin or http) => widely open => heavily used Highly coupled level: a java approach => java object interface => some implementations (VOPlot/AVO proto/CADC tools…)
The ExtApp context Connect VOPlot and Aladin: Aladin asks VOPlot to create 2D diagrams VOPlot asks Aladin to visualize astronomical data on the sky Requires a management of the object selection callbacks (to select/highlight them in both applications)
1. launch the other application 2. send objects 2. each application can call the other one to highlight or select a list of objects
ExtApp.java A symmetrical java interface implemented in both applications : void loadVOTable(ExtApp app, InputStream in); void showVOTableObject(String oid[]); void selectVOTableObject(String oid[]); String execCommand(String cmd);
Need for ExtApp2 To complete VOTable exchange: InputStream getVOTable(String dataSetID) To exchange images : double [] getPixels(ra,dec,w,h) / (x,y,w,h) setPixels(x,y,pix[]) / (ra,dec,pix[])? To allow observer registering : boolean add(this,MOUSE|PIXEL) to transmit current mouse ra,dec position: void pos(ra, dec) to transmit pixel under mouse position: void pix(double pix)
Lessons learnt Several solutions (depend on the interaction level) Close interactions easy to implement inside java world… But how to cross the java border? => PLASTIC