Browse by Topic

Popular

Latest

Latest Java Posts

Illustration of Java method binding: a compiler icon for static binding and a runtime engine icon for dynamic binding, with a class hierarchy in the background.
Java

Java Static Binding vs Dynamic Binding Explained

Java resolves some method calls at compile time and others at runtime. This article explains static vs dynamic binding, overloading, overriding, and design tradeoffs.

Javastatic bindingdynamic bindingmethod overloading
Diagram showing a Java reference resolving to different method implementations at runtime through dynamic dispatch.
Java

Java Runtime Binding and Dynamic Dispatch

java runtime binding: Understand how Java resolves method calls at runtime through dynamic dispatch, overriding, and interfaces, and when it matters in production code.

dynamic dispatchpolymorphismmethod overridingjvm internals
Diagram showing compile-time method resolution in Java with a reference variable pointing to a resolved static method.
Java

Java Compile Time Binding: Static Method Resolution

Java compile-time binding explained: how Java resolves method calls at compile time, which methods use static binding, and how it differs from runtime dispatch.

Javastatic bindingmethod overloadingJVM dispatch
Illustration of a Java compiler selecting among several overloaded method signatures, with one highlighted as the chosen overload.
Java

Java Overload Resolution: How the Compiler Chooses

java overload resolution: Understand how Java selects among overloaded methods at compile time: the three-phase resolution process, ambiguity with null, varargs, and p...

method overloadingcompile-time dispatchJava Language Specificationambiguous calls
Diagram illustrating Java method resolution between compile-time and runtime dispatch.
Java

Java Method Resolution: Overloading, Overriding, and Virtual Dispatch

Understand how Java resolves method calls at compile time and runtime, including overloading, overriding, and virtual dispatch in the JVM.

method resolutionJVMoverloadingoverriding
Illustration of Java dependency relationships showing interconnected modules and a build tool managing them.
Java

Understanding Java Dependency Relationships

Learn how Java dependency relationships work in practice: declaring dependencies in Maven and Gradle, resolving transitive version conflicts, avoiding circular dependencies, using dependency injection, and managing supply-chain risks.

dependency managementMavenGradletransitive dependencies
Diagram showing a class with a has-a relationship to an engine and an is-a relationship to a vehicle.
Java

Java Has-A vs Is-A: Composition or Inheritance?

Understand the difference between has-a and is-a relationships in Java and when composition is a better choice than inheritance for flexible, testable code.

compositioninheritanceobject-oriented designjava
Diagram showing composition as a filled diamond and aggregation as an empty diamond between two Java classes.
Java

Java Composition vs Aggregation: Key Differences

Understand composition and aggregation in Java through practical examples covering lifetime, ownership, null safety, and maintainability.

Object-Oriented DesignUMLJava ClassesDependency Management
Diagram showing a department class holding references to employee objects, illustrating Java aggregation
Java

Java Aggregation: Has-A Relationships

Learn how Java aggregation models has-a relationships, how it differs from composition, and when to use it in object-oriented design.

JavaObject-Oriented DesignCompositionUML
Diagram showing Java class association between Customer and Order objects connected by a directional line
Java

Java Association: Modeling Relationships Between Classes

Understand Java association: how to model unidirectional and bidirectional relationships, and when to choose aggregation or composition.

JavaOOPUMLAggregation