Friday, March 6, 2009

Reasons to Prefer Eclipse over FlashDevelop (Rebuttle to Iain Lobb)

Iain Lobb just wrote a great article called "10 reasons I prefer FlashDevelop to Eclipse and FDT". I think he has some good points, but I disagree with his conclusion. I started to write a comment... but being long winded I got a little out of control... I seem to have a habit of that lately. Anyways, please read his article before you check out my response.

First off, my info on FDT and FlashDevelop is dated. So if there have been major advancements in FlashDevelop over the past couple years then please correct me.

I used FDT within Eclipse for AS2 and loved it. At the time I was also programming java servlets so it was great to toggle between the two in the same application.

When AS3 came out I gave each of the programs a test drive and eventually went with the Flex3 plugin for Eclipse. I found it had everything the others had and more... (at least at the time).

As far as your arguments go...
1. can't argue that. that is a very good reason to use Flash develop.
2. Forcing the programmer to type "this" doesn't bother me. Its good practice and cleaner code to be typing "this" on class variables anyways.
3. Eclipse automatically adds imports when you define a variable's type. If I say "new MovieClip()"... nothing gets imported. But if I say "var a:MovieClip" then MovieClip gets imported.
4. It doesn't seem that hard. Just right click and do a refresh. But yes, you do need to specify which folders are sources. However, I see nothing wrong with this. It keeps everything clean.
5. I found FlashDevelop very annoying to switch between projects. In Eclipse if you have all of your projects setup in a workspace, you don't need to move anything around. You don't need to copy a GreenSock folder into each of your projects... just keep one in your workspace and have Eclipse target it. You can code multiple projects without having to switch anything or move anything.
6. You may have a point on the rendering speed. Haven't tested them side by side, but if there is a delay in eclipse it has not bothered me.
7. ctrl-f opens an easy to use search box in eclipse. Not to mention the ability to right click on any variable and find all the instances within a Project or within your entire workspace. Plus the ability to highlight code makes searching less common. And I love the ability to hold ctrl and just double click a function to open it up. Not sure if you can do that in FlashDevelop.
8. Sure there is a learning curve. But once you have it, I don't see you going back.
9. You can do this by downloading a plugin. Lee explains it here.
10. Buy some glasses ;). You can change all of the appearances of colors and fonts and what not by going to Window and Preferences. Pretty simple. I don't see you doing this on a daily basis. Just once and you are ready to go.

As far as my arguments for Eclipse (some are included above).
1. Profiler
2. Easy integration with SVN/CVS
3. Code Highlighting
4. Promotes more organized workspace. No duplicate libraries. Easy to jump to different projects. Easy to find calls from multiple projects.
5. Large number of plugins available. Can customize to the nth degree.
6. Works well with other languages as well including Java, Javascript, XML, etc.

Not sure I have swayed you. In all honesty I think they are both great products and you can't really go wrong. However, if you give Eclipse a chance and get over that learning curve I don't see any reason to switch back.


Joseph Burchett said...

Well I agree with both of you... Because well I use both! I am a Flex developer, who does SQL, C#, Php, etc. I do all of that in Eclipse. I am very much a Eclipse believer! If I could I would stop using VS for my C# needs and just go full steam with Eclipse if it had a quality C# plugin, but I digress. When it comes to doing just pure AS3 code, id say Flash Develop is a better editor when it comes to just doing AS3, but when you want to venture into the debugging, profiling area id go with Flex builder, as for FDT, well I tried it and found it to be okay, no where near as great as Flex Builder when it comes to features...I don't compare it to Flash Develop because once again I see Flash Develop as being an awesome AS3 EDITOR! nothing more... It does that REALLY well, and the fact that it has code hinting and support for other things (PHP, XML, MXML) is pretty cool! FDT, is good, but when I tried it it's right out of the box features didn't compare to Flash Develops. If you want a more feature rich editor id go with Flex builder, it allows your to not not only do AS3 projects but Flex/AIR projects as well, with a Design view and all that good stuff! FDT, if I am correct is just a "top notch" AS3 editor. Which is way to expensive considering what it is... Flash Develop is free! And is VERY light weight. You could argue the same with Eclipse considering it is pretty stand alone, but Flash Develop is REALLY, REALLY light weight considering all it does. It's especially nice considering if you just want to dive right into coding. Great thing about Flash Develop is you can tweak the heck out of it! I know you can do that with Eclipse stuff to, but Flash Develop is also not as intimidating IDE to start out with unlike eclipse, which id say has a bit of a learning curve. I love using all the tools out there, and if you want to do Flex stuff id say go Flex Builder, Flash Develop then FDT. If you want to do just straight AS3 stuff then id choose Flash Develop, Flex Builder (choose AS3 project) then FDT. All in all I am a HUGE Eclipse fan, don't want you to think I am not :-P But yeah just wanted to give my two, uh... three? cents on the matter. Flex and AS3 FTW! :-D

