InfoQ

News

Exadel’s Flamingo Project for Rapid Flex and Java Development

Posted by Jon Rose on Jun 01, 2008 04:24 PM

Community
Java
Topics
Web 2.0 ,
Rich Client / Desktop ,
Rich Internet Apps
Tags
JBoss Seam ,
Adobe Integrated Runtime ,
Adobe ,
Spring ,
Flash ,
Flex
Exadel’s Flamingo project is a tool for bootstrapping RIA applications built with Java backends. The tool offers support for both Seam and Spring in the middle tier. On the presentation tier, Flamingo supports both Flex and JavaFX. The tool has a similar approach to bootstrapping applications as the AppFuse project available for more traditional Java web tier frameworks. InfoQ touched base with Exadel’s Igor Polevoy and Fima Katz to learn more about Flamingo.

Igor and Fima started by sharing details on the features of Flamingo:
I'd say that the features today can be broken down into three logical groupings:
  1. Tools
    Flamingo provides the ability to quickly bootstrap a simple functioning project. It is no secret that putting together a project is a time-consuming effort. Besides, there are so many different ways to do it in Java. We recognized this problem and created Flamingo tools as a solution. With Flamingo tools, you can not only create a new project quickly, but also generate pieces of an application on demand over the course of the development cycle.
  2. An integration library
    It serves as the glue between client and server code. We use only binary protocols because they are the most efficient. All the configuration (however little) is done when the project is created. So, developers only need to focus on the business problem at hand.
  3. Client-side components:
    These are non-visual components that make development easier by providing validation, the ability to bundle multiple requests into one, etc. One of the interesting features of Flamingo is dynamic persistent methods. These methods allow intuitive, English-like queries to a database, instead of SQL (The SQL is actually created by Flamingo on the fly). This feature alone can provide a huge boost to development productivity.
Igor and Fima continued by discussing how it works:
We use Maven for project organization as well as project creation. Our Maven bootstrap wizard asks a few questions about different aspects of the project, such as server-side technology (Seam/Spring), client technology (Flex/JavaFX), database type, location, credentials, and a few other questions based on previous selections. Then, a Maven project is generated. This project includes all the necessary components of a small project, like unit tests, persistent units, and a working screen. Standard Maven commands are used for development at this point. This gets a new fully configured project off the ground in minutes.
InfoQ asked for a comparison of the Spring and Seam technologies when integrating with RIA technologies:
Both Spring/Hibernate and Seam/JPA combinations are viable solutions for implementing RIA applications with Flamingo and Flex or JavaFX. The choice of one versus the other often depends more on the current culture and infrastructure of a given organization and development staff preferences than on any particular features. In general, Seam and Spring are difficult to compare even if they overlap in places. They were designed for different purposes. Flamingo tries to be neutral. Whichever back-end technology is selected, it is supported as equally as possible by Flamingo. I'd say that an organization is free to select Seam if they standardize on Java Enterprise with it's wealth of support, otherwise a Spring/Hibernate combination should be considered.
Igor and Fima commented on who should consider using Flamingo:
The target customer is the enterprise and the enterprise application developer. We see significant adoption of RIA technologies at the enterprise level -- such as different flavors of AJAX. Usually, AJAX technologies are well integrated with enterprise Java-based back-end systems. We developed one such enterprise solution, RichFaces, ourselves, combining JSF (JavaServer Faces) and AJAX. However, without going into the actual pros and cons of AJAX, we definitely see a great need for enterprise development organizations to have an alternative solution such as Flex. Flamingo makes it very easy for enterprise folks working in Java to create new applications using Flex and Java.
And, on Open Sourcing:
We have been working with Open Source for a long time and have seen the great power of the community and the approach.
InfoQ inquired for more details on how Flamingo supports agile development:
  1. Integration
    This is what we have today. It provides seamless development using a combination of Flex or JavaFX with Seam or Spring, eliminating all the manual coding that's required when not using Flamingo. As a result, development is much easier, faster, and cheaper.
  2. Agile RIA platform including a set of advanced tools
    In order to answer the challenge of "Agile" or "Rapid" development, technical solutions like Ruby on Rails and Grails emerged. While these are great frameworks, they stop short of agile development for rich Internet applications. Flamingo is targeted to change this by introducing new tools and components to RIA. These are Flamingo code wizards which generate projects and simple screens. The next releases of Flamingo will unveil even more powerful tools. Also, all wiring of server and client components is performed by Flamingo out of the box, which reduces project startup time. The third agile facet of Flamingo is its client side components, with the ability to create runtime requests to databases with extremely easy coding patterns on the client. This capability alone is a huge time saver, but, if you put all the aspects of Flamingo together, it makes it an extremely desirable agile development platform for organizations.
  3. On-demand RIA development platform
    This includes providing a set of pre-built components (visual and non-visual), and a set of pre-built application components (for example, dVision for data access/navigation).
To learn more about Flamingo check out the Flamingo project home page.

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.