WebStorm and Sublime Text lead a field of diverse and capable tools for JavaScript programming

JavaScript is used for many different kinds of applications today. Most often, it's partnered with HTML5 and CSS to build Web front ends, but it's also used for mobile applications, and it's even finding a place on the back end in the form of Node.js servers. Fortunately, JavaScript development tools -- at least some of them -- are rising to meet the new challenges.

In this roundup, I look at 10 different editors and IDEs (integrated development environments) of interest to JavaScript programmers. Six of these -- ActiveState's Komodo IDE, Eclipse with JSDT (JavaScript Development Tools), Microsoft's Visual Studio 2013, NetBeans, Sublime Text, and JetBrains' WebStorm -- could serve as the primary JavaScript tool for serious developers. I've given these six products full, scored evaluations.

The other four tools -- Alpha Anywhere, Komodo Edit, Notepad++, and TextMate -- don't rank with the above group, and I didn't give them full evaluations. Still, they're worth knowing about, so I've included them in the discussion.

Most of the tools reviewed here run on Windows, OS X, and Linux. A few run on only one or two of these platforms. Many are full-featured integrated development environments, and some are code editors with smarts about JavaScript.

Which should you pick? I have to give you the consultant's answer: It depends on what you need, like, and can afford.

If you want a flexible, powerful, extensible, and lightning-fast programming text editor, look no further than Sublime Text. For bonus points, it's also cross-platform. And while Sublime Text is definitely not an IDE, it can be beefed up using plug-ins to take on some of the features of an IDE.

For integrated development focused exclusively on JavaScript, HTML5, and CSS, consider WebStorm. It's an incredibly productive and capable professional IDE for Web development that comes at a very reasonable price. I recommend WebStorm for serious JavaScript developers.

For integrated development that goes further afield, consider Visual Studio 2013, NetBeans, or Komodo IDE.

For Windows-based development, Visual Studio 2013 offers a good JavaScript IDE, with good code editing and navigation, syntax highlighting, code folding, debugging, and JavaScript function timing. Support for ALM, specifically Git and TFS, is very good.

NetBeans is a quite capable and complete IDE, and version 7.4 adds welcome support for Android and iOS mobile Web development based on Cordova/PhoneGap. On the downside, it can be frustratingly slow, especially at startup.

Komodo IDE is a professional cross-platform IDE for major Web languages, including HTML, CSS, and JavaScript. It comes with a JavaScript debugger and advanced JavaScript editing, including refactoring. And it supports syntax highlighting for dozens of programming and markup languages, with emphasis on Perl, Python, PHP, Ruby, Tcl, and XSLT.

Eclipse has usable JavaScript support if you are willing to overlook the incorrect code diagnostics, lack of code folding, and slow IDE startup. I can't recommend Eclipse for serious JavaScript development. If you have no budget, you're better off with NetBeans for an IDE or any of the free editors discussed in this article.

Finally, Komodo Edit, Notepad++, and TextMate are lighter-weight alternatives that may work well for more casual JavaScript coding. And Alpha Anywhere is a horse of a very different color: a visual tool that allows you to create Web, mobile Web, and mobile hybrid applications with a minimum of manual coding.

Read on for the full details. You might find that more than one of these tools deserves a place in your toolkit.

Back in the days when Java Swing was new and exciting, I enjoyed using Eclipse for Java development. Even last year, when I did some Android development with Eclipse, I found the experience OK. In attempting to use the Kepler build (SR1 4.3.1) of the Eclipse IDE for Java EE Developers for JavaScript development, I was constantly disappointed.

On a positive note, Eclipse is at this point fairly mature. There's a plug-in for any open source project, programming language, or popular ALM product you can imagine.

The project to support JavaScript editing in Eclipse is called JSDT (JavaScript Developer Tools). As of the middle of last year, JSDT is part of the WTP (Web Tools Platform) project. I tested JSDT 1.5.1.

JSDT has lofty goals:

