HomeDigital EditionSys-Con RadioSearch Java Cd
Advanced Java AWT Book Reviews/Excerpts Client Server Corba Editorials Embedded Java Enterprise Java IDE's Industry Watch Integration Interviews Java Applet Java & Databases Java & Web Services Java Fundamentals Java Native Interface Java Servlets Java Beans J2ME Libraries .NET Object Orientation Observations/IMHO Product Reviews Scalability & Performance Security Server Side Source Code Straight Talking Swing Threads Using Java with others Wireless XML

Anyone who has used the Java 2 Platform, Enterprise Edition (J2EE) has to be impressed with how quickly it’s matured and become a robust programming model. Besides the ability to build new applications, developers can use J2EE to connect to third-party software, legacy systems, and Java-based e-business application engines and deploy them across a distributed computing environment. As powerful as the various technologies supporting this platform are, efficiently managing and using them all in a development environment can be problematic. Providing an IDE to manage this complexity is what Oracle has set out to accomplish – and in my opinion, has very successfully – with its new Oracle9 i JDeveloper product.

Oracle9i JDeveloper allows developers to take advantage of the power and flexibility of J2EE to create applications with the highest level of scalability and performance. Written entirely in Java, it’s a robust IDE that combines all of the tools and services to comfortably support a developer throughout the full J2EE development life cycle. Oracle9i JDeveloper also includes an open J2EE framework called Business Components for Java (BC4J) that helps developers quickly construct high-performance J2EE applications following industry-standard J2EE design patterns.

For database-backed J2EE applications, the framework makes the object-relational mapping process a point-and-click exercise. For client applications it includes an extensive set of JSP tags in a built-in tag library and a large set of Swing-based components. Easy-to-use wizards speed the creation of JSP-, servlet-, EJB-, and Web services-based components. Built-in container objects then allow for the quick and very easy testing of these components without you ever having to leave the development environment. It’s conceivable that you won’t have to leave the confines of the JDeveloper environment for a wide range of development services, including source control, UML modeling, debugging, testing, profiling, and deployment. Developers can also use the AddIn Kit to integrate third-party code libraries and open-source products, which could include their own custom tag libraries.

Installation and Configuration of JDeveloper
The installation of the product is straightforward and all necessary files are made available in a zip archive format.
After the files have been extracted, a shortcut should be created to the file [jdeveloper_root]/jdev/bin/
jdevw.exe to execute the application. The necessary documentation is available from the online help, the free product download from the Oracle Technology Network (OTN) at http://otn.oracle.com.

One of Oracle9i JDeveloper’s most exciting features is the built-in Oracle9iAS Containers for Java (OC4J). With OC4J, developers aren’t required to have access to a separate application server to test the components they’re building within the JDeveloper environment. OC4J is built into JDeveloper, allowing for the immediate testing of JSP, EJB, servlet, and Web services components.

With a little extra work an OC4J server can be run remotely to simulate a preconfigured J2EE deployment environment. The steps to implement this feature are few and well documented in the installation guide. I highly recommend implementing the OC4J remotely. A two-step process, it’s the final touch that makes this elegant IDE a completely integrated development environment. The remote implementation allows for the test deployment of EAR, JAR, and WAR files via the various deployment wizards JDeveloper offers (see Figure 1).

Figure 1
Figure  1:

The features are easy to use with the sample code and database configuration files supplied from the OTN Web site. Oracle 9i JDeveloper works with any JDBC-compliant database, including Oracle Database release 8.1.7 (or higher). After setting up the database, you’ll need to create database connections to the various schemas and to the application and SOAP (Simple Object Access Protocol) servers. (If no application or SOAP servers are available, OC4J conveniently takes their place for testing and deployment of J2EE components and Web services.)

