Review: The big 4 Java IDEs compared

How Eclipse, NetBeans, JDeveloper, and IntelliJ IDEA stack up in capabilities and ease of use

1 2 3 Page 2
Page 2 of 3

When you're working in the editor, you'll find NetBeans provides the expected coding assists. Its refactoring skills include the standard rename, move, and safe delete. NetBeans can also automate the chore of moving a method up into a superclass or down into a child class, and it can extract either an interface or a subclass from a class definition. The IDE's templates can quickly generate source code for constructors, getters and setters, standard methods like toString() and hashCode(), and even create delegation members that provide access to class variables without exposing that field directly. If you have Web services defined in the IDE (found on the Services tab), NetBeans can generate code for calling a Web service operation.

The final tab in the left-hand window -- the Services tab -- includes management functions for all the external services that your project might interact with. These include:

  • Web Services. This tab is prepopulated with well-known services like Amazon, Delicious, Flickr, Google, WeatherBug, and others. You use it when you want to add access to a Web service operation to your application. Open the source file that you want to access the Web service from, and drag the Web service function call in the Services tab to the location in your source where you want the Web service call to be made. NetBeans "pours" the proper code in, defines the necessary arguments, and even places the required import statements into your source file.
  • Maven Repositories. Give NetBeans an ID, name, and URL of a Maven repository, and the IDE will download the index and let you browse its contents.
  • Hudson Builders. Hudson is a continuous integration tool that runs in an application server. You can connect to one or more Hudson servers and monitor the status of the jobs each server manages. Some management functions are also available; for example, you can set some jobs as "watched," in which case a notification pop-up appears when build or test failures occur on those jobs.
  • Task Repositories. This entry provides access to issue tracking systems such as Bugzilla and JIRA.
  • JS Test Driver. Finally, this entry lets you configure usage of JS Test Driver, a Java-based server designed for testing JavaScript code. You can configure not only the location of the JS Test Driver server (actually, a JAR file), as well as the browsers you'll use to test your JavaScript code. NetBeans will even generate a configuration file you can modify further to control the testing process.
NetBeans IDE

The NetBeans IDE’s clean, uncluttered design makes it easy for new developers to find their way around.

NetBeans can work with version control systems such as Subversion, Mercurial, and Git. Plug-ins are available for CVS and ClearCase. Like Eclipse, NetBeans benefits from a healthy plug-in ecosystem. If you don't find a capability in the NetBeans IDE, odds are good that a plug-in exists for that capability. You can either check for available plug-ins directly from within the IDE or explore the NetBeans plug-ins portal.

NetBeans has excellent testing facilities, which include templates and wizards for both JUnit and TestNG. It will support both JUnit 3 and JUnit 4, as well as autogenerate JUnit initializer and finalizer stubs. NetBeans will generate initializer and finalizers for TestNG too.

The NetBeans debugger easily deals with multithreaded applications. You can switch among threads, and NetBeans will detect thread deadlocks among suspended threads. The debugger's code snippet evaluator lets you define methods for formatting the output of complex objects while debugging, so you can display the objects in a more readable form, instead of having to drill down into a tangle of containment references.

For debugging GUI components, NetBeans' visual debugger can take a "snapshot" of the GUI display at runtime, and from that lets you locate the code behind selected components (buttons, scroll bars, panels). You can also select the component, open a properties window, and examine the properties associated with the component at the time the snapshot was taken.

NetBeans help and documentation

NetBeans' built-in help and documentation for Java is little more than pointers to online help. The results of documentation search queries are scored in the same fashion made popular by Consumer Reports' product grading system: A small circle is displayed next to each search result; the circle is filled in by an amount corresponding to the search tool’s judgment of how close the result is likely to fulfill the query. Online documentation is extensive. The "getting started" information on the main page moves smoothly from "here's what you can do" material to "here's how to do it." There are plenty of tutorials online, too. Many are arranged in "learning trails" -- such as GUI, Java EE, Mobile, and Embedded -- and include pointers to articles and screencasts.

