RealTime IT News

Microsoft Targets J2EE Users with JLCA 2.0

Continuing its efforts to migrate organizations from the J2EE platform into the .NET camp, Microsoft Tuesday launched Java Language Conversion Assistant (JLCA) 2.0, the latest version of a tool geared to smoothing the path for Java language developers to work with Web services and Web- and Windows-based applications within the .NET Framework.

JLCA is part of Microsoft's Java User Migration Path (JUMP) to .NET strategy. It is built on ArtinSoft migration technology, and automatically converts existing Java language source code into Microsoft's C# language.

The 2.0 version is another step forward, adding the ability to convert Java Server Pages (JSP) and servlet applications to ASP.NET, which Microsoft claimed will allow organizations to more easily modify and scale sites, while increasing developer productivity, leveraging ASP.NET features and tightening the reins on maintenance and licensing costs by transitioning to a single vendor rather than weaving together a patchwork of third party products.

"Our customers are seeing productivity and performance increases because they are able to leverage existing investments in their Web applications written in the Java language by migrating them to ASP.NET," said John Montgomery, director of the Developer and Platform Evangelism Division at Microsoft.

The software giant cited the experience of CodeNotes, a joint venture of Infusion Development and Random House Books. CodeNotes, an eBook series designed for software developers which also offers a Web site as a companion to the book series, ran its site on a variety of Java-based products from different vendors. The company said the products it used each had their own upgrade and patch schedules, and it wanted to move to a single platform and single vendor in order to reduce fixed costs and ease the process of enhancing the site.

To accomplish this, Infusion ported the site from JSP to ASP.NET through the JLCA 2.0.

"The primary reason for switching to ASP.NET was to consolidate the maintenance and the licensing fees," said Rob McGovern, senior project manager for Infusion. "The Java version uses several different third party products, each with its own upgrade and patch schedule. By moving to a single platform, our maintenance overhead decreases dramatically. Secondary reasons include ease of modification, better low-cost scalability and the ability to leverage ASP.NET features for future enhancements to the site."

The original CodeNotes.com architecture was written in Java and designed around Jakarta Struts, a Model-View-Controller framework that uses Java servlets, JSP, and Enterprise Java Beans (EJB). The site was hosted on Microsoft Windows 2000 Advanced Server using Allaire's JRun application server and the Apache Web server. The back-end database was Microsoft SQL Server 2000. Forms used a third-party product called Jive, chat used the JChatBox component, and search was powered through the open source Apache Lucerne product.

CodeNotes said this made maintaining the system a "nightmare" because it was based on unsynchronized but interdependent components.

"Our other option was to keep the existing system, which required that someone in the company maintain contacts with all the different vendors," the company said. "We also found that the Java architecture was fairly difficult to set up as a development environment for even minor modifications. The amount of 'tweaking' required to properly install all the different components, configure the classpath and environment variables, and make the site run on a development machine made bringing new developers up to speed a challenging process."

Enter Microsoft and JLCA 2.0. CodeNotes said the new version of JLCA automatically converted 80 percent of its Java code, allowing one developer and one manager to complete a full transition to the .NET Framework. The company noted that its SQL Server database and stored procedures were reused without change.

"The vast majority of the migration was completed in approximately 8 man-weeks of work," the company said. "Roughly another 8 weeks was spent prototyping systems and finding replacement functions for code that could not be converted. Finally, another 4 man weeks was spent testing and deploying the new system."

Michael Van Atter, the programmer who worked the transition, noted, "There were three points that really stuck out about the JLCA for me, that made the conversion project run so smoothly.

"First, the JLCA integrates quite easily with the Visual Studio .NET IDE. For example, the upgrade comments generated by the JLCA are automatically added to the Visual Studio .NET task list. That makes getting the site up to functional equivalence quite straightforward. Second, the JLCA converts a significantly large percentage of the code, so getting to functional equivalence can be done relatively quickly. This speeds up the deployment time for the .NET version of the project and allows you to incorporate the .NET features when you want, instead of forcing you to convert everything to .NET style at once. This makes the learning curve for Java-oriented people much easier than doing a direct conversion. Third, the JLCA does a lot more than simple method-mapping. For instance, it converts tag libraries to Web controls, and the JLCA examines the WEB-INF directory to convert the mapping for tag libraries and servlets."

Still, the conversion process isn't perfect. Dan Fernandez, a product manager for Visual C# .NET at Microsoft, noted that 80 percent of the target Java market runs JSP server applications, explaining its efforts to work JSP conversion into the new version of JLCA. The initial version of the offering, JLCA 1.0, focused on the conversion of Java Classes and Java Applets. But JLCA still can't handle Enterprise Java Beans , though Fernandez said support for EJB conversion is slated for the next version of JLCA.

"Our long-term goal is full J2EE conversion support," Fernandez said. But he added that Microsoft is making strides. When faced with the first version of JLCA, Fernandez said, "Our customers were saying this isn't really that valuable to me because I can't support what most of my applications are."

CodeNotes said converting the Struts framework, which relies on EJB, was an issue.

"Struts nested tags is an area where the JLCA won't convert exactly the way we expect it to," McGovern said. "Fortunately for us, most of the time that we have nested tags related to Struts, we're using an iteration tag combined with some sort of formatting tag. The good news is that these are very easy to replace with ASP.NET controllers. We can rip out almost all of the nested tags and replace them with a simple grid control."

Even so, McGovern said the important thing when coming up against a trouble area like this is getting the functionality, not the code.

"It's not as important that our ASP.NET site have exactly the Struts framework and the Struts class libraries and everything that you're used to," he said. "What it needs to do is mimic the same functionality that Struts gave us."