What are the Pros/Cons of Flash Builder vs. FlashDevelop? - apache-flex

I want to play around a bit with FLASH for app development. I'm looking for a good IDE for that. Someone suggested Flash Develop.

Flash Builder
Pros
better debugging and profiling
visual designer for MXML
because of Eclipse: support for other languages (eg. with Aptana, PDT...) and usage of plug-ins for the Eclipse Platform with features not shipped with FlexBuilder (code snippets with CFEclipse "Dynamic Snippets", "auto-code" for getter/setters with Monkey scripts...)
support of virtual folders/files (links to external files/folders handled intern by Eclipse, so also working on Windows)
refactoring (renaming of classes, functions, properties with automatic changing of dependencies)
Cons
Commercial license
Big and because of Eclipse problematic with newer Eclipse versions for the FlexBuilder plug-in version (eg. not working with Eclipse Ganymede 3.4.1)
adding and configuring the missing features with Eclipse plug-ins needs time and searching in the Internet (which plug-in? settings etc.)
Code assist only average and sometimes buggy eg. if correct imports are missing ("java.lang.NullPointerException")
missing of a code formatter or automatic get/setters (but there are solutions with other Eclipse plugins like Monkey Scripts, CFeclipse, Flexformatter "FlexPrettyPrintCommand"...)
sometimes a bit sluggish if background tasks in Eclipse are working
no package explorer
AS2 and AS3 only - no Haxe
FlashDevelop
Pros
free and Open Source (developed with C#)
lightweight and snappy
best available Code Assist for ActionScript
supports all flash languages - AS2, AS3, haxe
"auto code" for automatic getter/setter, variables, code for event handlers
code snippets with integrated snippet editor
extendible with plug-ins
support for asdoc comments
package explorer (show classes, symbols from a SWC file)
basic refactoring
multiple source code folders per project
useful plugins : ANT integration, SWC creation, mini map, quick navigate
Cons
only for Windows
no visual designer for MXML
no support of virtual folders/files inside the project
weak refactoring
changing classpaths must be done manually
plug-ins often not working in newer versions and many plug-ins are only rarely updated
limited support for debugging Haxe applications
Common
Pros
projects for full range of flash apps : websites, AIR (desktop, mobile)
debugging of FP/AIR apps with breakpoints and stepping
debugging with watch windows and locals
support for ASDoc comments
automatic adding of imports and organizing of imports
class wizard
SVG/GIT integration
Cons
no editing of graphics or animation (use Flash IDE for that)
Summary
For debugging, visual design of MXML forms : Flash Builder
For coding AS2/AS3/Haxe projects under Windows : FlashDevelop

Major reason to use FlexBuilder: has a real debugger you can set breakpoints and single step and watch/edit variables.
Unless FlashDevelop has .. developed .. don't think it got any of that yet.
BTW - if you are a student/teacher FlexBuilder can be had for free

Flex builder has a design view for MXML so you can build more visually. Flashdevelop on the other hand is free!

I've been using Flash Developer. Trying now FlashDevelop. FlashDevelop is fast and light, and I'm trying to switch just because of that.
I'm using HG + TortoiseHG for source control. I have 2 screens, so having external source control is not a big problem. Also the IDE stays a little cleaner by not having all the little source control icons.
DesignView helps with not having integrated design.
Also, I can debug with FlashDevelop and see the variables. I'm using FD3.2.1.

Along with what was already mentioned, Flex Builder has some nice tools that helps a developer to learn how to create a data enabled Flex application in form of the Data Wizards and also a nice web services introspection tool that automatically creates an ActionScript 3 client for a web service.

I'm using the new Jetbrains IntelliJ 8, and it's great (especially if your used to java developement). Has a lot better XML/JavaScript editors that any other IDE.
The latest version of IntelliJ also has a good flex/javascript debugger.

Here are two objective contrasts between FlashDevelop (with the Flex 3 SDK) and FlexBuilder. First, only FlexBuilder includes AdvancedDataGrid. Second, FlashDevelop has no source control integration.
AdvancedDataGrid is not included in either the free or open source Flex 3 SDKs; if you want it, you have to buy FlexBuilder. (I assume it is probably possible to use it via another SDK if you possess FlexBuilder.)
FlashDevelop doesn't have any source control integration, FlexBuilder possesses the existing, stable source control options for Eclipse. This includes Subclipse for SVN, as well as a lot of other things. As a longtime Visual Studio and Emacs user, in FlashDevelop I'm beginning to feel unsatisfied with leaving the editor to check in.

Flash Builder, even in version 4.5, has primitive, useless syntax coloring and customization features. From a 700$ package I was expecting at least what I can do with my free text editor.
In the syntax coloring preferences, there is a total of 6 keywords, and you cannot add any custom one.
How am I expected to code having variable names, function calls, and classes look exactly the same?
I will stick to Flash Pro CS5.5 and SciTe.

Related

Flex SDK or Adobe Flash?

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.

Can i use flex without Flex builder?

i am starting to study FLEX. i have only flex sdk. So can i start study only using that. If so please suggest me the link to go through..
But still, Using an editor will minimize our work and will create the code by its own. So as a new learner it would be tedious to understand and also hard to learn new things...
Yes.
Just a bit of background: Flex Builder (a.k.a Flash Builder), the mxmlc compiler (free) and Flash CSx all compile Actionscript code into SWF files and/or AIR files. Flash CSx is a design-centric tool with a ultra-simplistic coding editor built in (not much more useful than Notepad); Flex Builder/Flash Builder is a full-blown programmer's IDE (based on Eclipse); the mxmlc compiler is a free command-line tool that compiles Actionscript files into SWF and AIR files. (You have to use your own editor to write the source files.)
MXML is an xml language that acts as a shortcut for Actionscript. You can code in mxml instead of Actionscript and the compiler will convert your mxml into Actionscript before compiling. You can't use mxml as a shorthand for all AS coding. Mostly you can use it as a substitute for UI coding and as a way of binding data to UI elements. The compiler converts the mxml into Actionscript classes and then compiles the Actionscript classes (the ones created as mxml and the ones coded natively in Actionscript) into bytecode. The Flash virtual machine (e.g. the browser plugin) runs the bytecode.
Currently, you can code both Actionscript and mxml -- and then compile using Flex Builder/Flash Builder or the mxmlc compiler (which is free). Flash CSx can does not understand mxml, so you it can only compile straight-forward Actionscript.
Note: there are third-party tools, such as FDT that can also be used to write and compile Actionscript and mxml.
The language Actionscript has been revised several times. After a brief phase when it was a proprietary language, it morphed into something much like Javascript. Then, with AS 2.0, it became much more like Java -- and it continues in this direction with AS 3.0. (its syntax is very similar to Java and, like Java, it is class-based).
There are a core set of Actionscript classes that are available to you in Flash CSx, Flex Builder/Flash Builder and the free sdk. There are additional classes, known as the Flex Framework, which are available to you in Flex Builder/Flash Builder and in the sdk -- but not in Flash CSx. These extra classes add new visual components, such as a datagrid, an advanced UI-layout engine, and a framework for data-binding.
You can use the Flex Framework without the Flex Builder IDE (which is going to renamed, in the next version to Flash Builder).
Compiling without Flex Builder
You can also use Flex Builder/Flash Builder without using the Flex Framework -- meaning you can program in the IDE and use only Actionscript classes that aren't part of the framework (the classes you'd use if you programmed in Flash and not Flex Builder).
You can choose to use or not use mxml.
You can even use mxml to auto-generate Actionscript that's not part of the Flex Framework (e.g. your own custom classes).
Using mxml for your own classes
Good luck!
my Actionscript blog
If you are a student, you can get Flex Builder for free.
Free for students
I like FlashDevelop # http://www.flashdevelop.org/
Open source editor for Adobe Flash/Flex for Windows (may work under Wine?).
You can certainly build application with solely the open source Flex SDK. I have posted some instructions for using only the Flex SDK on Linux. If you are on a different platform the instructions can be slightly adjusted.
Yes, you can use any text editor to write MXML and ActionScript code, and then use the command line to compile the code into a SWF (Flash Movie). The SDK does not include Charts, however.
http://opensource.adobe.com/wiki/display/flexsdk/Downloads
If you're on Windows, see if you can run mxmlc.exe (the compiler) from a command prompt. Create a simple Example.mxml file to test it out.
mxmlc.exe Example.mxml
Here's a simple Hello World mxml source code.
Easy steps are well documented on Adobe's site and in chapter 2 of "Flex 3 in Action"
Flex Builder (now Flash Builder) is based on the Eclipse IDE - it's actually a plugin to Eclipse. So with Eclipse being open source and free, you can use that as your editor.
You won't get the integrated debugger, and visual design view... but using some free plugins you can still be productive.
1) You'll need the Flex SDK: www.adobe.com/products/flex/flexdownloads/
2) Get Eclipse: eclipse.org/
3) Two notable Eclipse plugins:
- www.eclipse.org/webtools/
- www.aptana.com/studio
Alternatively, if you have MSFT's Visual Studio, there's a Flex plugin for that too:
- www.sapphiresteel.com/Adobe-Flex-Development-in-Visual
To compile your code you'll use the Flex compiler, information on how to use it can be found here:
www.adobe.com/livedocs/flex/3/html/compilers_13.html#150640
Chapter 2 of Flex 3 In Action also has a section on how to develop Flex applications without Flex Builder:
http://www.amazon.com/dp/1933988746/?tag=insidemark-20
Note that Flex Builder is free for academic faculty, students, and out of work coders. So that's another option.
Cheers.
Flex Builder will be the very best way to learn as its got a debugger and thus lets you step thru code see how it works. FlashDevelop is free tho it lacks a debugger - still very useful
Intellij actually has pretty good support. AS3 support is wonderful, but there is no WYSIWYG tool.
Still, it is not a problem for many programmers, as MXML is easy to read and edit without WYSIWYG.

