As before, I’m still pondering indecisively how I might implement the Glom Web UI. There’s several AJAX toolkits that should take some of the pain away, but the choice of programming languages is still the big forking decision.
Now that Java can be distributed on Linux, it’s a candidate again. And now that Java has generics, they’ve dealt with the lack of compile-time type-safety that always annoyed me. Python is less verbose, but the run-time type surprises have always annoyed me. Of course, Java still isn’t open source (or clearly patent-free, so free implementations may also be in danger), and it’s monolithic, so we’re stuck with the quality that we’re given. That is admittedly only marginably better than putting my nuts in Microsoft’s hands. But I guess it helps that it’s so big and successful already.
And I started thinking about Java again when I saw that Google released the Google Web Toolkit, a Java API for AJAX UIs. (Update: It’s not Open Source so I won’t be using that. There will be bugs and I’d want to fix them.) I didn’t expect them to be using Java. I thought they were all about C++ (The main search UI, apparently, and I’ve heard they use lots of boost::python.) and Python (not sure where though). I’d love to see a list of Google products with programming languages and technologies that they use. There must be enough client-side clues to figure that out. At the moment there’s such a mess of competing frameworks that I’d love to choose something based on the quality of google’s products.
There’s now a libglom, with a C++ API, which I’ll want to reuse. boost::python for C++, or JNI for Java would let me do that. I don’t have much confidence that I’d be able to use C++ for this. I just dont’ think enough people are doing that, and I’d rather not be the only consumer of a toolkit.
I looked at Ruby on Rails, and I think there’s a Python version now too. It seems to demand a static database structure. I think it generates classes for each database table. I imagine that’s a fast hacky way to do web applications. But that’s no good for a generic database API. It’s the UI and session management that I’m interested in.
I looked at Ruby on Rails, and I think there’s a Python version now too. It seems to demand a static database structure.
No, that’s not really correct. By default it will look for tables, columns, etc. by certain names. “Convention over configuration”. However, these can all be overriden.
I think it generates classes for each database table.
It doesn’t generate anything. If you make a Model class called “User”, at run-time it will look for a table named “Users” (unless you tell it otherwise). So none of this nasty Java generated mess.
There are several articles/posts out there about using Rails with legacy databases. Here’s one:
http://the.rubydevelopers.net/node/25
Jay, thanks. Still, it seems that you must define the database structure when you write your program. Glom is a generic database UI. The database structure is always different. And I have code in libglom and libgda to deal with that.
The problem with Google’s Web Toolkit is the license, which will probably prove a hassle for you:
http://code.google.com/webtoolkit/terms.html
Specifically: “[…] you may not distribute Google Web Toolkit Development Tools or any services or software associated with or derived from them, or modify, copy, license, or create derivative works from Google Web Toolkit Development Tools, unless you obtain Google’s written permission in advance.”
Murray, I can reluctantly recommend my own XSLTools distribution for Python if you’re wanting to look into Web interfaces with some of that “AJAX” support on top of an XML-oriented presentation model, although since I’m probably the only user (and definitely the only developer) it may prove not to meet your every requirement. But at least it doesn’t mandate all sorts of relational database conventions and constraints. See here for details:
http://www.python.org/pypi/XSLTools
“I didn’t expect them to be using Java. I thought they were all about C++”
They use lots of languages — IIRC, google.com is C++, GMail is Java, and lots of other things are Python.
Anyway, a little bird told me that the “Google Web Toolkit” is something they bought and immediately released — and that no existing Google software actually uses it.
One option is to use something like JSON-RPC for data transport, maybe even defining and building the GUI? and then basically any language: http://json-rpc.org/wiki/implementations
And a widget set/toolkit like http://oss.mps.com.sg/Wtk that groks JSON-RPC.
There is also http://qooxdoo.oss.schlund.de/ but currently I think it does XML stuff.