There was a moment in history when assembly coding and the knowledge of it largely disappeared from the world. Before it, the programmers knew and cared about the binary code the CPU saw, even if they relied upon a compiler to build much of it.
After that moment, the IDEs came along and did so many things automatically that programmers stopped caring about such things as linking or op codes.
We’re reaching that moment in Web development today, thanks in part to fancy front ends like WaveMaker’s Visual Ajax Studio. In years past, Java programmers would write deployment descriptors, Hibernate configuration files, and endless files filled with XML just to stitch together all of the JSPs and database calls.
After WaveMaker, we can almost sit back and forget about firing up vi or Emacs to get a Web application running.
Monolithic Web applications have become almost standard in the world of SQL reports and most other kinds of data processing, but just as the cobbler’s children always went barefoot, the programmers have been the last to jump on this bandwagon. Real programmers use vi, right? Not anymore.
You start building a Web application in WaveMaker by going to a Web page with the word “Dashboard” on the top, the kind of term that usually indicates the Web page is built for pointy-haired bosses and the folks down in marketing who can’t grok XML.
And once you go to this Web page, you can import a data model from a database by pushing a little icon button with a plus sign on it. You don’t write SQL, JDBC, or any of the Hibernate configuration code.
Then you click on a few more icons to create some Services — note that the Dashboard doesn’t call them “Web services” or WSDL as a proper programmer would do, but the subsequent pages do.
After that, you push the plus sign under the Pages headline and you’re pretty much done with a Web application without using a single acronym. As Dire Straits almost put it, “That ain’t working/Money for nothing and your clicks for free.”
Java for dummies
I’m exaggerating a bit. Building a full Web application is not as simple as getting rich after MTV plays your music video — something that’s also gone the way of binary code. But WaveMaker has stripped away plenty of the endless monotony of building Java applications by putting a pretty face on much of the endless editing of the configuration files.
Naturally, creating user interfaces is also easy. The main layout page lets you drag and drop components in place. Most of the components are drawn from the Dojo hierarchy.
The result is very simple but not as powerful as if someone took Ant or Maven and slapped a slick AJAX interface on it. The basic functions are powerful, but there aren’t many of them and they aren’t as customizable as several of the neat Ant and Maven tools. The data model tool will respond to a few clicks and import an entire database with the JDBC interface’s mechanism for reading the tables and data structures.
But then it turns around and creates a Web service for adding and deleting an element for each and every possible row in each and every table. That’s probably a bit excessive, and I found that I had to toss away many of them and tweak a few.
It’s clear that the guys at WaveMaker didn’t set out to build something that outdoes Maven at its own game. They wanted to create the equivalent of, say, Microsoft Access or PowerBuilder for the Web, using Java technology hidden underneath.
They did a good job. I was able to whip off some basic systems in just a few minutes. When I hit roadblocks, I was able to figure out the limitations pretty quickly.
The limitations were fairly obvious any time I tried to do something a bit differently. One of the options when you build a Service is to put a Java class or a POJO (Plain Old Java Object) to handle any arbitrary demand. This is simple to do and it works well — as long as you write clean Java code.
I got odd messages when I wrote code that wouldn’t compile correctly because I used the wrong type. The editing window for these POJOs just isn’t as powerful as Eclipse or any of the other tools built for real programmers.
Is the trade-off worth it? For many casual programmers, I think the answer is an enthusiastic yes. Java technology continues to be well-regarded and relatively robust, but it is usually harder to configure and maintain because all of the powerful features add complexity.
A tool such as WaveMaker would be ideal for a Java shop that wanted to hire the kind of folks who can stitch together 10 lines of PHP or Python. WaveMaker hides all of that Java confusion.
Making waves
Skilled programmers with years of experience customizing the J2EE stack, though, will start rattling the tin cup against the cell door — but not as quickly as they might expect. Decent solutions can often be found in the simple point-and-click world, and it frequently helps to have access to someone with deep Java experience when you try something a bit odd. Those endless Java stackdumps can be pretty daunting.
The biggest competitors will be Java tools like Grails, other languages like Ruby on Rails, and any of the JavaScript/AJAX libraries that live on Web services. Although I think Grails is an amazing platform, it’s built by people who use text editors, so it’s easiest for the text-editor dweller to use. If you like Maven and using an editor to set up your configuration files just right, WaveMaker won’t be your solution.
The AJAX tools from Tibco and JackBe offer very similar tools for design. They also let you come pretty close to building your user interface by dragging and dropping the various components. They have similar editors and, to a certain extent, a similar architecture.
But there are deep differences in some places. JackBe, for instance, invested heavily in building a much more solid server-side framework for mixing and matching data on the server. This kind of feature can be essential in environments with sensitive data that shouldn’t travel outside the firewall. You could accomplish much of the same by writing your own Java code with WaveMaker, but that’s not as close to point-and-click as JackBe’s Presto.
WaveMaker is one of the first tool vendors to adopt the AGPL (Affero General Public License), the new version of the GPL aimed at server-based code. If you choose this route, you can have the stack for free, but you need to release any and all modifications to the stack if you put up a running server with it. Tibco’s General Interface is available under the BSD license, which requires no distribution of your modifications.
Most big development shops will probably skip the open source options, at least for serious projects. WaveMaker’s commercial subscriptions top out at US$10,000 for unlimited Java virtual machines and include “certified software, updates and upgrades, proactive alerts, and full production-level technical support.”
That pretty much bundles everything together in one big package — just like the tool wraps up all of the fun of building a basic Web front end to a database.