Tag Archives: javafx

JavaFX Must be a Joke

More than 3 years ago, I wrote the post “Has JavaFX a Strategy?” saying:

Don’t you think that the fastest way to spread the JavaFX adoption is allowing the improvement of existing applications? Why to spend a lot of resources to drag an applet from the browser to the desktop if we need the network anyway?

At that time, JavaFX Script was the only alternative to develop richer Java desktop applications. Guess what Oracle did right after Sun’s acquisition: they stopped evolving a pretty stupid new language which looked more like Json, which is designed for data; migrated the whole thing to a new Java library; and allowed the integration with legacy code (i.e. Swing applications). If they didn’t get inspired by my old blog post, then they just followed the sane common sense.

Meanwhile, Adobe gave up Flex and Microsoft gave up Silverlight. Strangely, Oracle kept insisting on JavaFX. We can see a lot of JavaFX demos out there, but not so much production-ready apps.  That’s a shame after all these years. The single example I have of a real world application is from a Belgian company called Health Connect. That’s all! Anybody else?! JavaFX evangelists would give a lot of confidence to Java developers if they promoted JavaFX applications in production. We have the impression that those evangelists are paid to have fun. This is really unexpected from Oracle, which looks like a very serious company. Take the example of Apple. They are very efficient on that. Every time they present their gadgets they also present outstanding apps developed for that device. It definitively makes developers excited!

Fake announcement of JavaFX for
the mobile world in 2009.  Since then
zero apps shipped so far!

I was about to be excited when Oracle announced JavaFX running on OS6 with an app called JavaFX Ensemble, but when I realised that the goal of the app was simply to add more demos to the shelf, I got immediately frustrated 🙁 Is it so difficult to convince a company out there to write a useful app in JavaFX and make it available on OS6?! Come on! We are tired of demos! In fact, this “alpha” project is not enough to convince us that Java is going mobile. In my previous post I made the following prediction:

“… in 3 or 4 years there will be no Java on devices, and the development community will have enough knowledge to live with that. Therefore, Java will be basically a server-side technology.”

Now, let’s imagine that JavaFX is a great technology and everybody is adopting it. Is everything ok now? Nooooooo! Even if everybody is convinced about JavaFX, there is no stable, reliable and easy to use JVM out there for the client side at the moment. Therefore, we cannot efficiently distribute JavaFX apps on desktops. We have to be within a company, with full control over the network, to manage the installation, security and upgrades of the JVM in all desktops in order to distribute the application. Well, that’s silly :-/

Error during my latest attempt to update my JVM.
Message: “Failure to download required files for installation.”

I’m quite confident to advise you to leave JavaFX aside and go for HTML5. Most of its features are already cross-browser compatible and it’s possible to build amazing user interfaces with that. Client-side Java is over, so get used to an exclusively java server-side world soon. Surprisingly, it doesn’t make me sad, but happier 🙂

The Consequences of Deferring Project Jigsaw

Mr. Mark Reinhold has announced in July 2012 that they were planning to withdraw Project Jigsaw from Java 8 because Jigsaw would delay its release, planned for September 2013 (One year from now). This date is known because Oracle has decided to implement a two years roadmap planning for Java, so September 2013 is actually 2 years after the release of Java 7.

According to Jigsaw’s website…

“The goal of this Project is to design and implement a standard module system for the Java SE Platform, and to apply that system to the Platform itself and to the JDK. The original goal of this Project was to design and implement a module system focused narrowly upon the goal of modularizing the JDK, and to apply that system to the JDK itself. The growing demand for a truly standard module system for the Java Platform motivated expanding the scope of the Project to produce a module system that can ultimately become a JCP-approved part of the Java SE Platform and also serve the needs of the ME and EE Platforms.”

They also say:

“Jigsaw was originally intended for Java 7 but was deferred to Java 8.”

Now they want to defer it to Java 9 🙁 More details of their decision making are available in a Q&A post on Reinhold’s blog. You may read and follow the discussion there. Here is my opinion:

Without Jigsaw, I believe that it’s very difficult to put Java everywhere. Without Jigsaw, the idea of multi-platform is getting restricted to servers in a age of smartphones and tablets. Jigsaw may be “late for the train”, but it is letting Java late for the entire platform ecosystem.

