Mike Hogan pitches an application architecture that should yield superior productivity. He talks about using RDF as his data model, though he admits that there isn’t very good tool support for RDF at this point. That’s certainly one trouble I’ve seen with putting RDF to practical application.
He talks about storing the data in Prevayler. Sure, there is a class of applications for which having all of your data in memory is fine. But, there are also plenty of applications where a larger data store is needed.
I’ve been thinking of this problem a little bit recently. I used Zope extensively for about a year, and find that the ZODB provides really great transparent persistence and doesn’t require you to have your entire database in memory. Of course, you have to be using Python to use the ZODB.
Recently, I also came across the IO Language, which seems like an unfortunate name because searching for “IO” on Google does not retrieve useful results. That said, I noticed something interesting in IO’s SQLLite interface: a “Soup” module. A “Soup” is a concept from the Newton. It’s basically an object store that indexes on named properties of your choosing.
Once you’ve worked with flexible, transparent persistence, you don’t want to go back. Hibernate is reasonably transparent (at least about as transparent as you can get in Java), but it still requires all of the maintenance of an SQL database. Yes, yes, I know that no one has yet made an object database that can scale as well as an RDBMS. But, there are a whole lot of applications you can do that fit within the scale that various object databases can accomodate.
I hope that Groovy will help to bring a little bit of dynamic behavior to the sometimes overly static world of Java. Nanoweb seems like a good start, because there’s just way too much housekeeping required for a typical Java webapp.