Working with Oracle9i JDeveloper
From setup to the creation of the first objects, the ease with which the environment allows the developer to accomplish tasks is impressive. The sample code and associated documentation is excellent and provides a quick entrée into the important features of this product and how they work. On my own I created a simple application to investigate the feature sets and see how well they work together. I started out by creating a simple UML model within JDeveloper that would allow tracking of “customer” orders. From this initial model I was curious to see how easy it would be to implement the business components generated from the model into the various component types (servlets, JSPs, EJBs, etc.) that are supported by the J2EE platform.

The high degree of integration makes an immediate impression upon entering the Oracle9i JDeveloper environment. Developers can have simultaneous connections to database, application, and SOAP servers across multiple workspaces and projects. A common interface, the New Gallery dialog, is used whenever developers need access to a wizard to create an object within the IDE (shown in Figure 2). This interface is used whether it’s a new workspace, EJB component, or database connection to be created. This is an elegant interface that reduces the confusion over where to go to find the appropriate wizard to create the desired object or component.

Figure 2
Figure  2:

The creation of the UML model was expedited by a previously created connection to an existing database schema containing the table definitions that would form the basis of the UML model. Accessing the entity definitions from the database made the UML creation a simple drag-and-drop exercise. After that it was just a matter of deciding which wizard to use to implement the desired component from the object definitions represented in the diagram. The first step in this process is to generate business components from the diagram into the project. The components represent the objects in the model, and serve as templates for the creation of J2EE components. Attributes and methods can be added before they’re rendered into JSP, servlet, or EJB components.

Using the various wizards provided by the New Gallery dialog, the customer and order objects were quickly and efficiently implemented as JSP, entity EJB, and Web services. The integration between the various supporting files of the EJB made a particular impression. Whenever a new method was added to (or changed, for that matter) a bean definition file, there was no need to make changes to the supporting interface files since they were implemented automatically, thus eliminating a big headache all EJB implementers have had to deal with at one time or another. The customer entity was quickly implemented as a container-managed entity bean with the necessary support files, including the deployment descriptor file. Deploying the new EJB to the application server was a point-and-click exercise after creating the deployment JAR file with the appropriate wizard.

For testing purposes, JDeveloper creates a sample Java client to access the EJB definition; the code generated for this client was terrific and I used it later as a template for the implementation of a stateless session bean to manage my customer EJB.

As a final step when implementing some custom code I wrote for the stateless session bean, I ran CodeCoach for guidance concerning its efficiency. CodeCoach provides insights into issues ranging from whether certain segments of code are ever used to whether a variable’s scope should be changed for better use of memory resources. During the testing process, memory usage can be tracked using the integrated memory profiler.

Summary
Oracle has provided a quality product that is up to the task of managing the J2EE application life cycle. Easy-to-use wizards are the starting point for creating components that take advantage of the variety of built-in services the J2EE platform provides, while reducing the complexity of implementation. These same wizards offer a final conduit to the application or SOAP servers necessary for deploying components. The integration and ease of use provides an environment that can manage projects, and a technology for that matter, even as they scale – concepts that experienced and beginning developers alike can relate to.

Oracle Corporation
500 Oracle Parkway
Redwood Shores, CA 94065
Web: www.oracle.com
Phone: 650 506-7000

Test Environment
Computer: Dell Precision 340 Workstation
Processor: 1.80GHz Intel Pentium IV processor
Hard Drive: 40GB Disk
Memory: 512MB RAM
Platform: Windows 2000/SP 2

Specifications
Platform: Any platform with JDK 1.1 or 1.2 support
Pricing: A free evaluation copy can be downloaded at http://otn.oracle.com. A full license, costing $5,000 per developer, is required for applications that will be sold or deployed in a production environment.

JDJ Product Snapshot
Target Audience: Java programmers, application architects
Level: Beginner to advanced

Pros
•    Feature-rich product
•    Built-in J2EE container for testing
•    Powerful wizards for quick and integrated component  creation
•    Easy integration of third-party APIs and frameworks

Cons
•    None significant

[email protected]

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.
  E-mail: [email protected]

Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.