Welcome to the WebMacro project!

Contents:

About WebMacro

WebMacro is a free Java development package that allows you to keep HTML and presentational issues out of your Java servlet code--while providing web designers with a simple template language capable of displaying any Java object.

WebMacro was mostly written by Justin Wells, with a lot of help from Yuen-Ping Leung, and crucial support from the WebMacro mailing list.

WebMacro is available for use under the GPL (v2), or you may negotiate a less restrictive license with Semiotek Inc. See the attached LICENSE file for specific details.

Documentation & Contact Information

Full documentation for WebMacro can be found on the WebSite. This README is just an overview.

A snapshot of the website has been included in the "docs" directory for convenience. It includes Java Doc API's, and everything else you might need to find.

If you are looking for support, found a bug, have a suggestion, or just want to chat with the developers, use the WebMacro mailing list--that's where we are! You may also find that other WebMacro users have answers to your problems as well.


Licensing

WebMacro can be used for free under the GPL, or you can acquire a commercial license for non-GPL use. WebMacro is copyright (c) 1998, 1999 by Semiotek Inc.

For details on the various licensing options, including free use under the GPL, see the License.html file included in the documentation with this release.

Anatomy of this Release

How To Use It

Here is an example CLASSPATH:

CLASSPATH=$JAVA_HOME/lib/classes.zip:$HOME/webmacro/webmacro.jar:$HOME/WebMacro/examples:$JSDK_HOME

  
You have unpacked WebMacro in your home directory in this example. $JSDK_HOME contains the "javax" directory in which you have your JSDK base classes, and JAVA_HOME/lib/classes.zip contains the standard library.

Using the examples

Follow the steps above. Then read the comments at the head of each examples .java file for detailed instructions.

Note that the examples are not pre-compiled, you must compile them.

HelloWorld and GuestBook use the WMServlet approach, so put all their .class files in your servlet directory.

TestWM uses the Reactor method. So register Reactor as the servlet with TestWM as its script name (last part of the URL).

How to Compile WebMacro

WebMacro ships with a webmacro.jar file compiled for JDK 1.1.7 and 1.1.8; to use WebMacro with java2 you will need to recompile.

To compile under JDK 1.1.7 and 1.1.8:

To compile under java2: Note that you cannot compile against the imitation classes and expect WebMacro to properly introspect classes derived from the real collections API. Thus, when you use the real collections API you must use it for everything, not using WebMacros imitation classes for anything.

See the website for a link to jikes; and check the FAQ and mailing list if you have any trouble.

A few more notes:

Overview of the WebMacro System:

WebMacro is similar in many ways to JSP/ASP and other projects in many ways, but differs from those according to our biases: So we have designed a language very much like all the other, but which fits with our biases above.

WebMacro presents two separate interfaces:

  1. A template language for web page designers to use, into which they can substitute values from a web program
  2. A library and framework for web based programming, for use by technical developers, which is independent of any layout or other graphical concerns
You might be both a graphics designer AND a programmer. Many people are. However I think you will agree that these activies use different sides of your brain--or at least very different kinds of thinking--and it is painful to try and do both at the same time.

Alternately you might be a programmer working with a web designer: By providing the web designer with a list of variables which they can substitute into a page, you keep the designer at some distance from your sensitive program codes. At the same time, the designer is free to take those variables and lay them out any which way they please.

This separation of program code and content is the fundamental idea behind the WebMacro system.

How It Works:

You don't need to understand this section to use it, but it probably helps to read it anyway.

Note that many steps apply only to the Reactor method, as noted. The WMServlet method is much simpler.

Some notes:

Credits

WebMacro grew out of various internal projects at Semiotek Inc., and was largely written by me--Justin Wells. It's my third attempt at a template oriented web framework, incorporating the experiences I had with the previous systems.

Yuen-Ping Leung, a close friend and sometimes co-worker of mine, contributed a great deal to the project in its early days--and continues to help out on a regular basis.

Simon Arthur
Model-View-Controller!! Simon noticed that this is what WebMacro is really all about.

Frank Carver
Shot down a lot of my bad ideas, and provided excellent critiques of proposed features.

Dirk-Willem van Gulik
Credit Dirk with the list initializer syntax--great idea!

Tom Goring
Bug finding! Plus lots of useful commentary on the list.

Ari Halberstadt
Tons of bugfixes. Lots of useful critiques, several features. Ari has been contributing useful stuff since the minute he subscribed. Literally.

Yuen-Ping Leung
I owe a lot to YP. She wrote a good chunk of the code in the early days. Unfortunately she's too busy with her real job to contribute much these days, but she says she wants to come back soon, let's hope she does!

Tom May
Code reviews! Lots of them, and always excellent! I never knew how much I hated "Chaper 17" before.

Claudio Mio
Lots of good ideas on the list. Keep it up!

Cristi Opris
Cristi took the other side of the debate with David over SSI in WebMacro. The result was the comprimise involving WMServlet and the #param directive--a huge increase in WebMacro's capabilities.
David Poon
A huge amount of excellent comments on the list. I am saving your mail about the benefits of MVC for future reference. Also a good overview of WebMacro installation issues for NT--now in the FAQ!

Klaasjan Tukker
Tons and tons of bug finding. All of them valuable--and for quite some time now!

Lots of other people have reported a bug or two. I don't have time to go back and find everyone's name anymore, though I wish I could. WebMacro's stability is largely due to the great participation of everyone on the list.

In general, I rely heavily on the list to keep me out of trouble, find my bugs, and point me in the right direction. So far everyone is doing a great job of that!

I encourage everyone to subscribe to the list and gripe about whatever bothers them, help me find flaws, suggest features, and periodically vote on what direction we should take: send your subscribe message to webmacro-request@webmacro.org

Thanks for all your support!

-Justin