
James Willett
Principal Software Engineer & Tech Educator
Master modern Java development by progressing from core programming fundamentals to enterprise application development and professional software engineering practices. This program provides a comprehensive learning journey through object-oriented programming, advanced Java features, Jakarta EE 11, and industry-standard development workflows. You will gain hands-on experience building scalable, maintainable Java applications while adopting best practices for testing, automation, and AI-assisted development, preparing you for real-world enterprise software engineering roles.

Subscription · Monthly
120 skills
7 prerequisites
Prior to enrolling, you should have the following knowledge:
You will also need to be able to communicate fluently and professionally in written and spoken English.
Welcome to Udacity! We're excited to share more about your nanodegree and start this journey with you! In this course, you will learn more about the pre-requisites, structure of the program, and getting started!
1 hourWelcome to Udacity! We're excited to share more about your Nanodegree and start this journey with you.
You are starting a challenging but rewarding journey! Take 5 minutes to read how to get help with projects and content.
Master Java fundamentals through practical lessons on classes, inheritance, collections, and exceptions. Cement your knowledge by building a working hotel reservation system to showcase your new skills.
7 hoursGet an overview of the course structure, objectives, key topics, and expectations to prepare for a successful learning journey.
Discover the Java platform, its components (JVM, JRE, JDK), and how Java code is compiled and run on any OS, including new Java 25 compact source file features.
Set up Java in Udacity Workspace, verify the environment, and write interactive Java programs with input, output, string variables, and terminal workflows using VSCode.
Learn how to declare, initialize, and use variables of different Java data types, handle type conversions, constants, variable scope, and follow naming conventions.
Practice declaring and using Java variables and data types, parsing input, mixing int and double, using constants, and avoiding integer division errors in real programs.
Learn to use operators and control flow in Java, including if-else, switch, loops, break, and continue, to write dynamic, responsive programs that make decisions and repeat tasks.
Apply Java control flow structures (while loops, switch, if-else, for, continue) to build real programs: a grade classifier and a menu-driven smart calculator with input validation.
Explore Java classes, objects, constructors, methods, and encapsulation. Learn to design your own types, use access modifiers, and build robust, object-oriented code.
Learn to create Java classes in their own files, use constructors and methods, apply overloading and delegation, and manage object state for robust, reusable applications.
Learn the core principles of OOP, especially encapsulation, using private fields, public methods, getters, setters, validation, and composition for maintainable Java classes.
Practice Java encapsulation by hiding fields, creating validating getters/setters, delegating constructors, using boolean getter conventions, and linking objects via composition.
Learn how Java inheritance and interfaces enable code reuse, abstraction, and polymorphism, and when to use extends, implements, or composition for clean, flexible designs.
Learn how to implement inheritance, interfaces, and polymorphism in Java, using real-world class hierarchies, abstract classes, interfaces, and pattern matching instanceof.
Explore Java's Collections Framework: understand List, Set, and Map, their core implementations, and how to choose the best collection type for different programming needs.
Master Java Collections by using List, Set, and Map to efficiently manage ordered items, unique elements, and key-value pairs in real applications.
Discover Java generics to write reusable, type-safe code. Learn generic classes, methods, bounded type parameters, wildcards, and the PECS principle for safe flexibility.
Learn to create type-safe, reusable Java classes and collections using generics, including bounded type parameters, the diamond operator, and nested generics with practical exercises.
Learn Java exception handling: organize errors, catch and throw exceptions, create custom types, and manage resources with try-catch, finally, and try-with-resources.
Learn to use Java's try-catch, multi-catch, custom checked exceptions, and try-with-resources to build robust, error-tolerant programs with reliable resource cleanup.
Learn to effectively process strings and date/time in Java: understand immutability, use StringBuilder and java.time API, and apply key methods for transformation and formatting.
Master Java string manipulation and date/time handling with StringBuilder, substring, LocalDate, DateTimeFormatter, ChronoUnit, and .formatted() for real-world validation and formatting tasks.
You will build FreshBox, a console-based meal kit ordering system where customers can browse kits, place orders, and manage deliveries using core Java programming skills.
Dive deep into Advanced Java Programming Techniques, enhancing your skill set with modern paradigms. Explore functional programming leveraging lambda expressions and streams, and master File I/O with the NIO.2 package. Gain insights into essential design patterns and their practical implementations. Advance your knowledge in concurrent programming with thread pools and the Fork/Join framework, ensuring efficient parallel processing. Discover high-performance computing through the Vector API and optimize memory management with garbage collection tuning. Learn to dynamically modify Java behaviors using the Reflection API and develop custom annotations for meta-programming. Conclude with a comprehensive project, Loghog, to apply your newly acquired skills.
5 hoursGet ready to master advanced Java tools—functional programming, concurrency, NIO.2, JVM tuning—culminating in building LogHog, a high-performance log analysis tool.
Master functional programming in Java using Lambda expressions and Streams for readable, efficient data pipelines, null safety, and best practices in production-ready code.
Master functional programming in Java by processing data with Streams and Lambdas—write declarative, resilient code using map, filter, reduce, and debug with peek.
Master safe, efficient file I/O in Java using NIO.2: separate file paths from operations, lazily stream data, enforce charsets, buffer streams, and manage resources with try-with-resources.
Learn to process large files efficiently in Java using NIO.2, lazy streaming with Files.lines(), safe resource management, and build a file-based ETL pipeline for security log analysis.
Understand essential design patterns (Builder, Singleton, Factory, Strategy, Observer), avoid "Patternitis," and learn to apply the right pattern only when business needs require it.
Learn to implement thread-safe Singletons using double-checked locking and build immutable, validated objects with the Builder pattern in Java applications.
Master safe, efficient concurrent programming in Java: avoid manual threads, handle shared state, use thread pools, atomic variables, and build async pipelines with CompletableFuture.
Learn to build fast, resilient concurrent Java apps using thread pools, CompletableFuture, and scatter-gather to handle latency and failures without blocking or crashes.
Understand Java's parallel streams and Fork/Join framework—how work is split, risks of the common pool, and when to use parallelism safely and efficiently.
Learn when and how to use Java parallel streams and Fork/Join for performance: benchmark with JMH, avoid shared state, and understand when parallelization helps or hurts.
Learn how Java's Vector API enables SIMD operations for high-performance computing, optimizing data analytics, ML, and scientific tasks with portable, hardware-accelerated vector processing.
Unlock Java high-performance computing by using the Vector API for SIMD operations to massively accelerate array tasks and handle non-divisible data with vector and tail loops.
Understand JVM memory architecture, generational GC mechanics, observability techniques, and tools to tune memory usage and detect memory leaks for reliable Java microservices.
Learn to diagnose and fix Java memory leaks by analyzing heap dumps, profiling GC behavior, and tuning memory management for robust application performance.
Explore Java Reflection API to inspect, instantiate, and manipulate code at runtime, powering frameworks like Spring but with major safety and performance trade-offs.
Explore Java's Reflection API to inspect, access, and manipulate class members at runtime—enabling dynamic utilities and breaking encapsulation for advanced programming tasks.
Learn how custom annotations and meta-annotations enable declarative meta-programming in Java, and how reflection is used to process annotations for dynamic configuration at runtime.
Learn to create custom Java annotations and process them at runtime using reflection to enforce validation and build reusable, metadata-driven frameworks.
Master advanced Java exception handling: translate and chain exceptions, use centralized handlers, manage async errors, and ensure robust, fail-safe system design for resilient APIs.
Master robust Java exception handling by wrapping low-level errors in custom exceptions, preserving stack traces, and maintaining clean architectural boundaries.
Review and celebrate key skills gained: Java lambdas, streams, file I/O, design patterns, reflection, and JVM performance tuning, ready for real-world application.
In this project, you will build LogHog—a fast, extensible CLI tool for analyzing huge server logs using streaming, Virtual Threads, hardware-acceleration, and dynamic metric extraction.
This course on "Jakarta EE 11" provides a comprehensive introduction to developing enterprise applications using the Jakarta EE platform. Starting with the architecture and evolution of Jakarta EE, participants will learn to deploy and configure applications effectively. Key topics include integrating Jakarta Servlet 6.0, using Contexts and Dependency Injection (CDI), and implementing Jakarta Persistence (JPA). The course also covers building RESTful APIs with JAX-RS, JSON processing, and data validation with Bean Validation. Further, students will explore Jakarta Faces for web UI creation and implement security measures for applications. The course culminates in a hands-on project, FitChallenge, where students apply their skills to develop a fitness platform.
5 hoursExplore Jakarta EE's architecture, core components, and historical evolution from Java EE to modern enterprise Java solutions.
Learn to package, configure, and deploy Jakarta EE apps as WAR files on WildFly, using correct Maven settings, deployment descriptors, and logs to confirm successful deployment.
Explore the fundamentals of Jakarta Servlet 6.0, including servlet architecture, lifecycle, request/response handling, and basic web application integration.
Learn to manage user sessions in Jakarta Servlets by building a visit counter, using HttpSession to track, store, and update session data across multiple requests.
Get introduced to Jakarta CDI, including its core concepts, context management, and dependency injection in Java enterprise applications.
Learn to use Jakarta CDI for dependency injection: configure beans.xml, apply scopes, inject beans, and observe how CDI manages lifecycles for application and session data.
Explore Jakarta Persistence (JPA) in Jakarta EE, covering its core concepts, configuration, and basic CRUD operations for managing relational data in Java applications.
Learn to annotate a Product entity and implement basic JPA CRUD operations in Jakarta EE using EntityManager, @PersistenceContext, and @Transactional in a container-managed environment.
Explore the basics of Jakarta RESTful Web Services (JAX-RS), including REST concepts, resource design, and building APIs using Java.
Learn to build RESTful APIs in Java using JAX-RS. Implement CRUD endpoints for a Book Catalog with correct HTTP methods, status codes, dependency injection, and response handling.
Explore the basics of Jakarta JSON Processing and Binding, learning how to read, write, and manipulate JSON data in Java applications.
Explore JSON-P for manual JSON parsing/building and JSON-B for object mapping in Jakarta EE, including annotations, serialization, and deserialization with practical exercises.
Discover the basics of Jakarta Bean Validation, its core concepts, constraints, and practical application for ensuring data integrity in Java applications.
Learn to apply Bean Validation constraints and custom password rules to a Java User Registration API, ensuring robust data validation and clear error responses for invalid input.
Explore Jakarta Faces (JSF): its architecture, key components, UI building blocks, and how it simplifies Java web application development.
Build a user registration form with Jakarta Faces: create beans, bind fields to UI, handle actions, and show a confirmation, all using Facelets and JSF best practices.
Discover Jakarta Security basics, including its core concepts and features for securing Java EE applications effectively.
Learn to secure JAX-RS endpoints using @PermitAll, @RolesAllowed, and @DenyAll, understanding 401 vs 403 responses and enforcing role-based access in Jakarta EE APIs.
Explore the basics of deploying Jakarta EE applications, including deployment descriptors, packaging, and running apps on enterprise servers.
Learn to configure deployment descriptors and build settings in a Jakarta EE project to package and deploy enterprise applications on WildFly.
Explore foundational Java EE technologies, including their architecture, core components, and relevance for enterprise application development.
Learn how to refactor legacy Java EE EJB patterns to modern CDI with explicit transactions, annotation updates, and improved dependency injection.
Build FitChallenge, a full-stack fitness app with Jakarta EE 11. Create, join, and track challenges, log progress, and deploy securely with REST APIs, validation, and authentication.
Gain hands-on experience through comprehensive lessons that cover everything from writing code to deploying and managing Java applications. This course teaches practical tips on scaling applications in a cloud environment and how to ensure high availability for Java-based web services.
11 hoursExplore the basics of deploying Java applications, including packaging, environment setup, deployment tools, and best practices for smooth application release.
Discover the basics of Maven build management, including project setup, dependency management, and automation of Java project builds.
Learn to configure Maven for a multi-module Java project, manage shared dependencies, resolve conflicts, and structure POM files for reliable builds and easier maintenance.
Explore the basics of Gradle, its build automation capabilities, core concepts, and how to set up and run simple builds for software projects.
Learn to translate a Maven Java build to Gradle Kotlin DSL, configuring plugins, dependencies, Java version, test setup, packaging, and deployment for an incident alert app.
Learn the basics of unit testing in Java using JUnit, including writing, running, and interpreting test cases to improve code reliability and software quality.
Learn advanced JUnit 6 techniques—parameterized tests, tags, assumptions, timeouts, and test ordering—to create robust unit tests for a SaaS pricing calculator.
Explore the basics of Test-Driven Development (TDD), its process, benefits, and how writing tests first leads to better, more reliable code.
Practice strict Red-Green-Refactor TDD by building and testing a payroll overtime calculator one step at a time, ensuring code correctness and safe refactoring.
Explore the basics of mocking and test doubles in unit testing, focusing on how to use Mockito for effective Java code testing.
Learn to write isolated unit tests for business logic in Java services using Mockito—stubbing, verifying call order, and argument matchers—without real dependencies.
Explore integration testing strategies, their importance, common approaches, and how they ensure components work smoothly together in software systems.
Learn to implement real HTTP integration tests to validate external API handling, data filtering, and workflow integration for a customer support ticket aggregator.
Explore the basics of code coverage, understand its importance, and learn how to use JaCoCo to measure and improve Java code quality.
Learn to configure JaCoCo for Java projects, generate coverage reports, and interpret results to identify and improve untested code branches using Maven build tooling.
Explore cloud-based Claude Code for AI-assisted development, learning to configure environments and leverage AI for coding and workspace management tasks.
Explore AI coding assistants like Copilot, their modes (edit, agent), and learn to systematically review and evaluate AI-generated code using proven engineering best practices.
Learn to systematically review AI-generated Java code for clarity, magic numbers, and error handling by analyzing test failures and comparing improvements for code quality.
Learn structured prompt engineering for code generation—move from reactive fixes to proactive, clear communication using a 5-step framework for higher-quality, efficient AI output.
Learn to write clear, structured prompts for AI code generation using XML, reducing context gaps and ensuring targeted, safe code changes with preserved behaviors and constraints.
Learn to detect code quality red flags, spot AI-specific hallucinations, and assess security, ethical, and reliability risks in AI-assisted development for safe production code.
Learn to identify and correct AI hallucinations in code by reviewing for structure, phantom libraries, security, bias, and reliability issues before deployment.
Build a Java CLI tool that tracks rocket launches, detects schedule changes via APIs, and notifies the operations team—all using Maven, unit tests, integration tests, and code coverage tools.
Congratulations on finishing your program!
10 minutesCongratulations on your graduation from this program! Please join us in celebrating your accomplishments.
4 instructors
Unlike typical professors, our instructors come from Fortune 500 and Global 2000 companies and have demonstrated leadership and expertise in their professions:

James Willett
Principal Software Engineer & Tech Educator

Rishabh Misra
Principal Machine Learning Engineer & Tech Lead

Kaoutar Zaia
Full stack engineer & applied AI engineer

Krystaleah Anderson
AI Forward Deployed Engineer & AI Governance Leader

James Willett
Principal Software Engineer & Tech Educator

Rishabh Misra
Principal Machine Learning Engineer & Tech Lead

Kaoutar Zaia
Full stack engineer & applied AI engineer

Krystaleah Anderson
AI Forward Deployed Engineer & AI Governance Leader
Machine learning and AI are becoming essential competencies for business leaders. The main, objective should be understood how to guide organizations responsibly and aligned with strategic objectives, and capable of delivering real business value.Machine learning and AI are becoming essential competencies for business leaders. The main, objective should be understood how to guide organizations responsibly and aligned with strategic objectives, and capable of delivering real business value.
Jun 23, 2026
Good learningGood learning
Jun 23, 2026
Many Thanks for your expertiseMany Thanks for your expertise
Jun 23, 2026
Many thanks for your expertise.Many thanks for your expertise.
Jun 23, 2026
hope there're Chinese version, which will be better for understandinghope there're Chinese version, which will be better for understanding
Jun 23, 2026

Subscription · Monthly