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:
- JavaServer Pages (JSP) and servlets
- Enterprise JavaBeans (EJB)
- Java Naming and Directory Interface (JNDI)
- Java Messaging Service (JMS)
- Java Database Connectivity (JDBC)
- Java Transaction API (JTA)
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
- Visual Studio .NET development system
- Windows Server 2003
- Active Directory directory services
- Windows Server system components such as SQL Server 2000 and Exchange Server 2003
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:
- Web services
- runtime bridges such as Borland’s Janeva, Intrinsyc’s J-Integra for .NET (Ja.NET ), and JNBridge’s JNBridgePro
- message-oriented middleware such as IBM MQseries, Microsoft Message Queue (MSMQ), BEA MessageQ, and Tibco Enterprise Message Server
- a shared database
- integration brokers such as IBM MQSeries Integrator, Mercator CommerceBroker, Microsoft BizTalk Server, and webMethods Enterprise Services Platform
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].
- Primitive data type mappings: Even though the same data type may exist in both languages, it cannot be guaranteed that they will map exactly. This is especially true with floating point numbers and strings.
- Non-existent data types: It is possible that a data type in one language does not exist in the other. Typical examples are the specialized data types that represent collections of elements, such as vectors.
- Complex data types: Complex data types that are composed of other data types have to be exposed to the other party so that the proper mapping can be created. Extensive testing must be done to assure that these problems do not exist.
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
