Win a copy of Micro Frontends in Action this week in the Server-Side JavaScript and NodeJS forum!

Chris Keene

+ Follow
since May 20, 2008
Cows and Likes
Total received
In last 30 days
Total given
Total received
Received in last 30 days
Total given
Given in last 30 days
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Chris Keene

If you are new to Java and interested in cloud computing, WaveMaker is for you!

See a 15 second "Hello World" demo here

WaveMaker is a cloud development platform. Go to and start building Java applications that run on the Amazon EC2 cloud for free!

See how to build/deploy a Java app to Amazon EC2 in 7 minutes here

You can also download an open source version of WaveMaker to your desktop. WaveMaker lets you develop Java applications using a visual, drag and drop studio that runs in your browser.

Download WaveMaker here

WaveMaker applications deploy as standard Java WAR files that run on any Java server (WaveMaker ships with Tomcat) and can be opened up and modified in any Java IDE such as Eclipse.

With an open source community of 15,000 active developers, WaveMaker has established itself as a leading rapid application development platform for cloud computing.

WaveMaker is also partnered with IBM, Amazon and RightScale around the Cloud Quick Start Program. This program provides a rapid migration path for ISV and enterprise developers wanting to move to cloud computing.

c keene
10 years ago
I would even go a step further and say that even with code generation tools you will end up needing to learn Javascript. There is no surer lie in the software tools world than the claim of "code free."

The goal of code generation solutions, whether GWT, Smash or WaveMaker, is to reduce the amount of Javascript code you need to write and hopefully give you an easier path to learning Javascript.

Then again, there's always Windows Dev Framework - that doesn't have any Javascript in it!
GWT is a good and easy way for Java developers to get started building rich internet applications. The problem is that you are working with a cross-compiler - writing in Java and then getting translated to Javascript. This can make debugging difficult.

You might try looking at a development tool that helps a Java developer build Javascript UIs without having to know too much Javascript. Two options I would suggest are:
* sMash: free development environment from IBM
* WaveMaker: free visual development environment {disclosure: I work there}

Either of these tools would help you get started on HTML and Javascript while minimizing the learning curve
Thanks very much to the JavaRanch community for the warm welcome and active participation!

Your questions were thoughtful as well as helpful!

- chris
There are examples that come with WaveMaker showing how to use ext widgets and Google gadgets.

Within the WaveMaker studio, the basic unit of work is a page, which is itself just a widget. You can save a page as part of a web project, or you can publish it as a template or a composite widget. When you publish the page as a composite widget, WaveMaker packages up whatever widgets you have on the page along with whatever properties and events you have defined for the page and makes that a full-blown WaveMaker widget that is installed on your palette and can be dragged from the palette onto the canvas.

This mechanism makes it very easy to bring widgets from other Javascript libraries into the WaveMaker studio. TBTW, his is the same mechanism that the studio uses to create custom enterprise data widgets for each table in your data schema.
I think the answer to your question is both: WaveMaker Studio is a development tool that can be used to create Java Web apps; WaveMaker Studio creates standard Java applications that use the Spring/Hibernate framework.

So let's look at some use cases:
* Database driven web development: WaveMaker can create or import database schemas. From these schemas, WaveMaKer automatically creates enterprise data widgets that connect database information to UI widgets. This is a very productive way to build data-driven web applications like lightweight portals.
* Web services mashup: WaveMaker can import any SOAP, REST or RSS service and provide a fast way to connect web service information to UI widgets. This is a productive way to build dashboards and mashups.
* Web front end for Java application: if you have already created Java classes, you can use WaveMaker as a GUI builder for your Java application. WaveMaker can import Jar files or plain old Java. You can even swap out the Hibernate/Spring backend for any framework you like using Pluggable Service Types.

