The Madura suite consists of the following modules:
allows you to build self-validating Java objects with dynamic metadata. This is the reason for the other projects so this is the flagship. It supports metadata, such as labels and has strong support for I18n. Madura Objects also allows you to plug in a rules engine, such as Madura Rules, to handle cross-field validation and dynamic metadata changes.
is a plugin module for Madura Objects that extends it to perform cross field validation and dynamic adjustment of metadata using a simple rule-based approach.
is for when you want to use Madura Objects with Vaadin. Vaadin is the slickest UI for web applications we have come across and, because it maps nicely to Java POJOs, it is a natural fit for Madura. The result of the mix, especially when combined with Madura Rules is a very sophisticated web application which is easy to maintain.
allows you to run several versions of components of your application at the same time. You can use OSGi instead of this, but there are some differences that make MaduraBundles simpler. For example it falls back to the main class loader by default if it can’t find a class. It also has a nice self-registering mechanism for bundles. You can just copy a jar file into the right directory and it will become part of the (still running) application.
is a workflow system which allows processes to be hot-deployed, complete with dynamic forms, rules and web service messages. It works closely with Madura Objects and Madura Rules to deliver very clean, uncluttered processes. In includes a Vaadin based UI.
Most of these are from the Madura Vaadin parent project on github. They all prompt for a user and password. Use admin/admin or user/user. Most of these you have to build and deploy yourself, but a couple of them are on
public servers (look for the
online link). They are running on the cheapest server I could find so might be a bit slow. Each one has a demo script it is worth reading before you start or you'll miss too much.
- Madura Vaadin Demo This is a basic demo of Madura working with Vaadin. Specifically Madura Objects without Madura Rules. Demo Script. see the section 'madura-vaadin-demo'.
- Madura Rules Demo This is the full demo that shows Madura Objects and Madura Rules working with Vaadin. It shows a dynamic UI including the ability to configure a pizza Online. Demo Script. see the section 'madura-rules-demo'.
- Madura Address Book Demonstrates the extended JPA container and associated table, and a pop-up row editor which has Madura Objects backing the fields. Demo Script. see the section 'madura-address-book'.
- Madura Mobile Demo Demonstrates an application that presents both a desktop and mobile UI, both backed by Madura Objects and Madura Rules. Online. Demo Script. see the section 'Mobile Applications'.
- Madura Perspectives uses Vaadin and Madura Bundles to deliver a frame application that accepts sub applications as dynamic plugins. The sub applications inherit the Vaadin theme selected by the framework as well as the permissions. Sub applications can be added, updates and removed without restarting the frame application. Sub applications can optionally be loosely coupled using a publish-and-subscribe pattern. Demo Scriptsee the section 'Running the Demo'.
Every project has a PDF posted to Maven central along with Javadocs, binaries etc. So for more detailed information you should go there next. The Git repositories hold all the source, and they all build with Maven.
All of the modules are available as open source. All except Madura Rules carry an Apache 2.0 license which means you can use them anywhere you like without charge. Madura Rules carries an APGL license which means you can use it in any non commercial application without charge, but not in commercial applications. A commercially licensed copy of Madura Rules is available for a negotiable fee. Use the Contact to get in touch.
If you want to use the other Madura products commercially without Madura Rules there is no fee. You are also free to write your own rules (or other) plugin for Madura Objects.
All of these projects are written in Java. We use Eclipse as our development environment so they are all Eclipse projects as well as maven projects. The binaries, source and detailed docs are all uploaded to the Maven Central repository.
The name ‘Madura’ was chosen because it is an island near Java.
Madura was developed by Prometheus Consulting, a New Zealand based software consultancy.