voip

Friday, June 30, 2006

What are the Major New Distributed Object Oriented Technologies?

J2EE and .net have become the new standards for Web/distributed programming and object-oriented systems. A Gartner report has projected that within a few years .net and J2EE will each have 40% of the distributed systems markets. It is assumed Corba (and perhaps C++ Web Services) would fall somewhere in the remaining 20%. J2EE is the Java platform now embraced by Sun, IBM/Websphere, Bea Weblogic (although Tuxedo C++ Web Services are still available), among many others. It comprises JSP for dynamic html views from the server side, servlets for control, and beans and EJB for business logic. Much recent work has gone into J2EE patterns (Core Patterns, [Alur 03], [Marinescu 02]), integratable open source (Apache Jakarta), and add-ons (JDO).
.net is the Microsoft platform supporting distributed programming and supporting Web Services. .net's primary programming language is C# (similar to Java and C++ with extensions), but also supports C++, Java, J#, and VB. .net's primary intention is to provide a strong integrated development environment (IDE) to facilitate rapid development in a distributed environment (Web Services). .net from Microsoft is platform dependent, although open source efforts are underway including mono and MS shared source. Both .net and J2EE support Web Services, the new SOAP standard for dynamic distributed systems.
Java Tiger release has improvements that will impact J2EE, such as AOP (a few implementations already exist), and also language addons including generics and an ongoing prototype compiler to prepare for the new facilities. While the first major upgrade for the Java language proper, the tiger metadata facility will be similar to .net's attributes, and may improve J2EE by not requiring 4 or 5 interfaces per EJB, which while usually generated by an IDE (integrated development environment) still require updating. Aspect-oriented programming (AOP) decorates object-oriented constructs with metadata, extending them for almost any purpose. JBOSS 4.0 shows the potential for AOP:
The Aspect-Oritented Programming architecture of JBoss 4.0 enables it to provide a wide range of services, including object persistence, caching, replication, acidity, remoteness, transactions and security. The framework allows developers to write plain Java objects and apply these enterprise-type services later on in the development cycle -- without changing a line of Java code. This new concept of programming provides a clean separation between the system architect and the application developer. The iterative development process becomes more fluid as architectural design decisions can be made later on in the development process without changing any of your Java code. Entirely unique among Java-based application servers today, this architecture combines the simplicity of standard Java with the power of J2EE.
JBoss 4.0 brings Aspect-Oriented technology to Java through a pure 100% Java interface. Base on the new JBoss.org project Javassist, JBoss-AOP allows you to apply interceptor technology and patterns to plain Java classes and Dynamic Proxies. It is important to perceive as technology changes, good architectures and designs are prepared for and welcome almost daily additions to available technology and even major changes to technology itself. Good object-oriented architecture and design patterns provide the best abstraction and information hiding facilities to easilty accommodate such changes. Examples include business delegates, session facades, service locators, and many more . [These architectural patterns are referenced by the free patterns resources available by logging in and participating in an Object FAQ survey]
Xdoclet provides another approach to metadata and generation of EJB-like facilities to POJOs (Plain Old Java Objects) with attribute-oriented programming.
OMG MDA MOF ([Kleppe 03], [Frankel 03])provides another approach to handling change, by providing the capability to generate some or all of an implementation from a design model. Now, this could include generating a J2EE implementation today, a .net implementation tomorrow (running on MS), both, a hacker's 2 tier implementation at some point, and then a J2EE AOP implementation sometime after without ever changing a single line of application code. Sun Ace provides a similar example of a mostly translational design, requiring only 224 lines of code (in addition to models) to completion by one programmer in one week (and not 6 months by a J2EE programmer, apparently without IDE) as opposed to 3,484 for .net and 14,273 for the standard J2EE Pet Store example. However, the FAQ author notes that the amount of IDE generated J2EE code from a modern IDE (IBM WSAD, Jbuilder, Jdeveloper, Sun ONE, etc.) is not specified. Steve Mellor's Executable UML describes an implementation of Executable UML called xtUml (executable translatable) using model compilers to translate design models to implementation. Kennedy Carter has another fullimplementation of xUML (and iUML), another OMG MOF implementation. See also Object FAQ OO CASE appendix, Full Execution.

0 Comments:

Post a Comment

<< Home