The speculation on the KDK is that it’s going to be Java based, and I hope that’s right. We know for sure that it runs Linux, and that there’s a JVM and obfuscated jars on the device. According to what I’ve read, there’s no perl or python or anything like that on it, so the only options will be C/C++ or Java. For the sake of the ecosystem, Amazon will need to pick Java and probably will run third-party code in a some kind of sandboxed environment.
To me the best thing about it being Java based is that I will finally have a JVM that I care about targeting. One of my big problems with Java is that there’s no place the JVM runs where something else doesn’t run better or that I just like more. For web apps, I prefer python based frameworks, and for Windows apps, you have to use .NET or Win32 with C/C++. On a Mac, Objective C is the obvious choice. Java is a good choice on a lot of mobile devices, but I haven’t cared about them, until now.
And the main reason I want a JVM to target is because it gives me a practical reason to use clojure. I know it might not work out, and of course, I’ll be writing Java at first to learn the API, but I’m hoping I can transition to clojure eventually, or at least use a hybrid.
In 2008, Rich Hickey came to speak in Northampton, and I prepared by learning and blogging about clojure for the 20 days preceding it. Since then, I’ve been on a lookout for a JVM that I wanted to target. The closest I’ve come is the Google AppEngine, but I still liked python and Django style better. It may turn out that the KDK just works better with Java, but clojure has shown that it’s pretty good at driving OO frameworks like Swing, so I think it will work just fine.