Salmon LLC is pleased to announce the release of SOFIA 2.2. SOFIA is a free, open source, model-view-controller framework that brings web application development functionality similar to ASP Dot Net Web Forms to the Java developer. Whereas most Java web frameworks focus on only one or two aspects of the MCV design pattern and provide little or no development tool support, SOFIA focuses on making web developers immediately more productive and so provides a complete end-to-end solution right out of the box.

SOFIA consists of a Java class library of foundation code for building business logic and graphical user interfaces, a JSP tag library for HTML user interfaces and a Swing based component library for browser based rich clients. The package also includes optional plug-ins for Eclipse and IntelliJ Idea to make coding tasks easier and an optional Dreamweaver plug-in that provides a drag and drop WYSIWYG environment for visual development. SOFIA is designed for database applications and directly supports most major engines including: Oracle, MySQL, Sybase, MS SQL Server, DB2, Ingres, Postgres and Firebird.

Version 2.2 adds the following new features:

· Now develop with SOFIA in Linux via a new platform neutral install procedure.
· A new Search Form, List Form and Detail Form implementation that allows you to build flexible and powerful search and data entry screens in minutes with no coding.
· Support for JSR-168, the portlet API. Use your SOFIA JSP pages as portlets in any vendor’s JSR-168 compliant portal.
· Enhanced support for EJBs.
· Numerous additional enhancements provided by the open source community.

Some current SOFIA features:

· Visual development of the user interface by integrating a pallet of over 50 visual components into Macromedia Dreamweaver. Simple components include: Data grids with built-in sort and paging options, Navigation Bars, Trees, Tree-Tables, Calendars, Display Boxes and a rich assortment of data input controls. More complex components allow you to build complete search and data entry screens in minutes with no coding.
· Plug-ins for Intellij IDEA and Eclipse for increased productivity.
· Code generators for many non-visual tasks such as database access.
· Automatic binding of model and view components. The initial values on a screen will automatically reflect the values in database and all changes made on a data entry screen can be saved back to the database with one line of code.
· Clear separation of the UI design from back end Java code. SOFIA JSP pages use zero Java inline code and no tags that try to simulate code like iteration or condition tags. The entire page definition can be described with simple HTML tags combined with SOFIA’s HTML-like JSP custom tags. Business logic is completely encapsulated from the GUI in separate Java classes.
· Build a web GUI with HTML-like JSP tags or by instantiating Java web components in manner similar to Swing or the AWT.
· Controllers provide event handling for web page actions in the same way Java Swing does for desktop applications.
· Power to manage any attribute of any visual component at runtime. Controllers can directly manipulate view components by setting properties or by changing model data. Alternatively, visual component attributes (visible, enabled, color, font, URL, image source, etc…) can change dynamically at run time using simple but powerful one-line expressions.
· Easy implementation of new JSP tags: you don't have to follow the whole JSP specification to build a new tag. Just extend SOFIA components and the development of a new tag becomes much easier.
· Complex declarative data validation rules at the model or view level. Depending on the type, rules can be run on the client or on the server in either Java or JavaScript. Even more complex rules can be encapsulated into Java validation classes.
· i18n: use of localization keys that can be specified on some of the SOFIA components and tags that will cause some of the attributes of the
components to change based on the language preferences of the visiting user.
· Built-in personalization/branding. Allow your web application to have a look and feel customizable by each individual user. The personalization implementation also allows declarative security conditions by user or group (e.g.: some fields are only visible or enabled for certain users).
· Easily pipe database or EJB data back and forth to Java applets in addition to HTML pages.
· Display, Sort, Filter, Export and Print complex WSYIWYG reports using Jasper Reports and SOFIA’s custom Jasper Reports viewer applet.
· Output to different clients: HTML based, WML based, Swing Applets, or Java Webstart.

SOFIA can be downloaded from SourceForge at

For general information, complete documentation, code examples and videos check out: