Start Learning
Javaneer
100% free Β· open curriculum

From Zero
to Java Engineer

The complete, interactive path for absolute beginners. No experience needed - just curiosity. Learn the entire Java landscape with real-life analogies, runnable code, and visualizations that actually make things click.

41
Stages
250
Lessons
64h+
Of content
Scroll to explore

A learning experience built to make things click

Every lesson is designed around how people actually learn - analogy first, then concept, then code you can run.

Real-life analogies first

Every concept starts with something you already understand - a labeled box, a blueprint, a coffee queue - before a single line of code.

Runnable, annotated code

Syntax-highlighted examples with the expected output right there. Copy, paste, run, and see it work.

Interactive visualizations

Watch the stack and heap, a HashMap's buckets, a thread's lifecycle, and a stream pipeline come alive.

Quizzes & progress

Check your understanding after each lesson and watch your progress rings fill as you master each stage.

A real path, not a pile of docs

Seven progressive stages take you from Hello, World! to Spring Boot and system design - in the right order.

English & Deutsch

Learn in the language you think in. The interface and lessons are available in English and German.

The complete Java journey

Every path leads to the same destination: real, job-ready mastery. Pick where you belong and start moving.

β˜•

Zero to Java Engineer

The complete Java language & platform.

Start from absolute zero. Understand what programming is, what Java is, where it came from, who keeps it alive, and get your machine ready to write your very first program.

8 stages54 lessons16 hours
Start the path
🌿

The Spring Path

From Java engineer to Spring professional.

The heart of the whole ecosystem: the IoC container, beans and their lifecycle, dependency injection, configuration, profiles, and aspect-oriented programming. Master these and the rest of Spring clicks into place.

14 modules90 lessons23 hours
Explore the path
🎯

The Interview Path

From Java engineer to interview-ready.

The foundation every algorithm interview rests on: how to break a problem down, reason about time and space complexity, understand amortized cost, and pick the right data structure - plus the catalog of patterns the rest of the path drills.

9 modules46 lessons11 hours
Explore the path
πŸ›οΈ

The Architecture Path

From engineer to senior: judgment, not just APIs.

The five SOLID principles as working engineers actually use them - heuristics for code that's easy to change, applied to a messy but real ledger codebase rather than toy examples. Single responsibility, open/closed, Liskov substitution, interface segregation, and dependency inversion - each shown as the fix for a concrete pain.

8 modules48 lessons12 hours
Explore the path
🟣

Kotlin for Java Developers

From Java engineer to polyglot JVM engineer.

Kotlin's superpower for a Java developer is that it isn't a rewrite - it compiles to the same bytecode and calls Java (and is called from Java) seamlessly, so you adopt it one file at a time. The pragmatic case for Kotlin, compiling it alongside Java, calling each way with the interop annotations, the toolchain, and how a real team introduces it into an existing Java codebase.

2 modules12 lessons3 hours
Explore the path

…and every lesson along the way