Check out the showcase application for examples of applications built with WaveMaker:
Yes, you are right, menu widgets are not built into the Wavemaker visual builder (widgets within the WaveMaker studio can be added to an application using a drag and drop ui). However, they are not too hard to add by hand. There is a description of how to do this on the WaveMaker community, at:

First, a brief intro to WaveMaker. WaveMaker has two parts: a visual builder that runs in a browser (think of an updated MS Access for the web) and a runtime Java framework that runs in any Java server. The runtime Java framework is licensed under the Apache open source license, so there is no lock-in, you can use WaveMaker to generate your Java project and then open the project in Eclipse, IntelliJ or NetBeans.

You can create a complete Java web application using WaveMaker with just three mouse clicks:
  • Click 1: import an existing data schema from any jdbc-accessible database. WaveMaker automatically creates an custom enterprise data widget for each table in the schema. At the same time, WaveMaker creates a Hibernate mapping and the Json wiring to connect the Java Hibernate classes to the Javascript enterprise data widgets.
  • Click 2: use the WaveMaker visual builder to drag an enterprise data widget from the palette onto a page. WaveMaker has a "Live Data" capability which lets you see the data for your application within the builder itself.
  • Click 3: press the run button in the WaveMaker visual builder to deploy your application to WaveMaker's built-in Tomcat server. You can also deploy the application as a WAR file to any Java server, as well as edit the WaveMaker project in any Java IDE.

  • WaveMaker Studio was built in WaveMaker, so if you want to know what kind of apps you can build with WaveMaker, it's easy to see! For ISVs, it is also easy to embed WaveMaker Studio within your application, providing a build-in configuration tool for SaaS applications (similar to the tools for SalesForce).

    You build an app by creating or importing a database schema then connecting it to UI components using drag and drop in the visual builder. Once you define or import a data schema, WaveMaker automatically creates custom enterprise data widgets that can create, read, update and delete information in each table.

    So now, on to your questions:

    And what does it produce?
  • Does WaveMaker produce Java classes on the server? Yes, WaveMaker generates Hibernate classes to perform the object relational mapping automatically, including any views or Hibernate queries you have defined in the visual builder. Wavemaker creates a standard Java project based on Spring/Hibernate - you can edit the project in any Java IDE
  • Does WaveMaker generate Javascript code to display the UI? Yes, WaveMaker uses the Dojo library for widgets and generates the Javascript needed for the UI. Just as with the server, you are free to add your own custom Javascript as well.
  • Does WaveMaker generate HTML to display the UI? WaveMaker generates a complete web app, including the index.html page, but most of the UI work is done with JavaScript. You can add custom html and css styling to the project.
  • How is the UI and business logic separated? WaveMaker uses the MVC architecture to separate UI and business logic. Business logic lives on the server as Java code. UI is mostly defined using the visual builder, but you can add custom Javascript in the client as well to give maximum UI flexibility.
  • Is it possible to integrate a WaveMaker project into an existing JEE Project? Yes, WaveMaker has an advanced feature called Pluggable Service Types that allows a developer to use WaveMaker as a visual GUI builder for existing JEE applications
  • Does WaveMaker project only import jars? WaveMaker supports importing both Jars or just Plain Old Java Objects

  • One of the reasons we are reaching out to the JavaRanch community is to better understand how Java developers can use WaveMaker to accelerate their development of Java app. At a minimum, WaveMaker is a fast way to create your Hibernate data binding. Alternately, it can also be an easy way to create a rich internet UI without having to do a lot of Javascript programming.

    Please try it out and let us know what you think - the free download is here:
    WaveMaker is a visual builder that runs in a web browser for building Java web applications.

    Think of it as a cooler, open version of MS Access for the web:
  • Cooler: because you can build Java apps with Javascript front ends with minimal coding and *no* lock-in
  • Open: because WaveMaker is open source and the apps it creates can be opened and edited in any Java IDE + run in any Java server

  • We are introducing WaveMaker to JavaRanch to promote WaveMaker as an easy and highly productive way to kick-start your Java web development efforts. We are looking for your feedback in particular on whether WaveMaker is helpful in 2 areas:
  • Automate Hibernate mapping: WaveMaker creates the object-relational mapping automatically when you create or import a database in the Wavemaker studio. You can also define Hibernate views and Hibernate join queries in Wavemaker's visual builder and then have the Java automatically generated.
  • Automatic Javascript UI: WaveMaker creates custom enterprise data widgets for each table in your database schema. You can build a UI by combining these custom widgets with standard widgets like radio buttons and sliders using WaveMaker's drag and drop UI builder.

  • Please try it out and let us know what you think!
    @vyas - I'm glad you liked it.

    I posted a "roundup" on dzone as well that compares 5 free mashup tools:
    Mashups is a pretty broad term. I tend to think of three kinds of Mashup tools: front end, back end and integrated.
    - Front end mashup tools: these tools help build web front ends using widgets/gadgets and little to no programming (iGoogle, PageFlakes)
    - Back end mashup tools: these tools combine web-accessible data and services into useful web services (Kapow, Yahoo pipes)
    - Integrated mashup tools: these tools can build end-to-end solutions linking web widgets to data and services

    So you need to think about what kind of mashing you are trying to do:
    1. Are you wanting to create a visual dashboard from existing widgets? Try a front-end mashup tool
    2. Are you wanting to turn web-accessible stuff (like ebay auctions or linkedin contacts) into a web service API? Try a back-end mashup tool
    3. Are you wanting to create an end-to-end web app like a dashboard or simple business portal? Try an integrated mashup tool

    Here are some free, open source mashup solutions you might try:
    1. Front end mashup tool: igoogle
    2. Back end mashup tool: open kapow
    3. Integrated mashup tool #1: IBM's mashup center
    4. Integrated mashup tool #2: wavemaker
    @Mike - I am on the board of Kapow - thanks for your enthusiasm!

    As you have pointed out, mashups are a very useful but still somewhat vague concept. In a way, mashups seem to be a reaction to the difficulty of SOA/ESB etc - an informal way to link web services and user components into useful applications with minimal infrastructure.

    For an example of a Kapow mashup that combines SalesForce, LinkedIn and Technorati information with a nice Ajax UI, take a look at this application

    To answer your question, I don't think there is anything particularly Java centric about mashups, but it may be that the Java community is embracing lightweight services like REST faster than the .NET world
    "Portals" is a pretty broad topic. I agree with Cameron that you might want to separate the business issues about what needs to be done (interactive dashboard, employee self-service) from the technical issues of how to do it (JSR268 portal, Struts, Mashup, Ajax).

    If you are trying to sell this to management, focus on the business benefits you want to achieve: improving customer services, improving employee productivity, etc. Try to quantify that by getting business users to tell you what they think the impact of the project would be on their business.
    11 years ago
    Portal technology has proven powerful but complex. Mashups offer the other extreme - simplicity, but maybe not as much power.

    IBM has an interesting product called Mashup Center that illustrates both of these properties. In Mashup Center, you have a repository of widgets that you can drag onto a page and perform simple tasks to connect one widget to ahother.

    Another possibility is that the overall concept of portals is replaced by new technologies like Ajax widget libraries and even JavaFX. Many of the limitations of JSR-168 portlets seem quaint now that we are in the age of the interactive web (aka Web 2.0).
    This is something of a holy grail in the Java world. The challenge is to balance ease of use with flexibility - the world is littered with failed RAD tools that look great in demo but fall apart when you try to build something useful.

    If you want something that is more of a traditional IDE but still easy to use and focused on Java developers, you could try the following solutions:
    1. Project Zero (from IBM labs): free download at
    2. Servoy: popular Java product based on browser plug-in
    3. WaveaMaker: open source download {disclaimer: I work here}

    Alternately, If you want something that is completely cloud-based, try bungee connect from Bungee labs

    11 years ago