Welcome on the JMMC developper Corner

This area is dedicated to:

  • point to the technical ressources that are used by the JMMC technical team.
  • list our tips, workarounds, usefull material.

JMCS rules

Main documentation has been moved onto the github wiki of Jmcs

Shared Libraries

Jmal and Jmcs collections

Jmcs and Jmal modules group a lot of external shared libraries. All collections of libs can be easily included in the distributed applications through their jnlp adding following code:
  <!-- JMMC libs -->
    <extension href="../JmcsLibs/JmcsLibs.jnlp"/>
    <extension href="../JmalLibs/JmalLibs.jnlp"/>

JmcsLibs.jnlp and JmalLibs.jnlp declare these ressources in the jnlp throug following code sample:

   <!-- Swing Task management -->
    <jar href="@SHARED@/swing-worker-1.2.jar"/>
The @SHARED@ is replaced on fly by the admDeploy.sh script on top of a base url.

Both jmcs and jmal jnlp can be shared between applications. Then no shared ressources must be removed without strong analysis.

Contrib jars of applications

Applications based on external jars should declare them in their jnlp using the @SHARED@ hack. By this way, the jar is copied on the server in one specific directory if it does not exist. Then the clients will download this resources only one time during successive versions.


The jar which contains the main class declared in the jnlp file must be declared as first jar ressource.

Constraints on deployed jars

To reach the maximum number of running platform, the distributed jars must not be signed more than once. Else error can appear arging that some parts are not signed by the same certificates. This feature is performed during maven build.

XML Schema rules :

Here are several rules to help writing XML schemas :

First of all we define two different types of schemas.

  • First we define “type schemas”, XSD documents containing only type definitions.
    • For each object type(class) and value type we generate a corresponding complexType or simpleType, i.e. NOT ELEMENTS.
    • Attributes map to elements of a corresponding data type (simple or complex), collections to elements of a type corresponding to the class.
  • We next define a “document schema” containing root elements. The elements in the document schema define the valid XML documents one can write and we choose only the complex types representing an interesting document. That is, only important classes can be represented as a document. Fragments of these are not allowed.

If the data model is simple, it is possible to have a single XML schema gathering both type and document schemas. In this case, the XML schema must contain first the root elements and then the type definitions.

Complete and detailed explanations here

External ressources

VO related

SAMP Simple Application Messaging Protocol

JSAMP Java implementation of samp http://software.astrogrid.org/doc/p/samp/
SAMP at IVOA Main reference page http://www.ivoa.net/cgi-bin/twiki/bin/view/IVOA/SampInfo


To complete: TAPlib , badcal, oidb...

Usefull tools

JmmcSoftwareNetBeans integrated development environment for Java&others
  • Code Assistance in the Trash.JmmcSoftwareNetBeans IDE Java Editor:A Reference Guide
  • http://www.netbeans.org

    Tips and tricks

    Commit clean code with netbeans

    Netbeans provides in its Tool/Option Panel/Editor an "on save" tab where you can activate code cleanup function (organize imports, etc...)

    Get the status of running threads for any java program

    ...if started from the command line: just get its pid and send one SIGQUIT signal :
     kill -3 <pid>
    Edit | Attach | Watch | Print version | History: r11 < r10 < r9 < r8 < r7 | Backlinks | Raw View | Raw edit | More topic actions
    Topic revision: r11 - 2021-09-08 - LaurentBourges
    This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
    Ideas, requests, problems regarding TWiki? Send feedback