IDE Showdown, IntelliJ, FDT, FlashDevelop

I was given a task of Evaluating a few AS3 IDE’s and though I’d spend my own time writing a entry on the blog to share my findings as it’s been too long since i posted my last entry.

Before I begin…

I’ve used used all 3 IDE’s for at least a months to familiarise myself with them but in no way know any of the IDE’s in a very advance level, i try not to ‘learn’ the IDE but rather do my work and find things on the way, so if I miss a feature please assume I just didn’t know it was there, please leave a comment to correct me if that’s the case.

I’m using IntelliJ 9.0.3, FDT4 , and FlashDevelop 3.2.0

But Why was I evaluating different Different Tools?

Anyway, after been a long time FlashDevelop user coming from a PC I was forced to endure using FlashDevelop on Mac while in Parallels. It was slow as a Dog. The whole Program would hang for 10 seconds at time and a 10 second compile would take up to 40 seconds to compete. This is largely the fault of the Parallels slow virtual hard drive access speed, I eventually learnt how to compile using OSX command line with the Flex SDK but it would mean I was missing out on quiet a few features and overall was a pain in the arse. Some of the functionality could be replicated by MonsterDebugger but nothing really compared to a proper debugger with line breaks etc.  After a big long project and many IDE headaches, it was time to look at possible alternatives.

Why didn’t you include Adobe Flash Builder ?

I did use Adobe Flash Builder 4 quiet a bit while fumbling around trying to learn Flex, I’ve tried the latest version ( 4 ) and did run through it and my thoughts stay the same.  I don’t think it’s very comparable to the other IDE for actual coding for people such as me who do Pure AS3 or Flash IDE projects. Even if I was to pay $962 AUD for Flash Builder and another $79 USD for Sourcemate ( which is a fantastic plug-in by the way, props to them ) I still don’t think it’s even good as the Free Flash Develop or as cost effective as the other 2. Mind you not to say it’s a useless product, it has unique features that is not found on the other IDE’s but as far code writing goes, I think to look elsewhere. I have been keeping my eye on the new version that’s coming ( Burrito ) which looks to be much better for coders, but it’s just implementing features that we’ve seen in FDT and Flash Develop for years now.

In Humble Beginnings… Flash Develop

Flash Develop General Window

Flash Develop is a Open Source IDE built on Microsoft .NET 2.0 which means PC only. People have used Visualization on OSX with success but it’s definitely not the ideal solution for OSX users. If your still coding in the Flash IDE ( you poor soul ) I would definitely say check it out as there’s no excuse not to at least try it (if your on PC).

I started with Flash Develop when I was still freelancing during and after University and I think it’s a great piece of software if your on PC. It’s probably enough for majority of people out there till you get into the bigger and bad-ass projects. It’s Debugger wasn’t all of that great when i was using it but it’s not all that bad in recent updates.

Code completion is pretty good (as with all IDE’s that are even worth consideration these days), gives really good code hints and searches through all of your classes, imports and SWC’s that have been added to your project to give proper code hinting and highlighting.

Code generation is enough for mostly developers out there, it’s almost caught up FDT as far as creating new classes. It shares the ability to exact methods from interfaces like all 3 IDE’s.


Creating New Classes

It’s Snippet (Template) system is okay, it’s isn’t as crash hot as the system used in IntelliJ and FDT but it’s enough to get bits of boilerplate code into your document quickly. Snippets have it’s own menu that must be activated on a special shortcut unlike the other two where it pops up with code hinting.  You can create class templates for creating templates for classes you use frequently ( I was using a templates for all my Robotlegs classes)

Snippet / Template Popup

There’s no method that I know to overriding methods from super classes which is a bit of a bummer, you have to actually navigate to the super class yourself to find out what’s in there.  ( 17/10/10 Philippe has kindly alerted me that you can override super methods, you just type in override then hit the ‘quick fix’ shortcut and it pops with the list )

The biggest thing I miss while going back to FlashDevelop is refactoring and the ability to use Quick-Open like the other two IDE have. Refactoring is really needed in big projects while your constantly moving classes and renaming things accordingly when your applications grow and scope changes. There is actually a Refactoring menu in FlashDevelop but i could never figure out how to actually use it, it always seems to be grayed out.

FDT, The Main Player

Cross Class code generation

