Whither Java on the Desktop?

[Symon running on the Desktop]

A little while ago I wrote the 6502 simulator pictured above, Symon, and released it as open source software. I wrote it because I was developing a small 6502 computer, and wanted a simulator that matched the hardware’s memory map. I’ve always been interested in learning more about simulation, so it was a natural project for me to gravitate to. I’ve enjoyed working on it tremendously, but there is only one problem: I wrote it in Java.

Java is undergoing what seems to me to be a crisis of public opinion. The news is full of stories about another critical vulnerability, and vendors are rushing to disable Java in browsers by default. Users are being told to turn off Java wherever unless they really need it.

So why did I choose Java in the first place? For several reasons. First, I started this project a couple of years ago. When I first set out to write the emulator in 2008, Java was still owned by Sun Microsystems, still enjoyed widespread popularity, and wasn’t yet considered as much of a security risk. Second, Java was a language that I knew extremely well, having worked on many Java projects in the past. I started writing Java in 1997, and it was the primary language used in my day job straight through 2007, so it was quite natural for me to fall back on it. Third, and maybe most importantly, I very much wanted Symon to be fully cross-platform. Although I use a Mac with OS X as my main system, I also have a Linux laptop and a Windows 7 PC that I spend quite a bit of time on. It was important to me that I’d be able to use Symon on all three platforms. Java gave me that feature for free.

But with the latest goings-on in the world of Java on the desktop, I have to wonder, will Java even have a viable consumer desktop runtime in the near future? Sure, it has tremendous support on mobile thanks to Android, and its position in the server market is assured after a decade and a half of Java as a web platform, but it never gained the kind of wide-spread support on the desktop that it has on the server. With more bad news coming out and more end users disabling Java how will people run Symon?

I feel like I’m left with a couple of options.

  1. Ignore the problems. Just keep updating the Java Symon code, and let things fall where they may.
  2. Give up multi-platform. Port Symon to a native OS X Cocoa version, and accept the fact that I won’t be able to run the code on Windows or Linux.
  3. Find a new multi-platform runtime. But which one? Mono, an ecosystem that I know nothing about?

None of these is ideal. The easiest for me to do, of course, is the first, and this is likely what I will do for a while at least. But if my instincts are right, and Java has a very limited lifetime on the desktop, I’ll have to pick one of the other two not too long from now.

One thought on “Whither Java on the Desktop?”

  1. Yes! I am in the exact same boat for the same reasons. I wrote all those applet games in 2005, and then it turns out that Java on desktop sucks. Some of my thinking:

    #1- realistically, today’s cross platform apps have to run in the browser with no plugin requirements. Flash is on the way out, so we can’t even use that. Fortunately, V8 is very fast and cross-browser headaches are declining, although still a reality. The only awful thing IMO is the DOM API and of course JavaScript, which I loathe. GWT is a way to target this platform using Java, although it’s crappy so far and I wouldn’t wish it on my worst enemy.

    I also think the browser is the best choice even with its warts because it’s the best way for users to trust your software. Asking users to do a native install is going to limit your audience otherwise. (One day desktop OS’s might have an Android-like app permissions model, but OSX, Windows, and even Linux basically make no effort at this right now.)

    #2 – there is a successful cross platform desktop Java program: Eclipse. It might be interesting to investigate how their app packaging stuff works. It won’t fix the slow startup time nor the fact that you’re asking the user to do a native install, but it might ease your burden if you must package your app for native desktop OSs.

    #3 – since you’re doing a personal project, and since your audience for this work will likely be small and enthusiastic, it’s probably most practical to just plow ahead with Java. People will follow your installation instructions if they want it badly enough, which they probably will. While desktop Java may get more annoying and less common, I don’t think it will literally vanish. The web world needs JVMs to run on Intel, so as long as that’s true your app has a future even if it means packaging the JRE with your app like Eclipse does. JavaSoft hasn’t removed AWT in 18 years, so they probably won’t for another 20 🙂

    Let me know what you decide!

Comments are closed.