Can the Java Plug-in Compete?
Why hasn't Java become the dominant technology in RIA development?
I'm not the first person to ask this question, nor will I be the last. It is unbelievable to me that the company that invented the RIA over a decade ago has made little or no progress in this field and presents absolutely no challenge to inferior technologies that came later. JavaScript was named "Java" script deceptively to give it better visibility in the marketplace, but given its dominance in the RIA market, you'd never believe it.
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/).
One of the many frustrations that I had experienced working with JavaScript was the problem of inconsistent appearance and behavior on different browsers; therefore, when I started designing Galileo one of its primary requirements was that it be able to run on all major browsers on all major platforms and produce a consistent looking UI. Knowing the history of the Java Plug-in, I wasn't sure if it would meet this requirement. Much to my relief, it turned out that the latest Java plug-in (1.5 at the time) worked fine with all the latest and greatest browsers (IE, Firefox, Netscape, Opera, Safari, and Camino) on all of my test machines which included Windows XP and Vista, Mac OS-X, and a few Linux distros. This was great. I figured now all I had to do was focus on developing the actual UI framework and I would have the product I had been longing for and a product that the Java community would be excited about.
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
JavaScript could be developed by graphic artists and other non-developer types, RIAs, because of the complicated implementations, require software developers. Where the major driving force in the web development market used to be graphics artists and non-developer types, as the RIA market grows
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,
XML, JSON, JavaScript, Prototype, 37 other JavaScript libraries, and a
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.
JavaRiaDev.org
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.
m.warble@javariadev.org
- Login or register to post comments
- 6058 reads
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)















