There are some established tools for Flash and Java development. For Java, there’s Eclipse & IntelliJ for IDEs, JUnit for testing, Ant/Maven for building, and JavaDoc for documentation. Similarly, for Flash, there’s Flash Builder/IntelliJ for IDEs, FlexUnit/MxUnit for testing, Ant/Maven/FlexMojos for building, and ASDoc for documentation. These tools might not be perfect but they work, they are maintained by a number of people, and there’s a community around them, so you don’t have to spend a lot of time and effort figuring out what to use for your project. There are established tools for the job.
There are some great initiatives from Google on this front with Closure Library and Closure Tools but my sense is that these tools are not perceived as standard as for example JUnit is perceived in the Java world at this point in time.
For debugging, I mostly relied on browsers. I used the built-in debuggers in Chrome, Safari, Internet Explorer, and I used Firebug in Firefox. Chrome has by far the most responsive and useful debugger, so thanks to guys in the Chrome team for helping me debug a number of issues. Firebug was ok but a little slow and crashed a number of times. By far the worst debugger was Internet Explorer. The debugger had a difficult time just loading up and when the test hit a breakpoint, it would stop and refresh the whole page for 2-3 seconds. I don’t know if this is because I’m on Mac and I was running Windows 7 in VMWare but the debugger in IE was just awful. It’s great that all these browsers support some kind of debugging but I missed the consistency of Flash Builder every time I switched from one debugger to the next.
For testing, we were hoping to find something similar to JUnit in Java and FlexUnit in Flex, and after some research, we settled on Jasmine. The testing convention of Jasmine is somewhat different than JUnit but it met our needs for the most part and I do recommend it. I think Google’s Closure Library has a more JUnit like testing framework but by the time we found that, half of our tests were written in Jasmine, so we didn’t bother to switch at that point.