Axualize Documentation |
Visit the Axualize Sourceforge Project. |
Tutorial |
Why?Axualize exists simply to make my life as a developer of distrubuted applications easier. And it does so very well. You see I have developed many web based applications using J2EE and other technologies, and I wanted a way to create dynamic client front end graphical user interfaces without having to do a lot of extra work. You see, I already had a set of well laid out MVC applications made with Struts, Tiles, and home grown frameworks. I already knew how to use the JSTL taglib and JSF to enhance my user interfaces to a degree I was truly happy with, but I still wanted more. I needed a way to use my existing web architecture to create a client application that was actually a rich Java application. So, I started using Java web start, and it rocks, but I am still not satisfied. I need to be able to build my client side application so that it can interact with my J2EE application as if it where a web client so I can really leverage my previous work. So the stage is set. How?Axualize is a tool for building applications by processing an XML document which conforms to the Axualize schema. Axualize is also a type of "glue" technology between a Java object model and my J2EE web application. Axualize organizes sets of objects into groups called "models". Each model can be thought of as the rough equivalent of an HTML form. Certain objects in the model can be marked as containing a value which will be submitted to the web server as a part of this virtual-form. So, in an Axualize model you may have objects which are used to build the form data, but you can also have objects which are simply used to model the UI.Axualize is a tool which is similar to other XML tools which are loosely grouped together as XUL engines (XML UI Language). Axualize is not however equivalent in this respect: Axualize is not limited to building UI applications. Axualize can be used literally build any sort of Java application. There are Many problems which the Java developer must solve to develop robust Java applications, especially user interfaces. One of the key problems is writing efficient code which makes proper use of threads. Axualize provides the developer with a solid set of tools for creating, manipulating, and properly using threads with Java applications in general and Swing applications in detail. Axualize utilizes Java's strong networking APIs to make itself a full fleged HTTP client. Submitting form data to the Web application is as simple as telling Axualize to send a "get" or "post" request to a given URL which can be fully qualified or relative to the URL which was used to build the context of the request. Scripting is provided in two forms within Axualize to supply the developer with a powerful tool for changing the application model (UI) based on the current state of the model by evaluating scripts against the model. The first form is the embedded Beanshell support which is bi-directional per model. That is to say that any object created in the model is visisble to the Beanshell script, and any object created in the Beanshell script is also visible to the rest of the model. Axualize also provides a specialized model which has built in BSF support which provides one way access to any BSF scripting engine where BSF scripts have access to model objects, but not the other way around. The BSF engines included in the distribution are currently JavaScript, Ruby, and Beanshell. Early on I basically rolled my own object modeling schema and called it "Swang" and proceded to write an API to support it. This worked pretty well, but then I decided that with JSR-57built into J2SE 1.4+ I would change my schema to be able to read JSR-57 documents. Thats is where Axualize really took the form it is in now. Axualize builds on the JSR-57 schema by allowing developers to extend it, and to make it more meaningful and powerful. Axualize presents the developer with a simple API for extending the functionality of Axualize. Axualize as a tool is mainly composed of a core set of XML "TagHandler" classes. Each of these handlers implements the "TagHandler" iinterface. Tag handlers can be added the Axualzie container at run time, so it is very simple to add functionality to Axauzlize on the fly. Ok, but why would you want to use it?If you want to build rich Java applications which act as front ends to web applications you might want to use Axualize. If you want to build Java applications which are truly dynamic and are generated on server side then you might want to use Axualize. If you want to be able to easily create threaded applications using a concise set of constructs then you might want to use Axualize. If you need a Java object modeling tool with built in scripting support and much more, then you might be interested in using Axualize. |