Deprecated installation screenshot
Observing the market, we can see that development is becoming platform-dependent (iOS, Android, etc.) Only Java can beat this trending because of its large experience on multiplatform implementation, and the time to do it is NOW! Otherwise, in 3 or 4 years there will be no Java on devices, and the development community will have enough knowledge to live with that. Therefore, Java will be basically a server-side technology.

The reasoning behind my prediction is the following: mobile devices are limited in terms of resources and a modular JVM would allow the creation of tailored JVM considering the constraints of each device. I put myself in the shoes of those devices manufacturers: “I wouldn’t distribute something in my products that might impact negatively the user experience in terms of performance”. That was the argument (at least the public one) Apple used to avoid distributing the Flash plugin for iOS’s browser. Probably because of that, Adobe definitively gave up Flash on mobile devices. A modular JVM would simplify a lot Oracle’s negotiation with many device players. It would be reasonable for Apple to include Java as a language for iPad and iPhone applications; Google would finally embed the JVM into Android to evolve faster with new Java language features, getting busy just with a module to extend the JVM to specific Android’s capabilities; it would be even possible to save Nokia from bankruptcy 😀

You may wonder whether Apple and Google would ever adopt JVM as a standard runtime platform. Have you heard about opportunity cost? It states that our current choices and activities are actually blocking other possible choices and activities. The tricky part is to chose the opportunity that is least costly or with the highest profit. Having said that, we can see the scenario considering that Java was not an option because it wasn’t modular when those companies made their decisions. If Java was modular and Apple had adopted it, iOS platform would have at least three times more apps than Android. “Java” was in Google’s strategy to catchup with Apple. Only Java could allow Google to do it in such a short period of time. So, it’s not so simple to ignore Java.

Now, Oracle vs. Google: Of course the effort to move Java forward should be economically viable, and in order to use Java, Google would have to spend some money. Unfortunately, Oracle and Google work with different currencies. While Oracle thinks in terms of licenses, Google thinks in terms of advertising. These currencies are incompatible, very difficult to convert, because while license is cost, advertising is profit. Therefore, Oracle would never reach a deal increasing Google’s cost, but it would be possible to get a deal decreasing Google’s profit. In other words, Oracle could have a percentage of Google’s profit on advertising sold through Java apps in order to make Java available for Android. Google makes this kind of deal with a lot of companies like Yahoo, AOL and others. Why not with Oracle?

If Oracle doesn’t give all resources that the JDK team needs to make Jigsaw a reality in Java 8, Oracle will be completely out of the pervasive game very soon. Without breaking the JDK into manageable and efficient pieces, Oracle won’t have arguments to convince the industry that Java is the way to go on the long run.

Before deciding to drop Jigsaw out, I beg Oracle to think about the consequences! They must ignore the fixed release roadmap and accept the difficulty of the task. We can stay happy with Java 7 (it’s not widely adopted anyway) as long as Jigsaw is on the way to Java 8. This fixed release cycle can actually come back after Java 8.

I would love to be wrong and be taken by surprise with an official Oracle’s announcement of the definitive support for JavaFX on Apple and Android devices during the next JavaOne 😉 However, I think the likelihood is very low 🙁

The Everlasting Presentation Language of the Future

Let’s consider that you have to create a website with a dynamic presentation and you own a technology specially made for this purpose. Strangely, you do not use your own technology to make the presentation, but the technology offered by a competitor. Is it a recognition that your own technology sucks? Is there any other explanation?

Fact: following a link shared by a friend, I’ve reached an Oracle/Sun University sub-site that gives detailed information about the new Java Certification Program. This website was made 100% in Flash, an Adobe’s technology. You may know that Oracle/Sun created a technology called JavaFx to compete directly with Adobe Flex and Microsoft Silverlight on the rich client market. So, why don’t they use JavaFx instead?

Making a gross comparison, Oracle’s choice for Flash is like Steve Jobs, Apple’s CEO, using Power Point instead of Keynote to prepare his great presentations. Or Steve Ballmer, Microsoft’s CEO, using MacOS instead of Windows (It’s possible by the way 😀 ). Can you imagine Nokia’s CEO using an iPhone? Google employees using Bing? No. But you can see JavaFx’s owner using Flash. It is indeed a great recognition for Adobe, which was endorsed by a competitor as the best technology to present their products.

