Flash & Flex
Adobe Flex 2 - Answering Tough Questions About Enterprise Development
An interview with an expert Web programmer Anatole Tartakovsky of Farata Systems
Aug. 21, 2006 06:00 PM
There are cool software tools and there are practical tools. People who make their living by developing enterprise Web applications are very careful in selecting the language or technology for their needs. There is a huge difference in requirements for developing an application like Google maps and the enterprise-grade high availability business applications. Anatole Tartakovsky of Farata Systems (pictured) is one of these programmers who know pretty much everything. He lives and breathes programming. If he does not know the answer to your problem today, he’ll know it tomorrow. Flex Developer's Journal have asked Anatole some tough questions that concern most of the enterprise developers who are considering Adobe Flex 2 as a tool for their next Web application.
Q. How hard is it for typical Java EE developer with Struts and DAO skills to add Flex to their skill set?
A. I would say, the hard part is over. Flex allows seamlessly integrate your Web client with the Java server code of any flavor – POJO, Hibernate/Spring or JMS, so the server-side part remains relatively unchanged. Struts developers will find coding states in Flex a great simplification over Struts model – yet yielding fantastic user interface. Flex piggybacks on Java EE and browser technologies, so any experienced Java programmer will be able to correlate his current skills with the development process in Flex. Java and ActionScript 3 are very similar, Eclipse is a familiar environment for many developers. Tools, deployment techniques, security, performance tuning – everything can be reused.
Q. How Flex 2 technology addresses security issues?
A. The server-side security management is quite extensive, and it allows you to use either containers’ offerings or custom security providers via declarative XML binding. There are couple of challenges as Flex supports multiple protocols, so Java EE security that relies only on the HTTP sessions has to be extended, but it is simple and well documented process. On the client side, it builds on Flash player security that is known for its lack of serious security flaws. You have a built-in security manager that has all standard protection for cross-domain and zone access. Corporations can further restrict code they receive from 3rd parties by wrapping the code loaders in additional security managers.
Q. Can you share with us your experience regarding performance of the Flash 9 in a real time mode? What are your thoughts on advantages of using Flash 9 say in a real-time trading applications comparing to a tried-and-true Java Swing front end?
A. Flex is very capable of providing near real-time data rendering to the GUI and very high refresh rates on large data sets. Flash Player 9 is the high-performance modern virtual machine with precompiled optimized code and just-in-time (JIT) machine code compiler. And it is very possible to build the client portion of a real-time portfolio display integrated with news feeds and graphs with about 100 lines of Flex 2 code. A similar Java Swing program (even if it’s created by commercial IDEs) would be on average ten times larger.
The real selling point becomes obvious on a second or third day of the proof of concept phase. A decent Flex developer should be able to prototype (short of server processing) most of the UI for specific trading system by the end of the first week. If you are lucky and the system integration went fine, you can add the collaboration features and multimedia – with total client code base for the whole project within 1000-1500 lines.
Q. Can you compare performance of the Flex 2 and AJAX-based applications?
Q. We are pretty impressed with the quality of Flex 2 documentation and the software. We know that Flex 1.5 developers are very happy with features of Flex Builder IDE. But Java developers are spoiled by excellent and very responsive IDEs and are not too happy with the compilation speed of Flex Builder. But other than this it seems to be a pretty robust tool. If you could give an advice to Adobe on how to make this technology even better (MXML, ActionScript 3, Charting, Data Services), what would it be?
A. I’m glad you raised a concern about compiler and Eclipse environment, which is crucial for creation of the Flex ecosystem. One of the reasons why Flex seems slower then Java is that it does so much more then typical compiler. It uses a very sophisticated code generator, a multi-pass compiler/linker, JNDI to Flash Player and more. It is essentially a full-fledged platform within Eclipse. Opening code generation layers to the 3rd parties would provide for a direct plug of all Java EE technologies into a very powerful client model of Flex framework. Opening the Flash Player via Eclipse APIs would allow companies to provide developers with new Flex designers.
Q. What Flex 2 offers in terms of reporting, or business intelligence?
A.Flex is a great foundation for creating dashboards by providing high impact graphs and highly customizable grids. A transparent integration with data services and java messaging services makes it an ideal platform for creation of the enterprise dashboards. As you know, we have been developing BI solutions for Wall Street companies in Flex for quite some time, and see it as a great platform. It is capable of replacing custom PowerBuilder and VisualBasic applications for a fraction of the cost associated with a rewrite in Java report generators. In terms of replacing larger business intelligence suites, I think, it will be an interesting game – Flex offers so much in accessibility, collaboration and integration, it would be difficult for developers of business software resist to rewrite their products in Flex
Q. Java developers are very impressed with such Flex elements as data binding and E4X (XML processing), which simplifies and even changes the way people write code. What are your favorite Flex 2 features?
A. Flex 2 is innovative in so many ways, and at the same time it brings back some sanity to developers. The amount of code you need to write in Java and any other low level language is completely out of my reach. Writing less code is very addictive. You write your code in a way to make less code next time you do similar task. Open source for all major components of the framework is a great help. You build your components and libraries – to make other people’s life easier – and it is fun.
Q. Yes, we also believe that size mattes: the smaller the better. We're talking about the code. Even though modern Java IDEs can generates a boilerplate code for you, it still the code that someone will have to read and understand at some point in the future. Some Web application developers are concerned that their Flash based clients will not be properly indexed by the search engines. What's your take on this?
A. The problem is not Flash specific, but it’s more about moving from the static publishing to a content management approach. AJAX applications would have exactly the same issue as they update content without page refreshes, thus there is no new URLs to index/crawl, as well as any plain HTML site that is secured and requires a session management. As the result, the search engines are looking to get information in other way then a simple parsing of HTML . An RSS is a good example of alternative technology used by search engines and social-network Web sites.
With Flex, you have a wrapper html page that will provide initial site information. There you can provide some metadata like RSS links that will be indexed by the search engines. You seldom want the search engine to index or cache the page of an enterprise Web application as it would certainly contain some personal or other sensitive information. Also, in order to fully utilize caching of the applications, the URLs should become less relevant. I believe that new services similar to shortUrl utilizing extension of RSS will emerge and will allow application servers to persist state of the Ajax and Flex/Flash applications and expose tags to search engines via public “publishing” hubs. A simple implementation of a state identifier by a short cookie would drastically reduce traffic requirements for such services while maintaining the complete control of the security of the state content on the application provider side and eliminate multiple indexing of the same content.
Q. Many opponents of using Flex technology for the Web applications are asking this tricky question: if you move from one page to another in a pure Flash Web site, can you bookmark, say page #3?
A. The bookmarking of the sites is still available on the browser. But in Flash-based applications you do not move from one page to another as there is no roundtrip to the server – essentially you are on the same URL all the time. What looks like a page to the user is just another screen in the either monolithic or dynamic application. The approach I would take is to make application bookmark the data the user is looking for – that provides you much richer insight into the user’s preferences and type of information he is customary searching for. That data would be associated with user and combined with regular URL bookmark upon the user re-logon/cookie retrieval.
Q. Can you elaborate a bit on a little known fact (at least for the general public) that a Web browser can maintain only two connections to the Web server? Do you think it puts Flex into advantageous position comparing to AJAX based tools?
A. Flex provides extensive infrastructure for connection management. It allows you to specify all protocol details for RTMP, HTTP, HTTPS as well as plain socket connections. You can then specify the order in which the protocols have to be tried due to availability/firewall issues. Also, Flex automatically bundles multiple requests going over the same transport striving for the maximum performance out of the box. So you get much better use of the same two connections if you limit yourself to http only, and can easily control priority line versus data line. You also get an alternative real-time push or pull connections on additional protocols, direct socket API and tons of low-level hooks that allow you build any protocol you want.
An important thing for me as someone who worked on AJAX frameworks in 1999-2005 era is that Flex is unbelievably more robust in code and data delivery fields then any cross-browser AJAX solution I can think of. I would put robustness as even bigger show stopper for large AJAX applications then the performance. Flex/Flash really gives back control over communications that is very important for enterprise applications.
Thank you Anatole. We're sure your answers will help many development managers who are still sitting on a fence, and they will seriously consider Flex 2 as a front end solution for their Java EE applications.