FDT is made by a group in Germany called PowerFlasher , I would say FDT is the most popular professional development tool out there. It’s built on the Eclipse which is a Java based ( which has it’s advantages and disadvantages ) . FDT has quiet a big following and community and you’ll find no shortage of users sitting on Twitter and most Flash Development type agencies. Pretty sure people are using it for Flex work too these days ( I myself would miss the design view too much compared to Flash Builder ) .

There are 3 versions of FDT, Pure , Plus and Max. The differences are outlined on their website here , for this article I’m going to be comparing Max as it had the features I needed when developing.

The interface will look familiar if you have used Eclipse for any other type of development , you can almost get plug ins for almost all languages out there , also it’s mullti-platform so it work in both OSX and Windows. Adobe Flash Builder ( aka Flex Builder ) is also built on Eclipse so you should have no problem learning FDT if your coming from there.

The first time I opened FDT i was bombarded with a barrage of buttons I’ve never seen before, till this day I don’t know what 1/2 the buttons do or i never use them. The user flow was a bit different as the first time I tried FDT as I was still compiling out of the Flash IDE at that point.

FDT has real time error hightlighting, red squiggly lines comes up when something is wrong ( like a spelling mistakes in a word processor ) , it’s pretty accurate and is very helpful to find typo’s while coding rather than at compile time.

Class completion and Hinting is good ( I actually don’t find much discrepancy between the 3 IDE as far as code completion goes ).

Code generation is fantastic, i find FDT by far the ‘quickest’ when actually setting up a project and creating classes. Really enjoy the FDT work flow, I can start typing a variable or class before I declare it and FDT’s quick fix system generally knows what I’m trying to do and sorts me out, I don’t actually have to be in the same class I’m writing the function for it. I can be in Class A that references class B and create a function in class B. Overriding super classes , implementing interfaces etc is  a breeze.

Cross Class code generation

The Quick Fix system in FDT is fantastic, soon as the red squiggly lines come up to tell me something is wrong I can hit the Quick Fix shortcut and it would recommend me the fix, generally it’s just importing a class, declaring a variable or function, my favorite FDT feature..

FDT ‘quick fix’ helping me out

The template system is better in FDT than in Flash Develop, you’re able to add ‘variables’ into your templates , so you’re able to snippets that duplicate user input several places.

The Refactoring tools are good , I’m more then satisfied by FDT’s refactoring tools to use on old projects and extracting pieces of code to make Standalone classes after a project is completed. You have Rename and move, and you can drag classes into new packages and FDT will go find all references to it and adjust them all safely.

The Profiler in FDT is quiet good, I didn’t have a chance to use it at all on the other IDE’s but i found the one in FDT useful in finding where I had memory leaks because I forgot to take out listeners and destroy objects that were no longer used.

FDT Profiler

The Debugger in the Plus and Max version is good, it’s really nice to have the ability to have a line-by-line debugger when working on big projects, really speeds up debugging and pushing the last few steps of a project out.

FDT also has ANT, FlexUnit and Source Control Built in which is a great plus.

IntelliJ The New Kid

IntelliJ is a oldschool Java IDE IDE and has been quiet around some time, Jetbrains (The Creators of IntelliJ ) have recently introduced a Flex SDK plug-in for IntelliJ that has enabled the development of ActionScript 3. Although the IntelliJ IDE has been around quiet a while ; the Flex component of it is quiet young. There was some heavy hitters AS3 developers such as John Lindquist and Jesse Freeman that highly praised IntelliJ so I thought I’d give it a shot to see what the fuss was about. There is a Free edition but unfortunately the Flex component doesn’t work in that version so you much buy the retail version that cost around $599 USD.

IntelliJ’s vast platforms

I was a bit worried it was would be missing some critical features that I would need because IntelliJ being fairly new to the world of ActionScript, but everything was there that I needed to work with.

IntelliJ also shares real time error checking like FDT does.

Template system is good, I had a few fights with it at the start but then got the hang of it, seems to be a few bugs that i got around by asking around their helpful forums.

Code navigation is good (as all 3 IDE’s) You can open class type and find where variables are declared by key stroke.

IntelliJ Code Generation

Code completion is good, There was a few gripes of the code generation I wasn’t a a fan of however, I like it how in FDT and Flash Develop it shows what method arguments while your typing it in , seems with intelliJ it the little helper box dissapeared as soon as you started to type.