erick said...

Umm, in regards to point #2...
I usually just ctrl+space to get a list of available properties/methods without having to type 'this.'.

I do agree that Eclipse has the learning curve, but once you get over the small stuff, there's no turning back! Plus I love the 'Mark Occurrences' feature in Eclipse/Flex that shows me all instances of highlighted methods/properties in the sidebar! That alone is worth gold!

Dan said...

The big plus of FDT should be the refactoring tools no? Wonder why none mentions that.
Apart from that both seem pretty much on par. I love FlashDevelop:

2) obviously a controversial point,
just see the comments ;)
Personally I don't like "this" at all and don't like to be forced into a certain style by a code editor either
3) FD does exactly that
5) tricky: if you work with certain opensource libs like Papervision etc you should definitely keep them separately per project cause
updating to a newer version might break your old project.
I'd rather file copying libs around as good practice!
6) once you get a new car you notice how slow the old one was ;)

As for your points
1) ACK
2) well, Tortoise
3) FD of course does that, fully customizable
4) see above
5) there are a few Flash specific plugins for FD
6) FD works very well with XML, XHTML, JS, PHP, probably others as well when updating the language files

Cheers, Dan

Yu-Chung Chen said...

Nice to see comparisons and opinions from both perspectives.

In a recent project at our (design) school, we coded quite a bit AS3 with WiiFlash. I started using FD in that project, and our external technical consultant was an FDT man on Mac.

I couldn't actually use and experience FDT but the search seems to be better, showing details (types and what not) on the results before you commit to actually go there. This helps you focus I guess.

Apparently tracing sucks big time on both environments. FD needs an extra plugin which reads the debug player's log; this leads to a file access problem during stack traces. For FDT one must work with some cumbersome setup involving the terminal, possibly by intercepting the log or debug player as well.

FD starts pretty quickly on my slightly aged laptop (single core Pentium M 1.8GHz), way faster than, say, Flash CS3 itself. Might be true for FDT as well, dunno.

Re: 7) assuming you mean "going to the function" with "open", in FD it's F4 on a function call. Shift-F4 to return. I find that invaluable as well.

So far I really like FD and I have yet to read/ hear from a killer feature that's worth several hundreds of Euros.

Not to be a fanboy or anything, just offering an additional perspective :)

csharksgames said...

Both these are excellent free editors. There no superior IDE than eclipse which supports such long list of scripting capabilities. The thing here is for a much seasoned developer who is used to eclipse, it automatically becomes the most powerful editor on earth for anything it supports :) But then for a new comer specific editors can save his day making things a lot easier as eclipse does have a steep learning curve. We dont need a 150 mb editor download to do AS3 development do we?

Tangent said...

I started with Flex Builder, the gradually moved to FlashDevelop as their AS3 support matures.

With FD3 still in RC, there are still a slew of important features in the works. Noticibly missing is a robust MXML support and debugging. Currently AS3 cannot see MXML components, therefore code complete support is rather weak. AFAIK, authors are actively getting this feature out.

