Why hasn't Java become the dominant technology in RIA development?
I have been developing software for over 25 years now with the majority of my experience in C++ development and object-oriented analysis and design. Wanting to move into the web market, I started doing RIA development a few years ago. I was horrified by the development options available to me and the seemingly infinite amount of hoops I had to jump through to get even the simplest application functionality implemented and working correctly. I had been using Java to do backend work and had really come to like it. To me, the ideal situation would be to use Java to do the client-side work as well as the server-side work. Not only would I be using a real OO programming language, I'd also be using a single technology across the board. The problem was that there really was no nice client-side Java solution available. Swing was just too cumbersome and inflexible and other products had similar drawbacks. What I really wanted was a client-side solution that was as easy to use and just as flexible as HTML/CSS for building a UI, but provided the dynamic and robust programming features of Java. So I quit my full-time job about 18 months ago and started designing a Java-based RIA product called the Galileo RIA Framework (http://www.galileo-riaf.com/).
I recently released Galileo as a Beta and while many developers who have looked at the product have admitted that it is an impressive product and that they'd like it to gain much success, they are reluctant to use it because it depends on the Java Plug-in. This has been a major disappointment to say the least. I knew that applets had developed a stigma over the years, but I didn't realize how pronounced the distaste for the plug-in had become.
The negativity and skepticism within the Java community itself is so overwhelming that any hope for wide acceptance of the plug-in seems impossible. The funny thing is that all the developers I have talked with would like the plug-in to become widely accepted, but in order for it to become widely accepted, it would have to be used, however, most website developers are hesitant to use it, because, well, it's not widely accepted.
I want to change this. Not only because the success of my product depends on it, but because I would like more job opportunities to be available to me as a Java programmer as the RIA market continues to grow.
Why did the Java Plug-in fail in the first place?
My guess is that there were several major reasons for the failure of the Java Plug-in. One, applets and the plug-in were introduced at a time when most users were limited to dial-up access to the internet. Downloading the plug-in and the applets that used it took too long for a normal user's patience. Two, a Swing UI compared to an HTML website designed by a graphics artist looked terrible. Three, platform and browser compatibility may have been an issue also, but not being involved in Java development back then, I don't know if that was an issue or not. Four, it has been said that installation of the Plug-in was not straightforward and could have been difficult for non-developers. Five, the web was still pretty new itself . The concept of the RIA didn't exist; therefore, there wasn't any pressure for websites to be anymore than straight HTML. Adding technology that complicated implementation, limited potential visitors, and looked bad, just didn't make any sense.
Can the Java Plug-in compete now?
I'm optimistic it can for several reasons. One, according to the latest statistics I've read, 86% of U.S. internet users now use broadband. Download times for JAR files and other resources have become negligible.
Two, Sun has finally decided to rewrite the plug-in making it easier to detect, download,
install, and upgrade. Also most major browsers will prompt the user in a standard way to install the plug-in if a page that requires it is loaded.
Three, new operating systems / machines are coming with the Java plug-in already installed. I know both my Windows Vista machines from Dell did, my Mini-Mac from Apple did, and several distros of Linux install the plug-in when the OS is installed.
Four, installing a plug-in just isn't a big deal for users anymore. According to a June 2008 survey 99% of internet enabled desktops have already installed the Flash plug-in and 85% have Java installed.
Five, standard HTML websites are no longer the standard. To be competitive, websites will have to continue to evolve with RIAs being the latest evolutionary step. Where standard HTML sites with bits and pieces of
software developers, many of which are Java developers, will become a greater driving force. This opens up more opportunities for Java.
And six, with a framework like Galileo which allows easily customizable UI's that can look as good as any HTML/CSS based UI, aesthetics are no longer an issue for Java UI's.
I was discussing this issue with Marty Hall of http://www.coreservlets.com/ this week and here's what he had to say:
I would love it if a Java-based solution gained some traction in the RIA
world. I spend a lot of time doing Ajax training, and right now, Ajax is
tremendously complicated for developers. Developers have to learn xhtml,
server-side technology (servlets/JSP, PHP, ROR, or whatever). Even with
integrated technologies like GWT or JSON-RPC, there are still an awfully lot
of underlying technologies for a developer to master, and the interface is
still limited by what current browsers can support.
I really hope your framework catches on. It would be a good thing. You could
build apps that were so much better if you had a real programming language
and a single underlying technology.
The more compelling apps out there that get people to install Java in their
browsers the better. And the more powerful but simplified GUI frameworks
like yours, the better.
I believe a window of opportunity has opened to give the Java Plug-in a rare second chance. It appears that Sun believes this too, since they have taken the initiative to redesign the plug-in and to create JavaFx. However, with no disrespect to Sun, if Java developers expect the plug-in to succeed due to Sun's efforts alone, I think they are sadly mistaken. In order for the plug-in to succeed, a concerted effort by the Java community will be necessary. For this reason I have created JavaRiaDev.org. The main initiative of this effort will be to pool developer resources to create RIAs that utilize the Java plug-in and appeal to a broad audience by coming up with new ideas for websites, copying successful website ideas and making them better, and/or trying to forge strategic partnerships with existing websites that already have a substantial user base who are looking to upgrade to RIA technology. The second initiative will be to provide the
appropriate resources to help other developers interested in Java RIA development. I, of course, will be pushing Galileo, but will welcome the use of any product that promotes the use of the Java plug-in.
There will no doubt be skeptics in the Java community who say this is a fool's errand. But for those like me who are not content sitting on the sidelines waiting for others to decide their fate, I say join me and help me in my effort to make Java, if not the dominating, at least a viable option for RIA development. Personally I'd like to have an impact that creates the general opinion that any machine connected to the internet that isn't equipped with the Java plug-in is an inconvenience to the user. If a machine has a modern browser there's no reason for it not to have the plug-in.
I'm interested in any and all opinions. If you are interested in becoming a part of this effort, please drop me an email.