WebMacro Servlet Framework
==========================
Announcing WebMacro 0.85:
http://www.webmacro.org/
WebMacro is a Java servlet development framework, including a
template engine and extensible component model. It uses Java
introspection to make any object in your servlet accessible
in your template.
WebMacro is free under the GPL, with alternate licensing available
for commercial users.
Is WebMacro Useful?
-------------------
Try it out yourself, it's free! As for what others think, here's
what people on our mailing list have to say:
"FYI Justin, I'm now running over 10 web applications (in
production) using WebMacro. It runs like a scolded dog, and
makes it easy for the designers to produce layout, so I can
concentrate on code. Keep up the good work."
-Jason Hill
"BTW, I really like your philosophy, and the code looks nicely
done. I was looking at the latest JSP incarnation and my
stomach was churning. The simple $x.y.z and # syntax you use
is perfect."
-Ari Halberstadt
"so much of webmacro is what I had planned to write on my own, only
better laid out"
-Robert Hentosh
"Finally, thanks for a great product that saves you from the
problem with writing html-code in your Java sourcefiles!"
-Jonsson Fredrik
"I found Webmacro last Friday just as I was completing a suite
of servlets. Fetched the mailing list archives (and actually
read them <g>) and totally loved the concept and the direction
that webmacro is heading. I've been rewriting my set of
servlets and gleefully tearing every shred of HTML code out
of my java <*very* big grin>."
-William Featherston
"Ease of use plus power makes killer apps."
-Simon Arthur
What's WebMacro for?
--------------------
The WebMacro philosophy is:
"Things that you don't care about should get out of your face."
Or to put it differently, WebMacro allows you to bring model/view/controller
approach to servlet programming: the servlet (controller) programming is
written in a standard Java code with no HTML; the front end (view) HTML
template is written in WebMacro script; and WebMacro provides both with
access to back end data sources (the model) via the ResourceBroker.
Programmers should not have their code cluttered up with HTML and
stylesheet junk. Web page designers should not have to put up with
complex and scary looking program code.
WebMacro lets programmers get back to programming--in a full fledged
programming language; while letting page designers spend more time
on appearances and less time on figuring out how to get more whitespace
out of a CGI script.
You can read more about this philosophy of servlet design in my article
"Fundamentals of Servlet Design" (http://www.webmacro.org/Servlet.html).
Or just download WebMacro and try it out for yourself!
What Changed?
------------
- 0.85 added reloadable templates, cleaned up the WMServlet API,
added template paths, made it easier to compile under Java 2,
and fixed several nasty bugs.
- 0.80 added method calls, generic templates, template parameters,
list initializer syntax, comments, bug fixes, and a few other things;
0.80.1 fixes a minor bug in 0.80 (name of error template).
- 0.75 added the component model, full fledged introspection
0.75.3 fixes all bugs reported as of January 22 1998
- 0.70 more back end services, better design, and fewer bugs
- 0.60 script language mostly in place, minimal introspection, many bugs
- 0.30 WebMacro said "Hello, World!" in a secret experiment
Pre 1.0 version numbers indicate what percentage of the full feature
set has been implemented. Most features are now in place; many bugs
have been fixed-- but we still have a few important things to do
before we can release 1.0.
What are the Advantages?
------------------------
* Clarity. Simple, obvious script language with minimal syntax.
* Power. Templates can access any object in your Java servlet.
* Elegance. Keep HTML out of your servlet code.
* Independence. Build or change templates without touching your servlet.
* Extensibility. Component model lets you to extend and customize WebMacro.
* Friendly. WebMacro won't confuse your XML/HTML editor or parser.
* Free. WebMacro is available under the GNU Public License.
I Need an Example!
------------------
The WebMacro introspector analyzes your objects, and figures out that
in the template $MyStuff.Customer.Fred.Email, which you could
stick anywhere, resolves to the String value of
context.get("MyStuff").getCustomer("Fred").Email. In addition,
WebMacro provides a layout oriented, simple script which
you can use to control page content. Here's an example:
<h1>Products for $Store.Name as of $Store.Date</h1>
<table><tr><td>What We Have</td> <td>How Many Left</td></tr>
#foreach $product in $Store.Products {
<tr><td>$product.Name costs \$$product.Price</td>
#if ($product.isAvailable()) {
<td>There are $product.Count in stock</td>
} #else {
<td>Sorry, out of stock.</td>
}
</tr>
}
</table>
The template language has access to a lot of the back end functionality
by way of special variables like $Cookie, $Response.Header, etc.
From the programmers point of view, Store, Product, etc., are
just regular objects. No work is required to open them up to the
introspector--just toss them in a WebMacro hashtable and it will
work out what properties and sub-objects are available.
See the website to learn more.
Where is It?
------------
website: http://www.webmacro.org/
list: [EMAIL PROTECTED]
me: [EMAIL PROTECTED]
WebMacro is now usable, but still experimental. Everyone interested is
encouraged to join the mailing list to contribute ideas--without the
valuable contributions of Tom, Cristi, Frank, Simon, Klaasjan, Kyallee,
Graydon, Michael, Dirk, and everyone else who contributed ideas, code,
and bugs, we wouldn't be where we are--Thanks!
Justin Wells / [EMAIL PROTECTED]
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html