Hi,
For our eLearning project in our university, we are using Java applets to show some interactive stuff (like some interactive function plotting or some simple question/answer system or other interactive elements and any combination on those) inside of Ilias learning units.
We decided for Java because we wanted an open solution (and HTML5 was not really available at that time and Flash was and is not really an option).
Now, a few years later, I really got the feeling that Java is not really useable for the web. Mostly because of a lot of problems I haven't really been able to fix for all cases.
So, my question: Is Java just not the right thing for the web or am I doing sth. wrong? Can you point out how I could solve these problems?
Problems I have encountered in the time:
A Java applet take ages to load. Even if it is a very simple small applet, it sometimes takes about a minute to load. Why is that? Is it really that the Java framework is so much bigger than Qt or other frameworks? Or is the VM so big? Or is the VM so slow?
The browser (or at least the tab in Chrome) gets very slow esp while loading the applet but also afterwards.
The Java applet looks different on every system. The UI controls are totally different and also behave slightly different. Sometimes it's the native look (or kind of it), sometimes it's completely something own. Also the font is mostly different and often supports a different subset of Unicode characters. This is a real problem for us because we use Unicode a lot for math symbols and we got a lot of reports that some symbols don't work for some people. Also as the font has different size on each system, I got reports that the text is cut out for a few people (or shortened by "..." in a JLabel). I have gotten around this problem now by including a TTF in the JAR. That works mostly. Still sometimes I get these "..." reports even with the unique font.
Sometimes the memory usage is incredibly high (but not always).
When loading a page with multiple applets, the chances become very high that the browser craches and or multiple applets don't load correctly. Also the whole operating system gets very slow.
Sometimes, the Java applet doesn't load in browser X but in browser Y. After clicking a few times on reload or restarting the browser/system, that behavior may switch. For example, it seems that chances are higher that the applet load in Firefox (also not always, but mostly, at least after clicking one or two times on reload) and less likely on Chrome (but if I am lucky it also works sometimes). Depending on the system, it may be different browsers which work best. Though there is never a browser which works perfect. This behavior is on all the systems we have tested (different Linux distributions, both 32bit and 64bit, Windows XP/Vista/7, MacOSX).
Sometimes, the applet stays blank when I switched to another tab and return back. Sometimes it at least takes a very long time until it shows up again.
It eats up all the CPU. Even after I have closed all tabs with the applets. I have to quit the browser to resolve this.
Some examples where we have these problems:
- http://www.matha.rwth-aachen.de/~ilias/jars/Integration/Integration_Geogebra.html
- http://www.matha.rwth-aachen.de/~ilias/jars/Abbildungen/Abbildungen.html
- http://www.matha.rwth-aachen.de/~ilias/jars/Trigonometrie/Trigonometrie_Geonext.html
- http://www.matha.rwth-aachen.de/~ilias/jars/AnalytischeGeometrieundLA/AnalytischeGeometrieundLA.html
- http://www.matha.rwth-aachen.de/~ilias/jars/ganze%20und%20natuerliche%20Zahlen/ganze%20und%20natuerliche%20Zahlen.html
If you look at these examples, what would be a good alternative solution to Java? I thought about HTML+JS with recent browsers (it is not really a problem if we tell our users that they should use WebKit based browsers or so), although I think that some of these examples might be very hard to implement (or at least harder than in Java).