I've described the notable features of each of the top three Java IDEs and offered a glimpse at a handful of lightweight alternatives. You'll need to weigh this information against your personal development needs and resources to decide which IDE will suit you best. In addition to personal considerations, there are also project-based considerations. In many cases it is easiest to use same IDE as the rest of your development team, but that isn't completely necessary.
For example, if a team project is hosted on GitHub, then your life will be easier if your IDE supports GitHub. That isn't an absolute requirement, however: you can always use a GitHub client or
git command-line and switch back and forth to your IDE. On the other hand, you really do want your IDE to support whatever build system has been adopted by the team. If it's Maven, for example, you don't want to have to reinvent the build system in Ant for your local testing. Fortunately the big three Java IDEs all support Ant, Maven, and Gradle, either out of the box or with a plugin. That isn't necessarily the case with the lightweight IDEs.
You are going to want to your IDE to support the JRE version that is standard for the project; if there's a version mismatch, you will run into bugs that the rest of the team can't reproduce. That's not a situation you want to create. Fortunately, JRE mismatches are more often configuration errors than errors caused by lack of support in the IDE: the exceptional case happens briefly when an IDE hasn't yet released an update for a new Java version.
It helps a great deal if your IDE has strong support for the frameworks and technologies used in your project. You can get by without that, but if, for example, the IDE knows how JPA statements relate to entity classes and JPA expressions (as IntelliJ does), then you are likely to spend less time on your JPA-related code. And if the IDE supports the testing framework and test runner used by the project, you'll be able to test without leaving your workspace.
Finally, it helps if your IDE can connect with whatever ticketing and bug tracking system has been adopted for the project. Again, you can get by using a standalone or web client for, say, JIRA, but you'll be more productive if you can check out your tickets directly from your IDE.
I've made a strong case for IntelliJ IDEA Ultimate, which many would consider the Cadillac of modern Java IDEs. While it's not free like Eclipse or NetBeans, I believe the productivity gain is worth the annual subscription. For developers just starting out, or those preferring not to pay, I recommend NetBeans over Eclipse. Whereas Eclipse's plugin ecosystem once made it the top choice for developers, today it has become unwieldy and somewhat poorly maintained.
Sign up for CIO Asia eNewsletters.