Nowadays I found that 65% of my time is spent on FlashDevelop. Why? FD is fast and responsive; even though FD is new, it already has a lot of plug-ins that are designed to speed up ActionScript development, from codegen/search and replace, source count etc. Smart snippets, getter/setter generator and content-sensitive code gen are something I cannot live without. One can argue there would be same counterparts in Eclipse, and no doubt there could be more. But AFAIK, FD's footprint is much smaller with all these functionalities, making it ideal for majority of my development.

I would admit when it comes to intensive MXML mockup or debugging, at the moment I would still defer to Flex Builder, but I would try to avoid opening the monster as much as I can.

So the bottom line is that -- every tool has its only advantage, there is no master or God tool in the universe, so just pick the one suitable for your job. Heck, with lots of RAM and HD space, while not a few, they wouldn't get jealous if you have both of them open under one roof. ;-)

darnpunk said...

I am currently using FD and had experience with Eclipse previously using ASDT plugin(I think?). It took me some time to set-up and the whole interface was too much for me. So I gave up after the first hour :P (I needed something easy to set-up then)

As I use FD for more projects, I feel that is missing some features like a debugger. Seems like Eclipse offers that plus more.

Anyway, have you heard of Eclipse E4/SWT? Its making me take a second look at Eclipse.

Ickydime said...

Wow. lots of great feedback on both sites and both sides. Love hearing what everyone thinks and why. Its helping me learn what is out there (including shortcuts in eclipse... my own back yard). Sometimes you get comfortable in one area and miss areas that could help you get better/faster/etc.

Anonymous said...

only complaint I have about Eclipse-FDT is memory leak. It eats up so much memory after couple hours that I have to close it and start again. That was so annoying that I have moved back to FD after 2 years

Anonymous said...

In your point #2 I am not sure where you get that it is "best practice" to always use the "this" keyword... it isn't due to the simple fact it is redundant. Nothing redundant in coding is best practice.

Adobe is not even advocating using the this keyword always it is just how the autocomplete works in that particular case. Only a noob would use "this" repeatedly because he doesn't know how to use the IDE he is working in.

Ickydime said...

It may be redundant but its easier to read. The "this" keyword distinguishes the scope of a variable.

Sure, if you are used to coding solo or on small projects it does not matter. But programming practices become much more important when you have to deal with other people's code either on a large team or from legacy work.

When trying to decipher someone else's work it is much easier when they are redundant and verbose.

This is the key: Learning to program for other people, not for yourself. Two completely different mindsets.

Thomas James Thorstensson said...

Regarding your comment on not having to drag greensock folder around. You don't need to drag it around in Flashdevelop. I have all my API's in a separate folder

C:\Documents and Settings\Username\workspace\src\api

in api folder i have papervision, tweenlite, and so forth.

Then whenever I start a new project in Flashdevelop > Project > Properties > Classpath tab and there you just add the classpath as a project classpath by browsing.

You then get the entire package imported into your project window as a grey lego box icon that you can fold out like any other and now you can import and work fine. You can like so then have loads of apis that you just set up for import all residing in one location just like with FDT which I by the way used to do that with.

Peaze and out

Thomas Thorstensson

one giant media said...

Your info was dated indeed. You can do all of those things in FlashDevelop now, maybe even easier:

Duplicate Libraries? Global Classpaths and project classpaths re-use any library on your hard drive. I have 1 greensock library in a general purpose folder on my computer and use it in about a dozen FD projects.

Open functions with highlight and what? FD u press F4 to jump to a variable's instantation, and F4 on any Type to jump to it's class file and constructor.

FD is a 1 project at a time workflow, that's true. Personally I think it's better this way- i have ADD when it comes to software programming.

You should really give the newest version of FD a try with the up to date flex SDK, I think you'll be surprised how streamlined and convenient it is once you learn all the shortcuts and features-

Worst part of all- no search dialogue in the trace output window. Not sure what they were thinking there...

Cameron said...

I Love FlashDevelop mainly because of its code generation features.

the Ctl + Shift + 1 shortcut for creating event functions is great.

Can someone tell me if FB can do this?
if so how?

but the debugger doesn't seem to work for me sometimes (sometimes it stops for breakpoints, other times it doesn't)