Flex/Openlaslzo for RIAs?

I recently stumbled upon flex/openlaszlo (OL). Both seem very useful and I have a few questions about them:
What is needed to deploy flex apps? From what I understand, the flex sdk
is open source, but the other tools
(for development and deployment) are
proprietary.
What is needed to deploy openlaszlo? Is it completely open
source (from development to
deployment), or does it have
development/deployment "gotchas" like
flex?
Specifically, I'd like to use flex or openlaszlo to either augment or
replace an editable table I created
using js, ajax, html, and css. Is this
the type of thing flex/OL can/should
be used for? Are there any drawbacks
or pitfalls to using flex/OL for this
rather than straight js, ajax, html,
css?
Thanks.
Edit: Are there any licensing (use) restrictions on applications built on flex? i.e. applications built on flex can be for only non-commercial use, unless a commercial license is purchased?
The following link has some discussion about openlaszlo and flex, it may help you:
Use the best open source client-side framework for cloud computing
You do not need anything special to deploy Flex apps. Just put the compile app (a SWF file) on any web server. Flex apps can talk to any back-end.
Flex SDK is free, but Flex Builder is not. You can use the free and open source FlashDevelop to write flex apps - it doesn't have drag-n-drop features like flex builder, but it offers code hinting and stuff. I don't know about openlaszlo.
Below is the link providing details of tools/IDEs for developing OpenLazlo applications
http://wiki.openlaszlo.org/Development_Tools
Re: "What is needed to deploy openlaszlo? Is it completely open source (from development to deployment)"
OpenLaszlo is OpenSource, but the typical versions you install come with the main components pre-compiled into a SWF for the SWF run-time. However, you can download the full source code if you wish to look at it and/or compile the core yourself:
Last official released version (4.9.0): http://download.openlaszlo.org/4.9.0/openlaszlo-4.9.0-src.tar.gz
Nightly builds:
http://download.openlaszlo.org/nightly/trunk/ (you will see "source" as an option after you click the link of the version you want)
OpenLaszlo does not require anything else to be deployed but itself, except if your application is compiled to the SWF run-time then the user will need the Adobe Flash player installed in their browser to use it.
I'll answer your last question: the biggest drawback to using Flex is that it requires the client to have the Flash Player plugin installed in their browser. Not that big a deal for most people since Flash Player is over 98% of all computers. With the straight Javascript, AJAX, HTML, CSS approach it should work on all browsers, assuming you wrote it correctly.

