Java and the Windows 8 Metroverse

After watching and re-watching the Windows 8 keynote, I kicked off a download (still in progress, damn u 512Kbps) to get the 32bit ISO so I can try out the software for myself. During this time of waiting and dreaming of what to build to test the platform, I’ve been considering our beloved Java, particularly JavaSE and where it fits in with the bold re-imagining of Windows.

In watching the keynote and seeing all the application and platform improvements demonstrated, Microsoft seem to be pushing the new “app” agenda similar to what iOS and Andriod are propagating , i.e. we don’t only need to have a “website” for a company product, we also need to have a mobile or desktop application to support that website and consume data via web services. Examples can be seen in the various Photo and RSS applications demoed in the keynote. That being said, Microsoft, Apple and Google all seem to be pushing for re-investment in “desktop” (including mobile desktop) application development, and the tools all seems to point to that fact.

Java Desktop application development has all but dwindled in the past year and the strongest applications are currently in house applications or IDEs like Netbeans. Most other general consumer applications are all but non-existent and the webosphere  is seeing less and less talk of Java Desktop development. Coupled with this, is the fact that Oracle’s new moves to make JavaFX the new standard for Java App and Applet development seems to be taking longer than expected. Hopefully, JavaOne 2011 might change all that.

The big question now is where does JavaSE fit in all this bold re-imagining? Oracle/Sun have done a great deal of work over the past few years to get Java to work pretty well on Windows and become as natively integrated as possible, but with the re-working of Windows, Java will be confined to the “legacy” application section for the time being, and will not be able to play with the new cool kids in the “Metroverse”. I wonder what steps Oracle  is going to take to make Java still a viable product in the new Windows 8 platform, or will they simple give up and require us all to move to platform specific programming again, like C#?

I particularly love Java because of the cross platform nature, but I personally fear I may just need to completely hang up my Java Desktop development boots completely in the near future in favour Visual Studio and HTML5.  Perhaps moving forward, we may just need to completely write off Java as a consumer desktop application development language and stick to using it primarily for server side developments. After all, PHP has had that as its primary focus is is doing pretty well there, and there are now pretty strong contenders for Java Web App development in the form of the Play Framework and others like it.

This is all too soon to call, but the battle may already have been lost. Java in my opinion is beginning to have an identity crisis: it is extremely powerful and useful but I personally struggling to know what to build with it these days.

Advertisements