If it were only so -- alas, Eclipse with JSDT is not fast compared to any of the other JavaScript IDEs in this review, nor is it accurate. For that matter, it's not stable, either: It throws a number of runtime errors.

The AST (abstract syntax tree) is itself buggy, and this is reflected in errors in the "smart error detection and correction." This isn't a hopeless situation, however. The JBoss Tools Team posted at Planet Eclipse on Jan. 27 that it had started to contribute to the JSDT project to fix the important bugs and overcome the important limitations. The results of its work are already reflected in the Git repository, but not in any current releases.

JSDT is supposed to have the following key features:

Syntax highlighting

Full outlining showing classes, functions, and fields

Highlighting and checking of matching bracket and parentheses

Auto-completion of brackets, parentheses, and indentation

Marking of occurrences

Generation of element JSDoc

Smart code completion based on a real-time JavaScript model

Hover help that displays element declaration with JSDoc or error message

Of that admirable list, the syntax highlighting and limited refactoring usually work OK, as do marking of occurrences and bracket/parenthesis matching. Hover help kind of works, but it often displays bogus error messages. Smart Code Completion kind of works, but it's slow and unreliable. Quick fixes seem to be something to avoid for the most part.

Part of the issue with the JSDT implementation of JDT-based functionality is that typing is explicit in Java, while in JavaScript it is implicit and often needs to be inferred. While there is some type inference in JSDT, it doesn't work well for jQuery (or many of the other popular JavaScript frameworks), which leads to some of the problems mentioned above with bogus error messages and unreliable code completion, even with the JSDT for jQuery plug-in installed.

JSDT is supposed to have integrated debugging support for Rhino and Crossfire. As far as I can tell, only the Rhino debugger works.

If you have to use Eclipse for JavaScript development -- for example, because you generate JavaScript from JSP code and Eclipse is mandated in your organization -- I'm sure you can get by. But I wouldn't want to do it myself.

The Eclipse IDE for Java EE Developers includes JavaScript development support as part of the Web Tools Platform. Oddly enough, the JavaScript code-checking feature falsely reports syntax errors for the widely used production version of jQuery Core. The project is working to reduce the number of false error reports in a future version. (Click the image for the complete view.)

Collaboration is not a replacement for source code control, but it's a useful supplement. Komodo IDE integrates source code control using CVS, Subversion, Perforce, Git, Mercurial, and Bazaar. Only the basic version control operations are supported. Advanced operations, such as branching, must be done using a separate source code control client.

While Komodo doesn't have its own JavaScript document formatter, it takes advantage of the best free open source for this purpose. Out of the box, the default formatter for JavaScript files is JS Beautifier, but another nine options are available through a drop-down menu.

Komodo IDE does not support debugging client-side JavaScript, but it does debug Node.js, both locally and remotely. It also debugs Perl, Python, PHP, Ruby, Tcl, and XSLT. Of course, you can always debug in Firefox with Firebug.

Komodo IDE has a DOM viewer that lets you view XML and HTML documents as collapsible trees. It also lets you do XPath searches to filter the tree.

JavaScript is not supported by Komodo's code-profiling or unit-testing modules. However, JavaScript and Node.js are both supported by Komodo's Code Intelligence module, which implements code browsing, auto-completion, and calltips.

Komodo IDE can publish groups of files over FTP, SFTP, FTPS, or SCP. Komodo can also synchronize files and detect potential publishing conflicts that could cause you to overwrite other people's changes.

Overall, Komodo is a good but not great JavaScript IDE and a good but not great JavaScript editor. However, it may well serve your needs -- especially if you also work with Perl, Python, PHP, Ruby, Tcl, or XSLT.

Komodo IDE provides advanced JavaScript editing, syntax highlighting, and navigation, but doesn't include significant JavaScript code checking. It supports dozens of programming and markup languages, with emphasis on Perl, Python, PHP, Ruby, Tcl, and XSLT, and it includes debugging, refactoring, source code control integration, and unit testing. (Click the image for the complete view.)