Testing
- JUnit for writing Java unit tests
- Mockito for easily generating mocks, modifying their output, and verifying their invocations
- Hamcrest for general purpose matchers used to easily express test assertions
- Roboelectric for writing Android tests that run on an Android device or emulator
Serialization
- Protocol Buffers for automatic, cross-language, cross-platform serialization with good backwards compatibility
- java.io.Serializable for builtin, automatic serialization of Java objects (hard to maintain compatibility)
- java.io.Externalizable for builtin, manual serialization of Java objects (more manual labor involved)
Parsing
- JFlex for auto-generating a lexer from a lexical specification to break up input into tokens
- Java CUP for generating a parser to build up and process an abstract syntax tree from lexed tokens
User Interface
- Thymeleaf a templating engine for emitting HTML (e.g. when implementing a server with a web-based UI)
- GWT for building UIs in Java and generating HTML/CSS/JavaScript from it
- Android XML and android.view.View for developing Android UIs
- Swing for building desktop GUIs (though consider creating a webapp, instead)
Build Systems
- Bazel (my recommendation) for Google's general-purpose, open source build system
- Gradle for a general purpose, declarative build system with plugin support for Java
- Apache Maven for a declarative XML-based system (recommend against; popular, but slow and complex)
- Apache Ant for an imperative XMl-based system (recommend against; just a more verbose, confusing Make)
- GNU Make for a low-level, imperative build system (ok for small projects, otherwise avoid)
Integrated Development Environments
- Cloud 9 for an online IDE (what I'm using for this website, in fact)
- Code Envy for yet another web-based IDE
- Code Anywhere for yet another web-based IDE option
- Nitrious.io for yet another web-based IDE option
- Android Studio if developing for Android; has good support for Android UIs and based on IntelliJ IDEA
- IntelliJ IDEA for a Java-specific, desktop-based IDE with strong refactoring / code understanding capabilities
- Eclipse for a popular, general purpose, desktop-based IDE with good builtin support for Java
- NetBeans for a free IDE with good drag-and-drop user interface creation for Java Swing GUIs
Other
- IDEOne an online compiler for quickly testing / validating small snipppets
- FindBugs for automated defect detection
- Checker Framework for static analsis and verification of nullness/non-nullness
- Javadoc for automatically extracting/generating documentation
- JDB for debugging Java programs
- SWIG for auto-generating JNI code to allow C++ and Java code to talk to each other
- Jenkins for continous integration and testing