NetBeans enjoys nearly as many plug-ins as Eclipse, though it is not the IDE-builder's IDE that Eclipse has become. On the other hand, the NetBeans interface is cleaner than the Eclipse UI; you don't have to transition among perspectives in NetBeans when the nature of your work changes. New developers will pick up NetBeans more quickly than Eclipse. This in no way diminishes its usefulness for seasoned Java developers. NetBeans will carry you through the chores of building the most demanding enterprise Java applications.

JDeveloper

JDeveloper, also available from Oracle, is the primary development platform for Oracle Fusion Middleware products. JDeveloper's current version is 12c, which is available in two editions: Studio and Java. The Studio edition is meant for developing enterprise applications. The Java edition includes only components for Java SE applications and XML tools; it lacks J2EE tools, database features, ADF (Application Developer Framework), and UML tools ... all of which are in the Studio version.

ADF is Oracle's Java EE development framework. ADF implements the MVC paradigm and covers virtually all aspects of EE development: ORM, persistence, UI controls and Web user interface, application flow control, and so on. Its goal is to minimize the infrastructure code you have to write to construct a Java EE application.

Bundled with the Studio edition installation is an instance of Oracle's WebLogic Server, along with the WebLogic client JAR files. Although WebLogic is the preferred J2EE deployment platform, JDeveloper will let you deploy to GlassFish, Tomcat, and WebSphere application servers.

Working with JDeveloper

When you start JDeveloper, you're asked what role you'll be acting in while using the IDE. This role determines the features -- menu items, dialogs, preferences -- that JDeveloper enables or disables for your development session. The available roles are as follows:

  • Studio Developer. This enables all features.
  • Customization Developer. Select this role if you'll be customizing an ADF application's components. (Applications built using ADF can be "personalized" by customizing the attributes of the application's components. The Customization Developer role provides tools for such operations.)
  • Database Developer. Choose this role if your application will require heavy interaction with a database. JDeveloper's database tools are particularly powerful.
  • Java Developer. Choose this for core Java application development (absent Java EE features).
  • Java EE Developer. Choose this for Java EE application development.

New in this release of JDeveloper (version 12.1.3) is support for Java SE 8 (though the JDeveloper IDE itself must run in Java SE 7 JDK) and improved support for Maven. It also brings incremental enhancements to the IDE's Java EE tools and adds the ability to create JAX-RS 1.1 and JAX-RS 2.0 REST services and clients via Jersey. (JAX-RS is the Java API for RESTful Web services, and Jersey is Oracle's reference implementation.) The database tools have also been improved. For example, Code Insight -- JDeveloper's name for code completion capabilities -- is now available in the database modeler. Finally, there are tons of enhancements to JDeveloper's support for ADF.

The highest-level organizational element in JDeveloper is an application (which, as you'll see, can be a bit confusing). During a given work session with JDeveloper, you will have a single application open. Within an application you define one or more projects, where a project is a container of the elements that (typically) are used to create a single Java program. Within projects are "compilation units," which more or less correspond to the Java classes that your project builds.

Once you've defined your application, you begin populating it with projects. JDeveloper has plenty of project types to choose from: Java desktop application, ADF application, Coherence application (Coherence being Oracle's in-memory data-grid technology), REST and SOAP Web services, JSF (JavaServer Faces) project, and many more. Once you've selected the project type, you proceed to adding the needed source and resource files. For build tools, JDeveloper has its own build system, or you can choose Ant or Maven to manage your project.

JDeveloper

JDeveloper’s Smart Data view (available when debugging) shows only those variables likely to be of interest, given the current execution point in the program.

JDeveloper's editing system's term of code completion is Completion Insight, and although the name is peculiar, it has all the features you'd expect. Type in an object's name and a pop-up shows all of its available methods. It has templates for common constructs as well. Type Ctrl-Enter, and a pop-up gives you a list to choose from: empty for() loops, if then, try catch, iterate through a map's keys or values, and many more. Of course, you can add your own.