How would the JavaFx development community, who embraced the technology, feel? If the owner doesn’t fully embrace it, why would they do it? Maybe I’m not exploring the web enough, but I haven’t seen any website using JavaFx so far (I mean, without Sun’s sponsorship). I don’t know where the developers of the JavaFx technology can find motivation to keep working on its evolution. It has become a playground thing that people use to create demos and silly games.

Taking into consideration all benefits that HTML5 will bring in a near future, who will still consider the adoption of JavaFx in a long term perspective? This is probably the everlasting presentation language of the future. 😀

Yet Another System for Multimedia Information Management – YASMIM

As part of my research, I’m developing a system for media archiving with features that makes it a media information management. I figured out a nice acronym for this system: Yet Another System for Multimedia Information Management – YASMIM. The reason why it is “Yet Another System” is because there are several multimedia archiving systems out there and I’m going to create one more (I’m so brave! :P). It is not just a multimedia archiving system, but also a system to organize all information possibly related to the content of the media.

This system has 3 personal goals:

  1. demonstrate my scientific contributions to the field of multimedia systems;
  2. update my expertise on enterprise systems and manipulation of large datasets to get ready to the market again; and
  3. share my acquired knowledge with people interested in JEE6 (EJB3, JPA, JSF) server applications and JavaFX desktop applications because the best way to learn is sharing and teaching.

According to my plans, I’m going to finish my PhD in October, 2010. I’m writing the thesis right now and it is all about the YASMIM system. it’s planned to support several kinds of media, including images, videos, audios, and 3D models. The main differentials are the possibility to segment and annotate all these kinds of media within only one integrated system and provide these features through a web service interface, in addition to the conventional web interface. This system is open source, but I can only make it fully available after my thesis defense. However, I have published an initial (but compilable) source on GitHub. If you wish, you can help me to develop it and we can figure out together many other innovative aspects. 😉

Why did I chose JEE6 and JavaFX? The first reason is that I’m supposed to get into the market soon and I have to update my knowledge of enterprise systems, which was what I used to work before the PhD. But of course, I cannot put in the thesis this reason. Better to find reasonable technical reasons. So, the technical reasons to choose JEE6 were:

  • the architecture allows the expansion of available resources without redesigning the code;
  • support for multiple user sessions;
  • support for authentication and authorization and I just have to worry about the content sensitiveness;
  • totally based on POJO, so I can keep the code as simple as possible while focusing on the algorithm part; and
  • the support for web services is native and implemented by Java annotations.

The technical reasons to choose JavaFX as the client technology were:

  • vectorial user interface rendering;
  • multi-platform, including mobile devices; and
  • good support for media playback.

An alternative platform to implement this system would be Adobe Flash. However, a basic technical problem prevented me to choose this platform: I use a Linux 64 bits operating system and it doesn’t work appropriately on it. Thus, besides having a bigger number of machines supporting Flash, some platforms do not support it well. Considering JavaFX, most platforms support it well, however, less machines have it installed. So, my decision was in favor of more compatibility.

If you are interested in this kind of application, not only for multimedia processing, but also to learn about Enterprise Java and JavaFX, be my guest and get involved on http://github.com/htmfilho/Yasmim.

Finally a JavaFX Application in Production Out There

For the first time ever, I finally saw a JavaFX application in production. I received this news from someone I’m following on Twitter. Check it out and come back for my comments:

http://www.vancouver2010.com/olympic-medals/geo-view/

This is the website of the 2010 Winter Games that will be held in Vancouver, Canada. Looking at the center of the figure, you can see a Java logo, indicating that an applet is loading and soon a JavaFX application is going to load in that area. Well, this was the good news. Let’s go to the bad ones.

The JavaFX applet takes sometime to load, even for me who has a 4MB/Sec connection at home. But this is not actually a problem. The problem is that users has no idea of how long they still have to wait. The Java logo animation is cute, but totally useless. A good approach is to show the progress of the download, a percentage figure very common in thousands of Flash applications.

When the applet finishes loading, look at the top-right and see the JavaFx logo. Come on! Why? It seems to me that they used JavaFx instead of other technologies because SUN sponsored the development of the applet. Is there any channel at SUN where I can ask them to develop an applet for me? I need it too. Or maybe the developer is so passionate about JavaFx that he put the JavaFx logo there and nobody said anything. That’s great! JavaFx is unanimous. 😛