What is happening to Java, and why do you need to know?

Well, this last month has not been the best of all times for the Java community.  Oracle, which has acquired Sun Microsystems a while ago finally began to work on its new and most important asset: Java.

Oracle, in many ways is very similar to Apple. They have a working strategy for their products, and they hold on to it. Whether or not you like it, they are good at making it work, and they make lots of money. Without a doubt, their product is good. Both Apple and Oracle provide solutions which are leaders in their domain. You’ll always find others claiming to do better, but you’ll rarely see them defeated in their main line of business.

My view of Oracle has always been that they are an enterprise computing vendor. They operate at large scale, and you do not see them trying to address the small vendor or user. Sure, they’ve done a lot to provide solutions to smaller vendors and consumers, but most of the time, they  are not the first name that pops into your mind if you are looking for a small, and especially low cost solution.

I’ve got no intention of bashing Oracle here, after all it is their business model, and if I were to work for Oracle as a CEO (yeah, I can see that happening any day..) I would not have strong arguments for moving away from their current strategy.

However, now that Java is apparently being integrated into their existing strategy,  everybody who has invested into this technology, or anyone who is planning to invest in it need to see the ongoing process very clearly. Oracle has recently made its intention about charging for Java Virtual Machine public. They’ve announced that there will be a pro/enterprise/whatever_you_call_it version of Java, with extra features. Those extra features are likely to be related to Oracle products, namely Oracle database servers, and some other Oracle middleware. Needless to say, if you’re not interested in Oracle’s offerings, you won’t care about these features. Oracle will surely do its best to make this JVM as stable as possible, so even if you’re not interested in other features, you’d still like to run your applications on the best JVM out there.

For that, you’ll have to pay Oracle. This is a huge, huge, change in the way things have been so far. You could download a rock solid operating systems, you could download the very same Java Virtual Machine that everybody else is using, and enjoy the same mature technology with everyone else, without paying a single dime. You could have stability, maturity, and scalability, and you would not hate to pay a dime. When Oracle begins charging for JVM, this will not be possible anymore.

If you do not want to pay, you’ll have to use Open JDK, an open source version of the Java Virtual Machine, which was released by Sun Microsystems, after  Sun promised to make Java open source.

At the moment, the most significant announcement regarding this free option came from IBM. IBM announced that they’ll be focusing on Open JDK. It makes a lot of sense, since IBM has a very large investment in Java. They have  lots of enterprise products using Java, and they have the huge Eclipse ecosystem, which is completely built on top of Java.

Oracle has already announced IBM’s commitment into Open JDK as loud as they can, since they want to ensure a very large community that Java is not going to be a completely proprietary product. There is a huge ecosystem around Java. It has been the number 1 language in academia both for teaching and research purposes, and there are lots of open source frameworks, and many companies who use these frameworks to develop commercial solutions. Java has been a big choice for cloud too, with both cloud infrastructure and cloud APIs offered in Java. Naturally, beginning to charge for something which has powered a huge software base for free for ages would not be an insignificant move. Oracle knows this, so they are pointing towards a free option backed by IBM and Google, and possibly others.

IBM has always managed to use open source in a way that would allow them to make money out of it. They’ve always had a great relationship with Apache Software Foundation for example, where they’ve provided resources for some key projects, and used the resulting code in their commercial products. They’ve chosen a model that works better for the  parties who do not want to pay for Java licences. However, in supporting Open JDK, they are actually ending a long term relationship with Apache Foundation around Harmony. Harmony is the open source JVM developed by Apache Software Foundation, into which IBM has put resources in the past, and if I’m not mistaken, they’ve used the results in their products and/or solutions. Oracle however simply did not let Harmony get branded as a Java standards compatible JVM. They simply did not let the process go forward, with no explanation, at least I did not come across one.

So IBM announced it will play along with Oracle and focus on Open JDK. By doing that, in a way they choose to have greater control over the open Java Virtual Machine space, since investing in Harmony would mean an obligation to listen when Apache Software Foundation talks. Or this is the way I interpret their move. Oracle ended up happy, since they managed to point towards a free option with backing from names like IBM and Google, and IBM and possibly Google ended up happy, since they’ll still have an open codebase which they can use in their own business models, in the way they’ve done so far.

Again, I can not blame IBM for their choice, but this does not mean I’m happy about it either. The problem is, Open JDK, even if it has the same codebase with the actual Sun Microsystems JVM, has not been a major choice for Java projects in the past. We all used the Sun JVM all the time, because it was being used and therefore tested by a very large community.  I can’t see the same kind of maturity in Open JDK, and even if IBM backs it up, I will have serious doubts about its scalability, reliability etc.

