Welcome to Janno, the core Web Application platform for the Jamecs modular web application server. Janno is an advanced Web Application Platform that provides the foundation for high-quality, cutting edge software systems with web-based architecture and user interfaces based on the Java(tm) Servlets specification. Janno's advanced inversion of control functionality, firm grounding in the precepts of MVC design, and sophisticated constructor dependency injection-based architecture make for a powerful, flexible, elegantly functional alternative to traditional web frameworks.
The goal of Janno, as with every Roscopeco Open Tech project, is to provide a high-quality, solidly engineered, firmly user-focused platform that makes use of existing best-of-breed solutions with the sole aim of making your job easier. Janno provides a great many advanced and esoteric features for those really complex cases but we try wherever possible to cover the common use-cases with sensible defaults, single parameters, and (the equivalent of) null constructors.
At it's most basic, Janno provides an 'empty box' into which self-contained modules (deployed in standard Jar files) can be deployed according to some configuration. The Janno core provides a basic Moxy-based runtime dependency tree, module deployment and lifecycle support, and generic support for side-issues such as configuration and classloader setup. This core is based upon the PicoContainer DI container, and integrates this dependency tree with the various 'scopes' defined by the Servlets specification.
Advanced configuration issues such as dependency clashes (a primary indicator of Classpath Hell), module resource and proxy support, scripting, and support for advanced techniques such as AOP are provided by the Moxy modular IoC framework. Moxy provides complete sandboxing for modules, avoiding the normal Java classloader delegation and placing the onus on the container and the module to agree on a set of compatible classes / packages to export to other modules, the core, and the request pipeline, while retaining full backward compatibility with the PicoContainer system (and thus it's standard components).
Currently Janno provides the following major features:
sess.getAttribute("janno.session").getComponentInstance(Your.class).method()
Janno is now becoming fairly mature in terms of stability and functionality, and is well on track to enter feature development. While we still don't consider Janno of production quality, we should now be beyond untraceable problems, wierd bugs, and 'get the CVS' support.
That said, the developers out there can always find the latest stable snapshot by checking out the HEAD branch from anonymous CVS:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jamecs login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/jamecs co -P janno
Just hit [return]
when prompted for a password.
In line with our usual policy, Janno is a full-time POSS project, and is thus under very active development. The best place to find up to the minute information is on our wiki.
Janno is part of the Jamecs project, and is covered by the same Open Source Apache Software Licence as the rest of the project. The full licence terms are included here.