Free and open source: Released under an Apache 2.0 license, Jawr can be used free of charge with or
without modifications, for both commercial and noncommercial purposes.
Easy to setup: All you need to start using Jawr is to declare a couple of servlets in you deployment descriptor, create a simple .properties configuration file,
Lightweight: Bundling and compression is done once at server startup so there is no overhead to requests. Also, a cache component
is available and enabled by default to serve resources directly from memory instead of from the filesystem.
Built-in minification and postprocessing: Jawr includes JSMin and the YUI compressor, both from Yahoo!. A custom minificator for
CSS is also included, although the YUI compressor can be used for CSS too. For each bundle, a customizable postprocessing chain is executed
during startup. Relative URLs in CSS files are rewritten by a postprocessor so they keep working with a different relative path. It is also
easy to create custom postprocessors to perform any modifications to your js and css files at deploy time.
Proxy-friendly gzip support: For each bundle there are two URLs that point to a gzipped and a regular version of the resource. Since the URLs
are be generated within a JSP, the request headers are analyzed to decide if the browser will support gzipping and the appropriate URL is written out.
With this system, caching proxies will not be a problem since it works around known Internet Explorer problems with the VARY header.
Caching enforcement: Jawr will try its best to force your clients to cache the resources. If a browser asks if a file changed, a 304 (not modified)
header is sent back with no content. On the other hand, with Jawr you will be 100% sure that new versions of your bundles are downloaded by all
clients. Every URL to your resources will include an automatically generated, content-based prefix that changes automatically whenever a
resource is updated. Once you deploy a new version, the URL to the bundle will change as well so it will be impossible that a client uses an
older, cached version.
Flexible bundling scheme: Choose which files go into which bundle, and in which order. Choose whether you want a bundle minified or not.
Choose whether a bundle will be used only in development mode (for adding things such as console loggers). Create partially minified bundles.
Create bundles which are automatically added within an Internet Explorer conditional comment.
All with a very easy to use configuration system.
CDN compatible: Jawr can be used easily with a CDN for even better response times.
stylesheets. With Jawr, these will be added to pages automatically so you don't need to repeat the same import statement everywhere.
Dynamic pages not required: Jawr can be used in plain HTML pages, so even if your application uses a mix of HTML and JSP (or other template based dynamic
technology), Jawr can be used on every page.
Less: Jawr allows you to use less resource in your bundle mapping. Jawr will handle the compilation to CSS.
Sass: Jawr allows you to use SASS resource in your bundle mapping. Jawr will handle the compilation to CSS.
CSS skin: Jawr allows you to define skin (theme) for your CSS bundle. This means that the user will get the CSS bundle skin depending on his current skin setting.
Sprite generation support: You can define you sprite in your CSS by putting annotations and Jawr will generate the CSS bundles and the image sprites associated.
Base64 encoded image support: Jawr allows you to define the image which you want to encode in base64 to minimize the HTTP request. It also support MHTML generation for IE6 and IE7.
JMX support: You could modify the behaviour of Jawr at runtime using a JMX console. For example, you could pass an entire application from production mode to debug mode,
or modify only one session.
Bundle preprocessing: By default, the bundle processing is done at server startup, but you could preprocess your bundles, and use them directly. This will reduce the startup time of your application
because Jawr will skip the bundle processing.
Spring MVC support: Instead of configuring the Jawr servlet, you can tightly integrate it with your Spring MVC application by
adding the provided Jawr Controller to your Spring descriptor.
JSF/Facelets support: If you are using JSF with Facelets as the view technology, you can still use Jawr using a specific tag library.
Wicket support: Jawr provides components for JS, CSS and images handled by Jawr.
Grails plugin: Jawr can be used seamlessly in Grails applications, using a provided plugin that includes a GSP tag library.
DWR integration: You can use DWR and have Jawr handle the serving of the static and dynamic scripts DWR generates, with the
added feature of being able to bundle them together and with other scripts from your application.
Struts/Commons Validator integration: finally you can minify and compress the validation scripts generated by this framework.
plugins you need and bundle all together. And, even if you minify them (thus eliminating comments), you can still keep the mandatory licenses in
the bundle. The libraries tutorial will show you how to integrate popular js libraries such
as Protoype, JQuery or YUI.