Finally I'll start column on Ilybra application. A lending library system for lending books to readers, managing books and copies, printing reports, keeping history of reader's lendings and of course searching capabilities by different search categories. All based on PAT framework.
Numbers of systems' data for your information (as of 1997 - May, 2005, data has been imported from former system):This is "an enterprise-class system".
Ilybra is entirely based on POJO model - and this is most important and unique. What's unique that persistence is invisible. There are no mappings, no tables. The only requirement to the POJO model is to annotate transaction-methods and business objects (BO) - one line of code:
/** @@pat.transaction */
public void removeBook(Book book, DateRepresentation removalDate)
{
books.remove(book);
removedBooks.put(book.getId(), book);
book.setRemovalDate(removalDate);
...
}
Ilybra uses Jakarta Struts for presentation layer, Log4J for logging, works on Tomcat or JBoss AS. Tests are made with plain JUnit. Regression tests and load testing are done by Jakarta JMeter. Ant helps with one-click distribution creation, iText generates PDF documents on the fly, CSS supports printing.
Custom aspects take care of:
Why aspect oriented way?
This is pragmatic way, more. I do nothing for show. I do it because simpler software
means you have to look for concerns, separate them and merge together
(refactor?). And you have to do it all the time - well I do it this way.
Aspects are the most suitable way for developing this kind of applications nowadays.
And application is a set of crosscutting concerns, right? :)
Read more about Why aspect orientation?