JDeveloper's editor also provides a history tab. Select it, and you're given three "views" into the history of the files changes. One is a sort of mini timeline, the second a hierarchical tree view of the Java components that have been modified at each point in the timeline, and the third a familiar diff view of the source.

If you're creating a GUI, then JDeveloper's Swing builder is there to help. The JDeveloper website indicates that the NetBeans and JDeveloper teams have been working to share GUI development tools. It shows: JDeveloper's Swing builder is virtually identical to the GUI builder in NetBeans. Choose a base form -- JPanel, JFrame, JDialog, and so on -- and you're given a canvas onto which you can drop Swing controls. You can switch between the design view and the source view, and there's a preview mode so that you can examine your GUI as it will appear when live. JDeveloper even has the GUI debugging snapshot feature described above in the NetBeans section.

Not surprising, JDeveloper's database development tools are particularly strong. The database navigator provides a graphical management interface, and it supports plenty of databases out of the box: Oracle, DB2, Derby, MySQL, SQL Server, SQLite, and of course any database for which a JDBC driver exists.

If you prefer, you can construct databases graphically using JDeveloper’s Database Diagram tool. It’s not unlike building a GUI by dragging and dropping buttons, scrollbars, and such onto a canvas. The idea is the same, only you’re dragging database objects -- tables, foreign keys, sequences, and relationships -- onto a database canvas.

JDeveloper also supports Oracle's "offline database" feature. This represents databases (and database objects) with XML-based definitions that let you work with database elements -- to create tables, modify table structure, drop tables, and so on -- without having to set up a live connection. You can do all of your management work without interfering with the ongoing operations of a live database. Once you have the setup you want, you reconcile the changes to the live database.

JDeveloper's debugger has a Smart Data window. While the debugger's data window shows all of the variables, static fields, and arguments in the current stack frame, the Smart Data window displays variables and fields pertinent to the code being executed. This saves you the chore of searching through what might be a long list of variables and objects to find the one you're likely to be interested in at a specific point in the debugging process.

For debugging Web-based applications, JDeveloper's HTTP analyzer understands how to peel apart HTTP and SOAP headers. Documentation provides guidelines for using the analyzer to debug RESTful Web services. You can even configure the Firefox Web browser to use the HTTP analyzer. This lets the Analyzer intercept traffic passing between your Web application client and the browser.

JDeveloper help and documentation

Much of the documentation for JDeveloper is online, and it is extensive to a fault. The section for all of the shortcut keys and their corresponding controls could keep you occupied for days. Meanwhile, when you're getting started with the IDE, stop by the "Working with Oracle JDeveloper" section, which is filled with how-to entries. The Oracle Technology Network site at has links to tutorials, getting-started guides, and more.

JDeveloper lists heavily toward Java desktop and enterprise application development. Beyond using Groovy in the context of Oracle ADF (where Groovy is used for creating dynamic business logic code), JDeveloper has no support for Groovy ... nor Scala nor Jython, for that matter. JDeveloper is a single-language IDE in that respect.

In addition, JDeveloper currently supports only Java EE 6 (the version currently supported by Oracle's WebLogic application server). By comparison, NetBeans supports Java EE 7.

Nevertheless, JDeveloper is a solid Java development environment with good debugging and profiling. In particular, if your application is going to make heavy use of an RDBMS, JDeveloper's database tools may fit your needs nicely.

IntelliJ IDEA

JetBrains’ IntelliJ IDEA, which first appeared in 2001, has distinguished itself as being on the forefront of innovative ideas for streamlining the development process. Version 14 was released in early November, and it fortifies an already powerful IDE with a number of new features. These include:

1 2 3 Page 2
Page 2 of 3
Bing’s AI chatbot came to work for me. I had to fire it.
Shop Tech Products at Amazon