InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Exadel’s Flamingo Project for Rapid Flex and Java Development

Posted by Jon Rose on Jun 01, 2008

Sections
Architecture & Design,
Development,
Enterprise Architecture
Topics
Rich Internet Apps ,
Java ,
Rich Client / Desktop ,
Web 2.0
Tags
Spring ,
Adobe ,
Adobe Integrated Runtime ,
Flash ,
JBoss Seam ,
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

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.

Questions for an Enterprise Architect

Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?

Wrap Your SQL Head Around Riak MapReduce

Sean Cribbs explains what Map-Reduce and Riak are, why and how to use Map-Reduce with Riak, and how to convert SQL queries into their Map-Reduce equivalents.