Exadel’s Flamingo Project for Rapid Flex and Java Development
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:Igor and Fima continued by discussing how it works:
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.
- 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.
- 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.
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:
To learn more about Flamingo check out the Flamingo project home page.
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.
- 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.
- 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).