Friday, July 2, 2010

Which Developer Tool to use for Flash AS3?

Sony has an interesting Flash Dev setup here in Tucson in that each developer can use whatever tool they want. Typically, I have always worked on teams where everyone used the same tool. But here, they want you to use whatever you code best with and the projects are setup in such a way that it really doesn't matter. There is an ant build template that everyone copies & customizes for compiling. As long as you exclude your customized ant build and your personal development files (such as a flex project file) then everyone is good to go and work environments are compatible with whatever tool you want.

Soooo, the question then is what tool do you want? I began my action script endeavors back in college in the Flash IDE. When I was at Simulex I upgraded to the FDT plugin for Eclipse in AS2. When AS3 came out, we switched to the Flex Plugin for Eclipse mainly due to the profiler. I stayed with the Flex Plugin when I moved to the Basement as it was and is a very solid development tool. When I arrived here at Sony and was given the choice of anything... I took some time and tried out three main options:

1. Some form of Eclipse (FlashBuilder, FDT, Flex Plugin)
2. FlashDevelop
3. JEdit (or a similar text edit)

I am not listing the Flash IDE as a coding tool. Its not. If you are using it, promise me you will spend 1 week and learn one of these other tools... you will not regret it.

The first option was my top choice coming in since I had been using one form of Eclipse or another for the past 4 years. Its a solid tool with the standard bells and whistles of autocomplete, jump to method/class, code highlighting, etc. Adobe is backing it. It integrates into SVN, CVS or whatever check in/out system you are using. You can get errors on save which is a nice little feature. And it manages multiple projects and libraries very easily (this is the main reason I have stayed away from FlashDevelop in the past). On the flip side, it can be a bit cumbersome, seemingly overly complicated, and sluggish. Its almost as if it is trying to do too much.

I was very curious about the 3rd option which is JEdit since I had never customized a text editor for actionscript coding before... it seemed very l33t ;). Chris Hill, the technical director here at Sony, made and excellent plugin called flexulous which allows you compile ActionScript or Flex projects in JEdit. The beauty of JEdit is that you can customize it in a million ways with all sorts of plug-ins as well as short-cuts to increase your development time drastically once you have been working in it for a long time. The downfall of JEdit is that it does not have any suitable jump to method/function plugins, auto-complete, or instance highlighting (tho it does have syntax highlighting). I really tried to give JEdit a chance because I feel it could fit very well with time. And who doesn't want to be l33t??? but I rely too heavily on jump to and auto complete to dive in completely.

Finally, I tried FlashDevelop. I have spent some time with it in the past but always left because it can't handle multiple projects without opening multiple instances of FlashDevelop, which I still find somewhat ridiculous. However, now I will be working on a single project for months at a time instead of jumping between 5 projects in a single day so multiple projects are no longer a deal breaker for me. With that hurdle out of the way, FlashDevelop is a happy medium between Eclipse and JEdit. It is a focused AS tool and therefore not as bloated or slow as Eclipse. It does has the main bells and whistles such as auto complete and jump to, but it is lacking the highlight occurrences that Eclipse plugins offer. I found an OK plugin that allows for highlighting all occurrences of whatever word you have selected... its not as good as Eclipse's highlighting since it doesn't take syntax into account and it doesn't give you hot-spots to jump to on your scrollbar, but its better than nothing. It has some very nice snippets and macros which are fairly customizable, not quite to JEdit's level but seem to be an improvement over Eclipse snippet tools.

Overall, each tool has its pluses and minuses and all of the options can be solid choices, it just depends on your personal needs. For me, FlashDevelop seems to be the happy medium and it is now my editor of choice. If I wind up jumping between multiple projects throughout the day then I would most likely switch to FDT or FlashBuilder. And if anyone created plugins for jump-to method/function, auto-complete, and instance highlighting in JEdit then I would jump ships as well since JEdit is amazingly customizable. In the meantime, I'll be happily chugging away on FlashDevelop.


Now I wonder if anyone is going to make me eat my words from a year ago? Iain? ;)

15 comments:

