Choosing the Right IDE for the Job

A Java web developer takes a look at the Java IDE landscape and examines the major offerings. IntelliJ IDEA comes out on top, hands down, according to his measurements, and he includes a detailed review.
If you Google for "best
Java web IDE hands down" you will end up with tens of thousands of results that
include praises for every integrated development environment (IDE) out there.
Everyone seems to have his or her favorite, whether it’s a simple text editor
or a memory-hogging, state-of-the-art, does-all-my-coding-for-me IDE.

This review’s objective
is to present you with concrete information on how you can increase developer
efficiency and improve code quality when developing web applications by using
the appropriate IDE. Which one will it be?

What is an IDE? A Quick Overview

An IDE is an application
comprised of tools that benefits software development. Most IDEs are comprised
of tools that:

  • Allow you to edit your source code
  • Automate repetitive tasks
  • Compile code
  • Highlight code syntax in Java Class files
  • Provide code-completion as you type
  • Browse Class structures
  • Reformat code
  • View JavaDocs

More sophisticated IDEs have enhanced tools that:

  • Check code for errors as you type
  • Highlight code syntax in JSP, XML and J2EE files
  • Automatically create Classes, Methods, and Properties
  • Integrate with source code repositories, like CVS
  • Integrate with web application servers, like Apache Tomcat
  • Integrate with build utilities, like Apache Ant
  • Refactor code
  • Visually debug code

Some
IDEs also have plug-ins that allow third-party developers to extend the
capability of the IDE.

Introduction to the Various Products

There
are five applications that come to mind when answering that
question "What editor do you use for coding?" While some of these products are
well established, others are gaining momentum.

To
be fair, here’s a brief snippet from each of their web sites:

Eclipse – "Eclipse is a kind of universal tool
platform – an open extensible IDE for anything and nothing in
particular…"

IntelliJ IDEA – "IntelliJ IDEA is
an intelligent JAVA IDE intensely focused on developer productivity."

JBuilder – "Accelerate your Java development with
Borland JBuilder the leading cross-platform environment for building
industrial-strength enterprise Java applications."

JEdit – "JEdit is a mature and well-designed
programmer’s text editor."

NetBeans – "Develop cross-platform desktop, mobile
and web applications based on industry standards utilizing the latest
technologies with our full-featured integrated development environment for Java
Software Developers."

Feature Matrix

Despite
what the web sites tell you, if you take a look at the web developer IDE
features in a matrix, you will see that there is a big difference between them.

Feature Eclipse
3.0
IntelliJ IDEA
4.5
JBuilder
2005
JEdit
4.2
NetBeans
4.0
JSP
Syntax Coloring
  Yes Yes Yes Yes
JSP
Code Completion
  Yes Yes Yes Yes
JSP
Real-time Code Warnings
  Yes      
JSP
Precompilation Errors
  Yes Yes   Yes
Tomcat
Support
  Yes Yes   Yes
Tag
Library Editor
  Yes Yes   Yes
Ant Support Yes Yes Yes Yes Yes
Download Size (approx) 23 Mb 33 Mb 453 Mb 2 Mb 76 Mb


What Web Developers Must Look For — a Critical Comparison

While it looks like you could go with IntelliJ, NetBeans or JBuilder, let’s take a
closer look at actually using the application for web development.

