This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
In order for the components to be connectable and serve to achieve the required goal, standards must be used . If the procedural type of programming was supported by the interprocess communication mechanism, the OOP approached used procedure calls to invoke objects from different classes. Therefore, there was the need for a wiring standard able to support the component-based paradigm, and the main focus was on the data configuration .
There are many available wiring standards, but I will emphasize on three of the most important of them, OMG, Java Enterprise and .Net framework. Analysis and suitability for our bank management system will also be performed.
5.1. Object Management Group (OMG) approach
Initially founded in 1989, the Object Management Group (OMG) is the largest consortium in the computing industry. Its purpose is to help with the standardization of different frameworks and paradigm as to achieve a full interoperability. At the beginning, they focused on finding how can distributed object-oriented systems, written in different programming languages interact. At the core of this problem, there was the Common Object Request Broker Architecture (CORBA) developed in 1991. CORBA's purpose was to ensure an open interconnection between a variety of frameworks and languages .
One of the drawbacks of using CORBA is the fact that individual products cannot interoperate at a binary level; instead, they must use a high-level protocol . This architecture is composed of three major parts: the invocation interface, the object-request broker (ORB) and the object adapters. Through the use of interfaces they can be binded in order to work together . In Figure 6 (pg 232, ) can be seen a simple CORBA structure. In order for the interfaces to work, the object interfaces need to be expressed in the common language. Furthermore, all the languages used in the project must have a connection to this common language. This language is, in fact, called OMG Interface Definition Language (IDL). Different languages, such as C, Java, C++, and COBOL can be binded to this ID . Any OMG IDL must be able to generate stubs and skeletons . Stubs act like proxy objects in most distributed applications . Skeletons are used more in the server-side approach in order to invoke the target methods .
This methodology needed a more dynamic approach, which was found in the form of the Dynamic Invocation Interface (DII). CORBA's way of handling a distributed application does not follow the typical asymmetric architecture like in the client-server computing. This can be noticed in Figure 7.
Fig pag 234 .
CORBA changed its approach on using low-level abstractions and decided to replace the remote procedure calls. This change found its materialization in the form of object servants, language bindings, invocation interfaces, in a whole word in OMA. OMA added three new areas of standardization, which are represented by CORBAservices (a set of object service specifications), CORBAfacilities (a set of facility requirements) and CORBAcomponents. The overview of OMA is presented in Figure 8.
Figure xxxpag 236, .
Security is also given significant attention, as it is a major aspect of any distributed application . CORBAsecurity defines a set of services to handle tasks such as secure communication, handling credentials and authentication . Nevertheless OMA covers a wide range of object services. These include concurrency, control service, licensing service, lifecycle service, externalization service, relationship service and persistent state service .
The last of CORBA's releases, CORBA 3, brings as its main contribution the CORBA Component Model (CCM), mostly used as an extension of Enterprise JavaBeans . An application built on the CCM profile is in fact an assembly of CCM components. Each of them may be custom-built, in-house produced of just acquired . In most cases the ORBs are not sold and used as a stand-alone application, but they are incorporated in much larger server products such as IBM's WebSphere, BEA's WebLogic Enterprise, Borland's Enterprise Server or even IONA's Orbix E2A Application Server Platform. All the server products enumerated are in fact combining some of the CORBA's ORB service functionality with a J2EE application server .
CORBAfacilities is a useful tool that can be divided into horizontal and vertical support. This framework that support components tried to standardize the horizontal facilities offered in four areas: user interface, system and information management and task management. Furthermore, vertical facilities are not yet standardized, and are more 'domain specific', including areas such as transportation, healthcare, telecommunications, artificial intelligence .
5.2. Java's approach
Java was first introduced in 1995, changing the perception on programming mainly due to its new feature, the applet . Java comes with much more than a language. It offers different component models: JavaBeans, Servlets, Enterprise JavaBeans and J2EE Application Components. On top of them, Java services have been built.
Furthermore in 1998, Java 2 was introduced, together with the notion of platform edition . Hence, Java 2 platform, enterprise edition was the most successful as it encompasses at its core a large number of application servers, belonging to a large number of different vendors (Figure 9) .
Fig pag 263 .
Moreover, it was J2EE the one who formalized the definition of the runtime environment (JRE) and software development kit (SDK). The proprietary of the Java development, tried to address the demands of various markets (Personal Java, Enterprise Java, Embedded Java) and this was a major strength . Figure 10 presents an architectural overview of J2EE.
Fig pag 269 .
Java language is fully object-oriented, with everything relying on attributes and methods of object that interact. One major breakthrough for Java is the fact that the classes can implement any number of interfaces and the interfaces can inherit other classes of interfaces .Another significant advantage of Java, is the further level of encapsulation introduced in the form of packages, the latter including more classes. Java use of classes, interfaces and packages can be noticed in Figure 11.
Fig pag 271 .
The major step in Java implementation that led to the use of components is its clear separation of interfaces and classes, thus providing single and multiple inheritance . Java is by definition a concurrent object-oriented language . The model of concurrency is represented by a thread. Being most of the times dynamically created, threads move from one object to another and executes methods invocations .
JavaBeans brought the new concept of a 'beans' which is in fact a set of classes and resources brought together to form a component . Therefore this is Java's approach towards the component-based paradigm. This new model proposed came along with different aspects. Firstly there are events associated with beans. They are a tool that can connect listeners to sources. Moreover, the beans provide a set of instance proprieties, widely known as getter and setter. Thirdly, they expose introspection, symbolizing in fact that the bean can be inspected by an assembly tool. Customization is another aspect, which facilitates the change of properties in the beans by using an assembly tool. The properties of a bean are very important, as they can impact the bean's behavior. Finally, bean instances are also persistent.
The many additions that appeared over the years are significant characteristics of Java. Some of the most important are: object serialization, remote method invocation and the Java native interface (JNI). The object serialization overcomes the difficulty of writing an object into an output stream. In order to achieve this, an object just has to implement the java.io.Serializable interface . The Java world comes with five different component models. These are represented by the simple applet, the JavaBeans model, the Enterprise JavaBeans, servlets and the component representing the final client. Taking into consideration the fast pace imposed by Java, there will surely be many more component models in the near future .
All in all, Java is unarguable one of the most powerful representation for distributed computing, including not only Enterprise JavaBeans, Remote Method Invocation (RMI) but also a good integration with CORBA's services. Its strength definitely explains the preference of many software developers towards it.
5.3. Microsoft way
Microsoft's vision on this matter is to continuingly reengineer the process and adapt its applications and platforms to the market's need. In fact, it is often argued that this would be the safest route . They started by implementing the Visual Basic controls (in a non-object oriented way), then it arrived at the Object Linking and Embedding (OLE). Furthermore, the OLE database connectivity was introduced (ODBC), together with ActiveX or Active Server Pages (ASP).Microsoft does not intend to align its process to the OMG or the Java one. They succeeded in producing a framework independent of other products (.NET) and a programming language of significant interest (C#) that borrows some of Java's features but also has many distinctive features . One of Microsoft's strengths also lies in the ability to have successful agreements with Sun and OMG.
The foundation of Microsoft in term of initial binary standards is COM. The only entity that COM represents is an interface. It does not specify anything about object, classes, object-orientation or the different ways they can bind with it .
Figura pag 331  -representation of a COM interface
Another winning point is the fact that a COM component can have implementations towards any number of interfaces, but on the other hand, it does not support any form of inheritance . The next step led to the implementation of DCOM (Distributed COM), which brought new concepts such as adding proxy objects on the client-side and stub objects on the server-side. Besides the wiring and storage services, COM also offers several other services. These might include dispatch interfaces, uniform data transfer or outgoing interfaces .
In order to link legacy applications with their own applications Microsoft releases OLE (Object linking and embedding). Being built on top of COM, OLE can be defined as a collection of interfaces. As a new element, OLE had to find a solution as to bridge together three different types of servers: in-process, local and remote. The first real component technology came afterwards in a visual form, found in Visual Basic controls (VBXs). It was the perfect way of building small applications, but everything had a new perspective when the .NET framework appeared. This was the clear proof of Microsoft's orientation towards the internet.
The framework is a small piece of the .NET space, comprising the common language runtime (CLR), and frameworks (in the form of assemblies), and different other auxiliary tools . CLR is in fact an implementation of the CLI (Common Language Infrastructure), to which it has been added COM+ interoperability and some of Windows' services.
Microsoft's aim is to align different kind of services, such as stationery servers, mobile PC and specialized devices under a single framework. Their main targets are web services, server-client platform and developer platform . The .NET software components are represented by assemblies, set of files in a hierarchy, slightly compared to JAR files. This is the framework that includes the largest collection of frameworks. Windows forms, web forms, active server pages (ASP) .NET are just some of the templates provided .
5.4. Other perspectives
Besides the three standards and technologies discussed there are other approaches as well . This may include the Computer Associates' Advantage Plex, which is, in fact, a model-driven environment that aims for integration with many other platforms . The Hitachi Appgallery is an environment, similar with Visual Basic, due to its characteristic of supporting visual interfaces based on OLE objects. Furthermore, there is Groove Transceiver that also approaches the problem of an integrated collaboration group in which workspaces can contain hierarchical structures of folders .
5.5. A short comparison between the different wiring standards
Given the above technologies, some conclusions regarding their shared attributes or main differences can be drawn . The similarities between them mainly refer to encapsulation, dynamic polymorphism, interface inheritance and other binding mechanisms . All these characteristics undoubtedly encourage the use of the component based paradigm.
On the other hand, choosing one particular technology can be a tricky job, taking into consideration their different approaches. COM offers a good binary interfacing standard, whereas CORBA's particularity is represented by the source-level standards for compatibility and portability . Other important issue is memory management, and both Java and .NET manage this by performing garbage collection. Enterprise JavaBeans upgraded the concept of container-managed persistence, and none of the other technologies managed to keep up. Regarding the development environments, COM and Java would be the best solution. In the services department, there is a strong competition between COM and J2EE, whereas CORBA with its rich key services couldn't really find a commercial implementation for them .
Another important particularity is web services. Java has this facility in the form of JavaServerPages (JSP) and the .NET Framework as well, by using ASP.NET. CORBA does not have a designated component for this kind of service.
I chose the .NET Framework to perform my project mainly due to its large scale of services offered, and because of the use of the C# language, which in my opinion is easier to use than Java. My choice was also based on some previous experience using Microsoft's language.