A few weeks ago Troll Tech released official QtJava bindings under the name of Jambi. With Jambi, you can build native applications for Windows, Unix and MacOS X using Qt and Java. It’s a good idea and a good implementation, although nothing revolutionary, I myself have been successfully using QtRuby bindings for a few months.
But this mad head of mine started to think about the potential of bindings, compilers and code generation.
There are thousands of Qt developers who know the C++ API to Qt very well.
Qt is able to build native applications for many platforms (Windows, Unix and Mac OS X).
There is a number of unofficial Qt bindings (Ruby, Python, Java, Ada, Scheme, etc).
So here comes the idea: Qt-Web bindings/compiler/whatever. How could this mad idea be implemented? I have some ideas.
Keep in mind the point in the Qt-Web idea is not to have the best possible webapp development framework but to take advantage of the horde of Qt-literated people out there. Let me re-phrase that: this idea makes more sense to Troll Tech who be selling more Qt licenses and support contracts, than it makes to web developers.
As I was saying, I have several ideas on how to implement this:
- Use Jambi to build Java applets. The return of Java applets 10 years later, wooohooo. Horrible, I know. And there is the disadvantage of downloading part of Jambi as needed or get Jambi included in the official Java repository. But that could work.
- Qt-Flash bindings. You develop your application in ActionScript using Qt and you get a SWF. It would be more or less like the previous approach.
- Qt-to-Flash compiler. You develop your application in C++, using the very same APIs and tools you use to develop a desktop application and you have a new “make all_flash” target that generates a SWF. 96% of computers have Macromedia Flash installed.
- Qt-to-AJAX “compiler” (I think “translator” or “generator” would be a more appropiate word). You develop your application in C++, using the very same APIs and tools you use to develop a desktop application and you have a new “make all_ajax” target that generates HTML, CSS and Javascript. Now this has the potential to become Web 3.0: you develop webapps just like you would develop desktop apps!