Java Development

Crystal Lake provides key Java services available from Java application servers and the J2EE framework, including Java server pages, Java Messaging Services and

Java / J2EE is considered by many to be a more robust and scalable platform than Microsoft .Net, although this is a source of heated debate these days. One major advantage of Java is the ability to run on multiple platforms or operating systems other than Windows. One of the drawbacks of J2EE is the complexity of the standard itself. This has been alleviated to a great degree by 3rd party open source solutions.

The following is a summary of some of the tools we use to extend and augment our Java development efforts:

Hibernate is an object-relational mapping (ORM) library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database. Hibernate solves Object-Relational impedance mismatch problems by replacing direct persistence-related database accesses with high-level object handling functions.

Hibernate's primary feature is mapping from Java classes to database tables (and from Java data types to SQL data types). Hibernate also provides data query and retrieval facilities. Hibernate generates the SQL calls and relieves the developer from manual result set handling and object conversion, keeping the application portable to all supported SQL databases, with database portability delivered at very little performance overhead.

Spring enables you to leverage the key benefits of J2EE while minimizing the complexity encountered by application code. The essence of Spring is in providing enterprise services to Plain Old Java Objects (POJOs). This is particularly valuable in a J2EE environment, but application code delivered as POJOs is naturally reusable in a variety of runtime environments. One very useful feature is Spring is the use of Aspect Oriented Programming (AOP). This allows you to create system services such as logging or transactional support and easily use them in your business logic components without that component having either the logic or even the awareness of whatever system service is being employed.

The Struts Framework is a standard for developing well-architected Web applications. It is an open source platform based on the Model-View-Controller (MVC) design pattern providing which segments a web application into three levels, namely application state, presentation and application flow. The interaction between these layers is governed by an XML configuration file. Struts itself includes the view and controller layers, the model layer is left to the developer.

One of the advantages of this approach is division of labor, which allows developers which have specific expertise work on their layer of the application without disrupting the other layers. Generally this can be done without re-compiling the entire application. There is also extensive support for web form validation