IntelliJ Code Generation

Code generation I find better than Flash Develop , but not quiet there compared to FDT. I couldn’t figure out how to create a new class from a undeclared string like you can in FDT’s Quick Fix system which is a bit of a shame. (  19/10/10 Turns Out there was a whole different quick-fix menu I was un aware of which would have made my life a whole lot easier if I actually figured it out, shame on me and apologise in advance to the IntelliJ team for that. I have added screenshots to show the options.  What I don’t like about this feature is that once you ‘Quick-Fix’ a new class all you can define is the Destination, It would have been good if you could see the full class creation box e.g. Where the class extends, it’s interface, and a proper ‘search packages’ of where you want the class to sit )

IntelliJ Code Generation

More IntelliJ code generation

More IntelliJ Quick Fix System

Debugger in IntelliJ is quiet good, has the ability to create ‘conditional’ line breaks which is really handy and a unique feature to IntelliJ. I was able to have different ‘build’ configurations and one was to build then launch the browser and debug remotely.

Refactoring in IntelliJ is fantastic, best out of the 3 by far. Renaming functions and classes is done live so you once you hit rename and start typing you can see all the changes live. The other refactoring options are vast the refactoring menu mostly goes beyond my level. I really like the ability to pull members up and down classes as well.

More IntelliJ Refactoring Options

IntelliJ also has ANT, Malvern, FlexUnit and various source control built in.

There was numerous growing pains at the starts but towards the end working with it became much easier. I think there’s many of features unique to IntelliJ that at my level can’t appreciate. I know alot of people go crazy over it but I just couldn’t share the excitement.

Features

Here are the features that I use and how i scored them personally , I know alot of people aren’t going to agree with me or I just didn’t delve deep enough to fully appreciate some of the feature of certain IDE’s.

Feature Flash Develop FDT IntellIJ
Ease of Use Good Good Good
Speed Great Great Good
Value Fantastic OK OK
‘Quick-Fix’ Good Fantastic Fantastic
Customising IDE Good Fantastic Fantatsic
Live Error Highlighting None Fantastic Great
Code Hinting Fantastic Fantastic Good
Auto Code Complete Fantastic Fantastic Fantastic
Template / Snippets Good Fantastic Great
Code Navigation Great Fantastic Fantastic
SWC viewing Good Great Great
Debugger Good Great Fantastic
Run Configurations OK Great Great
Refactorer OK Great Fantastic
Version Control Systems OK Fantastic Fantastic

Conclusion

If it was for my myself and I was on PC, I would find it hard justifying to myself why I’d pay almost 900 AUD for FDT or IntelliJ when Flash Develop has 90% the functionality i need for them both. Obviously now that I’m on OSX at work these things change. I was recommended FDT pure + MonsterDebugger as cost effective OSX alternative to Flash Develop but I would loose a line breaking debugger and would have no Refactoring tools at all which was not really a option for me.

What IDE would I recommend out of FDT or IntelliJ ? It’s hard to pick because while it was a Joy to do actual coding in FDT, intelliJ’s refactoring tools are quiet amazing and it’s worth checking it out if you haven’t seen it in use. But obviously, it’s unviable to have 2 IDE’s around. I think IntelliJ has lots of room to improve so I would like to re-evaluate it in a year or so’s time when a few people more are on board and it matures a bit.

But as it stands, if there would be one AS3 IDE i would buy with my own money, it would FDT.

