3.2. What a Developer needs to know

Before you can start adding new features to BELTS you will need to be familiar with a number of technologies and products, many of which are described in this chapter. This list is not exhaustive, however; BELTS uses many open source libraries not specifically mentioned here. We assume you will read the Javadoc for these libraries as you encounter them.

The primary technology used to build BELTS is Java, so it stands to reason that you'll need to be proficient with it. As BELTS uses the J2EE APIs for things such as data persistence and transaction management, you'll also need to be familiar with these. In any server environment, multi-threading plays a key role, so understanding Java™ concurrency is mandatory. To help you when things go wrong you should become familiar with Java™ remote debugging.

Much of the data and the entire presentation system uses XML in one way or another so you should be comfortable working with XML and understand the associated JavaAPIs. Additionally, you should understand XML Namespaces and namespace prefix handling.

The services that make up BELTS are exposed as JMX management beans. If you're adding new services or extending current ones (say by adding a new content provider), you'll need to understand their creation and configuration.

As noted above BELTS is built to run in a J2EE™ environment. JBoss is an application server that implements the J2EE™ standard. You'll need to be able to configure and run JBoss, as well as understand where it differs from other J2EE™ servers[1], in order to work effectively.

The presentation framework is powered by Cocoon, a component based web development framework with powerful XML processing capabilities. As all page processing is done via Cocoon, and we've added a command processing framework to extend its capabilities (see Section 3.4, “Command Processing”). You'll need to understand the Cocoon site map and configuration files, as well as its page processing model.

Information such as content meta data and curriculum outcomes are stored as XML. To store and manage this BELTS uses the eXist native XML database. If you want to store or query XML data, you need to get to know eXist and the XML:DB API.

Although eXist handles XML searching, general searching is handled using Lucene. If you need to index data that's not XML based, you'll need to understand Lucene.

The build process for BELTS uses Ant. If you intend to add new modules, you'll want a clear understanding of ant. For more information on building BELTS, see Section 3.5, “Building BELTS”.

J2EE™ development involves creating lots of configuration and derivative files. XDoclet takes the pain out of this by generating these files using special Javadoc tags. If you're creating entity or 'm' beans, XDoclet is your friend.

If you'll be adding pages or changing the look and feel of BELTS, then you should also be familiar with the technologies in Section 2.1, “What is a Stylist”.



[1] Although the BELTS is a J2EE™ application, it can't be run inside of J2EE™ servers other than JBoss.