[Next] [Previous] [Top]

Java Controls API - Project Definition Report

2 Project Definition: Purpose, Benefits, Scope and Objectives

2.1 - Purpose
2.2 - Benefits
2.3 - Scope
2.3.1 - Functionality
2.3.2 - Applicability
2.3.3 - Model Standardisation
2.3.4 - Implementation Scope
2.3.5 - Data Subscription
2.3.6 - Java Application Programs
2.4 - Objectives

2.1 Purpose

The overall purpose of this project is to develop a Java package or packages which will provide an interface between controls applications written in the Java language and the PS and SL accelerators. One aspect of this work will be to develop a language independant object-oriented model to the accelerator devices.

2.2 Benefits

The Java language provides many advantages over previous computer languages used in accelerator controls. In particular, it is a strongly typed language (more errors are caught early in development), it provides automatic garbage collection (reducing run-time errors and eliminating programmer time spent manually tracking all uses of memory), and it provides a rich set of libraries (further increasing programmer productivity).

By moving into this new language in collaboration, the PS and SL controls groups will eliminate considerable duplication of effort and arguably produce a better product in the process.

The Java package(s) developed in this project will provide the first software platform upon which to develop on-line accelerator applications which can be used by both divisions. This common platform has short range advantages in the area of reducing duplication of effort, and long range advantages in allowing the entire complex of accelerators to be manipulated as a single system. This is expected to be an important aid in commissioning LHC.

A significant by-product of this development activity will be a common view of the control system and increased communication between the 2 controls groups.

The developed packages should also allow one application program to communicates with equipment distributed on both control systems (e.g. PS to SPS transfer line).

2.3 Scope

2.3.1 Functionality

The scope for this project was listed in a memorandum from the parent convergence team. The functionality is to include:

2.3.2 Applicability

This Java API will be used by application developers within the PS and SL controls groups and within other groups within the divisions who customarily provide application software for these machines.

It is expected that this Java API will also be used in the future for developing LHC applications.

It is possible that this Java API could be used by other groups in ST and the research sector for hardware control applications, if in their evaluation their requirements are sufficiently similar to those of the accelerator sector.

Similarly, it is possible that this API could find applicability outside CERN at other research laboratories.

2.3.3 Model Standardisation

The specification of this API must include the definition of a common model that can be applied to any physical or logical device. This covers the definition of generic classes like "Device", or "Property", as examples.

The specification of this API will NOT include a standardization of the specific equipment types. In other word, the standardization of classes like "PowerSupply", "Magnet" or "BeamPositionMonitor" is not within the scope of this project.

2.3.4 Implementation Scope

The implementation produced by the team should initially support 3 environments:

The third environment may utilize a gateway or passerelle between the Java application or applet and the control system being addressed.

2.3.5 Data Subscription

Further clarifications on scope were also given:

"While it is important that the API (application programming interface) define a data subscription capability, this project will not be responsible for implementing the underlying infrastructure to support this capability. Another team will be commissioned with this task, with requirements driven by (1) this API, (2) additional requirements produced by the Java API team, and (3) additional requirements gathered by the data subscription team.

"With the exception of data subscription, this Java Controls API team is responsible for any improvements or integration efforts needed to connect the Java API to the underlying systems."

2.3.6 Java Application Programs

User documentation and validation procedure will include some test programs. However, the production of Java programs using this API and the migration of existing Java programs using a different API are NOT within the scope of this project.

2.4 Objectives