Alternatives To Applets On The Client Side?
Choron asks: "Anybody will agree that Java Appplets are great for developing complex applications for the client side, with good (but not perfect) portability. Now apart from Tcl/Tk or esoteric technology such as embedded Inferno or developing a plugin (so much for the portability), are there other solutions for developing both portable and advanced GUI applications embedded in a browser?" Currently, I think Java applets are the only way to do client-side applets with any degree of portability, but who is to say that this will always be the case. What may the future hold for applets, and will Java be the sole driving force behind the technology?
It depends on what you want to do, but using Flash or Shockwave, you can do a _lot_. The pros and cons of those compared to Java make them an interesting choice for _some_ uses. It also depends on what platforms you have to support - they are hardly as portable as Java.
First, I'd like to take issue with your comment about portability. Applets suck from a portability standpoint because Netscape has a stuffed implementation of the JVM. Use Sun's Java Plug-In. It works nice. And Java on almost every platform (even Mac, with MacOS X, but not yet BeOS) is pretty good. However...
.jar files on the web. If you're not connected, no problem--you just use the older .jar files. If you don't want to upgrade, find--you just click "no" when it asks you if you want the latest .jar files. Since the .jar files are cached locally, there's no horrendous download every time you run the application (as with applets). It's extremely easy to set up your application to be WebStart-enabled. And, I believe (but don't quote me on this one) that you can make your applets WebStart-enabled, too (adding caching to applets).
Take a look at Sun's Java WebStart. It looks to be Sun's successor to applet technology.
The idea is basically to create a web-enabled application. It allows you to create full blown Java applications. Every time you run a WebStart application, it checks to see if there are updates for the
--Be human.
But Flash programs - at least the ones I encountered (e.g. the simulations for http://www.future-ceo.de/ if I remember correctly) were EXTREMELY slow. For example it was no problem for me to type (really used sentences and notes) faster than the computer was able to draw the characters. Heck, that machine (only 233MHz K6 but SCSI-monster) is fast enough for multi-track audio editing!
The last time I remember a "speed" like that, was on my rusty 4.77MHz 8086 (later upgraded to Nec V30) using MS Word 5.0 in (Hercules) graphics mode...
Personally, I would look into using a java Applet and use some EJBs for the data access and session management. Keep as much logic as possible out of the applet and keep it in the bean. You'll have the advanatage later on of possibly converting the Applet to a series of html pages and the business logic is still confined to the bean.
If your application is just presentation like where the data stands by itself (customize a {fill in the blank}) once it is launched - then Flash may be the way to go since all the data can be confined to the Flash applet. Flash can talk to the external world also in a worst case scenario - its just the degree of difficulty of programming goes up.
You don't mention lightweight. On that count, only JavaScript qualifies.
You don't really make clear what you're trying to do or what your problem with the standard Java applet scheme is, so it's hard to be much more helpful than this. If you just want to make applets without using Java (I don't care for the language myself, as it happens) then something like this might help you. If on the other hand you want a more fundamental change, circumventing applets altogether, then it doesn't really matter what language you're writing them in. In that case, then some of the other suggestions (Flash, Quicktime, etc) may be more appropriate for you.
DO NOT LEAVE IT IS NOT REAL
As the last post mentions the new version of Flash5 with its actionscript is a good alternative. It does allow good control on UI and is much better now in doing sersious work. THe ability to use XML to get/send data to the server was pretty interesting when we looked at it back when it first camme out. A few things we found..... XML works very nicely to do most things (data in tables/other forms/reports) and was easy to setup on the client side. The client side is damn light and is pretty fast, not to mention it worked (we did not do anything TOO fancy, just the basics) on both Linux/Mac and windows. We did not do tooo much testing but it was nice..... the thing that caused problems was how the damn xml was being sent back.... i believe its content-type was NOT set to text/xml but rather application/x-www-form-urlencoded which caused way to many problems (hell i had to hack into JakartaTomcats code to get anything to work!)....... dont know if they have fixed this yet.
try it out and see if it fills your needs, its a bit pricy to get the developer licience, but actionscript is pretty nice with the new changes and most things work well. Damn developer env. is not avail. on linux (runs ok in vmware though!)
Non-Deterministic Finite Automata
You can do very impressive thinsg with QuickTime's wired sprite stuff, and it embeds in all browsers on Windows & MAc, and can be emailed about easily too.
http://www.matthewpeterson.net has some cool exmaples, including alarm clocks, drawing app and a chat app.
A friend at work does all his backbone programming in C++ and then writes applets that call it somehow. Only problem is a lot of people have their browser permissions too high to let this happen. He can do this because he knows all of our clients, and we and the clients are all extremely security aware (Nobody's dumb enough to browse outside applets with permissions set so low).