www.ITWeb.4mg.com-Muthukumarasamy Rajamanickam
Muthukumarasamy Rajamanickam 
                       www.ITWeb.4mg.com         

Technologies -
JAVA/RMI, EJB, CORBA and DCOM

While Microsoft today is a one-stop shop for a viable set of distributed object application tools, Sun's JavaSoft has created an environment where an industry of third-party distributed tools-and-platforms have started to flourish.

JavaSoft is promoting its Java 2, Enterprise Edition (J2EE) as a core technology for developing multi-tier distributed applications. There are six fundamental technologies without which J2EE would be impossible.

EJB - the ability to develop and deploy scalable, transactional, multi-user secure, distributed enterprise-level server application components.
Java/RMI - the ability to remotely invoke Java objects and their methods on different virtual machines
JNDI - which provides Java applications with a unified interface to multiple naming and directory services on the enterprise.
JDBC - the Java version of ODBC for database connectivity
JTS - the ability to provide the transaction system infrastructure required to support an application run time environment.
JMS - Java's messaging capability.

Join me in my quest to make this site THE ULTIMATE RESOURCE to learn everything about COM and all its related technologies, JAVA and all its related technologies, CORBA and all its related technologies, Visual C++ & MFC, Visual J++ & WFC, Win32 Systems Programming, Design Patterns, Enterprise Solutions, Transaction Processing Monitors, Message Oriented Middleware and Parallel Architectures.


 


Middleware Component Models -
CCM, EJB, MTS


Middleware components run within a controlled runtime environment provided by the server vendor which manages their creation, management, and destruction. The middleware component developer no longer needs to write code that handles transactional behavior, security, database connection pooling or threading, because the architecture delegates this task to the server vendor...

Enterprise JavaBeans (EJB) provides a fully-scalable, distributed, and cross-platform architecture that makes the most of your business resources. Not only can these components run on any platform, but they are also completely portable across any vendor's EJB component execution system. The EJB environment automatically maps the component to the underlying vendor-specific execution services. Let me show you how to build EJB server-side business object components.

Microsoft Transaction Server (MTS) is built on DCOM and brings in mainframe-like transactional reliability to the PC world following a "write once, run many" strategy.Developers use MTS to deploy scalable server applications built from COM components, focusing on solving business problems instead of on the programming application infrastructure. MTS delivers the "plumbing" — including transactions, scalability services, database connection management, and point-and-click administration — providing developers with the easiest way to build and deploy scalable server applications for business and the Internet. Let me show you how to build Transaction Server business object components.

CORBA Component Model (CCM) is a specification that focuses on the strength of CORBA as a server-side object model. It concentrates on issues that must be addressed to provide a complete Server side middleware component model. It can be described as a cross platform, cross language superset of EJB. The CCM gives developers the ability to quickly build web-enabled enterprise scale e-commerce applications while leveraging the industrial strength of CORBA. Tight integration with EJB leverages CORBA's cross-platform and multiple-language capabilities. Let me show you how to build CCM business object components.

As the middleware war heats up between Microsoft, JavaSoft and the OMG, the providers of the three most popular distributed object technologies, let us look at a detailed comparison of the EJB and MTS models. Let us examine the differences between these models (with a concrete code example) from a programmer's standpoint and an architectural standpoint. At the end of this article, you will be able to better appreciate the merits and innards of each of these middleware component paradigms.

This comparison is based on the following criteria: Instance and Life cycle Management, Database Connection Pooling, Architecture, Distributed Transaction Support, Distributed Transaction Services, Support for Transactions, Component Types, Portability, Interoperability, State Management, Persistence Management, Resource Management, Security, and Deployment. It ends with a detailed source code comparison of a full-fledged MTS and EJB component.
(PS: I am receiving excellent comments and suggestions on this article).

 

Middleware Remoting Technologies -
DCOM, Java/RMI and CORBA


Software Reuseablity is a major goal of software engineering. Good Object-Oriented systems ensure this through Inheritance and Encapsulation.

Microsoft tries to move reuseability from the source code realm into the binary realm. COM, OLE, ActiveX, DCOM, COM+ -you can call it anything- are all Microsoft's solutions to smooth out the edges and ensure that data sharing at the binary level, takes place in a consistent manner. Explore this world with me as I rave and rant about these ActiveX/COM technologies...

Javasoft's Java/RMI ensures communication between distributed program-level Java objects residing in different address spaces by assuming a homogeneous Java Virtual Machine environment. It thus takes advantage of the Java Object Model whenever possible to support distributed objects in the Java environment. Let's uncover this wonderful world and experience first-hand how Java/RMI ensures seamless integration with other Java object systems...

