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.
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).
The scope for this project was listed in a memorandum from the parent convergence team. The functionality is to include:
device access (signal I/O and status) including asynchronous and event driven capability
timing and synchronization support
virtual accelerator support (PPM, PLS, etc.)
reference values for all control points and possibly measurement points
naming conventions as appropriate
capability of supporting pseudo-devices, such as manipulating the tune of a ring
device discovery and other features needed by generic applications
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.
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.
The implementation produced by the team should initially support 3 environments:
PS controls, in support of the AD project
SL controls (either SPS or beamlines)
a 100% Java environment, with the ability to run on any Java platform, including PCs, that don't have the PS or SL control software infrastructure and providing access to both PS and SL equipment.
The third environment may utilize a gateway or passerelle between the Java application or applet and the control system being addressed.
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."
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.
Develop a set of software requirements detailing the capabilities to be supported, specifying which capabilities are essential for the first version, and which are deferrable to a later version. These capabilities should be consistent with those contained in the audit performed by W. Watson, "Comparative Analysis of the CERN Accelerator Control Systems".
Define by June 1998 a high-level model of the accelerator control.
Define by June 1998 a common accelerator controls application programming interface for Java which satisfies the requirements and which implements the model.
Implement by August 1998 a prototype of the basic capabilities for use by the PS/AD project.
Produce suitable user documentation to accompany this first release
Produce suitable user documentation for these 3 environments
Develop a software maintenance plan