We are proud to announce the major release of the 3.0 version of [fleXive]. The feature complete major release is now available for the community after a successful testing and evaluation period. [fleXive] is a Java EE 5 framework that speeds up development of data-centric (web) applications demanding security, persistence and internationalization. It focuses on enterprise-scale content modeling, storage and retrieval. Using a stack of well proven and ideally matched Open Source libraries, [fleXive] provides comprehensive JSF support for displaying and manipulating data in (Web) applications. The runtime environment can be included in a non-intrusive way in existing Java EE applications. You can also build new applications and package them into stand-alone Java EE applications using tools provided. The goal of [fleXive] is to keep your applications flexible during the development cycle and in production, allowing you to react to requirement changes easily at any time. The key features include: * Dynamic mapping and definition of hierarchical XML-like data structures to relational databases featuring a lot of (optionally multilingual) data types * Content manipulation with no need to create custom DAO’s * Internationalization (data and user interface) * Versioning / History * Import and export of content and data structures * Workflows * Security using access control lists (ACLs) ruling mandators, roles/groups/users at the granularity level of your choice (type, instance, workflow and property permissions) * Event based JSR-223 Scripting * Manage and conveniently access your data in a virtual tree-like file system * Loads of ready to use JSF components supported by Yahoo! User Interface (YUI) * Powerful SQL-like query engine * Caching * Mandator and ASP support [fleXive] comes with an intuitive and comprehensive backend application.It provides feature rich graphical user interfaces to model and organize data structures and contents. This includes security and workflows, building search queries, administer user accounts and usergroups as well as scripting. Relying on latest Java EE standards, [fleXive] ensures easy integration and interaction with Java enterprise software and frameworks. [fleXive] key technologies use and support: * Java 5 * EJB 3.0 * JSF 1.2 / Facelets / Ajax4JSF / Richfaces / YUI * Runs on popular JavaEE 5 Open Source Application Servers like Glassfish v2 and JBoss * JSR-223 compatible Scripting Languages like Groovy, JRuby or Rhinoscript if running on Java 6 The framework is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or higher. The optional backend application built on top of the framework is licensed under the GNU General Public License (GPL). The [fleXive] framework is open source and available at http://www.flexive.org where you can find further information about the framework alongside with tutorials, reference documentation, a download section, wiki, issuetracker, etc. There are screencasts, covering application development with [fleXive] and the graphical user interfaces of the backend application, also available on our project website.
- Posted by: Markus Plesser
- Posted on: September 05 2008 08:04 EDT
Ok, so this sounds interesting, but why should I use yet another framework? It seems to me like a mixture of JBoss Seam and Hibernate.
I tend to agree that at the first looks you can get the impression that we just mix some already existing (and great) frameworks, add some bells and whistles and rebrand it as [fleXive]. But this impression is in my opinion not even scratching the surface of what [fleXive] is capable of. We did a lot of inhouse projects with the technologies you mentioned and sooner or later hit a wall because it somehow did the job, but not to the extent we wanted it. We either had issues concerning fine grained ACL based security if we used Hibernate, because you have to manually code ACL's into your entities and there is no easy way to code "created by" permissions to allow the creator of an instance special permissions, leave alone using them in more or less sophisticated queries. Another issue are multilingual contents: using them in Hibernate requires special columns or tricky queries. In [fleXive] you just flag a property as multilingual and you can store as many translations as you need - of every datatype including binaries (which are another thing not too easily handled using Hibernate)! Do not get me wrong - I really like Hibernate but there were use cases where we just could not find an easy and affordable way of coding our requirements. Another thing about Hibernate is that it is a "plain" object-to-relational mapper, whereas [fleXive] does not require you to model classes which reflect the table structure (or parts thereof). Instead you can operate on one single Object (FxContent) which gives you access to all properties in an XPath-like manner. Admitted its a matter of taste, but it offers more flexibility if you have to deal with changing data structures. Or lets pick uniqueness of data as another example: in [fleXive] it is possible to enforce uniqueness for either a complete type (=table in Hibernate), within a (sub)group or within a data instance. Combined with a really flexible scripting system which allows for event based data manipulation lots of previously "headache situations" can now be handled with little effort. As for JBoss Seam ... well we use it as well of course ... with [fleXive], both work very well together and complement each other. [fleXive] provides for example some simple, yet powerful JSF tags to be able to display and edit contents within a Seam application. Like I said in the beginning of this wall of text ... its mostly a matter of preferences and tools of choice how to achieve a goal. I don't want to go into bashing other frameworks or saying X is better than Y ... all have their pros and cons. I do however hope to have made clearer what [fleXive] aims at in the framework jungle ;-) Cheers, Markus Plesser [fleXive] core developer http://www.flexive.org -- UCS - unique computing solutions gmbh http://www.ucs.at
Hi Ken, Just a few points to add to Markus' answer. JBoss Seam and Hibernate are really mostly orthogonal to [fleXive]. For example, Seam and Hibernate could used to build the application UI and store application data (i.e. Java objects). [fleXive] could then be used to build the actual data store available for application users. Think of flexive as a rather isolated part of your application, it simply provides a big data store (similar to Java Content Repositories) where you can dump and retrieve any data the user enters (and have a fancy GUI if you need it). The main features of fleXive are (compared to a more simple approach backed by one or more relational database tables): - Multi-Language contents (on property level) - Security through ACLs (down to individual properties) - Dynamic definition of data structures - Import/export of data and types through XML - Ready-to-use web UI for administering all this stuff - Ready-to-use JSF components for building GUIs Hope this helps to clear up things a bit... Daniel Lichtenberger [fleXive] core developer http://www.flexive.org -- UCS - unique computing solutions gmbh http://www.ucs.at