17 Responses to “IDE Showdown, IntelliJ, FDT, FlashDevelop”

  1. John Lindquist

    Just fyi, the “personal” license of IntelliJ is only $249 (the only difference from “commercial” is that it’s non-transferable), but I would hold off on buying it until they release version 10 sometime at the end of this year. Personally, I like FDT 4 better than IntelliJ 9, but I prefer the latest IntelliJ 10 beta over FDT 4. Crazy times for IDEs right now :)

    I’ll be comparing FlashBuilder, FlashDevelop, FDT, IntelliJ, Amethyst, and Realaxy all during my unconference presentation at MAX, so make sure to check it out: http://www.fitc.ca/events/presentations/presentation.cfm?event=117&presentation_id=1383

  2. Simon

    G’day John,

    Thanks for replying, I was evaluating for a company so assumed I would have to go for a commercial licence as they are a few of us who need it, $249 does make it sound easier to make a business case for it.

    IntelliJ 10 you recon? I’ll be very keen to try it also

    – Simon

  3. Caio

    Hi Simon! Great post!
    I’m experiencing this same transiton between PC and Mac and as an old user of flashdevelop this post was very helpful to me! I just have one question, is there any way I can use FDT to edit a single class to compile in the Flash IDE? Thats was basicly my workflow in flash develop, and I really dont need to creat a project everytime just to edit a single class I want to compile in Flash, so, is that possible? I mean, I know I can do that, but everytime I do it I just can’t have code completion…

    Thanks!
    Caio

  4. Simon

    G’day Caio,

    I’m not aware you can do that as you need to create a new project in FDT (and flash develop too i thought) to take advantage of the code completion and hinting etc!

  5. Paul Robertson

    Hi Simon,

    Thanks for sharing your thoughts. I’ve always been IDE “obsessed” — I try out all the different versions when they’re in free betas. I loved FlashDevelop and it’s really been painful not having it now that I too have moved to Mac recently.

    I agree with pretty much everything you’ve said here. For me personally code hinting/code completion is the #1 priority, and I think FlashDevelop does that best, followed by IntelliJ X (10). FDT does good but it has the Eclipse problem that you have to always hit enter to accept a code hint, which drives me crazy. If it wasn’t for that I’d probably commit to FDT 4.

    Actually the other problem I have personally with FDT 4 is that it’s error checking is a little *too* robust. I have some largish existing projects that I import into each tool as a test. FDT couldn’t take it, because there are too many things that are okay according to the compiler but that FDT flags as errors. Because of that FDT wouldn’t compile or run my project, even though it builds just fine in Flash Builder. IntelliJ is similar to FDT, but it is more forgiving in terms of what it considers to be a warning versus an error, and it also only checks for errors in files that are actually open in the editor. Of course if I started a project in FDT that wouldn’t be nearly as much of a problem, but in my situation with lots of existing projects, and where I work with a team of developers who are probably using different IDEs than me, those are important issues.

    Anyway, sorry for the blast of thoughts. This is just a topic I’m passionate about — I’ve been meaning to post something like this for literally years so I’m glad you and John are finally actually doing it. =)

  6. Simon

    G’day Paul,

    Thanks for also sharing your thoughts!

    I’ve always like trinketing IDE’s as i like to know what’s the best tools for the job. I have also been a avid fan of Flash Develop (as you can tell). I’ve actually had a few people tell me that Flash Develop’s code completion is best but I can’t say it, I find FDT’s much ‘smarter’.

    Unless your pressing secret keys I don’t know about 😉

    I have also opened up a old project in FDT and it’s came up with a billion warnings and errors but it’s never actually stopped compiling,

    Exciting times though in the IDE world.

    – Simon

  7. Meinhard

    Hi Simon,

    thanks for your effort on the IDE comparison and picking up some of the general features for daily coding. Since I am working at Powerflasher and also within the FDT team I just want to reply on questions regarding FDT features.

    @Caio: You can either use a launch configuration or an FDT ANT task for compiling with the Flash IDE.

    @Simon: Yes, FDT is much stricter than the compiler but however it will compile your project even with “errors”. The strictness can also be adjusted to your personal needs either in general or on project level (same as AS3 and MXML formatter). In our opinion being more strict than the compiler leads to much cleaner code.

    Lust but not least thanks Simon for giving the kudos. :)

  8. Philippe

    Fair comparison I think :)

    Override generation in FlashDevelop:
    Type “override” and pick a method in the list which should appear.

    Also FD snippets can have variables but its definitely not as hot as in the 2 others.

  9. Philippe

    Oh and latest FlashDevelop release does indeed have a QuickOpen panel (Ctrl+R).

  10. nicity

    Hi, Simon
    Thank you for sharing your experience. I think adding explicit version information for FlashDevelop, FDT, IntelliJ used for comparison would be nice. I wonder how long you have used each tool in comparison. E.g. if I got you correctly, you used IntelliJ for month and have not seen / used create class quickfix. Can not believe it, it is available for 2 years at least. Also project on IntelliJ screenshots is not looking credible for the comparison, unlike FDT / FlashDevelop ones.

  11. Simon

    Thanks for Correcting me Phillipe and Nicity

    Phillipe : Thats great, i really loved that feature and it will be a great welcome

    Nicity : I’m using the latest version of all except Flash Develop (maybe a few months since i stopped using) , but i will add the version numbers I was using

    I didn’t see the create class quick fix when i hit what i thought to be the auto complete / quick fix shortcut, i will review it and try again and apologies to the JetBrains team if this is short sight on my behalf !

  12. nicity

    Simon, type var foo:NoSuchClassYetExist <– here is quick fix (Alt + Enter or light bulb).
    Please promptly post time of your IntelliJ experience for fair comparison.

  13. Alan

    @Caio
    In order to have code completion / error checking, you’ll need to have your AS class in a “Source Folder” – so you’ll need to have a project somewhere.

    @Paul
    You can control what FDT flags as errors, warnings etc. Just go to Preferences>FDT>Problems>AS3/MXML Problems.

    @SImon
    There are also other features FDT has that these other IDEs don’t. By far FDT excels at compiling and launching your project(s). I’m speaking about the Flex compiler API that is used to compile, instead of mxmlc which is shipped with the Flex SDK. There’s also the launcher chain which enables developers to sequence multiple compilations and actions – very cool and fun. There’s also the dependency visualizers, Font Library creator and Plugin SDK that enables devs to extend FDT functionality.

  14. Pakka-pakka

    While Flex tools are improving across the board, I cannot imagine switching away from IntelliJ.

    Some reasons:
    1) Batch inspections. You can search for likely bugs (eg. unused variables/parameters) on large projects. Some inspections also have automatic fixes. Recently at a project people spent a few hours to eliminate mxml compiler warnings, eg. adding explicit “internal” keyword. Then I demonstrated how you can do the automatic fix across 200+ source files in a single click in IntelliJ.

    2) Smart completion. IDEA has supported this feature in Java for quite some time, but in IDEA 10 it’s also supported in the Flex editor. Instead of Ctrl-Space, try Ctrl-Shift-Space. If you’re assigning to a variable, IDEA will only suggest proposals that match the variable type. If you’re inside an if() statement, IDEA will only suggest Boolean properties. And so forth.

    3) Introduce Variable. Ctrl-Alt-V. Other editors support this refactoring, but it’s implemented in a very smooth way in IDEA. “Refactoring” sounds like too big a word for a feature that I use every 10 seconds, while typing code. I can’t remember when I’ve last written a “var x:Bla = …” statement by hand. In _any_ language that IntelliJ supports.

    4) Dead code detection. This happens every other day. IDEA marks a method or class as unused. You check version control. In the VCS history, you see people reformatting, refactoring, cleaning up a class for over a year, while it actually has been unused for as long. Invoke “Safe Delete” QuickFix. Commit. Done.
    While the “dead code” feature for Flex is not as complete as in Java, it’s improving quickly.

    5) Support. Bugs are fixed quickly (95% of mine are resolved). Features are implemented quickly. There’s a healthy, direct dialog between users and developers. The two times I contacted “official” support over the past two years, response came back withing a few hours.

    6) Price. For around ~220 EUR (if I remember correctly), I get a tool that provides a top-notch environment for Java, Scala, SQL, Python, XSLT, Flex, and a whole bunch of languages that I’m not using (PHP and Ruby being two notable ones). With refactorings, inspections, QuickFixes, formatting, and everything else working _consistently_ from one language to another. If there’s a better deal out there, tell me. I’ll be the first to switch tools, but I’ve not seen anything come even close.

  15. eco_bach

    One thing I luv about IntelliJ is that you can easily mix IntelliJ and Eclipse based projects without messing anything up…good to remember next time you try to use a flash-flex builder project in FDT, and then try and switch back!

  16. schody

    Pretty nice post. I just stumbled upon your weblog and wished to say that I have truly enjoyed browsing your blog posts. After all I will be subscribing to your feed and I hope you write again soon!

  17. Inteligentny Dom

    It’s appropriate time to make some plans for the future and it’s time to be happy. I have read this post and if I could I wish to suggest you few interesting things or advice. Perhaps you could write next articles referring to this article. I want to read more things about it!

Leave a Reply

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>