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.

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...

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
theEJB 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 still 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.

OMG's CORBA is a structural architecture
designed to support heterogeneous 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 ata 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).

Solving the
impedance
mismatch between an Object Model
that was
developed independently from a Data Model is a matter of concern,
and happens far too often in Enterprise Application projects. Transparent Persistence,
Persistence By
Reachability,
Lazy Data Loading, and Object to
Relational Mapping
(O/R Mapping) are highly desirable features in every application
which gets its data from some data source (be it from an RDBMS, or
from an ODBMS, or even from XML/Text Files).

Java Data Objects (JDO) provides for interface-based definitions of
data stores and transactions. It also provides for selection and
transformation of persistent storage data into native Java
programming language objects. It provides for a standard way to
store Java objects persistently in transactional data stores.
Furthermore, it standardizes on a way to treat relational database
data as Java objects, and defines transactional semantics associated
with those objects. You use the JDO Query Language (JDOQL) to
write queries that uses conventional Java operators.
Click here to
see my latest forays into this wonderful technology from Sun...

Microsoft ObjectSpaces (MS OS) lets you expose database or XML data as
persistent objects and lists of objects instead of tables, columns,
and rows, or XML elements. MS ObjectSpaces provides a protective
transactional business logic layer for your source data layered on
top of ADO.NET. You use the Object Query Language (OPath) to write
queries that use conventional C# operators. OPath also handles
updates to the source database or XML document and supports
transactions. The Microsoft XML Web Services Toolkit includes a
Technology Preview of the ObjectSpaces library and ObjectSpace
Mapping Tools for Microsoft's .NET Framework.Click here to see
my latest forays into this wonderful technology from Microsoft...

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.

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,
catapulting 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