What is Adobe Flex? Is it just Flash II?

Question
Alright, I'm confused by all the buzzwords and press release bingo going on.
What is the relationship between flash and flex:
Replace flash (not really compatible)
Enhance flash
The next version of flash but still basically compatible
Separate technology altogether
???
If I'm starting out in Flash now, should I just skip to Flex?
Follow up
Ok, so what I'm hearing is that there's three different parts to the puzzle:
Flash
The graphical editor used to make "Flash Movies", ie it's an IDE that focuses on the visual aspect of "Flash" (Officially Flash CS3?)
The official name for the display plugins (ie, "Download Flash Now!")
A general reference to the entire technology stack
In terms of the editor, it's a linear timeline based editor, best used for animations with complex interactivity.
Actionscript
The "Flash" programming language
Flex
An Adobe Flash IDE that focuses on the coding/programming aspect of "Flash" (Flex Builder?)
A Flash library that enhances Flash and makes it easier to program for (Flex SDK?)
Is not bound to a timeline (as the Flash IDE is) and so "standard" applications are more easily accomplished.
Is this correct?
-Adam
The term Flash can include any of the other terms defined below, and I find that saying "Flash" without specifying exactly what you mean can be confusing and misleading. Case in point: I'm not sure what you specifically mean when you say "Flash" in your question. Is it Flash Player? The authoring tool? Or the whole collection of technologies that fall under what Adobe calls the "Flash Platform"? To help clear all this up, let me define the technologies involved in creating Flash and Flex content so that we're all using the same terminology here:
Flash Player is a runtime for rich media content in the browser. There is also Flash Lite to run Flash content on older or low-end mobile devices, and Adobe AIR extends Flash Player to allow content authors to publish native desktop and mobile applications that can integrate with things like the file system, windowing systems, and device sensors like the accelerometer and camera. Collectively, Adobe refers to these as the Flash runtimes.
Flash Professional (often called the Flash authoring tool or the Flash IDE) has traditionally been the primary application used to create content that runs on Flash Player. It is very designer oriented with timelines, layers, and visual drawing tools. Software developers may find this application disorienting and limited compared to other development tools that focus more on code, like Flash Builder (see below). When someone says, "I built something with Flash", they often mean the Flash authoring tool, but that's not always the case. For that reason, it's good to always clarify to avoid any confusion.
ActionScript is the primary programming language supported by Adobe to target Flash runtimes. The current version is ActionScript 3 (abbreviated as AS3), which has been supported since Flash Player 9. Content created with older versions of ActionScript can still be run in the latest versions Flash Player, but new features are only supported when using ActionScript 3 to create new content.
Flex is a collection of technologies designed to create rich applications that target the Adobe's Flash runtimes. Though saying "Flex" previously had the same ambiguity as "Flash", the Flex brand name is becoming more and more focused on the Flex framework and SDK, described below.
The Flex SDK consists of compilers, a command-line debugger, and the Flex framework. The included compilers are:
1. MXMLC, an ActionScript and MXML compiler to output the final SWF file for deployment to Flash Player.
2. COMPC, a static library compiler for ActionScript that outputs SWC files.
3. ASDOC, a documentation generator built on the compiler technology.
The Flex framework is a collection of ActionScript classes designed to build Rich Internet Applications. It includes things like user interface controls, web services and other connectivity classes, formatters and validators, drag and drop, modal windowing, and component states. These classes are in the mx.* package. Generally, when developers say "Flex" without any clarifying information, they mean the Flex framework and not the product formerly known as Flex Builder.
In 2011, Adobe donated the Flex SDK to the Apache Software Foundation. It is now called Apache Flex and it is fully managed by the community rather than Adobe. However, Adobe employees continue to contribute to the project, and Flash Builder (see below) continues to support new SDKs released by the Apache Flex project.
MXML is an XML-based markup language used by the Flex compilers to make layout and placing components into containers easier. The tree-like structure of XML make the containment hierarchy easier to visualize. MXML is actually converted to ActionScript during the compilation process.
Flash Builder (formerly known as Flex Builder) is a development environment that allows developers to build different project types to create SWF files that are deployed to Flash runtimes. It is built on the Eclipse platform and is more familiar to software engineers. Flash Builder supports projects built with Flex or pure ActionScript. Flex projects include the Flex framework. ActionScript projects are the most basic you can work with, starting with a single class and an empty canvas, and the Flex framework is not included.
Flash Builder does not replace Flash Professional. Some people who have traditionally used Flash Professional may now choose to use Flash Builder instead. Often, these are software engineers who appreciate or require the advanced development tools offered by Flash Builder or don't work heavily with assets designed in a visual tool. Some developers may write their code in Flash Builder, while choosing to compile their projects in the Flash authoring tool. Often, these developers are also designers, or they are working with other people who are designers. In this situation, there may be many graphical assets created in the Flash authoring tool, and it could be difficult or simply inappropriate to bring them into another environment.
The Flex framework is specifically designed to build applications. It includes many traditional form controls (buttons, lists, datagrids, etc) and much of the code runs on an advanced component framework written in ActionScript. Not everyone is building the sort of content that Flex is designed to create, and Flex does not replace traditional Flash development practices for everyone. It is a better approach for some developers, but may not be right for others. More design-heavy websites, such as those created for movies, music, energy drinks, advertising campaigns, and things like that probably shouldn't use the Flex framework. These types of content might be better suited to Flash Professional or a pure ActionScript project in Flash Builder. Similarly, little widgets you put into the sidebar of your website or on your profile in a social networking website may need to be built with pure ActionScript (without the Flex framework) because they require a smaller file size and they probably don't need a big complex component architecture designed for larger applications. When targeting Flash runtimes, your development environment, frameworks, and workflow should be chosen based on your project's requirements and goals.
Adobe Flex Builder is Adobe's IDE for developing applications that will run in the Flash plugin. The Flex SDK refers to the libraries that developers uses to write the applications.
Essentially, the term 'Flex' is the development side and 'Flash' is the run time side of Adobe's technology.
Correction: The term 'Flash' is also used to refer to the Flash IDE which designers use.
Yeah, I was confused by this for quite a while too.
Flex seems to be thier name for the 'Flex Builder' IDE (based on Eclipse), and the general approach of building flash files using mxml and ActionScript rather than the normal flash tools.
I think the mxml and ActionScript approach (i.e. Flex) is designed to appeal much more to programmers, where as the Flash side is designed more to appeal to graphic designers.
The end result of either approach is a .swf file which can be run in the browser's flash player plugin (although with Flex you can target the Adobe Air runtime instead if you want access to the file system and to run offline etc).
My advice would be, if you're coming from a programming background, to start with Flex.
What is the difference between Flex and Flash?
The way I keep it clear in my mind and explain it to others is as follows:
Choose the right tool for what you want to create.
If you want to write an APPLICATION using Flash technology, use Flex.
If you want to create an ANIMATION using Flash techology, use traditional Flash.
Flex is optimized for application construction (but you can create primitive animations using states) and it compiles into a SWF.
Flash is optimized for animation construction but you can also create applications with some extra work, and it compiles into a SWF.
Once you have your SWF you can play in your Flash player, although Flex requires Flash 9 or higher.
In conclusion
Application -> Flex -> SWF
Animation-> Flash -> SWF
Hope this helps.
Part of the confusion is that "Flash" means multiple things. Flash can mean one of a multitude of applications, OR the general technology behind SWFs.
There's the Flash CS3 product that Adobe sells. This is generally targeted at designers and uses a Timeline-based approach to creating SWFs. Previously the Flash product was the only way to create SWFs, and SWFs generally were just used for animations and other visual effects not possible in a browser otherwise.
Then there's the Flash Player. This is the application/plugin used to run SWFs. SWFs can also be wrapped in a "Projector" which allows them to run as a standalone app, but that's not as common.
At some point (I don't know when) Flash started to be used for more interactive applications. The Flash product wasn't very well suited for kind of work, as it was designed to create animations. Recognizing this, Macromedia created Flex. Flex is another development environment for creating SWFs, but it targeted more at developers than designers. The latest version is Flex 3. The Flex SDK is freely available and includes a command line compiler, debugger, and the class libraries. Adobe also provides (for purchase) the Flex Builder app, an Eclipse-based IDE for creating SWFs using Flex. There are some free IDEs for using Flex, most notably FlashDevelop, though I don't know of any that provide a visual designer for MXML, the markup language used by Flex to define UIs, or a visual wrapper for the debugger.
If you're approaching Flash from a developer's perspective then you're going to want to use Flex. It's probably a lot closer to what you're used to dealing with, and seems to be the direction Adobe is pushing Flash in general.
Flash is a Runtime Environment - you use the Flash Authoring tool to make some Flash content, and the Flash player processes your content, executes the scripts, and draws the appropriate pictures onto the screen.
Flex is a Development Framework - you use the Flex development tools to define how your component-based content should work, and then Flex generates the Flash content for you. You could have made the same thing with the Flash Authoring tools, but using Flex may let you avoid reinventing some wheels.
In functional terms, Flash is an extremely versatile runtime; it gives you lots of freedom to do anything you want. But if you're building a loan simulator, you probably don't need the freedom to define precisely how all the pulldown menus and screen transitions work. Probably you'd rather that you could just use premade components for that stuff so you can concentrate on the loan stuff. Flex lets you do that, with the cost that it may turn out to be a lot of work if you decide that you do need a lot of freedom to change all the fine details.
Here's another simple view based on how you describe an application you want to develop.
Do you want it to have the highly granular UI capabilities you expect from a workstation (e.g. Windows) application, with a fairly complete set of controls (listbox, combobox, grid, etc.)?
Flex gives you that.
Do you want to deliver it to run in most browsers (i.e. anywhere Flash is installed/installable)?
Flex gives you that, because it runs in the Flash virtual machine.
Do you also want to be able to offer it to run in the OS, not in a browser (with minimal coding changes?)
Flex can give you that, by allowing you run it, not in the Flash VM, but instead in the Adobe AIR VM (which has versions for Windows, Mac, and Linux) which provides wrappers for common OS resources like the filesystem, OS dialog-box UI components (e.g. "Open/File/ etc.)
Are you OK using javascript as the development language? You need to be, because it's the only language supported, in the form of ActionScript, which is a proper superset of javascript - it accepts javascript code directly.
So the partioned pieces are:
A runtime environment, either the Flash browser plugin, or the AIR runtime (the native OS equivalent).
Actionscript as the development language.
A bunch of libraries of controls and other resources, i.e. the typical Window, Frame, Combobox, Listbox, Image container, TextBox, TextArea, a wysiwyg-y RichTextArea, etc.) These are the province of Flex.
With the above resources alone, you can use the free command-line compiler to build applications in the same fashion as you would with any other command-line-compiler language with libraries.
Then, if you want a fancy IDE, there's Flex Builder, which is a set of extensions to good-ol' Eclipse (for several hundred $$). Or there are several other IDE's that are more or less equivalent.
Flex is a framework FlexBuilder is an IDE
(in an attempt to resolve the confusion between the 2, adobe is renaming FlexBuilder to FlashBuilder)
if you do not know what a Framework is:
Flex is to Flash as what CodeIgniter is to PHP
or like what .net is.
I like to think of a framework as extending a language like you would extend a class in OOP.
Flex is a development framework that compiles xml and actionscript into a SWF, which runs on a client machine accessing a website. It can also run as a desktop application using Adobe AIR. Flash uses a drawing canvas instead of xml. Compiled SWFs can be referred to as Flash, which adds to the confusion. You may find Flex similar to ASP.NET, which takes xml and c# (vb.net, etc) and compiles into a dll. Of course, ASP.NET runs on the web server.
If you are choosing between Flex and Flash for an application, consider whether the application will be based around data. If you want to make a pretty spreadsheet application, Flex would be the way to go. If you are creating a video game or some sort of presentation, you would probably want Flash.
Following up on this, I found a very useful article on the subject:
Adobe Flash and Flex—Which Makes the Most Sense for Your Project?
The Flash Integrated Development
Environment (IDE), otherwise known in
its current version as Flash CS3, is
an ideal tool for developing character
animation or linear animation
projects. These are projects that
require little coding and can be
effectively implemented with the Flash
IDE timeline.
In other words, Flash CS4 is very tightly bound to the timeline - good for linear sequences or animations. While one can add loops and interactivity in the form of jumping to new points on the timeline, it is limiting for projects which cannot easily be mapped out in terms of progression over time.
It is, in simplistic terms, an animation tool with very powerful interactive features - creating and composing new elements on the fly, and jumping around on the timeline allows one to create applications, and the Flash CS4 IDE makes this relatively easy, but it's not a great platform for application style software.
Flex was built as an answer to that - while it makes use of the same elements and exposes the code, it is not bound to a timeline, and has more in common with object oriented programming languages than animation languages.
The Flex Builder IDE includes both the programming IDE, as well as a GUI designer for quickly building interfaces, and a few other tools for developing applications that run on the flash player.
Flex and Flash have different target audiences. Flex is more geared towards developers where as Flash is more geared towards designers and artists.
Flashdeveloper has been mentioned as a free tool to develop flex applications. I just want to add a free tool to design applications (create an MXML file using a designer): designview. It's available directly on the adobe website, it's an air application that is basic but that give the possibility to take a look freely and easily to the possibilities of flex.
Flex is a free and open source framework based on ActionScript to develop SWFs and AIR applications. Flex Builder (now renamed to Flash Builder as of version 4, to avoid the confusion) is a commercial IDE from Adobe to develop SWF/AIR using the flex framework. While flash (CS3) is good for animation related stuff, flex is good for application/ui related stuff. Adobe positions flex as an RIA (Rich Internet Application) framework.
Flex runs on Linux, too, while Flash doesn't.
Flex is kinda Flash CS 4 second edition.
Flex is less graphical, as it separates compiler and IDE, which allows for command line compilation (makefiles, large projects so to say) which allows for alternative IDE's to Flash.
Edit:
Flex lacks some classes that Flash CSX has (e.g. fl.controls), while Flash lacks some classes that Flex has (e.g. mx.controls or mx.alert).
All in all:
You can have your own Flash compiler for free by downloading Flex 4 SDK and FlashDevelop.
But it is no substitute for Flash.
Flash produces much smaller files (e.g. Flash compiles a project to 100 kB while Flex is compiles the same project to 500kB). So Flash is for internet multimedia applications, while Flex is for desktop multimedia applications.
Flex Builder 3 --> Flash Builder 4, even though you use it for Flex. You can also use it for Flash. If you really want to learn about all this stuff, you should just buy a veteran lunch for a day because it will save you MONTHS. Adobe makes some cool products, but is also well-known to be a lazy company, and this leads to extremely poor documentation. Unless you are a fan of "livedocs," which is a term Adobe coined to describe "slow and bloated HTML."
"Adobe Flex is a collection of technologies released by Adobe Systems for the development and deployment of cross platform rich Internet applications based on the proprietary Adobe Flash platform."
Adobe Flex
Flash is a programming language rather similar to JavaScript but with support for static types.
Flex is a flash library that is intended to help people program in Flash on a much higher level.
It may be helpful to some to think about this as Flex over Flash being like MFC over C++.
Flex is basically a language that compiles down to a flash "movie" or "applet", that will run in the Adobe Flash player plugin.
In very simple terms, Flex technology uses MXML to create applications. MXML is analogous to HTML and Flash components is analogous to something like form elements.
MXML basically allows you to specify what Flash components (such as a table, dropdown list, or something custom that you build in Flash) go on an application screen.
This is a very simplified answer, but that's how I tend to explain Flex.
(Flex Builder is an environment for you to develop Flex apps and Flash apps)
Flex is not a programming language.
flex is a Framework for developing Rich Internet Applications over the Flash runtime and includes ActionScript & MXML as language.
Flex is a collection of Technologies, Tools and Frameworks for building cross platform Rich Internet Applications.
The best answer I've found for "What is Flex" is at this page:
http://www.adobe.com/products/flex/faq.html#flex-flash
Search for "How is Flex different from Flash?"
My interpretation of this is that if your application was generated from Flash Professional, it is a "Flash" application. If it was generated with the Flex SDK (Flash Builder, Flash Develop, or straight code & command line tools) it is a "Flex" application. Both "Flash" applications and "Flex" applications compile into bytecode that can be run by the "Flash Player" or by "Adobe AIR". Both types of applications can include "Actionscript" code.

Is Flex development without FlexBuilder realistic?

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.

Resources