I’ve been evaluating the OpenLaszlow rich web application framework, and it seems really cool at first glance. It is very easy to build a very rich and interactive GUI using their LZX language (XML based). Your LZX code gets compiled into SWF shockwave code that runs in the browser window, and the whole thing is served out of a Tomcat servlet container.
But is it ready for enterprise applications? I wanted to say yes, but I’m not so sure yet. Yes, it has the ability to talk SOAP and XML via HTTP. It also has the ability to run POJO Java classes using RPC (I haven’t tested this yet, but the docs say it’s so, and the demos seemed to work OK).
But what about databases? Persistence? The data-binding demos look impressive, how you point it at a datasource and it can list out the data, or put the data in an Excel-like grid, etc. If your data is XML. Let me repeat, If your data is XML. I have been looking and searching for the database API’s, and the reason I haven’t found them is they are not there. They assume your datasource is XML, either from a static XML file or from a JSP or web service that serves XML-based content. Then it used XPath to do searches and binding. Nice for XML, but what about databases?
Almost all of my development involves talking to a database. Basic CRUD functionality is assumed in most enterprise applications. It’s not here. No ODBC, no JDBC, no “Laszlow-QL”, etc.
So the front end is now easy and pretty, but your back end application ends up being a bunch of servlets or POJO classes that serve up XML. It’s possible, but the expected tie-in just isn’t there – you must now build servlets, JSP’s, or web services that front-end a database, and then with the source code of the LZX being visible to the end user, you have potential security concerns as they can see how to manually call your services.
Maybe I’m just missing something, and need to read more of the docs and dig deeper into the language.
I guess my next step is to build a serious prototype of an application to see how my concerns can be addressed in the “real world”. I’ll post my progress and any tips or pitfalls I encounter.