Java Tip of the Week #6 – Maven Dependencies

posted by Roberto Cortez on

This week Java Tip of the Week is about Maven. I’ve recently had session at Jfokus, called Maven Taming the Beast with the following abstract:

Maven Taming the Beast

Love it or hate it (and a lot of people seem to hate it), Maven is a widely used tool. We can consider that Maven has been the de-facto standard build tool for Java over the last 10 years. Most experienced developers already got their share of Maven headaches. Unfortunately, new developers are going through the same hard learning process, because they don’t know how to deal with Maven particularities. “Why is this jar in my build?”, “I can’t see my changes!”, “The jar is not included in the distribution!”, “The artifact was not found!” are common problems. Learn to tame the Maven Beast and be in complete control of your build to save you countless hours of pain and frustration.

And here are the slides:

Maven Dependencies

Since the presentation was only 15 minutes long (video should be available later), I made this week Java Tip of the Week a small demo of some of the issues discussed and the commands you can use to fix them:

For reference, here are the commands:

CommandDescription
mvn dependency:listDisplays the list of dependencies for the project.
mvn dependency:treeDisplays the dependency tree for the project, including transitive dependencies.
mvn dependency:analyzeAnalyzes the dependencies of the project and determines which are: used and declared; used and undeclared; unused and declared.
mvn dependency:tree -DverboseDisplays the dependency tree for the project, including transitive dependencies and omitted dependencies due to Dependency Mediation.
mvn install -Dmaven.repo.local=/tmp/.m2Points Maven local repository to a new directory, forcing Maven to download everything again.

Also, check this other post I wrote: Maven Common Problems and Pitfalls.

Remember to follow my Youtube channel for faster updates!

Leave a comment if you enjoyed it, if not leave one as well!

Java Tip of the Week #5 – Java 8 Date Time API

posted by Roberto Cortez on

Java Tip of the Week - Java 8 Date TimeThis week Java Tip of the Week we are going to continue to look into some of the new features introduced in Java 8. It’s about Time! The new Date Time API.

And in good Time we got it. Have you ever coded a real application without using any kind of object to represent Date or Time? I don’t think so. All of us are obsessed with Time, so it makes sense that we get a first class support to perform all kinds of operations when coding something. This was not the case prior to Java 8.

Java Date Calendar

Before Java 8, working with Date and Time was not an easy task. The old java.util.Date is not thread safe, represents years as two digits, uses a zero based index for months and is mutable. A real mess!

It’s replacement java.util.Calendar, was not much better. Still a mutable class, also with a zero based index for months. Some say it was even more broken than java.util.Date.

Displaying the Date / Time was not exactly easy. You needed to use yet another object to perform the proper formatting with DateFormat.

Finally, I don’t even want to discuss all the trouble you had to work with Timezones.

Here are two of my two “favourite” java.util.Calendar methods:

Calendar add

If I want to calculate yesterday day, but I only have an add method available. What do I do? Add -1 of course. Makes perfect sense!

Calendar set

Set the Month to 20? That can’t possibly work, right? Wrong! java.util.Calendar will just convert this to a valid Month and move the year, meaning that the 20 Months is actually September of the next year. Confused? You should be.

Joda Time

You could fix most of these by using a widely popular Date Time library called Joda Time. Is still the way to go if you can’t use Java 8 yet.

A good thing is that the main developer and creator of Joda Time, Stephen Colebourne was also the spec lead for JSR-310: Date and Time API.

Java 8 Date Time API

Pre Java 8, we need to write this code to print yesterday day, with trunked seconds:

And now:

Check it out in my video:

Remember to follow my Youtube channel for faster updates!

Leave a comment if you enjoyed it, if not leave one as well!

Check some additional information about Java 8 Date Time in the Java Tutorial.

Java Tip of the Week #4 – Lambdas

posted by Roberto Cortez on

Java Tip of the Week #4 - LambdasThis week Java Tip of the Week is the sequel to last week Streams API episode.

Lambdas is definitely one of the most awaited features in Java. Quoting Mark Reinhold – Chief Architect of Java Platform Group, Oracle:


“Lambda is the single largest upgrade to the programming model. Ever. It’s larger even than Generics. It’s the first time since the beginning of Java that we’ve done a carefully coordinated co-evolution of the virtual machine, the language and the libraries, all together. Yet the result still feels like Java.”

Java Lambdas

Lambdas is what make the new Streams API really powerful. Nothing was stopping Java to come up with a behaviour based API to perform operations on a sequence of elements. But who wants to code like this:

When you can code like this:

Check it out in my video:

Remember to follow my Youtube channel for faster updates!

Leave a comment if you enjoyed it, if not leave one as well!

Java Tip of the Week #3 – Streams

posted by Roberto Cortez on

This week Java Tip of the Week is about Streams.

Java Streams

Streams was a much needed feature in Java. They revolutionize the way we perform operations in Collections. For examples, now you don’t need to perform multiple for each statements to filter, sort or print elements.

The Streams API ships with all kinds of operations, including the previously described ones, but also map, group, reduce and many others.

Since I’ve started using them, I find it very hard to write code in Java 7 again, without this excelente API. Check out this small video about it:

Remember to follow my Youtube channel for faster updates!

Leave a comment if you enjoyed it, if not leave one as well!

Java Tip of the Week #2 – Optional

posted by Roberto Cortez on

This week Java Tip of the Week is about Optional.

Java Optional

Optional was something new introduced in Java 8 that allows you to wrap a value that might be null. By using Optional, you can perform operations to check if a value exists, get the value, return a default if no value exists or do something if it does.

I do find it very useful and I’ve been using it heavily in my last few projects. Check out this small video about it:

Remember to follow my Youtube channel for faster updates!

Leave a comment if you enjoyed it, if not leave one as well!