Anonymous said...

there is a new editor call Realaxy
http://www.realaxy.com/editor/index

Anonymous said...

Hi,

Just wanted to throw in the discussion that there are new players coming, that may be interesting :
IntellijIdea
Realaxy (based on jetbrains mps i think)
Visual Studio plugin
I gave a try to Realaxy beta and it seems very promising.

Iain said...

Hi dude - I knew you'd come round to my way of thinking! FlashDevelop rocks hard. Don't forget the keyboard short cuts CTRL+D (duplicate line), CTRL+SHIFT+1 (universal magic function!) and F4(jump to definition)

Ickydime said...

Looks like Realaxy could be cool. Just skimmed the details and lacking Flex mxml support is an auto disqualification for me. Now for other devs, that might not bother them.

Didn't find any info about a Intellijldea plugin so I can't comment on that guy.

Visual Studio is interesting. But I don't think its more geared towards people who already use it rather than enticing someone like myself to switch to it. I can't imagine it being lighter weight or less complex than eclipse... would assume the opposite.

Very cool there are so many options though

Ickydime said...

@Iain
Loving the CTRL+SHIFT+1. Also the CTRL+SHIFT+D to remove a line is pretty slick. I'll have to try F4 today, I always did the ctrl click to jump around. Cheers! I can say that right? even if I am not British? ;)

Karl Knocking said...

For me CTRL-B is the best shortcut in FlashDevelop. Snippets are the sh*t.

Pixelboogie said...

Dangit! I need something for MAC. I love real computers, but I have to use MAC for work and just hate that there are so few choices.

Tahir Ahmed said...

Trust me, FlashDevelop rocks.

For me, enhanced-arguments-based code snippets (http://bit.ly/bBXMCF, http://bit.ly/9GQTZk) and loads and loads of shortcuts (http://bit.ly/duQleb) were two of the many reasons I chose FlashDevelop over the others.

- Tahir.

Alex Kiriako said...

I just read this review of Intellij IDEA.

http://www.flashmagazine.com/reviews/detail/review_intellij_idea/

Rave review but what impressed me was when I went to the jetbrains site and looked at the Flex screen shots page.

http://www.jetbrains.com/idea/features/flex_ide.html

Very impressive. Check out the images, they give you a quick idea.

Taha Khan said...

Loving reading every bit of this page, gr8 insight Mark. Trying to dig in more about the ant temp(grr I am to young to understand anything like that:)). I was keyed up using flex sdk for eclipse at thebasement, but after that learning curve I feel quite comfortable using it now.

Ickydime said...

@Tahir
Thanks for the links! Definitely appreciate the hot-keys.

@Taha
Glad things are coming together for you. I think the Eclipse plug-in is still the best choice for multiple projects that the Basement has. I wouldn't veer from it. Ant builds are cool... but mainly for larger applications.

Maksymilian said...

Multiple Instances:

Create ".multi" file to the FD main directory.

Ickydime said...

@Maksymilian
I am pretty sure that only allows you to open multiple instances of FlashDevelop. It does not handle multiple projects within one FlashDevelop process... which is what the other tools mentioned can do.

Kyle said...

Hey Mark, it's Kyle... for FlashDevelop you can make your workflow similiar to Eclipse/FlashBuilder in that you can just have one project file for ALL of your projects. Put all your project files in the base of a "workspace" folder and have all your project folders in there. Then all of the project foldesr will show up in the project explorer, and your individual project files also will be there and you can double-click them I believe in order to open them. Now the only drawback is that you can't really customize WHICH projects show up. Though you could seperate out your workspaces into a Sony work space, Workspace B, C and so on so that projects are grouped together.

Ickydime said...

@Kyle
Just when I think its safe to blog about work, you find me. son of a... ;)

That is cool. I'll check it out. I did find a solution for now since I am only working in my project and the core. By importing Core into my project I can browse through those classes without opening another project and I can then just open the core's antBuild and won't need to open anything else for when I test core utils. Which is good for right now, but I would need your solution if I do end up working on multiple projects that don't relate to each other.