Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

Year in Review: The Java tools roundup

A year of progress for build automation, testing tools, and IDEs

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone

Page 2 of 6

For the moment, however, this development work has been visible to the broader public only in the form of the highly dynamic m2eclipse plugin. Although it is still a little unstable in some areas, this plugin positions Eclipse as the platform of choice for Maven development, providing a full and feature-rich graphical editor for the Maven pom.xml file. Features such as the Dependency Graph (see Figure 1) and Dependency Hierarchy, for example, make it much easier to visualize your project dependencies and to understand and resolve dependency conflicts that can occur when different libraries require different versions of the same third-party library.

 The Dependency Graph and the Maven Index View

Figure 1. The Dependency Graph and the Maven Index View, two of the many useful features in the m2eclipse plugin (Click to enlarge.)

Dependency-search is another feature of m2eclipse that, once you use it, you won't be able to do without. It makes adding new dependencies to your project a non-event. Gone are the days of hunting the Internet for the correct dependency references. Now you simply search the Maven repository by name and pick the version you want to include it in your pom.xml file.

A Maven repository manager is another tool that no serious Maven user could easily go without. A Maven repository acts both as a cache for dependencies downloaded from the public repositories on the Internet, and as a repository for libraries published and shared within the organization. 2008 saw the emergence of a new leader in this field, in the form of Nexus. Nexus is easy to use and configure, making administration of a Maven repository a real pleasure.

Gant and Gradle steal Ant's thunder

The traditional Java build-scripting tool, Ant, evolved little over the past year. Gant, in contrast, has been developing at a rapid pace. Gant is a build-scripting tool that lets you use Groovy rather than XML to build Ant tasks. Gant is notably the underlying build tool of the promising Grails Web framework, which also progressed by leaps and bounds this year (more on Grails later). For anyone who can't live without the flexibility of Ant, but doesn't like the wordy XML syntax, Gant is worth a look.

In a similar vein, Gradle is another promising Groovy-based build tool that made its debut in 2008. Like Gant, Gradle tries to provide Ant's flexibility with a Groovy syntax, but it also lets you leverage many Maven-like features such as transitive dependency management and convention over configuration.

CI integral to SDLC

The Java development world in 2008 is clearly moving beyond seeing continuous integration tool and frameworks as glorified schedulers, now viewing them as key to the whole SDLC infrastructure. Build metrics, for instance, are a great way to keep tabs on your development process as a whole. A good CI tool lets you keep track not only of the number of tests, and test failures, in the latest build, but also of how your tests are doing over time. This sort of data can also be used to fine-tune the development process.

Hudson a developer favorite

In the past year Hudson has evolved from a nascent product to one of the more popular open source CI servers on the market. Although Hudson's dynamism sometimes comes at the cost of minor glitches, its intuitive user interface and slick reporting features make it a great little CI tool. Hudson also leads the market in Maven integration, being the only tool, currently, that can correctly decide which projects need to be rebuilt based on the Maven dependency graphs. This can save you a lot of work when you have complex, multi-module Maven projects. Hudson also comes with a rich library of plugins, allowing you to add features such as integration with JIRA or Trac, or automated deployment onto a Tomcat server.

Take the running time, or duration, of a typical build as an example. A slow build slows down the development cycle and discourages developers from building and testing locally and often (as the mantra goes). Knowing that a unit test failed in the last build is useful, and it lets you correct the issue quickly while the changes you made are fresh in your mind. But if a build failure persists over a dozen successive builds, this could indicate a deeper technical or organizational problem that the team leader might want to investigate. Similarly, a sudden increase in test duration can indicate a potential performance degradation, data that has practical uses in a development project.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comments (3)
Login
Forgot your account info?

reply this postBy Anonymous on August 16, 2010, 2:12 amI had got a dream to start my organization, however I didn't have got enough amount of money to do this. Thank God my colleague recommended to use the mortgage loans....

Reply | Read entire comment

Eclipse is too broad of an IDE categoryBy nieleyde on January 12, 2009, 2:17 pmDepending on the type of java development being done, there are a variety of Eclipse-based bundles available (Spring IDE, STS, Skyway Builder for Spring, MyEclipse,...

Reply | Read entire comment

Bamboo and Clover make a powerful combo!By kolofsen on December 29, 2008, 1:33 pmI'm with Atlassian. The new Test Optimization feature in the latest release of Clover adds incredible value to Bamboo by prioritising and/or selectively running...

Reply | Read entire comment

View all comments

Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources

Tools discussed in the article

  • Find out how to use Apache Maven in your development projects.
  • Check out Maven Integration for Eclipse to learn more about the m2eclipse plugin.
  • Nexus is a Maven repository manager.
  • Gant lets you build Ant tasks in Groovy instead of XML.
  • Explore the new Gradle build tool.
  • Hudson is the hottest entry in the open source CI derby.
  • CheckStyle helps you write Java code that adheres to a coding standard.
  • Check out the FindBugs static-analysis tool.
  • Clover measures code coverage generated by system tests, functional tests, or unit tests.
  • Learn more about the Subversion version-control system.
  • Find out more about doing behavior-driven development with JBehave
  • and easyb.
  • Selenium is a suite of tools for testing Web applications.
  • Canoo WebTest is an open source tool for automated testing of Web applications.
  • You'll find Eclipse downloads and resources at Eclipse.org.
  • Learn all about the NetBeans IDE.

More from JavaWorld