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
 

A global company in the document processing business, Xerox Corporation offers a wide array of products and consulting services including publishing systems, copiers, printers, scanners, fax machines and document management software along with related products and services.

Xerox started the office copying revolution with the introduction of its 914 copier in 1959. Today Xerox stands poised for the continued expansion of the global document processing market, already enormous at $200 billion a year and growing 10% a year. Including Fuji Xerox, whose results are not consolidated in accounting statements, Xerox worldwide revenues in 1996 were $25 billion, two thirds of which were generated outside the U.S.

In June 1996 Karen Mihara, development manager, and Jim Johnson, chief technologist at Xerox Corporation, faced a challenge. Their task: to migrate the Xerox PeopleNet, a client/server application that serves more than 33,000 U.S. employees, to the Web. Because Xerox PeopleNet is one of the company's most critical employee/management empowerment tools, the migration would have to be seamless. Employees use the application to access and update their personal information, reference policy and process manuals, review salary planning information, submit paperwork electronically and perform workflow processes.

"One of our goals in placing Xerox PeopleNet on our enterprise-wide intranet was to move to a more productive, object-oriented development environment," says Mihara. "We also wanted a Web-based application to ease deployment and support of Xerox's installed base of Windows, UNIX and Macintosh workstations."

But Mihara and Johnson didn't want to have to start from scratch. They especially wanted to make sure they could still use the existing Oracle databases that contained the proven data sources and business logic for the client/server application. It was crucial that the new Web-based application be able to work with Oracle database technology.

Making the Evaluation
"It was also very important that we be able to easily migrate our developers from Microsoft's Visual Basic, which we'd used for the client/server application, to Java for the Web-based application," says Johnson.

Adds Mihara, "What we needed was a Java graphical development environment that closely mirrored Visual Basic and gave us some of the same advantages. Visual Basic was quick and easy for our developers to use for prototyping and debugging. We needed that same functionality in a development environment for the Web."

Part of the challenge for Mihara and Johnson in evaluating Java development tools was that at the time Java was just emerging as an industry standard. They were concerned about finding a stable development environment that supported Java's still evolving features.

Mihara and Johnson looked at several Java development tools until they found a solution that fit their needs.

"Of all the Java development environments we looked at, Symantec's Visual Café for Java was the most stable and feature-rich," says Johnson. Symantec also consistently puts out Visual Café releases and updates in sync with Java's. For developers, this was critical.

Migrating from Visual Basic to Java-Based Visual Café
Visual Café made the transition to Java very smooth for the Xerox developers. Visual Café allows developers to use a visual development process similar to Visual Basic and other Integrated Development Environments (IDEs). User interfaces can be designed by dragging-and-dropping graphical components from a palette and setting properties from a property editor.

Visual Café also has an Interaction Wizard that will generate code to connect events and methods between selected components. Visual Basic does not generate interaction between components.

In addition, Visual Café accommodates developers who don't want to use the Visual design (RAD) mode. Source code can be directly edited, compiled and debugged within Café.

Debugging
The features Johnson, Mihara and Xerox developers now depend on include a debugger and the software's ability to debug threads and third-party components.

Visual Café provides a comprehensive debugging environment that allows debugging of applets (in Java's Applet viewer, Netscape Navigator or Microsoft's Internet Explorer).

Says Johnson, "We have been able to debug third-party components, in-house- developed components, multithreaded applets, CORBA-based communications and multiple applets communicating via shared memory without any problems."

Creating In-House Components for Use as Standard Objects
Also, according to Mihara and Johnson, developers can now create their own components and then reuse them as standard objects across many different Java applets.

"In Visual Basic, if you wanted to reuse code between different programs, you had to copy the code over into the source code for each program," points out Mihara. "With this software you can set up components once, add them to the graphical tool palette and any developer can simply drag-and-drop the components into another applet.

"This also means that logic or components need only be written and tested once, which considerably shortens our testing cycle," Mihara continues.

For the Xerox PeopleNet Web project, developers relied heavily on components because of their inherent reusability and the ability to drive implementation and development standards. Visual Café has the very useful feature of being able to "import" custom components onto a development palette.

Mihara and Johnson's team developed two basic types of components: (1) a wrapper component of third-party or standard Java graphical or functional components, and (2) custom graphical components.

The wrapper components were implemented to enforce look and feel, or standardize operational behavior by restricting properties or methods behaviors. A big benefit of these types of components included simplifying the development environment so junior developers could come quickly up to speed.

Examples of wrapper-type components were a table component (the base component was KL Group's LiveTable component and a CORBA server connection class). The connection class, which interfaces to an Oracle database via Persistence Software's PowerTier product, was implemented in such a way that the CORBA connection could be shared among the various applets a user would request during a session. The connection class was implemented through the use of a common class that utilized static variables. A simple method from that class, setObjectServer(), is found in Listing 1.

Functionally, the establishment of a method like setObjectServer() has several advantages. First, it allows a standard simple interface for developers to establish CORBA connections. Second, it saves on client and server resources as each applet can share a single CORBA connection and limit the times the CORBA connection is initiated.

The components developed for Xerox PeopleNet Web fell primarily into the user interface realm of the product. The lightweight components do not use operating system "peers," and therefore provide a common look across all platforms. This is important in this case because Xerox has a heterogeneous desktop environment and a very large user base to support (more than 36,000 users). Examples of these types of components include a standard applet header, text label, custom buttons and tab control.

Easing the Learning Curve
For Johnson, the object orientation of Visual Café decreased the learning curve for his developers. "You drag-and-drop the GUI component you want, use a wizard to connect the component's interactions to other objects and the software generates all of the Java code. You can then look at the code that was generated and learn Java that way," Johnson says. "In fact, not one of our developers has any formal training with Visual Café or Java. They've been able to learn at a pace that is good for them as well as for our schedule. And we didn't have to hire any new employees or bring in new consultants."

Mihara said she likes what she hasn't heard about using the software from the developers. "With Visual Basic, the applications tended to be very difficult to debug. Its close ties to the Windows operating system made the applications behave differently, depending on the Windows version and the other applications that were installed. Things were unpredictable," she says. "But I haven't heard any of our developers voice these complaints about Java and Visual Café. When you run Java applets in Visual Café, they're consistent. It's a much more stable and consistent development environment."

Johnson calculates that using the tool has cut development time in half - or more. "Because we used Visual Café, it took dramatically less time for us to develop Xerox PeopleNet," he says.

"It's a good investment," he continues. "Just think about how much you pay your developers for their time to see what Java and Visual Café can save your company."

About the Author
Cara O'Sullivan writes about business and technology. You can reach her at [email protected]

	

Listing 1
 
static XPNServer.XPN ServHelper; 
static Persistence.ObjectServer OSHelper; 

public void setObjectServer() throws org.omg.CORBA.SystemException { 
Common tc = new Common(); 
hostName = tc.getServer(); 

if ((OSHelper == null)) { 
try { 
ORB orb = org.omg.CORBA.ORB.init(myAppletInstance, null); 
IE.Iona.OrbixWeb.Features.Config.setConfigItem 
("IT_BIND_USING_IIOP", "true"); 
OSHelper = Persistence.ObjectServerHelper.bind(markerServer, hostName); 
ServHelper = XPNServer.XPNHelper.bind(markerServer, hostName); 
connection = null; //Reset Oracle DB connection 

.. etc .. 

} catch (org.omg.CORBA.SystemException se) { throw se; } 
} 
}
  
      
 

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.