Usability Eclipse
3.0
IntelliJ IDEA
4.5
JBuilder
2005
JEdit
4.2
NetBeans
4.0
Responsive at all times   Yes   Yes  
Quick start with existing code   Yes   Yes Yes
JSP real-time validation   Yes      
Top-notch CVS integration   Yes      
  1. Choose an IDE that doesn’t require lots of system resources.
    You want to watch out for IDEs that are
    developed primarily for Java GUI applications and tend to be sluggish in
    response when working with web application source code. Even with a
    powerful processor, Eclipse, JBuilder and NetBeans are sluggish which can
    quickly reduce your overall enjoyment and decrease productivity. This
    means that the interface is unresponsive when using menu items, panels and
    entering code. IntelliJ IDEA and JEdit maintain a high-level of
    responsiveness throughout.
  2. Expect
    to quickly be up and running with your existing source code.

    When you need to code the last thing you
    want is trouble from your IDE. Eclipse, IntelliJ IDEA, JBuilder, and
    NetBeans have wizards for creating and importing projects around your
    existing files, however some are outright challenging. Eclipse is the
    most difficult in this regard and has a steep learning curve. IntelliJ
    IDEA, JEdit, and NetBeans can use your existing source code directory
    without a tedious import process.
  3. Choose
    an IDE that enhances your coding experience with the types of files you
    use everyday.

    Since web
    development includes coding Classes, Servlets, JSPs, Tag-Libs, JavaScript,
    Ant build files, SQL scripts, and web application descriptor files, you
    will certainly need a tool that can check for errors and highlight the
    syntax in those files. IntelliJ IDEA does a superb job of real-time
    error-detection and syntax highlighting in JSPs. You will be amazed the
    first time you forget to add a tag-lib or import directive and your source
    code is immediately highlighted with errors. Other IDEs require that you
    manually compile the JSP before you see any errors.
  4. Choose
    an IDE that integrates well with your source code repository.

    This one is critical. Make sure you can
    quickly and intuitively checkout code, update code and compare code. CVS
    is a popular choice for software development, so I’ll use that as an
    example. In NetBeans trying to configure "External" and "Internal" CVS
    commands is confusing while IntelliJ incorporates a first-class CVS utility
    that is tightly integrated. Merging and comparing hundreds of files in a
    single session becomes extremely rewarding because it’s so easy to do.

A Clear Choice

After continually
evaluating the various products and being frustrated with the feature-set for
Java web applications, it’s a pleasure to have come across IntelliJ IDEA.

Here’s what makes
IntelliJ IDEA so exciting:

  • Working with existing code is
    quick and painless since the IDE is very responsive and uses existing source
    directories
  • CVS integration is highly
    accessible and more sophisticated than the other implementations; you will no
    longer need to switch back and forth between the IDE and a dedicated CVS client
    for complex merging
  • Code is immediately analyzed
    every time a file is opened and the IDE gives prompt indication of warnings,
    errors and suggestions even in JSPs
  • Ant scripts can be mapped to
    your project and executed in the background
  • IntelliJ IDEA is easy to
    install and works on any Java platform, including Linux, Mac OSX, and Windows,
    allowing you to change platforms as necessary

It’s also the little
things and the attention to detail that will make you more efficient. Here’s
what I like best:

  • As you work locally on a
    file, IntelliJ IDEA will display the lines that have changed, inserted or
    deleted and allow you to see the previous lines just by moving your cursor over
    the indicator of the changed line; this is independent of having access to CVS
  • If a method that has not been
    implemented is specified in code, then a single click will add that method to
    the appropriate Class; you’ll know this because IntelliJ IDEA tells you
  • A copy/paste buffer allows
    you to copy all you want, then paste back any copied code using a content
    selector
  • To duplicate a line, block of
    text, or whatever you have selected, press a hotkey
  • Code formatting and import
    statement optimization can be done automatically when checking code in or
    manually if you prefer
  • If you decide that a variable
    would have been better then repeatedly using an accessor method, let IntelliJ IDEA
    introduce a variable and make the necessary changes, with your approval
  • If you decide to rename a
    variable, IntelliJ IDEA can display a list of what code is affected and let you
    choose if the variable should be renamed in all of those instances
  • If you paste a code fragment
    that references a Class that has not been imported, a dialog asks if an import
    statement should be created, even in JSPs
  • The colors, icons, panel
    layout, and the simplicity of the menus additionally make this IDE worth using


Screenshots

In this screenshot, you
can quickly see a few issues with a JSP that is being worked on. First, the
taglib directive is colored in red because IntelliJ IDEA senses a problem.
Sure enough, the taglib has been entered incorrectly, which results in all uses
of that tag to also be highlighted in red. If you look to the right of the
scrollbar, you can see a visual indication of all the lines that have an issue.
You can cursor over the indicator for a tip as to what’s wrong, then click to
jump to that line.

