Open Services Gateway initiative

OSGi


OSGi Authors: XebiaLabs Blog, RealWire News Distribution, Si Chen, Tad Anderson, Elizabeth White

Related Topics: Apache Web Server Journal, OSGi, SOA & WOA Magazine, Java Developer Magazine

Apache Web Server: Article

JavaOne 2008: A Day One Report From the Sessions

Java SE 6 and Java SE 7; SOA and Performance; SCA (Service Component Architecture); and a WebLogic Disappointment

DeCare Systems Ireland Blog

Java SE 6 and Java SE 7

My first technical session was about Java SE presented by Danny Coward from Sun. It was about the current situation of Java SE 6 and the roadmap to Java SE 7. The talk started with a few encouraging stats. For example, Java’s performance increased 220% between Java SE 5.0_04 and Java SE 6.0_05P. It’s always nice to hear this kind of good news.

One of the great news about Java is that it has a full open-source JDK now. Some parts of the JDK couldn’t be open-sourced due to licensing restrictions. And this situation prevented Java being distributed with Linux. But it seems like Sun finally found a solution (by shipping them in binary form I think). OpenJDK is now bundled with Ubuntu 8.04 (Hardy Heron). And apparently more to follow with RedHat and Fedora. Another interesting point about the OpenJDK project is that the project site doesn’t only host the JDK development. It hosts a bunch of other subprojects such as Closures for the Java Programming Language and VisualVM Troubleshooting Tool. Another exciting site to follow is the JDK 7 Project site, where you can find the weekly releases (source, binary and documentation) of JDK 7. You are also encouraged to review, contribute or simply leave feedback.

There are a few niceties that will be added to the language:

- Closures
- Strings in switch statements
- Enum comparisons
- Catching multiple exception types