OMG's CORBA is a structural architecture designed to support heterogenous object systems. CORBA achieves communication between different distributed objects while still allowing encapsulation and hiding of the internal object structure from external objects through Indirection. Let me show you how it uses Indirection efficiently to achieve encapsulation preventing systematic recompilation.

  As the middleware war heats up between Microsoft, OMG and JavaSoft, the providers of the three most popular distributed object technologies, let us look at a detailed comparison of CORBA, DCOM and Java/RMI. Let us examine the differences between these three models (with a concrete code example) from a programmer's standpoint and an architectural standpoint. At the end of this article, you will be able to better appreciate the merits and innards of each of these distributed object paradigms.
(PS: I am still receiving excellent comments and suggestions on this article).

Bridging DCOM and CORBA

 

Message Oriented Middleware (MOM)


The Java Message Service (JMS) API combines Java technology with enterprise messaging. Enterprise messaging provides a reliable, flexible service for the asynchronous exchange of critical business data and events throughout an enterprise. The JMS API adds to this a common API and provider framework that enables the development of portable, message based applications in the Java programming language. Let me show you how to build reliable messaging into your enterprise Java applications.

The Microsoft Message Queue Server (MSMQ) guarantees a simple, reliable and scalable means of asynchronous communication freeing up client apps to do other tasks without waiting for a response from the other end.It provides loosely-coupled and reliable network communications services based on a messaging queuing model. MSMQ makes it easy to integrate applications, implement a push-style business event delivery environment between applications, and build reliable applications that work over unreliable but cost-effective networks. Let me walk you through this technology from Microsoft which was code-named the Falcon

IBM's MQSeries has, over the years, earned an industry-leading reputation by providing highly reliable, asynchronous communications functions for application-to-application connection and has become essential to enterprise messaging. It provides an open, scalable, industrial-strength messaging and information infrastructure, enabling enterprises and beyond to integrate business processes. Let me show you how to build reliable messaging into your enterprise applications using IBM's MQSeries.

 

Java and related technologies


Javasoft describes Java as "A Simple, Object Oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high-performance, multithreaded and dynamic language". JavaBeans is the specification for building reusable software components using Java. Javasoft has also released the InfoBus specification for Beans. Click here to see how I use these technologies in my projects...

While both JavaBeans and Enterprise JavaBeans are software component models, the purpose for which they are designed is different. However, a common misconception is that an Enterprise JavaBean is an extension of ‘plain vanilla’ JavaBeans with enterprise functionality. JavaBeans is a general-purpose component model whereas EJB, as the name suggests, is a middleware component model. We'll use these principles and the basic characteristics of software components to compare JavaBeans and Enterprise JavaBeans. (Published in the August 1999 issue of the Java Developers' Journal - JDJ Feature pp.22-30.)

Visual J++ is a pretty cool development system from Microsoft. Microsoft's Visual J++ ver 6.0 is now 100 percent JDK 1.1 compliant (even supports JNI). It provides amazingly superior support for Enterprise Application development and it ships with excellent COM programming support, WFC, ActiveX-Bean integration tools, J/Direct and a whole slew of cool interesting tools. I will do my best to give you an insight into how you can program using these libraries and tools.

 

Jini Technology


Sun Microsystems' Jini Connection Technology enables the building and deployment of distributed systems that are organized as "federations of services." A federation is a set of services that can work together to perform a task. A service, the fundamental unit of a federation, is an entity that sits on the network ready to perform some kind of useful function. A service can be anything -- a hardware device, a piece of software or a communications channel. Once a service becomes part of a federation, it then can be used by all its client programs, other services, or users. Click here and I will explain how to build Jini services & clients and why I am so excited about this wonderful technology from Sun...

 

Design Patterns


One of the most important tasks in any project life-cycle is the Design. A good design contributes a lot to the success of every project. Good Design Patterns have the potential to permanently alter the software engineering field, catapulating it into the realm of true elegant design. Join me as I walk you through my view of this world of Creational Patterns, Structural Patterns and Behavorial Patterns

 

Win32 Systems Programming, Visual C++ and MFC


Visual C++ is Microsoft's flagship product for C++. It's class library MFC provides an Object-Oriented interface to the Windows OS. Windows 98 and NT are their flagship Operating Systems. In this section you can find my Win32 articles on developing NT Services, Named pipes, memory mapped I/O, Winsock Multithreading issues, thunking and a whole bunch of stuff useful for the systems programmer...