All about Java class loaders

All about Java class loaders

Here's a quick look at the three types of class loaders and everything you need to know to work with them in your Java programs.

How to use callbacks in Java

How to use callbacks in Java

Learn how to use synchronous and asynchronous callbacks in Java—including callbacks with lambda expressions, CompletableFuture, and more.

Intro to the Observable design pattern

Intro to the Observable design pattern

The Observable design pattern is found in many Java APIs and in reactive programming. Here's an introduction to the timeless Observable pattern in Java.

Lazy vs. eager instantiation in Java: Which is better?

Lazy vs. eager instantiation in Java: Which is better?

Learn how to use lazy instantiation and eager instantiation in your Java programs. Which approach is better? It depends on the scenario.

How to use the Command pattern in Java

How to use the Command pattern in Java

Learn how to use the Command pattern to encapsulate requests as objects that you can execute alone or in sequence in your Java programs.

Abstract classes vs. interfaces in Java

Abstract classes vs. interfaces in Java

When should you choose an abstract class over an interface in Java? Take the challenge! Learn the difference between these Java language elements and how to use them in your programs.

Java inheritance vs. composition: How to choose

Java inheritance vs. composition: How to choose

Compare inheritance and composition, the two fundamental ways to relate Java classes, then practice debugging ClassCastExceptions in Java inheritance.

Does Java pass by reference or pass by value?

Does Java pass by reference or pass by value?

You've probably heard that Java passes by value, but what matters is how well you understand the concept and the code. Find out what happens when you pass an object reference to a method in Java.

Comparing Java objects with equals() and hashcode()

Comparing Java objects with equals() and hashcode()

What is the contract between equals() and hashcode()? Learn how these methods work together when comparing Java objects.

Polymorphism and inheritance in Java

Polymorphism and inheritance in Java

Challenge yourself, with this brain-teasing introduction to Java method invocation in polymorphic method calls.

Thread behavior in the JVM

Thread behavior in the JVM

The JVM does what it wants to do, so how can you predict the order of thread execution?

String comparisons in Java

String comparisons in Java

Have you ever wondered how Java's String methods, keywords, and operators process comparisons in the String pool? Here's your chance to find out!

Sorting with Comparable and Comparator in Java

Sorting with Comparable and Comparator in Java

Comparable or Comparator—which should it be? Learn how to choose the correct interface for the sorting algorithm you need.

Method overloading in the JVM

Method overloading in the JVM

Test your mind with the first Java Challenger in a new series. Can you outthink the Java virtual machine?