In such a scenario there are not often you have a single language that best fits all purpose for which you are writing an application – for example if you want write a piece of code that needs to provide best performance I would probably choose Assembler or C as a primary language as opposed to COBOL or Java (well, in my opinion) and If I had to write certain business rules or implement a business function quickly I would probably opt for Java or a scripting language.
In essence what am getting to is there will always be a set of 'hybrid' applications written in multiple languages – composite set of applications and often requiring different environments to run them. A Java applications would require a Java EE environment such as WebSphere Application Server, and a C or other applications would require a different non-Java container environment such as TXSeries for Multiplatforms.
And here is where IBM can help you, IBM WebSphere eXtended Transaction Runtime or WXTR in short provides a single platform and environment to host these composite set of applications. Yes, it means you can run a COBOL application in a Java EE environment such as WebSphere Application Server.
Without this unified environment, it would be difficult to manage the composite set of applications as quite often it would require different methods to manage such applications in different environments. For example, system administration, monitoring, application development/deployment, experiences are quite varied across different application environment. One would end up having to acquire different skills to manage these environments. WXTR on the other hand tries to bring across all such differentiations in to a single methodology based on the Java EE infrastructure to manage composite set of applications such as Java EE, COBOL and C language.
One of the key requirements in satisfying a unified experience of managing a composite set of application is to provide transactional capability. By this I mean a piece of code written in Java and a piece of code written COBOL or C should all be executed or part of the same Logical Unit of Work or 2PC (Yes! now am talking transactions)... or atomic in nature. With this you can simply extend an existing COBOL business logic and add new functions in Java but still execute them in the same transaction. For example, if your existing COBOL or C applications are managing a 'Order a Cheese' store where customers order and inquire the cheese that they want to buy – you can extend this store by providing discounts or voucher redemption by putting the logic in Java and all this without affecting your existing applications. It is not that you must write new business logics in Java... it just provides an increased spectrum of choice in which you choose to write the new business logics, and are not always restricted to be writing in the language that the original 'Order a Cheese' store was written. It provides tremendous flexibility for organizations who can better mange the skills that they have and keep improving their services by upgrading the application requirements quickly.
The transactional capability that am talking about to in a composite set of applications is provided by IBM WebSphere eXtended Transaction Runtime V2.1 that is made generally available on June 2012. The global transaction support capability that is brought in allows a transaction to span across a Java EE application on to a COBOL or C application. WebSphere Application Server which is a pre-requisite for WXTR would be the transaction coordinator for all your applications, effectively providing a single transaction manager for managing your composite set of applications. Now how easy this feels for an application developer who can just focus on building applications irrespective of the language that they are going to write on. You can have an EJB that can work with the resources such as database and call in to a COBOL or C programs which continues to work on the same resource as part of the same transaction.
In my next article I would want to demonstrate how WXTR helps in building transactions across the composite set of applications. In the mean time let me know if you have any comments or share your thoughts....