Introduction
Snow is a GUI description language for Java and Common
Lisp. Like XUL and similar, it makes it possible to write GUI code
in a declarative fashion.
With Snow, the structure of the code reflects the tree of widgets that make up
the GUI. Layout is specified with a CSS-like embedded language. Data
binding cleanly separates GUI code from application code and
automatically propagates changes in both directions.
Compared to XML-based GUI languages, Snow:
- is more compact;
- supports common abstractions like variables, functions, conditionals, loops, etc., which XML lacks;
- provides a unified language to write the GUI and the associated behavior, i.e. you can avoid JavaScript and other scripting languages and code the dynamic parts in Lisp and/or in Java;
- can be faster, since it compiles to JVM bytecode (to be fair, this is likely to have a marginal impact on most GUIs).
Snow is implemented on top of ABCL (ArmedBear Common Lisp) and third-party libraries, most notably JGoodies Binding and Cells (for connecting the GUI and the application, following the model-view-controller paradigm) and MiGLayout (declarative, CSS-like component layout).
At the time of this writing, Snow supports only the standard Swing GUI library, but it should in principle be extensible to other libraries, like SWT.
Also, Snow provides, as examples of its usage, GUI versions of some of ABCL's components (namely the debugger, the inspector and the REPL).
You can run a simple showcase of Snow directly with Java WebStart. WARNING: Snow, and thus the showcase, need Java security privileges because a) ABCL needs to use a custom classloader and b) Snow needs temporary files to load itself. So use at your own risk, no warranty is provided.
License
Snow is distributed under the GNU GPL with linking ("classpath") exception. It is the same license used by GNU Classpath and ABCL. It basically means that you can use Snow in open source or commercial products without them being covered by the GPL. Any modifications to Snow itself need to be distributed under the GPL.
Downloads
The latest project releases (source and binaries) are hosted at release.
Documentation
You can find the Snow documentation in the docs directory, or - if you want to be sure to get the most up-to-date version of the docs - on SVN.
Examples
I am working towards porting the SwiXml examples to Snow. You can find them here, along with a brief explanation.Mailing Lists
-
snow-devel
for developers. -
snow-cvs
SVN log feed. -
snow-announce
for announcements.
SVN
You can browse our SVN repository or download the current development tree via anonymous svn, as described here
Project members
[an error occurred while processing this directive]