JPublish is a Java web publishing framework which merges the Velocity, FreeMarker, StringTemplate or WebMacro templates with a content repository and application control framework. JPublish is designed to ensure a clean separation of developer roles.
JPublish is loosely based on the FreeEnergy methodology. FreeEnergy was originally created by Leon Atkinson and others as described in his self-authored article Harnessing PHP's FreeEnergy. Essentially the FreeEnergy methodology was designed to handle page development in an object oriented fashion so that common objects could be reused. Much of JPublish's initial development ideas were obtained while documenting J.J. Berhens implementation of FreeEnergy in Python, called Aquarium.
Like all good web frameworks, JPublish provides a clean separation of code, content, and layout. JPublish has the following features:
Templates for layout - the Velocity template engine from the Apache group has been chosen as JPublish's default template engine because of its straightforward syntax as well as its solid and simple design.
Repository abstraction layer - JPublish provides a method for binding concrete repository implementations to a site for easy and controlled access to content.
Content which can include nested content - content pulled from repositories can be parsed by the Template engine in order to include nested dynamic elements.
Automatically reloading configuration - a centralized configuration file which will automatically reload when modified makes it easy to make changes at runtime without restarting the web server.
Search-engine friendly URLs - JPublish URLs look just like static URLs, even though they are not.
Flexible character encoding - flexible character encoding control – character encoding can be specified for both input and output for specified paths.
Pluggable page manager - JPublish page definitions, which define page properties such as the title and page actions, can be loaded from any class which implements the PageManager interface. Current implementation include two: a file-based system which map one XML file to one page definition and one which pulls all page definitions from a single XML file.
Custom error handling - multiple custom error handlers can be assigned globally or by path.
Utilities - JPublish includes several utility classes which can be used to build URLs, format dates and numbers, and perform other common web tasks.
JPublish can be easily extended through Modules or Components. Examples are provided to demonstrate the smooth integration with Spring, Lucene, Hibernate, AJAX (through DWR), etc.
Welcome to the world of JPublish and ... Develop with Fun!
The JPublish Team