🌱What Is Java?🌱The Java Ecosystem🧩Java Syntax & Control FlowπŸ—οΈOOP FundamentalsπŸ—οΈRecords, Sealed Classes & EnumsπŸš€The Collections FrameworkπŸš€Date/Time & I/O⚑Concurrency Principles⚑The Stream API⚑Modules (JPMS)🎯SOLID Principles🎯Design Patterns - Creational🎯Java Coding ConventionsπŸ’ΌBuild Automation ToolsπŸ’ΌSpring Boot PrinciplesπŸ’ΌPackaging & Deploymentβš›οΈExecutors & CompletableFutureβš›οΈAtomics & Lock-Free Thinking🌿Why Spring & the Ecosystem🌿Dependency Injection in Depth🌿Aspect-Oriented ProgrammingπŸš€Starters & Dependency ManagementπŸš€Actuator: Production-Ready Endpoints🌐REST Controllers & Mapping🌐Exception Handling & ProblemDetailπŸ—„οΈSpring Data JPA & RepositoriesπŸ—„οΈTransactions with @TransactionalπŸ—„οΈCaching & Beyond JPAπŸ”Configuring Access RulesπŸ”OAuth2 & OpenID ConnectπŸ§ͺWeb Slice Tests with @WebMvcTestπŸ§ͺIntegration Tests with Testcontainers⚑Reactive Programming & Reactor⚑Async & Scheduling⚑Messaging with RabbitMQ☁️Service Discovery☁️Distributed Tracing & ObservabilityπŸš€Structured LoggingπŸš€Spring ModulithπŸ›οΈThe Capstone ProjectπŸ›οΈSecuring the APIπŸ›οΈRetrospective & The Road Aheadβš™οΈReaders, Processors & Writersβ—ˆREST vs. GraphQLβ—ˆThe N+1 Problem & BatchingπŸ”Running an Authorization ServerπŸ”Service-to-Service & FederationπŸ“ŠDistributed Tracing🎯How to Solve It🎯Amortized AnalysisπŸ”’The Two-Pointer PatternπŸ”’In-Place ManipulationπŸ”—Reversing a Linked ListπŸ”—Queues & DequesπŸ—οΈGrouping & De-duplication🌳Tree Traversals🌳Lowest Common AncestorπŸ•ΈοΈBFS & DFSπŸ•ΈοΈShortest Paths & Union-FindπŸ”Sorting Essentials🧠Recursion, Deep🧠1D Dynamic ProgrammingπŸ’¬System Design BasicsπŸ’¬Your Practice PlanπŸ›οΈOpen/ClosedπŸ›οΈDependency Inversion🧩Strategy & Template Method🧩Observer & When Patterns HurtπŸ—ΊοΈAggregates & ConsistencyπŸ—ΊοΈRepositories & When to Use DDD⬑The Layers of Clean Architecture⬑Is It Worth It?🧱Enforcing Boundaries🧱The Launchpad to MicroservicesπŸ”ŒVersioning & EvolutionπŸ”ŒEvents Are Contracts Too🌱Coupling & Cohesion🌱Architecture Decision RecordsπŸ—ΊοΈCachingπŸ—ΊοΈA Worked Design🟣Calling Java from Kotlin🟣Adopting Kotlin Pragmatically✍️Everything Is an Expression✍️Packages, Visibility & Exceptions
🌱The History of Java🌱Setup & Hello, World!🧩Strings & ArraysπŸ—οΈThe Four PillarsπŸ—οΈObject, Equality & ImmutabilityπŸš€GenericsπŸš€Networking & HTTP⚑Lambdas & Functional Interfaces⚑Annotations & Reflection🎯Data Structures & Algorithms🎯General Engineering Principles🎯Design Patterns - StructuralπŸ’ΌJDBC & DatabasesπŸ’ΌJava Frameworks OverviewπŸ’ΌSystem DesignπŸ’ΌSecurity Essentialsβš›οΈVirtual Threads, In Depthβš›οΈModern Java: Records, Sealed Types & Patterns🌿Inversion of Control & the Container🌿Configuration & Component ScanningπŸš€Boot & Auto-ConfigurationπŸš€Configuration in Spring BootπŸš€Packaging & Running🌐Request & Response Bodies🌐Documenting with OpenAPIπŸ—„οΈQueries: Derived, JPQL & NativeπŸ—„οΈRelationships & the N+1 ProblemπŸ”Spring Security & the Filter ChainπŸ”Users & Password EncodingπŸ”Method Security, CORS & CSRFπŸ§ͺData Slice Tests with @DataJpaTestπŸ§ͺTesting Secured Endpoints⚑Spring WebFlux⚑Application Events☁️Monolith to Microservices☁️The API Gateway☁️Event-Driven MicroservicesπŸš€Virtual ThreadsπŸš€A Taste of Spring AIπŸ›οΈScaffolding & the Domain ModelπŸ›οΈBuilding the Test Pyramidβš™οΈWhy Batch Processingβš™οΈRestartability & Fault Toleranceβ—ˆSchema-First Designβ—ˆMutations & When to Choose GraphQLπŸ”Authorization Code & PKCEπŸ“ŠMetrics, Logs & TracesπŸ“ŠStructured Logs & Correlation🎯Big-O in Practice🎯Choosing a Data StructureπŸ”’The Sliding WindowπŸ”’String EssentialsπŸ”—Fast & Slow PointersπŸ—οΈHow Hashing WorksπŸ—οΈThe Complement Trick🌳Thinking Recursively on Trees🌳Balance, Heaps & TriesπŸ•ΈοΈGrids as GraphsπŸ”Binary Search, Really UnderstoodπŸ”Heaps & Top-K🧠Backtracking🧠2D Dynamic ProgrammingπŸ’¬Behavioral QuestionsπŸ›οΈPrinciples, Not RulesπŸ›οΈLiskov Substitution🧩Patterns as Vocabulary🧩Adapter & FacadeπŸ—ΊοΈModeling the DomainπŸ—ΊοΈDomain Events⬑The Dependency Rule⬑Keeping the Domain Pure🧱The False Binary🧱Inter-Module CommunicationπŸ”ŒREST, Done ProperlyπŸ”ŒErrors & Idempotency🌱Architecture Is a Verb🌱Managing Technical DebtπŸ—ΊοΈA Repeatable ApproachπŸ—ΊοΈDatabases at Scale🟣Why Kotlin?🟣Calling Kotlin from Java✍️val, var & Type Inference✍️Strings & Basic Types
🌱Who Maintains Java?🧩Programming Basics🧩Debugging & Reading ErrorsπŸ—οΈInterfaces & Abstract ClassesπŸš€Exception HandlingπŸš€File Handling⚑Multithreading⚑Functional Programming Principles⚑JVM Internals🎯Clean Code Principles🎯Design Principles🎯Design Patterns - BehavioralπŸ’ΌTestingπŸ’ΌORM & PersistenceπŸ’ΌLogging & Observabilityβš›οΈThe Java Memory Modelβš›οΈStructured Concurrency & Scoped Valuesβš›οΈThe Foreign Function & Memory API🌿Beans, Scopes & the Lifecycle🌿Properties, Profiles & the EnvironmentπŸš€Your First App: start.spring.ioπŸš€DevTools & the Inner Loop🌐Spring MVC & the Request Flow🌐Validating Input🌐Calling Other APIsπŸ—„οΈPaging, Sorting & ProjectionsπŸ—„οΈDatabase Migrations with FlywayπŸ”Authentication vs AuthorizationπŸ”Stateless Auth with JWTπŸ§ͺThe Spring Test StackπŸ§ͺMocking CollaboratorsπŸ§ͺTest Strategy, Data & CI⚑Reactive Data with R2DBC⚑Messaging with Kafka☁️Externalized Configuration☁️Resilience: Circuit BreakersπŸš€Observability with ActuatorπŸš€GraalVM Native ImagesπŸš€Packaging & DeploymentπŸ›οΈThe Web & Data LayersπŸ›οΈEvents & Production Readinessβš™οΈJobs, Steps & Chunksβš™οΈScheduling & Scalingβ—ˆResolvers & Data FetchersπŸ”OAuth2 & OIDC, PreciselyπŸ”Tokens: JWT vs. OpaqueπŸ“ŠMetrics with MicrometerπŸ“ŠSLOs, Dashboards & Alerts🎯Space Complexity🎯The Pattern CatalogπŸ”’Prefix SumsπŸ”—Linked List FundamentalsπŸ”—Stacks in PracticeπŸ—οΈCounting & FrequencyπŸ—οΈDesigning an LRU Cache🌳Binary Search TreesπŸ•ΈοΈRepresenting a GraphπŸ•ΈοΈTopological SortπŸ”Binary Search on the AnswerπŸ”Quickselect & Partitioning🧠Introduction to Dynamic ProgrammingπŸ’¬Communicating Your ThinkingπŸ’¬When You Get StuckπŸ›οΈSingle ResponsibilityπŸ›οΈInterface Segregation🧩Factory & Builder🧩Decorator & CompositeπŸ—ΊοΈEntities & Value ObjectsπŸ—ΊοΈBounded Contexts⬑Ports & Adapters⬑Testing a Hexagonal App🧱Modules, Not Layers🧱Spring ModulithπŸ”ŒDesigning ResourcesπŸ”ŒContracts & Consumer-Driven Testing🌱Fitness Functions🌱The Strangler FigπŸ—ΊοΈCapacity EstimationπŸ—ΊοΈQueues & Load-Leveling🟣Compiling Alongside Java🟣The Kotlin Toolchain✍️Functions, Defaults & Named Args✍️Control Flow & Ranges

Why learn Java?

Three decades in, Java still runs the world's most important software.

Everywhere you look

Android apps, banking systems, e-commerce giants, Netflix, and Minecraft all run on Java.

Built to last

Java's backward compatibility and stability make it the language of choice for systems that must run for decades.

A career that pays

Java developers are among the most in-demand and well-compensated engineers in the industry.

Write once, run anywhere

The JVM lets the same code run on any operating system - a promise Java has kept since 1995.

Ready to write your first line of Java?

Join the journey from zero to engineer. It's free, it's interactive, and it starts right now.