Believe it or not, there is the remote possibility that I may get to have some influence in getting a web application built, that I can use in teaching, that will do something that I want.
What do you think?
Flash too, will tend to work in many places, but it is pretty bad for anyone with bad vision, or anybody that simply wants bigger or clearer text for any reason.
Anything requiring a custom plugin will be very restrictive; you're limiting yourself to a subset of operating systems and a subset of browsers on those systems, and to the subset of people that accept installing a custom application (which is what a plugin is) on their computer just for the functionality you want to offer.
In fact, a custom plugin will have all the drawbacks of an off-line application, without the benefits. If you decide to go that route, then take the consequences and simply develop a real application and leave the browser out of it altogether.
- There are a lot of examples everywhere on the web.
- You can create a great interface: http://code.google.com/webtoolkit/examples/
- You could also use the XUL engine from mozilla/firefox to create your web application.( http://developer.mozilla.org/en/docs/XUL_Tutorial http://developer.mozilla.org/en/docs/Getting_started_with_XULRunner ) or your firefox plugin.
- you could also think bout a java applet or a webstart application instead of QT/C++
I second Janne in that a custom plugin is definitely not a good choice. It would be limited to one browser and requires the user to install it. I'm not very knowledgeable on Flash, but it appears to be significantly more versatile than often kludgy AJAX solutions. However AJAX integrates better with conventional web content, i.e. Flash is kind of like an application inside a browser, while AJAX applications are basically dynamic websites. Also, AJAX works on more platforms (e.g. some mobile phone web browsers don't have Flash, but do support AJAX).
Ultimately it depends on what kind of an application it's going to be. The people who end up designing and doing the application really should know the best. If they don't, it's not a very promising sign and you'll be lucky to see any sort of working application at all.
Is it something that's going to be blog based? That might provide an obvious answer. Frinstance, on Wordpress, you'd want to create a php plugin and/or php widget.
What are you trying to do and what resources do you have available?
All of the things you mention can work, as would perl, ruby on rails, php, and a host of other tools. But as with any tool, picking the right tool depends on what you need it to do. You can put a screw in with a hammer, but it won't work as well as if you used a screw driver.
I work in IT and have been down this road a few times, so feel free to email me if you have more details and want suggestions.
I agree with the other two, stay away from the custom plugin route with web applications.
the major decision to make between AJAX and flash are sort of based on where you want to put the logic. current flex/flash implementations, can do pretty much anything that a custom plug-in might do, with the advantage that most people already have the plug-in. a downside is that the language, actionscript 3, is an annoyingly idiosyncratic language that occasionally places truly idiotic inconsistencies in your way. of course compared to browser incompatibilites and multiplatform testing it's a walk in the park. some other added advantages to flash are being able to set up offline applications and the built in multimedia libraries. also see Adobe AIR for the offline runtime. (disclaimer, I work there, but in a different department)
the bigger question in making a web app is the size of the data store that you are using. basically if you have immense piles of data, most of the computation and manipulation should probably be happening on the server, and at that point it doesn't really matter what the front end is made out of. In fact if you make the communication API simple enough, you could have both the AJAX and Flash front ends.
the complaint about flash not having clear text is more of a complaint about most flash designers rather than flash itself. as with many design technologies Flash enables a lot of bad design. flex sdk is free and leaves out much of the graphical end of things that gets most app in trouble.
that said, I would say that unless I were doing something very complicated in the UI and needed to hide proprietary code stick with AJAX. but in either case be very careful of the server security.
one last thing to consider, for the most part, every time you load a webpage with a flash movie in it, you have to start from the beginning again. a web app has the possibility (if you don't rely exclusively on AJAX) of being linked to somewhere in the middle. flash is very good about forcing a route, but at times that can be a real pain in the ass.
In order of what I perceive to be most desirable to least desirable:
A fully web-based "AJAX"-type of approach is almost certainly going to be the most portable and easiest to update method to handle.
Macromedia flash currently still requires a proprietary binary-only plugin, which acts as a sort of browser-within-a-browser. It works on most platforms, but there are still a few that Adobe doesn't want to bother supporting (native 64-bit OS's, for example - though at least on AMD64 linux there is a workaround). I'm under the impression that a lot of Flash works under-the-hood a bit like AJAX - flash applications can use queries to websites to change themselves on the fly. Also, Macromedia Flash is almost certainly the best way currently to display video content for people (Quicktime, Real, and Windows Media all have proprietary platform issues), and admittedly seems pretty good for graphic-intensive uses. Oh, and it is possible to download and play flash applications and videos locally, though it's not necessarily intuitive how to do so.
Not mentioned but worth at least keeping in mind is Java. It's less ubiquitous and more prone to platform-specific quirks, but web-based Java applets or local applications are probably easier for a wide range of people to run - many people already have a Java "virtual machine" system installed and so wouldn't need to download Wx, QT, or GTK+. Otherwise, I'd call it about the same as your third option.
With a custom C++ and QT/Wx/GTK+/whatever application you have to deal with people needing to find and install the extra support libraries and the software itself. This isn't necessarily difficult if one knows what one is doing (and has enough administrator-power on their respective system to be allowed to install software) but after 15+ years of doing tech support I realize that the proportion of people who use computers and "know what they are doing" is disturbingly low. Also, you'll need to provide versions compiled for each platform you want to support - hypothetically this shouldn't be a big problem when using a cross-platform compiler like GCC, but it does mean more work and more support. As much as I like using QT applications, I'd leave this (and client-side Java applications) at the bottom of the preference list, though I wouldn't rule it out entirely.
For non-interactive video or minimally-interactive graphic-intensive display: Macromedia flash
For interactive applications that for some reason couldn't be done with AJAX or Flash: Web-based Java applets
For offline use: Flash for less-interactive applications, client-side Java applets for complex ones if necessary.
Last choice: Custom client-side application in a compiled language (e.g. C++)
My opinion as someone chronically aware of cross-platform issues over the last 10+ years.
GWT (Google Web Toolkit) is, on the whole, a pretty solid choice for web apps that are starting fresh:
Have a look at http://code.google.com/webtoolkit/examples/
There are some downsides - the base library that solves the 'work on any browser' is quite big, some of the AJAX toolkits out there have more fancy widgets available, the benefit of the abstraction will be less if you have access to a really good, really experienced AJAX developer.
You sort of left out the important bits whilst including little more than flame bait. Like, for example, "which is better equipment for the lab, a laser, a triple-beam balance, an electron microscope or a set of test tubes?"
Seriously, you can do better than that, and we, in turn, could produce suggestions that go beyond 'Flash sux and Java roolz!'.
A "web application". Does it have an offline mode for when we're counting those hard-to-find bendable bacteria in the forest? Will the user interface utilize a spellchecker so the scribe doesn't mis-categorize my brand new bacterium as "anthrobacter boringus"? A web application is often implemented in the client-server arrangement of responsibilities, but will your app make use of peer-to-peer communication? Indeed, can researchers enter data by cellphone or other hand-held device? Et cetera.
In short, the journalist's five W's (who, what, when, where, why) and how.
/disappointed that Python didn't make the short list of languages
Matt's right that more specific requirements will result in better suggestions.
What also matters - and can matter more - is who is likely to be creating such a thing, how long have they got and what do they already know how to do?
I'm not sure if I can say much about the application at this time. I will check, if I can add more info, I will later.
I second (and third) the comments above that ask for more info on what you're trying to do. But I was also wondering do you still have contacts at SCCC? If so, they might be a good resource. Upper-level IT students might be interested in a real-world project and I'm willing to bet their instructor(s) would too. I can see it now:
CS-203 - The Sandra Porter Project
But that's starting to sound like an ensemble jazz-fusion group! ;)