Many organizations already operate large enterprise environments based on either Java or Microsoft .NET. Hence if the company perceives a need for a new application or addition to their current architecture, the automatic tendency is to start thinking in terms of the currently implemented environment. This is sometimes referred to as Technology Aligned Environment, where decisions about enhancing the current environment are more closely attuned to what you already have running rather than on the basis of which provides the best platform.
Designing enterprise systems using either J2EE or Microsoft .NET is an expensive business, but there are often sound business reasons for organizations to implement a mixed environment that has elements of each platform. This section looks at these factors.
Interoperability is a key requirement for many enterprises, allowing internal systems to work together and enabling businesses to connect to customers, external partners, and suppliers. With ever increasing requirements for efficiency, responsiveness, and cost cutting, interoperability is a key demand for the modern IT environment.
Effective interoperability projects take the approach that an organization should use the best technology for the job at hand. If a company creates the majority of its applications in-house, there may be more factors pushing in the direction of staying with the current environment. However, if you need to implement a third-party solution or want to make use of features that, for example, only .NET offers, interoperability offers an effective mechanism for ensuring that the two environments work together.
Delving further into the business needs for interoperability produces the following areas where interoperability is a major factor:
Achieving reuse of existing systems.
Implementing proof of concept studies.
Migration to Microsoft .NET.
Achieving lower project costs.
Reusing existing systems is usually highest on the list of considerations for why you might want to implement an interoperability project. Organizations often have large investments in their current infrastructure and want to preserve this investment. However, changing requirements may highlight areas within the current system that cannot adapt to cope with new demands. In this scenario, you might be able to implement the new functionality using an alternative technology, and use interoperability to integrate it with the current infrastructure.
For example, you might want to add a new ASP.NET Web tier to existing J2EE-based Business and Data tiers. Rather than replace the functioning tiers, you can integrate the J2EE environment with the new Presentation tier components. The new .NET components can then increase and extend the value of the existing systems, providing integration between the original applications and newer additions in a changing network environment.
Interoperability techniques can also extend the life and value of software assets, such as Business tier applications running on proprietary hardware. Again, if the application and the hardware function acceptably, there is no immediate need to replace it. Simply adding a Web service interface can extend the operational life of this equipment and give the flexibility to integrate it with newer applications.
Many organizations see retaining and using current skill sets as one of the most important factors. Investment in staff training and development is likely to reflect the money put into the application infrastructure. .NET offers competitive development times compared to Java, but you still need to provide continuing support for the current architecture. Because you are likely to have skilled staff trained on your current environment, you can continue to support those areas.
Proof of concept or pilot studies allow the dynamic company to try out new business approaches and technologies at minimal risk. For example, if you want to implement a new cell phone-based interface, you can use .NET to prototype this very rapidly. You can then enable the new interface to operate alongside your existing environment with no changes to the original code. Hence adding new functionality does not entail ripping out and replacing everything that you worked so hard to create.
The language-neutral development environment in Microsoft .NET provides companies with increased technical agility and the ability to get solutions to market very rapidly. Interoperability techniques ensure that these newly deployed additions operate seamlessly with your current infrastructure.
If your organization is considering migration from J2EE to Microsoft .NET, interoperability significantly reduces the risk inherent in any such migration project and can smooth the transition between one environment and the other. A migration plan that exploits interoperability allows you to migrate each application tier independently, which can reduce project dependencies, cope with scheduling constraints and minimize downtime.
Migration is rarely an overnight process, so an interoperability migration plan might consist of creating a new .NET Presentation tier and switching over to that tier. After you are happy that this new component functions correctly, you then start replacing individual components in the Business tier. Finally, you migrate the back-end database to SQL Server.
Using interoperability techniques lets you plan, implement, and correctly execute a migration from J2EE to Microsoft .NET. Even just planning migration can have business value, because it can put you in a stronger negotiating position with your current vendors. It also enables you to react more quickly in a situation where your current vendor no longer meets your requirements.
Labor costs are the dominant factor in overall project costs involving custom line of business applications. .NET has the potential to deliver lower overall project costs, primarily based on higher productivity reducing the labor factor. The sources of higher productivity from using .NET are the following:
High productivity development tools such as Visual Studio .NET, which allow developers to rapidly translate ideas into applications.
A broad, well factored, easy to use, class library in the .NET Framework. This class library encapsulates a wide range of programming tasks and techniques that have historically been difficult for many developers to achieve.
Multi-language support, allowing developers to use the skills they already have. You can write .NET-based applications in any language supported by the .NET Framework, such as Visual Basic .NET, C++, C# or, for Java programmers, the syntactically identical J#. .NET also supports a number of third-party programming languages, such as COBOL and FORTRAN. The chances are that if you now program in a mainstream development language, there is a .NET version either published or nearing readiness.
Reduced application development time combined with multi-language compatibility help to minimize the cost of developing applications. Developers can write in whichever .NET language they know best, and the ease of creating components such as Web services in Visual Studio .NET increase productivity and reduce deployment time. However, multi-language support must be balanced against the potential risk of higher maintenance costs.
Presentation tier applications particularly benefit from the features in ASP.NET, allowing programmers to create fully-featured Web sites from a minimum of code using the language of their choice. Separation of the scripting elements from the HTML code makes for more efficient debugging, removing the requirement to scroll through HTML to identify coding errors.
The JavaServer Faces specification should allow the J2EE platform to provide similar facilities to ASP.NET, although it is not part of the current release of J2EE. For more information about JavaServer Faces, see the JavaServer Faces Web page at http://java.sun.com/j2ee/javaserverfaces/.
Reducing development time significantly improves the chance of your organization being the first to get its solution into the marketplace. Careful selection of the right environment and use of appropriate interoperability techniques can accelerate the successful deployment of enterprise applications and new features, reducing the time to market and cutting development costs.