Inevitably, this will lead to issues in the Java space in the near future. Until Open JDK reaches a certain maturity, investing in Java will mean that someone will have to pay money at one point, if the application makes it to enterprise scale.

This does not work too well for the things I’ve been doing. I simply had the option of putting together a set of components which would go all the way up to cloud level scalability, without paying anything at all for software licences. When this situation changes, people like me, trying to do serious work with Java, will not feel as safe as they used to feel with their choice of technology. For tooling and non-enterprise uses, Open JDK can easily be an option, but if you want me to run Hadoop (a cloud storage and processing engine in Java), I’d rather run it on Sun JVM, at least for some time from now on.

The only assurance I can see for the Java community who’d like to have the same advantages we have now, is that Java is now too big to kill. There are a lot of opportunities around the open source JVMs, that at one point one large vendor or another would step up and support it to create, sustain and grow the open source model that has been very successful for many cases in the past.

Oracle’s control over is going to be an issue though. If they repeat the same thing they’ve done with Apache Software  Foundation’s Harmony project, we’ll either have to use non certified Java Virtual Machines, or we’ll have to live by the choices Oracle approves. Due to its size, Java still has enough gravity to keep us around it, but we’ll have some muddy times ahead.

Web based tooling for openEHR

The web is swallowing everything in the software world. Everything from accounting applications to clinical apps are turning into web applications. The trend is there, and it is so strong, that betting on emergence of a web based application for pretty much anything is possible now.

You think that there are many things for which you can say “that’d never be a web app”? Think again. Sure, it is taking some time, but the trend is very strong.

The reason behind this is one of the most costly aspects of software life cycle:  deployment & maintenance. Maintenance usually includes repeated deployments, so I’ve joined these phases.  If you develop any product, you’ll see that issues around deployment and maintenance is taking a huge amount of your time, and therefore costing you a lot. The cost is so great, that pushing applications to web, even with considerable limitations is paying off for the vendors.

In doing this, vendors are aiming for even lower costs by investing into certain web technologies, since the web based application domain is much more fragmented than a first comer would expect. For many solutions javascript + HTML is enough. It is a good combination, especially if you’re interested in the mobile extensions. Personally, I think javascript + HTML is introducing a significant cost into software development for the web. Due to nature of the development process with these technologies, you will have a higher alternative cost in many cases, usually without noticing it. There is hope for this combination though, but I’d give it at least 3 years before we can carry the mature practices of other technologies into this space. This is a big topic, so I won’t go into it in depth here.

Now an interesting question is: what would happen if we move some key tooling in EHR domain into web. I’m talking about modelling tools like archetype & template designers & editors, and more. Personally I think this is a good idea. The problem (at least for me) is: I have some evil plans for very capable user interfaces for next generation of these tools, and I want to use proper tooling platforms for creating them.

My tooling platform is Eclipse, everyone who has worked with me longer than a week knows that. Eclipse is great, but in terms of UI technology, its various limitations worry me. Yes, people have build lots of complex tools with Eclipse, but I still want more power for UI layer, and I still want to keep the framework’s good bits.  On top of all of that, I want to extend my tooling to the web. Now this is pushing the limits of technology we have. I can always develop solutions to problems I encounter on the way, but it is too expensive to do so! I’d rather see these concerns incorporated into my framework of choice.

Eclipse  people have been following trends, and they have been hearing about this kind of issues for quite some time now. So the next generation of the framework, E4, is going to be a huge jump forward in terms of its architecture. The whole tooling concept matured in Eclipse is going to move forward with web rendering support. This means running the tooling framework in the browser. Needless to say, this will be a big, big step forward. Eclipse is targeting Flash runtime as its web front end. And silently, this is proving all my points about the limits of HTML, even with HTML 5.  I’ve not had the time to look into documents in depth, but I guess it won’t be hard for others to plug silverlight rendering engines, or even HTML 5 rendering to E4 architecture, in the future.

For the moment, Flash is certainly the right choice. First of all, Flash player 9, has a huge installation base. The current player version is 10, but version 9, released in 2006, has managed to find its way into almost all desktop computers, even the ones in slow changing corporate & enterprise setups.

I can’t emphasize the importance of this enough. You’ll find alternatives like Silverlight and JavaJX out there, but JavaFX requires Java runtime 6.13 or later (or something like that) and Silverlight requires its own plugin installed. I also don’t see Silverlight taking off in  non-MS platforms (another long discussion I’d like to avoid for now) Flash is simply out there (imagine X-Files  intro playing  at the background)

Now if you put together all the things I want for openEHR tooling: Eclipse + Nice & capable UI + Web enablement + easy deployment (drums rolling…)

The answer is Eclipse + Flash integration with current technology (possible) and migration to E4 in two-three years or so.  I’ve also been looking into other technologies to support Eclipse’s UI layer, namely the QT framework, but that locks me into desktop space.

