Linux vs Windows? Maybe a lesson here for Java vs Whatever
This blog entry by Marc Wagner was (at least for me) a slap to the forehead. We're all tired of the "Windows vs Linux" non-comparison and that's not my point in blogging his blog. Rather it's these three paragraphs, and the lesson they hold for Embedded Java:
Virtually anyone with a high school diploma and few hundred dollars can get certified in Windows server technology in a matter of weeks or months â€” while most people entrusted to administer an enterprise level UNIX/Linux server have a college degree and/or years of UNIX/Linux experience.
How is this possible? By deciding to favor 'simplicity of use' over 'simplicity of design' Microsoft has leveraged the low cost of commodity hardware to produce cost-competitive software which is complex in design but easy to use. The result is inefficient (and sometimes bug-laden) software running on over-powered hardware. Throw in affordable training and certification programs and Microsoft has a winning combination.
For the small business, where scalability is not an issue but human resource are, the inefficiencies don't matter because the overriding factor is the up-front cost of the system and the cost of hiring someone with the minimal experience necessary to take care of the system.
Doh! This immediately made me think of how tired I get at trade shows answering the question "why should I use Java over C/C++" for the 500th time that day. I think Java is the best news since C came along 30 years ago -- you can read my opinions elsewhere. I just expect it to be obvious to everyone else, like it is to me. But the reality is that about 10% of the people I meet at a non-Java event "get it" about why Java is "better". The other 90% don't. And of those 90%, 20% tell me they want to keep hand-coding in assembler -- at which point I stop trying to persuade them, wish them luck, offer them a data sheet, and ask them to keep us in mind if they ever want to increase their productivity by 500% or so.
So if Java is so great why is there relatively little uptake in the embedded space? Java, for many people, especially beginners, is just too hard to use. Just installing and configuring all the tools, classpaths, environment settings, etc takes a while and can have you pulling out your hair. There is no equivalent to a "pop in a single CD and go", at least in my experience. It's the same reason stated by Marc: Microsoft has leveraged the low cost of commodity hardware to produce cost-competitive software which is complex in design but easy to use. The result is inefficient (and sometimes bug-laden) software running on over-powered hardware. Throw in affordable training and certification programs and Microsoft has a winning combination.
I don't want to end on a "downer" note, so where is the silver lining if any? I don't know if embedded Java will ever hit the "big time", (or if Linux will, either). But I'm increasingly persuaded that as developers, anything we can do to make Java easier to install and use will be a winner. We don't need more techno-features -- Java is already light years ahead of C/C++. We need an image improvement, and we need to be more accessible and easier to use.
The other recipe for success might be this: don't waste your time going head to head with stable, legacy apps. There's little to be gained by re-writing things which already work well, in Java, just so that, well... they're written in Java. Rather, find places where the status quo is not working well, and a modern, object oriented language like Java could bring things out of the Dark Ages into modernity. Then come up with an easy-to-use application of Java which will be the 'knight on a white horse' to those users.