I am currently working on a RIA project in flex, but have recently come across openlaszlo. It seems a lot of large projects have chosen it over flex, such as the streaming music service Pandora. I'm interested in why. So far the biggest advantage I have seen is that it has an abstraction layer for support of flash 6,7, 8, 9 and dhtml and has been in development for a longer time (so possibly more stable).
Has anyone had much experience using both, or just openlaszlo even? is the support for dhtml and older flash versions really that big of an advantage with the popularity of flash 9 these days? Might this just be because of many developers are already comfortable with javascript/ajax? Besides language preferences, why openlaszlo and not flex?
Thanks for any tips!
Ryan
When companies like Pandora chose OpenLaszlo, Flex was still a commercial product (even the compiler). The Flex versions 1.0 and 1.5 were not very stable, and only with the 2.0 release of Flex the platform got a lot more stable. Macromedia upset a lot of developers, since Flex 2.0 was no compatible with 1.5, and all applications had to be rewritten for the new release. In that situation quite a few companies thought that OpenLaszlo is not a bad choice.
The most powerful feature of OpenLaszlo is the LZX language. The language supports classes, animation of any numeric property, constraints using a attribute="${}" syntax, mixin support, datasets with datapath (xPath syntax based) mapping. Some of the key developer of the LZX langauge had been working on Apple's Dylan language before, and a lot of the powerful concepts of Dylan have made it into the LZX language.
I've done both OpenLaszlo and Flex development. Flex has excellent tooling support by various IDE vendors. But the ActionScript 3 language can be very limiting, as in Java you spend a lot of time thinking about your class model. OpenLaszlo emphasizes instance based development (very fast for prototyping, while it's still possible to build very complex applications with 100k+ lines of LZX code). The largest OpenLaszlo applications I'm aware of are Laszlo Webtop (120K+ lines of LZX code), and IBM Websphere Commerce Edition (http://ibm.co/Kid5tc). I've heard that other companies have created equally large applications using OpenLaszlo.
Since version 4.2 OpenLaszlo integrates the Flex SDK. The OpenLaszlo compiler generates the LZX code into JavaScript 2, and then into ActionScript 3 code. If you compile an application to both DHTML and SWF10+, you can profit from the better type checking of the Flex compiler, even if your application will only be deployed for the DHTML/HTML5 runtime.
OpenLaszlo is very stable. The last major release (4.0) has been in March 2007, although the OpenLaszlo team considered the 4.2 release to be equal to a major version upgrade, since it added the ActionScript 3 and SWF9 support to the platform. 4.2 was released in December 2008, the current stable release is the 4.9 version - although many community members and Laszlo are already using OpenLaszlo 5.0 (trunk, unreleased) in production.
After Adobe's announcement to contribute the Flex SDK to the Apache Foundation (now an Apache Foundation Incubator project), Adobe announced that they had been working on a cross-compilation feature for the next generation Flex compiler called "FalconJS". Adobe said as well, that FalconJS (which will probably be contributed to Apache Flex in Q4 2012) will not be able to cross-compile existing Flex applications into JavaScript. A simple list example of FalconJS (as demoed in December 2011) generated into 5 MB of uncompressed JavaScript code, wich could be boiled down to 2.5 MB using the Google Closure compiler's advanced mode. A similar OpenLaszlo example in the DHTML runtime compiles to less than 750k of JavaScript code.
I think your term of 'a lot of large projects' is very relative. Yes, some large companies have used it, but I don't consider any of them large projects. If you look at all of them in the OpenLaszlo showcase, they seem fairly simple interfaces to me. Also note that OpenLazslo compiles Flash, not Flex and associated framework.
To me, OpenLaszlo is an alternative for creating simple RIAs in a way that the end code can be compiled into Flash or Javascript. Haxe is another alternative to this, and I think it does a better job than OpenLaszlo.
With that said, there's a problem with these "generic" write once, compile to Flash/Javascript framework; it doesn't harness any of the power/advantages of each specific platform. Flash is constantly changing and so is Javascript with the addition of html5 tags and css3. If you ever have experience in both, you'll notice that they're very different in the way they do things and on algorithm might work well with Flash, might not with Javascript.
My point being, if you are to choose a technology, go for the one that's more appropriate. If your project has a need to have both Javascript and Flash, then this might be a good choice, but remember that you'll then be losing the 'power' of each. For instance, Flex has a very good skinning architecture and a set of tools that is essential for enterprise development. Javascript can do some pretty neat stuff with selectors, css3, and some other frameworks like jQuery.
In my experience, post compilers like OpenLaszlo eliminates those strengths. Plus, if there's a new thing that comes outs (like say, hardware accelerated video/3d for javascript/flash), you have to wait for the people at OpenLazslo to update before you can use it (if they use it).
I started developing RIAs with OpenLaszlo as it offered a cross browser run-anywhere kind of framework. The user experience delivered with it was also very good.
I moved to Flex (when it was in Beta) because:
Every capability of OpenLaszlo was available in Flex.
Flex had an extra advantage as it was a supported commercial product from a leading digital media content creation company Macromedia & later acquired by Adobe.
Flash Builder (a.k.a Flex Builder) built on Eclipse provided a good development productivity improvement. (so spending one time license fee on it is not at all an issue)
Above all Flex had better server-side integration / remoting capability.
Flex had plenty of tutorials & sample codes so ramping up a new developer was very easy.
Now Flex is also community driven open source project under Apache Software Foundation
OpenLaszlo now provides an extra feature over Flex (until FalconJS cross compiler is released) that it can run both Flash & Ajax runtime environment with a single code base .
But still Flex has an added advantage of having very good development environment (with integration to other Adobe designer tools) and good server side integration capability so for enterprise applications, Flex is a clear winner.
Related
I am looking to get into Flash game development (coming from XNA), but I'm not so sure I'm willing to dish out for the pricey Adobe Flash software. I've noticed there is the free "Flex" SDK.
What's the difference? Would I be able to develop a Flash game using the free Flex SDK and submit it to a game portal in the same way I would, if I had developed a Flash game using Adobe Flash?
If you use Windows, FlashDevelop may be an option. It is free and open source.
I believe you can use it in conjunction with the compiler that comes free with the Flex SDK from Adobe, also to compile ActionScript projects that doesn't include the Flex component framework, in other words, to develop stuff like games and such, in pure ActionScript, rather than Flex based RIA's.
There are 3 different things here, I think.
The platform in itself : the flex sdk is a compiler that targets the flash player, and is perfect for game development, and you won't have any problem to submit a game developped this way.
The IDE : If you are a programmer you'll be disappointed by Flash Professional, which is clearly aimed at graphists. That leaves you with 4 main options : Flash Builder, the IDE offered by Adobe, FDT, developped by PowerFlasher, FlashDevelop which is free and open-source, and IntelliJ which now has decent AS3 support. Or, you can of course develop in any text-editor and compile with the Flex SDK
The framework : for game development, you probably don't want to use the flex framework, which is rather heavy and won' bring much in terms of functionnality.
There are a number of confusing* terms surrounding your question:
Flash - An interactive content development tool that has lots of vector drawing and animation capabilities, can incorporate interactive elements programmed in ActionScript, and publishes to SWF files.
Flash Player - A browser plugin that runs SWF files.
Flex - A framework for developing rich internet applications by programming in ActionScript and laying out UI in MXML.
Flex SDK - A set of freely downloadable compilers for ActionScript and MXML that generate SWF files.
Flash Builder (formerly Flex Builder) - An IDE sold by Adobe for programming ActionScript code.
Flash Develop - An open source IDE for programming ActionScript.
Long story short, a "Flash game" is a SWF file that runs in the Flash Player.
*Most of the confusion is because Adobe purposely made the terms confusing. Part of the problem is that they occasionally change things, like when they renamed Flex Builder to Flash Builder or when they changed Flex SDK from an IDE to the underlying compilers (and actually I'm not even entirely clear about that last one.)
I have used FlashDevelop earlier..
FD IDE great for AS3 developement..
Even they support Haxe which is one more open source programming language..
You can compile a Haxe program to a .swf file. Haxe can compile for Flash Players 6 to 10.
http://haxe.org/doc/intro
I think you should try Haxe and you will love using the FlashDevelop IDE as well.
You can:
1) use Flex SDK to compile pure AS3 code, which is convenient. It helps organizing your code and debugging, unlike Flash CS.
2) if you are making a game that involves a lot of drag'n'drop, GUI manipulations and so on, I would recommend the Flex Framework.
I have seen flex used well for games, altough it requires a bit more ground work in terms of sprite and cast organisation. Making games even in flash mx and 2004 was an absolute breaze, it really depends on the nature and complexity of the game, I find making games a little easier in the old flash 8 workflow, if we are talking cheezy pop cap games, but I have seen many casino's do perfectly decent work in flex on gaming engines.
As someone who also comes from a heavy MS dev background having gui dev tools is a plus once you have used RAD Tools you will never go back to linux style text editing and tools.
Flash Builder (flex 4) is a very very nice tool compable to visual studio in allot of ways.
Altough if I were to describe Flex Builder the workflow is identical to VB 6 its like VB for the web, except instead of vbscript you got a full oop language instead.
I would recommend using it (even in 60 day trial) I would recommend it.
I have seen some very good flex game engines even a port of quake 2, so depending on how sexy you want to get it can handle very well.
I know am replying late to this question, But just wanted to add my view on Flex 4.6,
Its wort upgrading to Flash builder 4.6 where mobile development on Blackberry, Android and IOS is supported. Its much simpler to develop and build applications for mobiles using Flash builder 4.6.
You can also refer to
http://www.adobe.com/devnet/flash-builder/articles/whatsnew-flashbuilder-46.html
http://www.adobe.com/products/flash-builder/features.html
Flex isn't really for games. It's more for RIA (Rich Internet Application), which isn't really the same thing.
You can program against the Flex SDK itself, and it's free, but you'll be 1/10 as productive than if you use Flash Builder. It does a whole lot for you. But, anyway, I think you should look into Flash development - not necessarily Flex.
I'm pretty familiar with using Adobe Flex & AS3, and compared with writing apps in JS/HTML I think it's very cool. However, since AIR is essentially a non-browser version of Flex with benefits like local storage, it seems to be competing as a cross-platform desktop application platform... and in that space it's much less mature than more established desktop technologies.
So what's the advantage of creating a desktop application using AIR compared to something like Java (or C++ using a cross-platform GUI library like wxWidgets)? Java's equally capable of communicating with the server for instance, I'm not quite sure what AIR adds when competing head-to-head in the desktop development world?
In my opinion the biggest advantage is productivity (if you are interested only on desktop)- it's much more faster to build a nice UI using Flex compared with Java Swing for example (try to build a transition in Swing). Also the new components from Flex4 allows to do component skinning much easier.
However (as written by Groky) you should take into account also the disadvantages. It would help if you write down what are the main features of your planned app and check how they are handled by various platforms. For example if multithreading is needed AIR is a bad choice.
AIR takes the goodness of Flash Platform cross-platform and as of 10.1 across many cutting edge mobile platforms as well not to mention that Google is actively working with Adobe on the mobile AIR for Android. That's the key perspective here and I think you don't doubt the fact that Google's open-source platform will be big. Android devices make the fastest growing chunk of mobile platforms already. Also, think of the upcoming Chrome OS. Is AIR going to have a role there? I bet it will.
IMHO AIR makes it a lot easier to deploy rich applications across platforms. Rich Applications as in terms of Flash Platform.
See what Wired has done with Adobe on ePublishing. That should answer this question well.
In my experience there is only one advantage:
Cross-platform
However there are a number of disadvantages:
No communication with native platform except by installing a separate server!
Native window handling is very primitive (no modal dialogs!)
Less mature (i.e. buggy)
Fair Question. Well to begin with AIR is not "a non-browser version of Flex" or "a non-browser version of Flash" ADOBE AIR is a run-time that hosts applications created in a variety of protocols including: HTML, JavaScript, AS3. If one is so inclined tools like ADOBE Alchemy will let users who prefer C++/ JAVA to compile code into SWCs and SWFs.
From a designer's perspective ADOBE FLASH, DREAM WEAVER, and FLASHBUILDER provide seamless desktop application development. While from a developers stand point the same code used for web based content becomes available creating desktop application with little to no recoding. This is all without mentioning the ability to leverage existing E-commerce and web based marketing APIs and SDKs; creating a dynamic intelligent experience for the end user on the desktop.
For me and my company, the main advantage is that it's the same code on our website as in our AIR app. This could be a Flex app or HTML/JS app, but you keep the same single codebase.
AIR 2.0 will address Groky's issues, with access to native applications, better window handling, and much less memory intensive, which led to lots of bugs in 1.0/1.5.
If you don't have a web app already, and you're not locked into AS/JS, then there's no real reason to go with AIR over Java/.Net/PxWidgets... unless you like the look of the latest Flex 4 components, which is quite nice.
I think it's because:
Cross platform
Very easy to develop - learning AS/JS/HTML is much easier than learning C++/Java/MFC. Most of the requirements are not that strict. I developed many tools with AIR/Flash for myself to save me hours of work. If I do that in C++, I will surely waste more.
This is not a pure technical question, but I believe answers will help the RIA community.
We are a software development company working on development of a stock trading product. We chose to use Adobe Flex (in mid of 2008) due to its browser penetration and its maturity relative to Silverlight. We already developed the system, and we are quite happy with it.
Now we are planning to launch the second version of our product, and it will feature a much more advanced user interface -- basically a framework of dockable windows and panes as in Visual Studio 2005 and onward, etc. We searched on the internet and found that the market of 3rd party components for Adobe Flex is still very small, but for Microsoft's Silverlight there are many advanced 3rd party components available e.g. data grids, docking frameworks, etc.
When can we expect the same type of components in Adobe Flex? What do experts think if we develop to the new version of Silverlight (Expertise in Adobe Flex vs. Silverlight is not an issue at the moment, assuming we have to develop everything from scratch).
The launch of next version is expected to be in mid 2010. Any feedback regarding this is highly appreciated.
I can tell you from direct experience that Flex is a more productive platform. I work for a large RIA consultancy that builds a large number of apps with both Flex and Silverlight and we see that equivalent functionality in SL takes about 10-20% longer to develop than in Flex. Data binding support in Flex is significantly easier to use than in SL. I can also tell you that a suitably-experienced Flex developer could easily build a MDI toolkit in Flex with a couple of weeks of development time. So I would advise you to consider hiring experienced Flex developers rather than shelling out money for SL components.
SL does have a big advantage in that C# can be used on both the client and server and business logic can be reused in both tiers. This is significant and should not be discounted. ActionScript doesn't have a server-side counterpart and lacks this ability, although Flex does play nicely with a number of different backend technologies, especially Java using BlazeDS. Silverlight services integration has a variety of options on the .NET side (see Bart's comment below) while Flex can use very performant AMF in both RPC and data push (messaging). BlazeDS is free and open source.
I also think basing your decision for a development platform solely off the availability of 3rd party components is not a great idea. Putting that aside, MS platforms have always had a huge number of component development shops and a wide variety of components to choose from. It's likely even with a smaller market share that SL will have a bigger selection of 3rd party components than Flex moving forward.
Finally, I don't think MS is going to be giving up on Silverlight anytime soon. They are aggressively developing new features for SL4 and the Blend tool offers some innovations for designer/developer interactions that even Adobe is struggling to match with their new Catalyst tool.
If you have to make the decision today, I'd say go with Flex, especially for a public-facing application where you don't want to lose users because they can't or won't install the SL plugin. In 12-18 months I'm confident that SL will give Flex a much bigger run for its money but I don't think it's there, yet.
Although I cannot give you the desired answer, I hope I can give you a couple of good questions and ideas that maybe help you in the process:
City Coder: Flex 3 versus Silverlight 3 in Enterprise development
Microsoft Silverlight vs. Adobe AIR/Flex Debate
I personally think, that Adobe Flash is going to lose a noticeable user base in the near future duo to new features in the upcoming html 5.0 standard. Furthermore I prefer the tools (Visual Studio), addons and languages (C#) over the Adobe equivalents and I would consider these superior. However I have to emphasis that this is only from my perspective.. :)
A few people in this thread assume that you can't develop Flex or Flash-based projects with Visual Studio. From 30th August, 2010 that is no longer true. You may want to look at Amethyst which is a VS visual (drag+drop) Flash Platform IDE with a multi-process debugger, IntelliSense and refactoring: http://www.sapphiresteel.com
best wishes
Huw
actually i am also thorn between the 2. in fact, i still considered Flash, but sort of struck that off because thats more for animations rather than RIAs. with Flex, theres AIR to enable deployment in both desktop and web, tho i havent tried it and dunno how easy isit to use. and i also am not sure if Silverlight can be used as a desktop app anyone?
comparing Flex and Silverlight, i dont think we shld just base our judgment on what is more widely used now. Silverlight maybe something good!
just starting exploring the 2 and find Silverlight's XAML markup more intuitive than Flex mxml. further more Silverlight will integrate with C# which is getting better with LINQ and all. so data binding, an important part of any RIA is better. for Flex, one can probably link up with something like PHP with AMF but seems abit harder from what i saw. that said i am not really familiar with both.
UPDATE: and Flex is open source now while Silverlight closed right? so Flex can be said to be cheaper to use.
One thing to consider is Microsoft's dedication to Silverlight. Silverlight is not taking off. How long are they going to stick with it? If the next version of Silverlight doesn't get significant market penetration, is Microsoft going to continue supporting it?
Even if they do stick with it, and even if it does take off, are they going to do like they did with Internet Explorer: develop it into the most awesome browser available at the time with IE6, and then coast for 5+ years and become a major thorn in developers' hides?
Silverlight doesn't have a lot to do with Windows. People using Silverlight does not make Microsoft much money. There's not an especially compelling business case for MS to push Silverlight.
Silverlight doesn't offer anything to the users that Flash doesn't. It's the users that are going to drive Silverlight adoption, and until there's a compelling case for me to install it on my computer (which it's not, incidentally), it's staying off.
Flex is a natural companion to Flash, which is one of Adobe's flagship products. Adobe's not going to drop Flex. Even if they did, it's entirely open-source, and Flex development could quite definitely proceed even if Adobe fell into the ocean tomorrow. (Flash runtime is not open source, unfortunately, but it's a quite good multiplatform implementation of a mostly open SWF standard, with open source implementations progressing)
I work in a .NET/Flash shop. We use Flex to talk to a .NET back-end. It can be a pain in the ass to get them to interoperate (although not impossible). I like .NET. It would be great to be able to develop our front-end in C#. I would love it. But we're not willing to bet the farm on Silverlight, given MS's technology parade.
One of the most important thing in our decision on our future RIA technology is RTL support (specifically Arabic). I am very disappointed to hear that Arabic(RTL) is still not supported in Silverlight 3.0, on the other hand it is now supported on Adobe Flex 4. and I don't want to apply all non-standard tricks again that we used in our existing version of application (which is based on Flex 3). so Now One problem is solved in Flex but still remains in Silverlight... and still no docking framework in Flex, so it is going to be stalemate I guess.. :).
I will keep you updated regarding any new findings of our research...
One word (or two) --> "Open-source"
The world is going open source. Think android vs apple
How will you run applications for clients on Linux platform with any amount of confidence.
Right now I am not a netflix customer because no "Moonlight" support.
I have three computers at home all running Linux (Cannot shellout money to buy Windoze license) !
Think target market (and where it will be in the next few yrs)
Flex is more compatible with browsers, as it runs on top of Flash. Silverlight, however, needs to be downloaded, which might be a problem for users behind a proxy or network (in a workplace, for example, you can't install things). Flex also has a better framework than Silverlight, so you can customize a component in a few clicks and keystrokes.
I agree with you that VS and C# are more mature than their Flex counterparts (FB3 and ActionScript, respectively), but you'll get used to it quickly.
Then again, I am a Flex developer, and not a Silverlight developer, so my opinion can be somewhat biased. However, I did choose Flex over Silverlight because I thought that it was more compatible (nearly everyone has Flash Player) and has better support than Silverlight, and I don't regret my decision thus far.
If it is a stock trading product, does it stream the stock price in real-time? If it does, the cost of streaming the data will make some difference.
Both of them support some kind of data push (RTMP vs. Socket) and smart polling (RTMPT/RTMPS vs. HttpDuplexPollingChannel).
Infrastructural cost: Flex uses LCDS/BlazeDS while Silverlight uses IIS.
Development cost: RTMP/RTMPT/RTMPS is already defined (and cannot be changed) while you need to define your own protocol for socket (you need to handle security and compression yourself)
From programming perspective, Silverlight should be better since XAML is drawing the interface and C# updates the state of XAML components. There are plenty of C# developers and Expression Studio to create the XAML components.
MXML is relative simple and you need Flash to draw the fancy UI. You can wait for Flex 4 (in beta) with FXG support, however. Then, it might get better support for third-party components.
If you have expertise on both products is hard to say, from my side having an IDE like Visual Studio is a plus (I'm a .net developer), and using the same language on server (services) and client side it's something that makes me feel quite comfortable.
I would say... go for a Proof of Concept, take a week, make two teams (same level approx.), and check in a week (without any formal testing, or formal designing) to progress in Flex and SL (for the third parties they can take advante of all the trial versions). After that week check how far the have gone and their findings.
A waste of time one week? Try to focus as a live wireframe for your final app.
Good luck
Braulio
I don't think I could speculate on when or if Flex will have a similar number of 3rd party components. Many of the Silverlight components developed by companies like Telerik and DevExpress are ports or updates of existing .NET components. You might want to do a survey of companies that develop components for other Adobe products and ask on their forums if they plan to release a Flex product. Aside from that all I have to go on is what's available today and it sounds like you've already done the research on existing technologies. Good luck!
I have worked a bit with Flex but being more .Net oriented I can't say Flex can get any close to Silverlight in terms of developing business apps. Specially with RIA Services V2 and all the suit of .Net framework and visual studio everything is so integrated and professional.
The only reason I would consider not using Silverlight is if the product has public audience and you are going to loose customers due to low penetration of silverlight.
Ther is flex dock : http://code.google.com/p/flexdock/
And there is dock able flex : http://code.google.com/p/dockableflex/
I have been building enterprise software for the last 10 years. In this time we have seen enterprise applications move from client server to thin clients. We have also seen the move to hosted solutions, albeit under a few names (asp, SaaS, cloud computing). With all these changes the impetuous has been mainly from driven from the IT department not the end user. In the first rounds of these revolutions the user experience was reduced in the name of single point of management and reduced desktop footprint.
During this time there have been many attempts to give the user a rich experience while still satisfying the crotchety IT department. The first was by the industry leader Microsoft in the form of the ActiveX control. The guys from Sun then followed suit with the applet and then more recently java webstart. All of these solutions seemed to scratch the itch but never gained wide expectance by the more stringent IT departments.
Then flex came on the scene from Macromedia. What did they do differently? Is it sustainable? Does Microsoft’s emulation with Silverlight prove they have changed the rules of the game? Will Web programming be changed forever?
Adobe have succeeded because almost all users of the main browsers on the main platforms already have installed the only runtime component required for Flex; which is the Flash player. The Flash player has already demonstrated that it isn't a vector for Bad Stuff; it runs in its own sandbox in the browser, isolated from the hardware and the OS. So no new (and potentially dangerous) software is installed.
There exists a substantial developer community for Flash technology, and the addition of some new controls in Flash, and maturity in ActionScript for writing software, has tipped it over the threshold for being fully useful as a RUI.
(Activex is Windows-0nly; Anything in java is perceived as destabilizing and too heavy; and java hasn't managed to wangle its way into ubiquity, nor will it probably ever do so. So both generally get installed by edict, rather than user choice. This in spite of the fact that Adobe is probably the most disruptive source of unrequested "update-checkers" and other near-malware we deal with in our ecosystem.)
Microsoft started out with Silverlight pretty aggressively, requiring only the installation of the equivalent of the Flash runtime; but it's not ubiquitous even on Windows machines yet; penetration to other platforms is quite a way in the future; and MS hasn't proven to have the political smarts to appear harmless yet. But don't count it out. I think they've moved a step back by switching to .NET languages (with a limited CLR) for development; this seems to me to be the same strategy that has deoxygenated their WinCE strategy; but again we'll see. But at least they have made an obvious move away from language agnosticism to appearing to want to coerce developers into .NETland.
Web programming is changing forever one way or another; users will demand a better, more fine-grained UI; there's no perfect answer in sight yet, but at least there is competition for hearts and minds. I think the most encouraging signs come from Microsoft's strong move into platform-neutral stuff like MVC, Iron Stuff, and increasingly unpolluted code streams to the browser.
My take on Flex's success:
1- Adobe made the right move in opensourcing not only AIR, but Flex, the Flash VM, and the PDF standard now as well.
2- Flex's rich Flash heritage (it runs on any Flash enabled browser) means that the vast majority of browsers already support it and do not need to download a large plugin to access it.
3- Adobe embraced all the major server-side technologies and provided support for them so that a PHP. MS, or Java shop would all feel comfortable using Adobe's client side technology.
Previously, Flex was closed-source, expensive, and even relied on a server-side installation, which negated it's reach even though the Flash client was so widely available.
YouTube and the general ubiquity of
Flash video entrenched the Flash
player into over 95% of the browsers
that are accessing the public
Internet.
Incorporating Flex GUI for form
design with widgets and an extremely
well designed GUI SDK was a major
turning point for the Flash player.
Flex 2 and Flashplayer 9 were the
tipping points of when this
technology really jelled. Enterprise
developers began to quickly realize
that this technology was just the
right approach for doing their
applications. (At JavaOne in 2006,
Adobe Flex 2 was the most impressive
and pivatol technology that I saw
there.)
The Flash runtime has just enough
stuff to run RIA GUI well in a web
browser sandbox setting - Java
applets required the full JRE (about
16 MB). The Flash runtime was a much
leaner and smarter design for its
intended purpose. (Sun has only now
begun to remedy this for Java via
their JavaFX and redesigned JRE that
can download a few MB as sufficient
to run a web applet. They don't have
anything like YouTube Flash video to
drive their installations, though.)
Writing Flex RIA applications is a
very leveraged experience compared
to writing old-school web
HTML/JavaScript AJAX apps. Can
achieve a great deal more and have
less effort to accomplish such.
Adobe bolstered Flex with other
important pieces, such as BlazeDS
(and now they're cooperating with
SpringSource to make BlazeDS and
Spring-Framework a smoother
integration).
The single-thread GUI in combination
to async service calls (or
messaging), and ActionScript3
closures is great programming model:
Flex Async I/O vs Java and C#
Explicit Threading
Likewise, Adobe Flex has a great
implementation of properties,
events, and databinding.
A declarative language, ala MXML, is
indeed a better approach to
describing a form (what is
essentially the view in the MVC
pattern). It is more concise than
equivalent imperative ActionScript
code that would accomplish the same
thing, and thus clearer. The
hierarchical structure of MXML
script tends to naturally match well
to the panel/widget construction of
views as well.
With Flex RIA approach, the MVC
pattern can be implemented
completely on the client tier. Web
frameworks that implemented MVC in
the middle-tier - with the
presentation layer executing in the
remote client-tier, was a
fundamentally flawed approach to
MVC. MVC should be done right at the
tier that is directly user-facing.
(Once again, Adobe Flex does things
right architecturally.)
Despite that HTML/DOM/JavaScript is
considered the pervasive standard of
the Internet web, the Adobe Flash
player is actually a more ubiquitous
and consistent standard - spanning
different browsers and operating
system platforms. The
HTML/DOM/JavaScript standard is in
actuality a fragmented mess that
grows more fragmented everyday as
Google and Microsoft drive different
directions on things regarding the
web browser. Adobe Flash player ends
up being a wonderful end-run around
this dilemma. It's a great
programming experience for the
coders and has sufficient ubiquity
for the business suits.
Adobe is smartly well supporting the
major platforms of Windows, Mac OS
X, and Linux. They pay special
attention to the Linux platform.
This will pay off in the long term
as developers are already settling
on Linux to do their development
from, and it's used extensively for
servers hosting their middle-tier.
Adobe's recent 64-bit Flash player
for Linux is just a marvel. They
already have AIR 1.5 available on
Linux. They are doing a decent job
there of supporting the platform
that the developers care about.
Is it realistic to try and learn and code a Flex 3 application without purchasing FlexBuilder? Since the SDK and BlazeDS are open source, it seems technically possible to develop without Flex Builder, but how realistic is it.
I would like to test out Flex but don't want to get into a situation where I am dependent on the purchase of FlexBuilder (at least not until I am confident and competent enough with the technology to recommend purchase to my employer).
I am experimenting right now, so I'm taking a long time and the trial license on my Windows machine has expired. Also Linux is my primary development platform and there is only an alpha available for Linux.
Most of the documentation I've found seem to use Flex Builder.
Maybe I should use Laszlo...
IntelliJ IDEA works as a Flex IDE, if you happen to also be a Java developer. It's free if you contribute to open source projects.
Check out FlashDevelop for Windows. I like it better than Flex Builder.
I've been using Flex since version 2 and Flex3/BlazeDS since it came out of beta. I also have some experience with Lazzlo and the difference is day and night (Flex rocks!). I have not regretted once using Flex. Regarding FlexBuilder, it is worth every penny. While it is completely possible and reasonable to write Flex application without FlexBuilder, the productivity gains of using it will more than recoup the investment. Try the evaluation for 30 days and compare it to some of the other options suggested about (I'm going to try FlashDevelop).
Some things you get with FlexBuilder include:
Code completion
Visual editor
Debugger (it is fantastic!!)
Profiler (also very good)
Regarding Linux, the alpha version of FlexBuilder does not have a visual editor. Other than that, I understand it is reasonably feature complete, still free, and many of the Adobe employees I've talked with that use Linux are happy with it.
FlashDevelop is really easy to setup with the Flex SDK. Just download FlashDevelop, then download the Flex SDK. In FlashDevelop go to Tools > Program Options > AS3Context (under Plugins) > Set the "Flex SDK Location" to the root of the folder you extracted the SDK to and build away. FlashDevelop even has a basic MXML project that will get you going.
If you use ColdFusion for the backend, having FlexBuilder in Eclipse and CFEclipse can mean one less IDE to have to get familiar with.
I'm going to join the choir here and say FlashDevelop for an alternative. The only reasons you might want FlexBuilder are:
Flex charts
Step-through debugging.
Profiler (I haven't used it)
Visual style editor
However, the code-completion and general bloody-awesomeness of FlashDevelop's code-completion and syntax highlighting knocks the gimpy eclipse crap out of the water. So, pretty much what Todd said, except for the code-completion part. Flex Builder is very flakey in that department.
Short answer: Yes
I'm working on a team of developers and designers. We code our .MXML and .AS in FlashDevelop 3 and our designer creates .FLA with skins and widgets that get [Import()]ed in ActionScript.
I wrote a little more about this subject here:
Flash designer/coder collaboration best practices
I have been using FlashDevelop for along time (4/5 years), I am actively using it to develop Flex4.5 applications, it has built in support for code completion, it has a profiler and a debugger that work excellently. The IDE itself is responsive and require the .Net framework, in fact here, I'll list some stuff.
FlashDevelop Pros
Free IDE
Code completion feature
Very capable Debugger
Profiler
Documenting
Ability to build Air / Flex files
Templating
Plugins
FlashDevelop Cons
Lack of UI desing support
.Net support only (Won't work with Mono)
Everything else is pretty simple to get running with, the instructions are available at http://www.flashdevelop.org/
Absolutely. I've been a Flex developer since Flex 2 and until recently I've used my regular editor, TextMate, for coding and Ant for building. TextMate has some good extensions for ActionScript and Flex coding, but I think you could get that for any decent editor.
What's been missing from my setup is a usable debugger, the command line version is a pain to work with. Because of that I've been starting to use FlexBuilder on the side, using it in parallel with my regular setup.
Having a profiler doesn't hurt too.
I've been using FlexBuilder for awhile now and just started to switch to using Eclipse with Flex SDK. I work for a non-profit so the word FREE is huge.
Initially, it is fairly intimidating so if you have the money, you might want FlexBuilder.
There is a lot you need to know and do if you use the SDK. The learning and experience may pay off though... I am still undecided myself.
I second FlashDevelop. You don't get the visual design stuff for the MXML, but for the code (both MXML and AS) it's excellent.
I also use FlashDevelop when working on AS3 projects. For me, the ugliness (UI design) and sluggishness of Eclipse/Flex Builder is enough of a deterrent to stay away from Flex Builder.
In addition to the weaknesses of FlashDevelop pointed out previously, one of my biggest gripes is that it is not a true .NET only app and therefore will never work in mono and therefore can not be easily ported to the mac - which is my platform of choice for development web/javascript/AS3 development.
Amethyst is also a pretty good option to try. It is a plugin for MS Visual Studio, and takes advantage of a lot of the goodies there. It is significantly less sluggish than FlashBuilder, has a really good debugger, and a decent visual designer as well.
The personal version is free, but quite crippled. You have to buy the pro version after a 60 day free trial. However, it is (at time of writing) almost 1/3 the cost of Flash Builder.
As an added bonus you don't need to pay for Visual Studio since it works with the free (albeit hard to find) "shell version (integrated)" of Visual Studio. It won't work with any of the free Express editions, though.