I have a feeling that an early entry into web based tooling will become a huge advantage in 5 years or so. If I invest into desktop technologies too heavily now, I’ll probably get stuck in it. The fact that everyone learns after their first 10 years in software business is: products & business models get stuck into whatever founding technology & architecture they are build on. It is incredibly hard to re-write products, or jump into other domains like distributed architectures, or web based applications.  So not giving up on power we need, but investing into desktop technologies that has a link to web is the critical strategy. CKM on its own is a success story, but its advantages in terms of collaboration is slightly masking its other benefits around the issues I’ve listed above. CKM does not build models, it only helps keep track of their evolution. Why not move the rest of the clinical tooling into this space? Archetype editor? Even the IHTSDO workbench. We either have the necessary technology now, or it will be there in almost a couple of years.

You see, just because of this vision only, Eclipse is worth investing into. Of course I need to take a better look into docs for E4, because my assumption is, I’ll be able to merge the complex Flash based GUIs in Eclipse I’ll be building soon, into emerging architecture in the future. If that assumption is wrong, I’ll have to reconsider some things, but architecture wise, I can’t see it being very hard.

So, this whole thing is about a trend, where not only end users, but also more technical communities begin to migrate to web. The technology is emerging, and cost argument is valid for everyone. Today, I believe Flash (Flex framework running on top of it) is the right choice for this. In 5 years or so, I expect Adobe to provide tools that’ll simply keep everything same, but render to HTML5 instead of Flash runtime. I’ll be betting on that.

So here I go, and announce my vision for openEHR tooling (heroic, but also emotional strings at the background): an Eclipse based framework, that will become web  enabled  in two years or so. I’ve managed to put together a large amount of work in many technologies to enable this, and very slowly, I’m binding them together. Let’s see how it goes.

Good bye Google Chrome

When Google announced Chrome, I was excited, especially due to performance advantages. Those advantages still exist as of today, and Firefox is becoming more of a bloated software, or at least it feels that way. For a while, Chrome has been my primary browser, since its performance is really good.

However, I realized that I can’t simply accept the usage of tabs in Chrome. It forces you to go through all tabs from left to right, and that is simply horrible for someone like me, who works with 30+ tabs regularly. There are no proper tab plugins to provide the kind of functionality that is provided by tabmix plus. Also there are minor but annoying problems in various web sites, some of which actually stopped me from buying stuff online.

So Chrome is gone for the moment, and I’m back to my old browser: Firefox. I’ll miss the performance, but it simply does not suit my usage, and it does not provide the necessary customization options.

Microsoft leaving HIS market!

Wow! I do not know how I should feel about this. Heather Leslie of Ocean Informatics wrote on Twitter that MS is leaving the HIS market, and as you can read here, it is true.

Now I’ve written about Amalga more than 2 years ago,  and I was excited about what it may become. I was hoping that with support and competition from Microsoft, the hospital information system business would go forward. Competition in this kind of very high cost markets is important, and only actors with lots of resources can push this kind of competition.

It appears Microsoft was not big enough! I’ve always felt that it was almost impossible to sustain a business model with a HIS product, and solutions in HIS market would survive only if they reach a really large scale. Reaching that scale is very hard on the other hand, since HIS software is no small piece of software, and its entry into a new hospital always takes a lot of effort in every way you can imagine.

It appears the amount of difficulty I kept observing in HIS business was not overestimated. Microsoft has sold lots of products with no profits at all. They have been selling xbox consoles for years now, and I’m not sure they started making profit in that market, but they still push it for the future value.

They won’t be doing this for HIS market. This is a very important sign for many stakeholders. If MS can’t dare to scale up its operation in such a well known domain, what does it tell you?

What it tells me is: do not attempt to build healthcare IT products with large scope. The cost of creating such products is incredibly high, and it can easily take you down. Everybody has a lot to gain from building smaller, well connected, specialized solutions. Clinicians, software developers, and even patients. Microsoft’s exit from HIS market is not the only sign. CSC having lots of trouble in delivering Lorenzo in UK, NHS slowly walking away from the idea of big contracts for the whole country..

These are the signs that show that gigantic, magical all in one solutions are simply not affordable, not for UK government, not for MS. So what makes you think you can afford it?

Instead we need to focus on systems using the agreed, open standards, specializing in various clinical domains, but sharing information to help with the whole operation of healthcare services. HIS market is way too expensive for newcomers, and even the well established players are having trouble in addressing the needs of customers. It looks more and more like airline industry: economies of scale with thin profit margins, with survival depending on addressing as many customers as possible.

I can’t claim, with full confidence that the future of health services lies in small web based applications, but there is certainly enough signs to claim that the market is going to give this approach a try.