Comments
Dirk replied on Wed, 2008/10/29 - 5:15am
I totally agree with you Marvin. There really is no reason anymore why the Java plugin should not be a viable option for RIA development. In my opinion it is simply the plugin's bad reputation, which stops it from being more successful. This is very similar to another article that was posted today regarding the JDK logger:
http://java.dzone.com/articles/what-wrong-with-jdk-logger
I am primarily a JavaSE desktop application developer (http://www.dlsc.com) but had my share of short trips into the magical world of web development. I always returned frustrated. There were just too many different technologies that needed to be used in combination with each other, which often resulted in fragile, heterogenous, hard to maintain applications. On each one of these trips there was a moment where I thought how beautiful it would be if I could implement everything in one technology where I had total control over all aspects of the application execution (e.g. the environment in which it runs, the JVM).
For some reason there seems to be developers out there, who get a kick out of using as many technologies as possible. It is almost like a competition: who creates the most complicated application with the highest technology stack. The "keep it simple and straightforward" (KISS) concept has been forgotten, but I know that there are a lot of developers who would like to embrace it again. They are the ones who display an envy look when I tell them that I do most of my work in JavaSE.
--Dirk
rss10711 replied on Wed, 2008/10/29 - 7:19am
I agree with you and with Java plugin 6 Update 10, Java on client side works really nice.
Java-based RIA produc Galileo RIA Framework (http://www.galileo-riaf.com/) is first step
and IT ROCKS !!!.I really want to see more framework like this more...
Keep up good work & God Bless.
Greg Brown replied on Wed, 2008/10/29 - 7:42am
Hi Marvin,
Congrats on your beta release. The Pivot development team recently released version 1.0 of the Pivot toolkit, which has similar objectives:
http://pivot-toolkit.org
J6u10 is a great update, but Swing and JavaFX just don't cut it. Unfortunately, it seems like non-Sun developers such as ourselves need to step up to make sure that Java remains a viable option for RIA development.
Greg
Arek Stryjski replied on Wed, 2008/10/29 - 9:32am
Why Java 6 u 10?
I got this massage on Ubuntu:
[quote]we recommend using Microsoft Internet Explorer temporarily to view our site. [/quote]
I don't like your joke...
It will take months till this version will be default in Linux distributions and available in standard repositories. It will take years for Mac.
I will install it but 50% of Linux users will wait, and Mac users have no other option...
Update:
So now I have it on disk I need to change symbolic links in /usr/bin/ as root... how easy is this...
Greg Brown replied on Wed, 2008/10/29 - 9:42am
in response to: areks
Arek-
Pivot and Galileo both work well on Java 5 - in fact, Pivot was developed primarily on Mac OSX and Fedora using Java 5 and pre-update 10 Java 6. So, you don't have to upgrade to J6u10, but your user experience is likely to be much better if you do.
Greg
mwarble replied on Wed, 2008/10/29 - 9:43am
in response to: areks
Sorry. That message is an oversight in our error handling. I'll make a note and fix it.
Just to clarify.
Galileo will work fine with Firefox on Mac OS-X, however, there is an incompatibility with JRE > 1.6.1 and Firefox on Windows and Linux. This problem was fixed with 1.6.10. Therefore Linux and Window users must use 1.6.10 to avoid the problems encountered with this incompatibility.
Thanks for feedback,
M. Warble
Paul Davis replied on Wed, 2008/10/29 - 11:48am
This exemplifies the problem of dealing with the java plugin. Requiring a very specific version to be used is going to further complicate things.
For the plugin to take off, we (Java Developers) need to build apps that are able to run on many versions of the java plugin. Yes, it is a pain, I know it.
For comparisson, look at some of the stuff out there in flash. Most handle running on multiple versions of the flash player very well. Until apps are built the same way, it's going to be a long road to get the plugin to take off.
We need RIA apps that will work on not just the latest version of the Sun plugin (that's only been out a short while) but, also with IBM's plugin and IcedTea (we should embrace vendor neutrality). Apps should be able to on at least a major version behind too. We should also be good citizens and not lock up a user's browser for a minute while initializing an app. ESPECIALLY if they go through the effort to install a specific version of the java plugin from a specifc vendor.
FYI, the "Launch it Now" link on the demo page does nothing. I see a big java app that looks and acts like a normal html web page
Raveman replied on Wed, 2008/10/29 - 11:48am
cfagan replied on Wed, 2008/10/29 - 11:50am
in response to: gbrown@vmware.com
Greg Brown replied on Wed, 2008/10/29 - 12:08pm
in response to: cfagan
cfagan-
I think you're reading a bit much into what I wrote. All I said was "JavaFX doesn't cut it".
However, to be more specific: I don't want to write RIAs using a new scripting language - I want to write them in Java. From that perspective, JavaFX pretty clearly does not cut it.
Greg
David Lee replied on Wed, 2008/10/29 - 2:40pm
Good Luck w/your product. It's an impressive start. The Java plugin can compete, it's just an inferior option to flash/flex and siverlight. I spent several years doing swing development hoping and waiting for java to get better on the client via webstart. It did get better and is still getting better, but it's still inferior to most other RIA alternatives.
I use intellij about 12 hours a day 7 days a week. It's my all time favorite java ide. But, it's slow compared to eclipse and other native apps. It's slow to start and the GCing gets very noticable. It's such a great product that these problems don't deter me from using it. Not all users are like me. At the root of all of Java web based efforts (applets, jnlp & javafx) is the same problematic java. The consumer jre will help and may solve the problem, but i'm not as hopeful as I used to be.
Even w/ your product , the Galileo webpage is not snappy. Java is much improved, but it's not consistently fast on the client. (The only java apps, I've seen without this problem are the ones at jgoodies) It's certainly acceptable, but when you remove your love of java from the equation it's hard to side w/java as the best platform for doing RIA. It's argubly the best on the server side, hence Flex apps w/java backends, just not on the client.
The plugin is only part of the problem.
James Selvakumar replied on Wed, 2008/10/29 - 9:12pm
Nice article. It will be really nice to see RIA apps developed in java.
I checked your product as well. It's impressive. I couldn't believe it was done in java. Congrats and wish u the very best.
Regards,
James
Mike P(Okidoky) replied on Thu, 2008/10/30 - 4:01pm
in response to: rss10711
rss10711:
> http://www.galileo-riaf.com/
Gives me the following error, repeated indefinitely (scrolls on and on):
Starting Application...
Ignored exception: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
Browser based Java failed again....
However, pivot-toolkit works like a train. Was this created just because the person didn't like Swing or something? Seriously, aside from some new features, Swing+third-party-look-and-feel could have competed with pivot?
mwarble replied on Thu, 2008/10/30 - 4:10pm
in response to: okidoky
rss10711:
> http://www.galileo-riaf.com/
Gives me the following error, repeated indefinitely (scrolls on and on):
Starting Application...
Ignored exception: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
Browser based Java failed again....
[/quote]
Betas generally are error free. Maybe you could tell me what platform, browser, and JRE your using so I can look into it.
Thanks,
M. Warble
Greg Brown replied on Thu, 2008/10/30 - 5:47pm
in response to: okidoky
Is this good or bad? It sounds good, but I'm not sure. :-)
Are you asking what advantages Pivot offers over Swing?
Mike P(Okidoky) replied on Thu, 2008/10/30 - 7:18pm
in response to: mwarble
rss10711:
Xubuntu 8.04 with a stock 2.6.24-19-generic kernel
Firefox 3.0.3, JDK 1.6.0_10
Core Duo Dell 9400, Ati x1400
ps. I very strongly prefer Xubuntu's (default) xfce over gnome. But i highly doubt if that is contributing. You're doing something that is considered outside the sandbox perhaps?
Mike P(Okidoky) replied on Thu, 2008/10/30 - 7:22pm
in response to: gbrown@vmware.com
Works like a train - ha, It's loosely translated Dutch. It means it runs effortlessly and trouble free, like the way you'd want everything to run ;-)
Pivot looks very suave. I'd love to try it on for size on a future project. Is there a layout engine that gives me the flexibility like MigLayout? Is there a resource editor of sorts so that I can write gui interfaces without having to endlessly go back and forth between coding and testing?
Greg Brown replied on Fri, 2008/10/31 - 9:10am
in response to: okidoky
Ah. That is good, then. :-)
Pivot's TablePane is pretty powerful. It is similar to an HTML table. Combined with FlowPane (similar to AWT FlowLayout, but both horizontal and vertical) you should be able to accomplish most, if not all, of your layout needs.
We didn't have time to get this in for v1, but it is definitely something we are looking to add to a future release.
rssbundle replied on Sat, 2008/11/01 - 2:26pm
I cannot put it in better language than Marty Hall has. So +1.
Also, why does not anyone talk of a RIA Java browser
JavaFX and Plugin have all that you need for the rendering engine, IMO.
And the speed at which unpaid volunteers are developing new browsers based on existing technology I would expect nothing short of a browser+communication program that would integrate every aspect of communication, even upto video-editing in some situations.
The case for an HTML5 and RIA Java-only browser is much stronger today than ever before, given everyone's sudden love of the clouds. If clouds it is, then give me a rock solid, highly manouverable, flexible aircraft - not a crash-prone, hacked-up, contraption. The revival of LiveConnect is not getting as much publicity as is Aptana's new server-side Javascript solution. The web2.0 boys are running away at breakneck speed while the HTML5 Java-only browser / communication suite is not even advertized well, if ever already made and shipping.
That is the going to be most important part of Java user-side software after the JVM and JRE.
Oh btw, SUN should consider talking more about "The Network is the Computer", dont you think so?
Really. I feel so.
mwarble replied on Sat, 2008/11/01 - 10:38pm
in response to: okidoky
rss10711:
Xubuntu 8.04 with a stock 2.6.24-19-generic kernel
Firefox 3.0.3, JDK 1.6.0_10
Core Duo Dell 9400, Ati x1400
ps. I very strongly prefer Xubuntu's (default) xfce over gnome. But i highly doubt if that is contributing. You're doing something that is considered outside the sandbox perhaps?
[/quote]
Mike P,
I installed Xubuntu 8.0.4 with Firefox 3.0.3. After installing the JRE 1.6.10 and configuring the necessary symbolic link in the Firefox plugins directory, it worked fine for me. If you do not configure the symbolic link as per the instructions on the Java installation page, you will get the behavior that you have described.
I suggest verifying that you've configured the symbolic link. If you don't mind let me know if this is your problem.
Thanks,
M. Warble
mwarble replied on Sat, 2008/11/01 - 10:59pm
in response to: willcode4beer
This exemplifies the problem of dealing with the java plugin. Requiring a very specific version to be used is going to further complicate things.
For the plugin to take off, we (Java Developers) need to build apps that are able to run on many versions of the java plugin. Yes, it is a pain, I know it.
[/quote]
I understand what you're saying, but this is slightly different. Galileo applications will work with jre > 1.5, the problem is specifically with Firefox and the plugin. In 1.6.2 or 1.6.3 a bug was introduced that causes a security exception when an applet tries to read a resource from the web server. Don't quote me on this, but I think since FireFox 3 was already in Beta and it wouldn't work with any jre < 1.6.10 (live connect issues), Sun decided not to fix the bug in the old plug-in and instead fixed it in jre 1.6.10 so the new Firefox and new JRE would work fine together.
I realize this changes nothing, but I thought I'd explain the real issue.
[quote=willcode4beer]
FYI, the "Launch it Now" link on the demo page does nothing. I see a big java app that looks and acts like a normal html web page
[/quote]
Did the link "do nothing" or did it "launch a big java app that looks and acts like a normal HTML web page"?
If it is the later, than you should have seen a web page titled "Galileo Explorer" that does look like an HTML page, but in reality is Java. That's the purpose of Galileo. To be able to create Java apps that look like HTML, but are much easier to write in terms of dynamic functionality.
Robert Buffone replied on Tue, 2008/11/11 - 6:16pm
Java-Plugin does compete currently. Nexaweb provides Enterprises with an Enterprise Web Platform that uses a Java-based RIA. Companies have successfully used Nexaweb to build very complex and mission-critical applications. For these companies they aren't looking for just another UI tookit. There are many of these; what companies need is a complete end-to-end solution with four components.
Then once you provide all of that, you have only made it half way home. On top of the platform you need to provide two additional things:
That is what Nexaweb has built over the last 8 years, it's not about the plugin, its about the stack and putting it all together allows customers to build on the great community that exists around Java.
Bob (Buffone)
Mike P(Okidoky) replied on Wed, 2008/11/12 - 12:25pm
in response to: mwarble
Hi Marvin, I didn't realize you went through the trouble of installing Xubuntu, and only noticed it now. The email notification system of dzone didn't tell me you directly responded to my message...
Ok, so I tried it again. Pointed my browser to that website, and same error. Same infinitely repeating error in the console:
Starting Application...
java.security.AccessControlException: access denied (java.net.SocketPermission 72.81.252.90:80 connect,resolve)
java.lang.NullPointerException
Ignored exception: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
Starting Application...
Ignored exception: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
Starting Application...
Ignored exception: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
Starting Application...
Ignored exception: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
Starting Application...
Ignored exception: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException
Starting Application...
...
The way java is installed, the way I installed it, was by putting in the firefox/plugins directory, a symbolic link to:
libjavaplugin_oji.so -> /usr/java/jdk1.6.0_10/jre/plugin/i386/ns7/libjavaplugin_oji.so
Other websites work ok with this.
No abnormalities discovered with my setup so far I think.
Strange?
Is there a way to run the application manually using appletviewer somehow?
It looks like it's trying to open a socket port 80 to 72.81.252.90, which the VM thinks is not from the codebase where the applet is coming from. Could we be dealing with a simple name lookup mismatch, the browsing using a name and the applet an ip address? Perhaps in the code you can use the code base as reported by the JApplet and use it, instead of relying on it matching?...
Mike P(Okidoky) replied on Wed, 2008/11/12 - 12:29pm
in response to: mwarble
John Allen replied on Wed, 2008/11/12 - 12:34pm
I had to come back to register my impression of Galileo. To use a (good) US idiom: it knocked by socks off! The architecture, the controls, especially SmartNavigation, are great. Coming from Java desktop development, I really like the idea of doing web development in Java -- only.
Negatives: it took a few minutes to get it running right in Firefox 3.0.3, and performance was a little slow. But those are not major problems compared to learning (much less mastering) the bewildering number of technologies now used in web development.