Posted on September 4, 2013 by Alessio Stalla

Several months have passed since the last release of Portofino, and some of you might be wondering what we've been up to. Despite the hot summer, we haven't been lazy! In fact, I'm very excited to share a preview of the next release of Portofino with our users and followers. The new version is going to be a giant leap forward! We want Portofino to become the ultimate tool to create modern enterprise applications with ease and fun. Modern users have come to expect their applications to be good looking and usable on many devices - from smartphones to tablets to good old PCs. They increasingly expect to find in the business/Intranet web applications they use every day the same quality and productivity they find in popular Internet applications.

That's why for 4.1 we've been concentrating on updating our technology stack, in particular by using HTML5 with Twitter Bootstrap for the UI. You might have noticed that we've been using a Bootstrap-based theme for our site for a while, but you cannot even imagine how good Portofino looks with Bootstrap in the core framework... unless you download it, of course! That's right, Bootstrap is already there in the beta version we're publishing.

Another important goal for 4.1 is modularity. We're breaking Portofino into smaller modules so you can use the features you want without necessarily embracing the whole framework - for example, you might leverage our user management and Groovy actions without using the DB access layer (Liquibase, Hibernate, and CRUD pages). Everyone will be able to create their own modules and seamlessly integrate them with the rest of the framework.

What we have already done

Listing each and every change we did from 4.0.10 up to this beta release would be a daunting task (and probably a boring read as well). Let's just outline the most important changes.

Technological upgrades

  • Java 6 is now the minimum Java version required (it used to be Java 1.5).
  • Servlet API 3.0. This means Tomcat 7+. Servlet 3.0 is very important for modularization, because it allows the web.xml descriptor to be split among different jar files, and web resources to be placed in jars, instead of in a single war file.
  • Twitter Bootstrap is included in the core framework, supported and employed by Elements fields, and used for the whole UI. As a result, the interface looks great and is natively responsive (it adapts to various display sizes). With Bootstrap, we also stopped using YUI altogether; we were using it for layout and rich components (datatable).
  • Hassle-free buildability with Maven. Portofino has been built with Maven from day 1, but we used to rely on a number of artifacts not available on Maven Central for testing purposes or to keep Java 1.5 compatibility. Portofino 4.1 can be built by anyone without installing anything manually in their local Maven repository.

User Interface improvements

Using Bootstrap enabled us to do many types of improvements to the user interface of Portofino. Some of these are directly visible to end users; others are more subtle changes that are important to developers writing their own custom JSP pages.

  • Better data table. We replaced the YUI2-based data table with our homegrown one based on Elements and Bootstrap. As a result, CRUD search results look better, need less JavaScript code, and are more accessible (the table works even with JavaScript disabled).
  • Page embedding overhauled. The "main" page action is now more important than the embedded ones. From the end user's point of view, this means that it is easier to recognize the most important/active element on a page with many components. From the developer's, this means that a page has more control over its own rendering when it is not embedded (for example, it can add stuff to the top of the page content). Custom pages will have to be adapted, but it's not hard to do so.
  • Better buttons. With icons and/or text, Bootstrap styles and optional grouping, all controlled via @Button annotations on action handler methods, as always.
  • Date pickers, autocomplete fields and dialogs now are made with Bootstrap.
  • CKEditor updated to the latest version, which is better looking and integrates well with the main UI theme.
  • More focused navigation doesn't show irrelevant pages, while still making it easy to jump around, thanks to the always-present breadcrumbs.

User management

We took user management to the next level, while keeping our architecture based on Shiro and Security.groovy.

  • Self registration with CAPTCHA and confirmation email.
  • Password change in the core framework. Replaces the password change page action.
  • Password reset (lost password), with confirmation email.
  • Login action easier to customize.

Everything can be generated using the wizard and customized by hand.

Menu system

Modules and applications can dynamically append items to system menus in the top-right area of the page. The default theme supports 3 menus - one for CMS features, one for the admin section, and one for user management. The same infrastructure can be used by custom themes for extra menus.

Tons of small improvements and bug fixes

We also took the time to scratch some itches and fix stuff we didn't like. We corrected many bugs as well. Of course, this being a beta, we probably also introduced new bugs - that's why we're showing a preview and hoping you will help us find issues with it. We want 4.1 to be as stable and bug-free as possible.

Where do we want to go from here

We believe that the beta4 already gives a good glimpse of what we want to achieve. However, a lot remains to be done. We want to:

  • Modularize further:
    • split existing modules into finer-grained artifacts
    • publish module resources under a uniform directory structure
    • eliminate the apps directory so that an app will become a normal .war file and will be able to use Servlet 3.0 to override resources bundled with module jars.
  • Enhance the UI by customizing Bootstrap.
  • Provide a richer administration panel to manage from the web UI every subsystem in Portofino, including mail, Quartz, and caches.
  • Use more of HTML5 in Elements and in the default theme.
  • Improve our existing APIs to make extending and customizing our built-in actions even easier.

Download it!

We invite you to try this preview; you can download it from SourceForge. If you have issues or suggestions, please come to our community forums.


comments powered by Disqus