Main image of article A Walk Through the Java Ecosystem
To a new developer, the world of Java can be a very confusing place. While Java itself is a relatively straightforward programming language to learn, there are a number of associated technologies that you really should know. In this article I'll look at the most important ones. First is Eclipse. Possibly the most successful open source IDE ever, Eclipse is a highly useful development tool that integrates with the Java Compiler to highlight compilation errors in the background. Yes you can build code without it, just like you can cut your lawn with scissors. But its main purpose is as the IDE in other open source systems, such as Dart and Scala and as the home to projects, including a complete implementation of the Git version control system. [caption id="attachment_103881" align="aligncenter" width="550"]Eclipse Java IDE The Eclipse IDE[/caption]

Alternatives to Eclipse include Netbeans which is open source and IntelliJ Idea which comes in a free and paid version. I'll look at those in more depth in future articles.

Maven is a tool to help you manage your software. If you've worked in enterprise software, you could describe it as an enterprise build tool. It provides a standardized way to build, test, package, document and deploy projects. An alternative is Ant, which can build and run software but needs explicit instructions to say where the source code is. Ant should be used with Ivy, which is a dependency manager. Ivy lets you specify the dependencies (other Java libraries, tools etc). It's particularly good where the dependencies you are using depend on other dependencies. The problem that Maven, or Ant + Ivy solve is that your software will likely make use of other software stored in repositories, like the Maven 2 repository, which holds over 63,000 unique artifacts. A maven artifact is usually a .jar file (basically a zip file holding Java byte code, resources and property files), a .war file (Web application files) or possibly a .ear file containing EJB files. These get deployed to a Maven repository.

Maven Repository Search

Your software may need to specify a particular version of a component is uses, which then has to be fetched, along with all the components that component uses. In the days before these tools, you'd fetch them yourself but managing multiple dependencies on your own can be very time consuming and cause excessive hair loss. Though they use the same repositories, Maven and Ant + Ivy do things in different ways. You can also set up your own repositories-- some companies will do that and only allow access to those. The Spring Framework, now over ten years old, is another technology to know. It was created to simplify enterprise Java development, to be used instead of the J2EE model, and is now the leading Java server framework with millions of users. It provides modules for dependency injection, AOP, inversion of control, and support for Hibernate and other open source frameworks. In addition, the Spring Framework has a family of Spring open source frameworks, including Spring Security, Spring Integration, Spring Batch, Spring Data, Spring Web Flow, and many more. If you needed to access MongoDB or Neo4J, you'd use Spring Data. I've only touched on a few of the technologies but I'll go over some more in a later article.