23 thoughts on “Java and the Windows 8 Metroverse

  1. As a full time Java programmer (in house desktop app), you are really bringing me down. I think you may be right, but I hope Oracle has a plan to take JavaSE into metro.

    I hate the idea of working on horse buggies as model A’s are driving by. I better update my resume!

    1. I’m also developing applications in Java SE and I have therefore tested the Windows 8 Developer Preview.

      First, Oracle should under all circumstances make Java SE compatible with the new platforms like tables, macbooks and metro to keep their concept intact – OR – find a way to easily let Java SE applications run as “apps-likes” under another Java distribution made specificly to these platforms.

      Second, Metro is nothing more (or less) than a simple “start-web-page”. Windows 8 is very similar to Windows 7, with program and filesystem seperated – where android and apple are more likely to melt these two things together. Therefore I doesn’t like andorid and apple as their operationsystem are defining the limitations. Some people would call that user-friendliness, I partially agree with that.

      I believe that Windows 8 Metro will be an extension to their current desktop on traditional computers, but not a future replacement making the desktop legacy – and we won’t see anything like this within the next 10 years. But Windows 8 Metro will be the beginning of web and computers melting together – and this will eventually make the desktop computer look more like a tablet – and a tablet will look more like a desktop computer – and that will happen!

  2. Funny you should write this. I was thinking about the same thing just a couple of hours ago when looking at some slides about Win 8. IMO it makes Oracle look really stupid for suing Google over Java. While Oracle wasn’t going to get direct money from licensing Android has proven to be a boom for the Java syntax at least. Work with Google on tooling…maybe sell more advanced developer tools. Work on server products to provide good client server integration for Android.

    If Oracle kills Android now they go a long ways towards killing Java as well. It has no place on Windows 8. And MS is working to gain status with younger devs with their metro app platform. They won’t stop there and will try to draw them into a full client server stack and cut off new blood for Java. Oracle had better learn to embrace Android, Scala, Groovy etc. or else they’ll find that their purchase of Sun in terms of Java is a total waste.

    1. Very interesting points, and Oracle certainly needs to sit up and deliver some good changes to the platform by summer 2012 if they want have any traction with the younger developer generation.

  3. Desktop Java is dead for all but very niche applications. Excellence in UI is par for the course now and it’s very hard to do it in Java. At BUILD, Microsoft was harping on “pride in craftsmanship”. That’s code for “do what the Apple developers are doing”. Sweating every pixel and agonizing over every unnecessary click.

    If you want cross-platform, native app development there’s really no option any more. Lowest common denominator apps are getting roasted. You can’t use Java, you can’t use C#/Mono, you can’t use Adobe Air, Qt/GTK, etc.

    It’s depressing but the best cross-platform options now are to write the core in C/C++ and the UI in whatever tool is used by your targets, e.g., Objective-C on Mac/iOS, C++ or C# on Windows, Java on Android, etc.

    1. I do agree with you on many points, but I don’t believe slick and awesome UI are all that hard to achieve in Java. I’ve never run a comparison or benchmark, but I do believe the amount of time it will take you to get a good UI up and running in Java compared to HTML/CSS (coding from scratch in both cases), is pretty similar. I would say the tooling for semantic UI development is better and certainly easier, but the final output can look just as crisp in both cases.

      That is all based on my personal experience though.

      1. The proof is in the pudding. It’s almost impossible to find beautiful Java desktop apps. The only ones I’ve ever seen were done on OS/X using the (now defunct) Java/Cocoa bridge. That’s not coincidental.

      2. @Ted Wise
        Beauty is in the eye of the beholder, I suppose… but I find Jetbrains’ Java desktop products to be beautiful, as well as some by Syntevo. But I guess I am mainly into functional beauty.

  4. “I personally struggling to know what to build with it these days”

    How about: web applications, server-side applications, distributed applications, mobile applications, in-house client-side applications, set-top box client-side applications, cross-compiled applications?

    1. If you take time to follow this blog, you will notice I’m more into PHP/HTML/JS at the moment so most of the applications you mentioned above can be built using those technologies (just like Microsoft envisioned). I’ve built a whole golfing application running on PHP/HTML/JS and powered by Node.js for sockets.

      The only thing Java currently is seriously good for IMO is “cross-compiled applications”, even there, currently my first inclination is to head for PHP so everything is server side, with AJAX on the client side which can be run independently of OS via a browser. Even Java’s EE stack way too bloated and has too high a learning curve for me personally.

      Java is seriously good and I love it for many reasons, but once again, I say confidently, I’m struggling to know what to build with it these days.

      1. Ah sorry I didn’t realize you’re mostly into PHP/HTML/etc. I just bumped into your blog! 🙂

        Anyway, the types of applications I enumerated are not possible to be built reliably and with the quality you would get from a platform such as J2EE. And certain environments I have worked for (e.g. finance), would never use PHP to do trading or anything performance oriented. And it’s not just performance, the tooling is just unbelievably vast and productive.

        There are other examples as well in the areas I mentioned:

        Web applications: In online banking apps you normally see Java/.NET GUIs.
        Server-side: High availability backends (e.g. FB, Twitter, Ebay, Amazon) all use Java
        Distributed: A lot of cluster/compute nodes use Java (including IBM’s Watson)
        Mobile: Java for Android development (#1 platform in sales currently)
        In-house client side: You can select Java if you have to support multiple OSes
        Set-top boxes: Either WinCE (yuk?) or Java at the moment

      2. If you will notice, I’m more concerned about Desktop Java than anything else on this blog post. I don’t disagree that enterprise and server side Java are scalable and robust than PHP but client side is facing such a huge and stiff competition at the moment.

        I’m only calling Oracle to attention on the fact that, Microsoft are re-imagining what the desktop should look like, and unfortunately, Java has less of place on it than before. If nothing is done in the next year or two, things might not look so good for Java Desktop.

  5. Oracle have to come with something soon. Im sure they will announce that your JavaFX app will work on Win32, Winrt(metro), GTK/Linux and Mac OS X.

    Windows 8,9,10,11,12 etc will still support Win32 cause there are tons of enterpriseand desktop apps made for that also the .Net with WPF/Winforms/MFC peeps are huge, Metro apps looks is targeted for Tablets and phones at the moment. Of course WinRT is the future of Windows but it will take a long time to port all to WinRT as it was with apple with Carbon to Cocoa, If I remember it took like 10 years to do all that and still around some carbon apps.

    I will say this, Java the killer feature is the cross platform and dont worry it will continue to be for a long time, Oracle will announce Im sure that JavaFX and Java2D/Swing will render or target also WinRT and Metro Look and Feel. Its a new platform they have to support now as GTK, Mac OS X etc. No biggie guys calm down.

    Cheers.

    1. We’ll wait and see what will be announced at JavaOne in the coming week. Maybe Oracle just might be able to have Java 8 ship just before or after Windows 8 in 2012 with full WinRT support.

  6. Im thinking more about this Francis and I went to check JavaFX2 and JavaFX 2.0 features a new fully hardware accelerated pipeline (project name “Prism”) that targets DirectX on Windows platforms (both 32 and 64 bit) and OpenGL on other systems as said in their website.

    The important here is that Targets Direct3D on Windows already and WinRT is based on those technologies so JavaFX it have already figured how to render in this platform so Now it just need a couple of things more, for example, they can implement in a short of time The windowing stuff, Touch and others things in a new module using WinRT, WinRT is Native COM C++ behind the scenes, Many languages will follow this approach to integrate to WinRT. Also with CSS define a new Metro Look and Feel for JavaFX2. I think Oracle will decide that Swing/Java2D will stay for Win32 and Legacy and JavaFX2 for the future( WinRT(Metro), GTK on Linux and Cocoa.

    As you said lets wait and see.

  7. I am not a Java developer. I have converted my desktop PC to Windows 8 and have not been able to make Java run in either Firefox or IE. I don’t know why they don’t work, but I’m surprised by how little I’m noticing it.

      1. I did install that – it tells me that it has installed OK, but no Java will run and the Java checker just keeps spinning.

  8. All java applets give the same error message ‘ClassNotFoundException’. It thinks it installs, but the computer thinks it hasn’t.

  9. Just came across this post through a related Search. I’m not a Java expert. I’m installing PROCESSING on my Windows8 machine which, of course, needs to be installed as a desktop application ( and not as a WinRT app ). But I’m pretty sure Processing Development Environment is written in Java, or at least it was before this 2.0 beta I just installed. That MAY be a starting point to you guys if you’re interested in something that is Java based and running in Desktop mode in Windows 8, if that helps…

Comments are closed.