The next screenshots
show you how easy it is to work with CVS. By selecting the "CVS File View" a
panel opens to show you the files that have been changed, added, or deleted
locally, in a concise, easy to work with view.

A file from the CVS File
View can be selected and shown immediately in the editor, or the file can be
compared to the current repository version as shown in the following
screenshot:

Now you can choose to
visually accept the changes or make additional changes right in the comparison
window. Now that’s easy!

Last Thoughts

If you strive to reduce
repetitive tasks, reduce maintenance time, and improve code quality, then make
sure you choose the right tool for the job. For web development, the right
tool is IntelliJ IDEA. I’m so impressed with the productivity gains that it’s
what my development team will be using from now on.

To try JetBrains’ IntelliJ IDEA you can download it from the
http://www.jetbrains.com
website.

About the Author

Matt Rajkowski is the lead software developer and architect for Centric CRM in
Norfolk, VA. He has extensive experience with Java web applications and works
in a distributed team environment on multiple platforms. He also owns and
develops
http://www.teamelements.com.
You can usually find
him in the discussion forums at
http://www.centriccrm.com.

68 Comments

  1. 2005-01-11 7:15 pm
  2. 2005-01-11 7:17 pm
  3. 2005-01-11 7:32 pm
  4. 2005-01-11 7:47 pm
  5. 2005-01-11 7:53 pm
  6. 2005-01-11 7:56 pm
  7. 2005-01-11 7:58 pm
  8. 2005-01-11 8:05 pm
  9. 2005-01-11 8:08 pm
  10. 2005-01-11 8:15 pm
  11. 2005-01-11 8:15 pm
  12. 2005-01-11 8:15 pm
  13. 2005-01-11 8:18 pm
  14. 2005-01-11 8:26 pm
  15. 2005-01-11 8:28 pm
  16. 2005-01-11 8:40 pm
  17. 2005-01-11 8:51 pm
  18. 2005-01-11 8:51 pm
  19. 2005-01-11 8:54 pm
  20. 2005-01-11 9:14 pm
  21. 2005-01-11 9:18 pm
  22. 2005-01-11 9:20 pm
  23. 2005-01-11 9:22 pm
  24. 2005-01-11 9:24 pm
  25. 2005-01-11 9:53 pm
  26. 2005-01-11 10:28 pm
  27. 2005-01-11 10:29 pm
  28. 2005-01-11 10:37 pm
  29. 2005-01-11 11:16 pm
  30. 2005-01-11 11:17 pm
  31. 2005-01-11 11:23 pm
  32. 2005-01-11 11:42 pm
  33. 2005-01-12 12:19 am
  34. 2005-01-12 1:05 am
  35. 2005-01-12 1:46 am
  36. 2005-01-12 2:46 am
  37. 2005-01-12 3:03 am
  38. 2005-01-12 3:27 am
  39. 2005-01-12 3:49 am
  40. 2005-01-12 4:50 am
  41. 2005-01-12 6:17 am
  42. 2005-01-12 6:21 am
  43. 2005-01-12 6:54 am
  44. 2005-01-12 7:31 am
  45. 2005-01-12 8:34 am
  46. 2005-01-12 8:34 am
  47. 2005-01-12 8:37 am
  48. 2005-01-12 8:47 am
  49. 2005-01-12 8:52 am
  50. 2005-01-12 9:09 am
  51. 2005-01-12 11:07 am
  52. 2005-01-12 11:29 am
  53. 2005-01-12 12:19 pm
  54. 2005-01-12 12:23 pm
  55. 2005-01-12 1:00 pm
  56. 2005-01-12 1:29 pm
  57. 2005-01-12 1:38 pm
  58. 2005-01-12 3:04 pm
  59. 2005-01-12 3:26 pm
  60. 2005-01-12 6:35 pm
  61. 2005-01-12 7:15 pm
  62. 2005-01-12 7:31 pm
  63. 2005-01-12 7:37 pm
  64. 2005-01-12 7:41 pm
  65. 2005-01-13 7:12 am
  66. 2005-01-13 8:34 am
  67. 2005-01-13 10:17 am
  68. 2005-01-13 3:21 pm