Java Tools for Agile Software Development

Java Tools for Agile Software Development

February 9, 2021

Start With Why

Java Tools applied for Agile software development – how do these even come together? Think about it. When you hear about Java, what comes to mind is probably the outdated waterfall methodology. Maybe you even consider all useful tools that are necessary for the modern development team as already invented.
Well, think again. From my experience working in a bespoke software development company, despite the challenges that come with Java in the Agile world, it still offers invaluable tools. Read further to refresh your Java knowledge.

The brief State of Java in the Agile World

Java has been around for a long time but its features are continuously improving. What’s more, the Java development is embracing fast-paced Agile development even at its core. Since Java was acquired by Oracle, now we have a short six-month cadence rhythm for releasing new Java versions into the wild. What’s more, each and every release of Java is striving to fit more and more into the real-world needs and the fierce advancement in technology and tools that are around the ecosystem. Strategies like cloud-first are being further enhanced. Features such as the XX:+UseCGroupMemoryLimitForHeap flag from Java 9 and all the changes in Java 10 combined now empower Java developers to run our applications in a container properly out of the box.

We can and we should use all of the benefits that Java, its ecosystem, and the tools built around it have to offer. This is how we survive, this is how we thrive. Considering the challenges that the breaking changes in Java 9 brought, this is one of the obstacles – to get past Java 9 and upgrade our applications and tools.

What is Java Good for?

With time Java proved itself worthy. So worthy that a vast amount of the corporations rely daily on it – they develop and run their software on Java. Each and every high-profit and system-critical software is considered to be written in Java. With Java we develop, in Java we trust. Java allows for agile software development, be it with scrum or kanban or any other agile process. This observation comes from daily development with Java from the past few years.

What do we Have at Hand?

Java is our weapon. We have Agile beating in our hearts. We are deep in the trenches. Looking. Searching. We see the target, a big corporate software project. We feel paralyzed, terrified by what is about to come. Then, all of a sudden, we hear reinforcements coming in the back. We are no longer waiting.

We separate our tools into a few different categories so that we can easily find what we are looking for. This is not an exhaustive list but rather a “what people use in production” sneak peak. See below the full list with links with references to all you need to know.

Real-World Example Setup

  • Process Tools / Project Management

If you are in a professional IT environment, choose Jira. It has all you need and all you want to successfully manage team tasks and to observe achieved progress. Don’t forget about MS Excel and Google Spreadsheets, they are always handy.

  • Task Estimation

Just do it on the fly during refinements using “Spoken” Estimation – let everybody think of a number and share it only after everybody is ready with their number.

  • Communication Tool (e.g. Pair Programming Online, Demos/Reviews)

Zoom is the most durable and trustworthy application for professional communication. It has an enormous set of features that makes everyday communication a pleasure.

  • Version Control and Code Reviews

Git and GitHub – trusted, tested and reliable. All you expect from a version control system to be.

  • Code Coverage / Reporting / Static Code Analyzation

One way to have quality control over the code developers write is through static code analyzers. One very widely adopted and useful one has proven to be SonarQube. It is a first choice for many professional IT projects using static code analysis.

  • Documentation and Knowledge Transfer / Retrospectives

If you are not familiar with Confluence, a plain and simple Google Docs or MS Word file will do all the magic.

  • Build Tools

In the Java world, Maven is one of the most preferred solutions. Easy to use, allowing for great flexibility.

  • Code Generation

When it comes to generating code JHipster is your must-have. But remember – with great power comes great responsibility. Handle with care and consider thoroughly. Only for experienced developers.

  • ORMs, DB Connectivity and Management

Let’s talk about the database now. We want to model our database objects as close to our business objects as possible. We want power, we want agility and flexibility. This is something we find in Hibernate. Combine it with Liquibase and ship the whole database schema changes to production in an automated manner, consistently and with integrity. Also, all your releases will be less stressful.

Sounds tempting, doesn’t it?

  • Integration Tool (Continuous Integration / Continuous Delivery / Continuous Deployment)

If we want to go the agile way, one of the process items we want to have in place should be the integration tool. One really powerful tool here is Jenkins X. Developed by the original Jenkins creators it is embracing all of the concepts and principles behind Accelerate and applying them in practice. They are releasing multiple times per day after each PR gets merged.

While using Liquibase will make your releases less stressful, a really good integration process will even allow you to sleep safe and sound at night.

  • Testing Libraries / Frameworks

One practice that takes agile to the next level is said to be Extreme Programming and Test Driven Development. So, lock and load JUnit, Mockito, and PowerMock into your Maven pom file and never remove them from there. You can further enhance your unit tests with AssertJ and Hamcrest. If you are looking into integration testing your REST API, choose Apache JMeter – you will not regret it.
And finally, the tool you might want to use for UI testing will be Selenium.

Do you know what is the crucial part of a perfect integration process? You guessed it – tests. One really robust suite of tests that you can trust with your life. Can you say you already have that in your current software project?

  • Development Framework

For development framework, Spring together with Spring Boot are often the choices to go. Taking a lot of boilerplate code and development effort off your shoulders.

  • Other Handy Libraries

There are a few functionalities that the chances are you are going to need to implement. Those are pdf generation, excel document generation, and processing and filling templated information for different purposes.

For pdf, a generation goes with iText – really powerful. Could be a bit complex to understand and use initially though.
For the excel document, Apache POI is your salvation. Easy to use, robust as functionality.
For email, web pages, or pdf text templates FreeMarker is one way to go. A bit strange as syntax but really powerful as functionality.

Do not forget the Java standard libraries. Do not reinvent the wheel, please.
Guava and Apache Commons are possibly everything else that you may need and cannot find in the standard libraries.

The Future

…is now. Embrace it and make the most of it. Reevaluate all of the tools that you are using as your success and competitiveness heavily depend on them. Be one step ahead in the game. Release faster. Release with higher quality. Automate. Be fearless. Bring the pain forward. Reap the opportunities from the vast unknown ahead of you. Take the lead.

>Take me to the future<

List of references:

Martin Patsov

Java Expert at Dreamix

More Posts - Website

Follow Me:

Do you want more great blogs like this?

Subscribe for Dreamix Blog now!