How do the C++ and Java implementations of CDEV differ?
The Java implementation is in some ways simpler, and in other ways more sophisticated. In the java implementation, full advantage is taken of the java language, including the use of exceptions and threads. Because primitive types cannot be passed by reference in java, those parts of the library had to be changed. In collaboration with CERN, Jlab has developed version 2 of CDEV for Java which introduces additional features and differences. One notable change is the use of error objects, which encapsulate more useful information about an error. The biggest difference will be in the introspection capabilities of the java version. CERN has added a new package, cdev.dir, which vastly expands the ability and convenience of exploring the control system, including navigating from one device to another, such as from a named magnet to its (possibly multiple) power supplies.