Skip navigation.
Architecture Briefs

Java 5 Language Enhancements

The Java 5 language environment provides improves maintainability and increases programmer productivity.

Java 5 is fully exploited by Tolven and the use of its features is encouraged.


Generics reduce errors and overall yield much cleaner and more readable code. Generics are used extensively in Tolven and are, by convention, required for collections.

For example, the following is taken from org.tolven.rim.Act:

    public List<II> getId() {
if (id == null) {
id = new ArrayList<II>();

It should be obvious from the signature along and without additional documentation that the list returned will contain instances of the II (instance identifier) class. The compiler and runtime will verify that this is always true. See the Sun Generics Tuturial for more details.


According to Java, annotations do not directly affect program semantics, but they do affect the way programs are treated by tools and libraries, which can in turn affect the semantics of the running program. In other words, annotations are meta-data.

Annotations are superior to XDoclet or XML "side-files" that easily get out of sync with the source code and require additional steps to validate. Annotations allow metadata to be type checked and symbolically validated along with the rest of the source code it annotates.

Tolven does not currently define any annotations, but makes extensive use of them, especially as they are defined by Enterprise Java Beans (see EJB3).

An example extracted from org.tolven.doc.bean.documentBean initializes the JAXB context when the bean is constructed.

public void init() {

See the Sun Tutorial on Annotations for more information.

Enhanced For Loop

Using generics for loops are now more readable and maintainable. Much less clutter.

Here's an example from the menu configuration bean It processes a list of menu definitions back into the database. Type safety is intrinsic with the use of generics, and no casting is needed so no additional argument checking is required.

public void updateMenus( List<MenuStructure> menus) {
for (MenuStructure m : menus ) {

Tolven uses this for loop syntax whenever applicable. While not banned, iterators are not currently used in Tolven.


Autoboxing removes the need for routine conversion between primitive types and their object counterparts. Interestingly, the extensive use of autoboxing in Tolven almost seems transparent. One has to look hard to notice, for example, that a primitive type is required where an object is the only thing available. A simple example from the Tolven data generator:

public long countPeople( ) {
Query query = em.createQuery( "SELECT COUNT(c) FROM VirtualPerson c");
Long rslt = (Long) query.getSingleResult();
return rslt;

The Sun tutorial on Autoboxing/Unboxing has additional details.

© 2006 Tolven Inc.



Rely on the Tolven support team to help resolve problems during any stage of your application development lifecycle, deployment or implementation.