Even though we mainly use Java to develop applications running in a JVM, there are places where a scripting language comes very handy. Currently, there are around 200 JVM languages (I even saw C# on the list, I have to check that). And, according to the stats, the dynamic languages languages are doing rather good:

- JavaScript is still the number one scripting language
- Ruby is the fastest growing
- 3Ps (Python, Perl and PHP) are still strong.

And Google App Engine will probably increase Python’s popularity slightly.

Pioneered by JRuby, Java SE 7 will contain more dynamic languages and engines such as JRuby, Jython, BeanShell and JavaFX. If you check the Da Vinci Machine Project, you’ll see that it’s all about extending the JVM with built-in architectural support for languages other than Java, especially dynamic languages.

Java SE has grown very large. Regarding the modularity and OSGi, there are plans to modularize the Java Runtime Environment (JRE) as well. I think the idea will be to use the JAM module system as the default module system implementation and the JAM file format as its distribution format. And there’s a new interoperability specification that was released a few weeks ago. It defines how to use OSGi bundles. It is planned to introduce “Profiles” into Java SE so that they become formal parts of the platform. For example for desktop applications one will need the “Desktop Profile”. Obviously, there are going to be optional packages as well. Summer 2009 is the expected release date of Java SE 7.

After a quick demo of VisualVM, Coward talked about Java SE 6 Update 10, the “Consumer JRE”. It comes with:

- Java Quick Starter
- Java Kernel
- JavaFX ready

- New Plugin Architecture

They are all noteworthy features and I really liked the new Plugin architecture. This gives the applets and JavaFX a bright future. Applets never took off, despite being the first publicly known aspect of Java more than 10 years ago. Browser incompatibilities, browser VMs among other reasons killed the applets. The old applets (it’s nice to be able to call them “old” now) ran in the browser VM, using its lifecycle and resources. However, in the new architecture, applets own a process. They can choose a VM to work with, they live outside the browser and they live beyond the browser. That’s why, the new architecture allows the user to tear an applet off a Web page and place it in her desktop. She can use the applet alongside the browser or she can close the browser and keep the applet running. She can also create a desktop shortcut for the applet in order to use it later independent of a browser process. I’m going to definitely play around with this as soon as I get a chance.

SOA and Performance
In the afternoon, Matthias Schorer from Fiducia IT AG talked about their SOA architecture and how they manage to get a throughput of 35 million transactions per day, a typical day being around 10 hours. If my notes don’t fail me, in Fiducia, they are responsible for 19% of the banking operations in Germany. They manage 101,000 PCs, 54 million bank accounts, billions of transactions every year, 780 cooperative banks, 31 banks over a 510 TB database.

Their core banking system contains around 2,500 services and 8,400 Java classes and interfaces distributed over 280 UNIX servers. For them SOA means the “Same Old Architecture” because they started to design services before SOA became an industry buzzword. Almost all of their services are non-Web-Service (the Big Web Services as RESTful camp would call them) services. They chose not to introduce extra layers in order to consume them internally. They use SOAP over HTTP when they need to open a service to the outside world.

It is good and relieving to see companies, such as Fiducia IT AG, talking about their pragmatic SOA architecture. It is important to demonstrate that the major idea behind SOA, the thing that one should get right, is the Service-Orientation. I remember, 2 years ago, on an online Java forum, I talked about creating a service-oriented architecture without Web Services. And you can probably imagine the big wave of reaction I got back. One doesn’t have to pay big bucks to an ESB vendor to have a solid SOA. Half of the job is to get the Service-Orientation right and the other half is organizational: responsibilities of the involved departments, coordinating their managers, having a cross-department solutions manager etc.

Fudacia IT AG have various front-end channels: Bank branches use a Swing-based rich GUI, Home Banking users use their browsers. They also have Self Service channels and Call Center channels. So they have various clients for their services, and they have channel-specific and channel-neutral services. One of the good design decisions that they made was to create component clusters (in SCA language those would correspond to Composites) and guarantee the transactional integrity within a cluster.

Fudacia run their SOA on a grid platform that they’ve built themselves. Furthermore, their system behaves like an ESB thanks to it’s event-driven nature (based on messages and queues). Their environment is not only distributed in a LAN, it is also geographically dispersed for security/safety reasons given the data that they manipulate. As they have numerous customers, they end up running different versions of their system, which adds more challenges. Their portal runs on more than 1,000 servers and they partitioned their data based on their customer ID. They implemented their messaging using Oracle Advanced Queue.

Some lessons learnt:
- They don’t keep data in the queues. Queues only contain pointers to the data stored in the database.
- They made sure that the pointers can be recreated if a queue fails.
- They monitor the grid. This visibility is very important therefore services have to be traceable.
- They used an event-driven approach
- They gave the priority on online transactions over batch transactions
- They distributed the transaction processing by creating chunks of the data file and sending the chunks to various queues.

The SEPA (Single Euro Payments Area) requirements posed a real challenge to their system: According to the SEAP, a payment file has to be processed the same day. The data exchange is based on UTF8-encoded XML files and somebody thought that it was alright to set a maximum limit of 10 million payments for a file. Schorer said that the biggest file they had encountered had a size of 70GB. Yuk!

They also discovered that JAXB worked much better than XMLBeans in terms of performance. And depending on the size of the XML transactions to be processed, they used StAX or SAX. Up to 100K they used StAX. After that, they used SAX.

SCA (Service Component Architecture)
I made a considerable effort to attend a few sessions about SCA (Service Component Architecture). Before JavaOne, I thought SCA was all fluff, buzzword-driven technology…

SCA is a specification and it is owned by OASIS. But it’s created by a group of vendors, including BEA, IBM, Oracle, SAP and others. That was enough to have alarm bells ringing in my head. I’m not saying that a committee of vendors of this size cannot innovate… But when you look at the current trends and technologies, they are mostly created by individual open-source or enterprise developers. These technologies work because they satisfy an actual need. Furthermore, because they’re needed by the developers to do a better job and not by the marketing guys to sell better. Do we really need SCA? Do we really need a component model for SOA? Time will tell but I think this is going nowhere; it is a failed attempt. Do I sound sceptical? Well I was. And after attending two sessions today (”The Best of Both Worlds with Java Business Integration and Service Component Architecture” and “SCA: Flexible and Agile Composition of Distributed Service-Oriented Architecture Applications”) I still remain unconvinced. But I’m going to download Apache Tuscany and I’m going to give it a try.

Disappointment Of The Day
When I saw the name of the session was “Event-Driven Service-Oriented Architecture on the Java Platform with OSGi and Spring”, I said “Excellent! This is probably going to be a good talk“. Well… I should have read the part that said “…The demonstration is on WebLogic Event Server…” more carefully when I looked at the session abstract. Because there was no OSGi and no Spring. It was all about how wonderful the WebLogic Event Server was. This was the disappointment of the day and JavaOne 2008 for me…

More Stories By Yagiz Erkan

Yagiz Erkan is lead Technical Architect, DeCare Systems Ireland, since 1998, and has over 10 years industry experience. He is also the development champion within the company and is responsible for guiding and directing the technical evolution of the software development processes at DSI. He manages an architectural group who ensure that the most up to date and suitable practices are utilized, leading to the delivery of high quality applications and solutions.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.