Software Engineering Institute Carnegie Mellon

ISIS Main Page
Conferences, Workshops,
and Other Events
Presentations
Publications
References
ISIS Staff
Working with Us
Performance-Critical Systems
COTS-Based Systems
Dynamic Systems Program

Component Frameworks

     

Component-based development (CBD) has received much attention in the software engineering community. Using CBD, large software systems can be assembled from independent, reusable components. Two component frameworks that support this model are the Java 2 Platform, Enterprise Edition (J2EE), and Microsoft .NET.

Java 2 Platform, Enterprise Edition (J2EE)

Developed by Sun Microsystems, the J2EE defines a standard for developing component-based multi-tier enterprise applications. J2EE provides a set of APIs (Application Program Interfaces) to implement availability, security, reliability, and scalability into applications developed under this component framework. Components are mainly developed using the Java language and deployed in containers that transparently provide services to those components, such as lifecycle management, transaction management, access control, and others.

There are several technologies and APIs that are a part of J2EE:

Microsoft .NET

Microsoft .NET is a development environment for creating distributed enterprise applications. The main component of .NET is the .NET Framework, which consists of two main parts: the common language runtime (CLR) and the .NET Framework class library. The CLR allows programs to be written in many different programming languages because it translates them into Intermediate Language (IL). IL is the syntax used to send, receive, and manage .NET signals. The .NET Framework class library includes ASP.NET for developing Web applications and Web services, Windows Forms for user interface development, and ADO.NET for connection to databases.

Other components of Microsoft .NET include

State of the Practice

There is a general belief that systems developed using the same component framework will interoperate seamlessly and there is growing interest in the interoperation between systems developed using J2EE and systems developed using .NET.

Many vendors have application servers that implement the J2EE specification, such as JBoss, BEA WebLogic, and IBM WebSphere. J2EE runs on a range of operating systems, including Windows, Sun Solaris, UNIX, and Linux. Sun also provides a Compatibility Test Suite to ensure consistent implementation across vendors. Only vendors that pass this test receive certification. The current released version of J2EE (v1.4) natively supports standards such as SOAP, WSDL, UDDI, and XML. The J2EE specification also now ensures Web services interoperability through support for the WS-I Basic Profile. Sun is currently working on J2EE 5.0 and is promising ease of development and tighter security mechanisms.

NET supports standards such as SOAP, WSDL, UDDI, and XML and has a strong commitment to Web Services.

Impact for Systems of Systems

From a syntactic point of view, the assertion that two systems can interoperate seamlessly because they were built using the same component framework is not always true. In the case of J2EE, because it is a standard, there can be differences between different application server implementations that can cause problems. This is why Sun has a J2EE certification program. For .NET this is less of a problem because of its proprietary nature (Microsoft provides full support for the .NET Framework and there are versions of the Framework that run on most versions of Windows).

In the case for interoperation between component frameworks, there are a number of ways in which to implement J2EE to .NET interoperability:

When data exchange between systems is involved, three main challenges exist, mainly because of data type incompatibilities between the languages. A typical example occurs when Java is used for J2EE components and C# for .NET components. These challenges are listed below [Microsoft 03].

Open Issues

It is important to have more studies that use experimentation, such as through the use of model problems, that focus on gathering data to support or refute the benefits associated to the use of component frameworks for interoperability, and to understand what the new version of these component frameworks are doing to address these issues.

References

[Microsoft 03]     Microsoft Corporation. Application Interoperability: Microsoft .NET and J2EE, December 2003