Official docs and other resources
Libraries and Frameworks
- jUnit - The standard unit testing tool in Java world, the inspiration behind
nunit, the equivalent for unit testing used in the .NET world.
- Apache Commons - The most popular and highly used libraries in the Java World.
- Apache Tomcat - A popular web server and Servlet container, the standard way of hosting and developing web apps in the Java world. The official alternative to the
- Apache TomEE - It so happens that Tomcat is great, but it doesn’t stand up to some of the Oracle’s certification standard for a web hosting platform. Hence
TomEE was created, though its production usage is much less than
- Takes - Takes is an open source object-oriented and immutable Java web framework.
- Spring.io - A comprehensive open-source web framework in Java that began to address some major drawbacks in the
Java EE way of development. It pioneered the Dependency-Injection pattern in Java world and its modular approach of bundling components acted as guiding stones for other frameworks like the php symfony.
- Apache log4j - The standard logging component in the Java world, inspired
log4net for C# and
log4php for PHP.
- snmp4j - An industry standard SNMP library for Java. It allows creation of both SNMP agents and admins thorough its extensive API.
- Eclipse - The standard and most popular Java IDE used by most Java professionals. Though it appears to be bloated and sometimes slow and not so well designed, it is presently the best available alternative in the Java world. It’s pros, however, far far outweigh its cons - it has a plugin-based modular architecture covering not just Java, but PHP, Python, C/C++ and several other langauges. There is also an ADT plugin to develop Android Apps. Personally, I’m a big fan.
- Netbeans - Another great IDE, second only to Eclipse. This has an additional advantage of being supported by Oracle and it comes with a Swing/JavaFX designer built-in. However, it is less flexible than Eclipse when it comes to supporting a wide range of projects. It also lacks a python plugin and its android plugin isn’t much evolved.
- BlueJ - An IDE specifically designed for the teaching of Java concepts to students. It doesn’t have all the bells and whistles of Eclipse and others, just a plain IDE to easily help understand OOP concepts.
- IntelliJ - A commercial IDE developed by Jetbrains Inc.. Evangelists say that its a better IDE than Eclipse, personally I’m not a huge fan.
- jEdit - jEdit is more of a Programmer’s Editor than a fully fledged IDE. Though it lacks the RAD features in Eclipse/Netbeans, it works pretty well as a lightweight text Editor.
- Apache Ant - The standard build testing tool in Java world, the inspiration behind
nant, the .NET equivalent. Often used in conjunction with Maven or Gradle packaging tools.
- Apache Maven - The standard package management tool in Java world, though to be very honest, this department is very fragmented and convoluted with
Gradle emerging as an unofficial alternative and the maven central, not being the only official source. Since Java is enterprise driven, a lot of them have their own maven centrals.
- Qulice - Qulice is a Quality policing tool for Java which performs all kinds of checks and validations on your Java code. There is a maven plugin available which is very helpful.
- Gradle - A strong and popular replacement for Maven, especially because of its terse syntax that allows you to do away with Maven’s verbose XML.
Online tutorials, books and puzzles
New in Java 8