In Simple Terms
Master the latest Java topics, build a Spring Boot 3 app, and OCP-style quizzes and mock exams (1Z0-830, 829, 819, 809)
Lo que serás capaz de hacer
This course has been selected by Udemy for inclusion in Udemy Business — Udemy’s curated collection of high-quality courses used by organisations worldwide. “Udemy Business is a curated (carefully chosen) selection of high-quality Udemy courses — like yours.” — Udemy “Only 3% of all courses are chosen for Udemy Business.” — Udemy The course is fully updated to Java 25 and covers Java 8, 11, 17, 21, and 25 — showing how modern Java evolved across these releases. Since being selected for Udemy Business, the course has been significantly expanded and updated, including: • Spring Boot 3 • Java 21 and Java 25 content • 2 Full OCP Certification Practice Tests • 5 Additional OCP Practice Quizzes • All code now available on my GitHub repositories Who this course is for (important) This is an advanced Java course . It is designed for: Developers who already know Java fundamentals Learners who want to properly understand modern Java (8 → 25) Those preparing for Oracle OCP certifications Professionals who want a deep understanding Note: Java fundamentals are not covered (classes, interfaces, operators, basic syntax). The course starts immediately with Java 8 lambdas and streams . What makes this course different Many Java courses: Stop at Java 8 or Java 11 Treat newer versions as bolt-ons Focus on syntax rather than reasoning You will: Learn how Java evolved from Java 8 through Java 11, 17, 21, and 25 Understand why language features exist , not just how to use them Work through assignments that evolve across Java versions Learn with both real-world development and certification in mind Topics are explained using: Clear theory Extensive, annotated code examples Assignments that reinforce understanding Video explanations for all practice questions What students say (A small selection — more reviews are available below) “Great course, great explanation. The best course in Java I have seen so far.” — Kaylan AD “I am nearing retirement. I have learned more about lambdas here than in the rest of my career.” — Robert R “This course is a jewel… I passed the OCA and hope to pass the OCP now.” — Yigit K. “Definitely the best Java course I’ve ever taken… especially the Java 21 features.” — Anna “Excellent detail, perfect pace, and outstanding explanations.” — Ricardo Q. "So far its the best course for java professional who want to start from new features of java 8" — Ankit M. Course overview Java currently has five Long-Term Support (LTS) releases : Java 8, 11, 17, 21, and 25 — and this course covers all of them . This course is the successor to my other Udemy Business course: “Java 8 OCA (1Z0-808) Certification – Master the Fundamentals” . As a result: Java fundamentals are assumed The course begins with advanced Java 8 topics Each later Java version builds on the previous one Java 8 – Advanced Topics Lambda Expressions Streams Generics Collections Concurrency JDBC File I/O and NIO.2 Serialisation Localisation Assignments are included for lambdas, streams, and collections . Java 11 Modules (examined in detail with examples) Local Variable Type Inference (LVTI) Private interface methods Annotations Security Java 17 Sealed classes Records Switch expressions and pattern matching Text blocks A significant assignment covering all Java 17 topics is included. Java 21 Unnamed classes and instance main methods (preview features) Record patterns Pattern matching for switch Sequenced collections Virtual Threads A Java 21-specific assignment (building on the Java 17 assignment) is included. Java 25 Markdown documentation Unnamed variables and unnamed patterns Module import declarations Compact source files and instance main methods (finalised) Flexible constructor bodies Scoped values Stream gatherers A Java 25-specific assignment (building on the Java 21 assignment) is included. Spring Boot 3 Application (updated to Java 25) Configuring a Spring Boot application and dependencies Understanding how RESTful applications work Dependency Injection / Inversion of Control Architecture overview Code explained in detail Testing with Postman An assignment is used to reinforce the material, and its solution is explained in detail . OCP Certification Preparation 2 Full OCP Practice Tests 50 questions each 120-minute time limit 68% pass mark (as per Oracle exams) Every question has a detailed video explanation Even if you do not plan to take the certification, the solution videos provide excellent learning opportunities . 5 OCP Practice Quizzes 69 MCQ questions in total Every question explained with a video solution This course supports preparation for: Java 8 OCP (1Z0-809) Java 11 OCP (1Z0-819) Java 17 OCP (1Z0-829) It also works very well alongside the Enthuware OCP Certification tool . About the instructor I am a PhD-qualified University lecturer and have been teaching since 2002. For over 13 years, I have taught advanced Java on a bespoke Masters programme on behalf of a highly regarded software company. I have co-authored two Java books: Learn Java with Projects Java Memory Management I love teaching, and this course brings together: My academic background My industry experience My passion for clear, structured explanations A strong attention to detail, particularly suited to Oracle Java certifications Final note This course is designed to give you: A deep understanding of modern Java Confidence in real-world development Strong preparation for Oracle OCP exams If you already know Java fundamentals and want to truly master Java 8 through Java 25 , this course is for you. More student feedback “Extraordinary Explanation.” — Darshan P. “The course is amazing, learned a lot of good things.” — Rakesh L. “This course provides an exceptional hands-on learning experience… invaluable resource for Java developers.” — Naveen KG “Sean is technically superior in Java; he’s the best I know.” — Axel B. “This course is a jewel… Sean answers questions… I passed the OCA… hope to pass the OCP now.” — Yigit K. “Easy to follow and straight to the point.” — Daniel M. “Great how detailed it is.” — Ali A. “Excellent – especially like the detail and pace.” — Alan C. “One of the best courses so far… perfect talking speed… content is excellent.” — Ricardo Q. “Very useful exercises and really interesting syllabus.” — Laura “Clearly explained, easy to follow and understand. Good code examples.” — Ugyen N. “Fantastic methodology and organization.“ — Eliabe S.
- Master modern Java (8–25): incl. lambdas, streams collections, concurrency, modules, records, pattern matching, virtual threads, scoped values, stream gatherers
- Build and test a Spring Boot 3 REST API (Dependency Injection/Inversion of Control, architecture, Postman testing).
- Prepare effectively for Oracle OCP exams with full practice tests, quizzes, and detailed explanations.
- Get hands-on with assignments and access to my GitHub code so you can practise, modify, and learn by doing.
Temario
UNIDAD 1 - Cloning the Repositories · 2 leccionesUNIDAD 1 - Cloning the Repositories
UNIDAD 1 - Cloning the Repositories
- Cloning Advanced Java repo
- Cloning Spring Boot repos
UNIDAD 2 - Lambda Expressions · 17 leccionesUNIDAD 2 - Lambda Expressions
UNIDAD 2 - Lambda Expressions
- Lambdas - Introduction
- Lambdas - using a custom Functional Interface (in code)
- Lambdas - using Predicate (in code)
- API Functional Interfaces - Predicate and BiPredicate
- API Functional Interfaces - Supplier
- API Functional Interfaces - Consumer and BiConsumer
- API Functional Interfaces - Function and BiFunction
- API Functional Interfaces - UnaryOperator and BinaryOperator
- Lambdas - final and 'effectively final'
- Method References
- Bound Method References
- Unbound Method References
- Static Method References
- Constructor Method References
- The Importance of Context for Method References
- Lambdas Assignment
- Lambdas and Method References
UNIDAD 3 - Streams · 20 leccionesUNIDAD 3 - Streams
UNIDAD 3 - Streams
- Introduction and Stream Pipelines
- Stream Laziness
- Creating Streams
- Terminal Operations
- Terminal Operations - reduce()
- Terminal Operations - collect()
- Terminal Operations - collect() - Collectors.toMap()
- Terminal Operations - collect() - Collectors.groupingBy()
- Terminal Operations - collect() - Collectors.partitioningBy()
- Intermediate Operations - filter(), distinct(), limit()
- Intermediate Operations - map(), flatMap(), sorted()
- Primitive Streams - Creating
- Primitive Streams - API
- Primitive Streams - Functional Interfaces
- Primitive Streams - Mapping Streams
- Code - mappingObjectStreams()
- Code - mappingPrimitiveStreams()
- Optionals
- Parallel Streams
- Streams Assignment
UNIDAD 4 - Collections and Generics · 28 leccionesUNIDAD 4 - Collections and Generics
UNIDAD 4 - Collections and Generics
- Collections - Introduction
- Common Collection Methods in Code
- List
- Lists in Code
- Set
- Sets in Code
- Maps
- Maps in Code
- Queue and Deque
- Queue and Deque in Code
- PriorityQueue
- Avoiding exceptions while looping over Collections
- Sorting - Comparable and Comparator
- Code: Comparable - Product
- Code: Comparable and Comparator - Sorting Arrays and Lists - Dog
- Code: Sorting by Multiple Fields
- Code: TreeSet Comparable issue - how to resolve with Comparator
- Code: Binary Search
- Generics - Introduction
- Generics - polymorphism, extends, super
- Generics - super and extends (in detail)
- Generic Classes and Interfaces
- Generic Methods
- equals()
- hashCode()
- Hashing in code
- Watch out for mutable fields in hashing
- Collections Assignment
UNIDAD 5 - Concurrency · 24 leccionesUNIDAD 5 - Concurrency
UNIDAD 5 - Concurrency
- Introduction
- Creating Threads
- sleep() and join()
- ExecutorService (Introduction)
- ExecutorService (code)
- Submitting Task Collections (code)
- Scheduling Tasks
- Thread Safety - Introduction
- Data Race Demo
- Atomic Classes
- AtomicInteger example (code)
- synchronized keyword
- synchronized example (code)
- Lock interface
- Lock example (code)
- Concurrent Collections - Introduction
- Concurrent Collections - API
- Concurrent Collections - SkipList Collections
- Concurrent Collections - CopyOnWriteCollections
- Concurrent Collections - BlockingQueue
- Concurrent Collections - synchronized collections
- Concurrency - Threading problems - Race Condition
- Concurrency - Threading problems - Deadlock
- Concurrency - Threading problems - Livelock and Starvation
UNIDAD 6 - Localisation · 8 leccionesUNIDAD 6 - Localisation
UNIDAD 6 - Localisation
- Introduction and Creating locales
- Localising Numbers and Currencies (Introduction)
- Localising Numbers and Currencies
- Localising numbers using custom formats
- Localising Dates
- Locale.Category enums
- Resource Bundles, Property Files and Searching
- Resource Bundle Searching - Example
UNIDAD 7 - JDBC · 11 leccionesUNIDAD 7 - JDBC
UNIDAD 7 - JDBC
- JDBC Introduction
- Banking Example Setup
- Connecting to a Database
- PreparedStatement
- BankService - SELECT one
- BankService - SELECT all
- Bank Service DELETE one/all
- BankService - INSERT
- BankService - UPDATE
- CallableStatement
- Resource Leaks
UNIDAD 8 - Java I/O API · 2 leccionesUNIDAD 8 - Java I/O API
UNIDAD 8 - Java I/O API
- IO
- NIO.2
UNIDAD 9 - Java 11 - Local Variable Type Inference (LVTI) · 1 leccionesUNIDAD 9 - Java 11 - Local Variable Type Inference (LVTI)
UNIDAD 9 - Java 11 - Local Variable Type Inference (LVTI)
- Local Variable Type Inference (LVTI)
UNIDAD 10 - Java 11 - private Interface Methods · 1 leccionesUNIDAD 10 - Java 11 - private Interface Methods
UNIDAD 10 - Java 11 - private Interface Methods
- Private Interface Methods
UNIDAD 11 - Java 11 - Annotations · 1 leccionesUNIDAD 11 - Java 11 - Annotations
UNIDAD 11 - Java 11 - Annotations
- Annotations
UNIDAD 12 - Java 11 - Security · 1 leccionesUNIDAD 12 - Java 11 - Security
UNIDAD 12 - Java 11 - Security
- Security
UNIDAD 13 - Java 11 - Modules · 10 leccionesUNIDAD 13 - Java 11 - Modules
UNIDAD 13 - Java 11 - Modules
- Introduction
- Compiler and Runtime flags
- Hello World Example
- Dependencies
- opens and requires transitive
- Operations on a Module
- Services
- Services - SoftDrink Example
- Types of Modules
- Migration Strategies
UNIDAD 14 - Java 17 - Introduction · 1 leccionesUNIDAD 14 - Java 17 - Introduction
UNIDAD 14 - Java 17 - Introduction
- Java 17 Introduction
UNIDAD 15 - Java 17 - Sealed classes and Interfaces · 1 leccionesUNIDAD 15 - Java 17 - Sealed classes and Interfaces
UNIDAD 15 - Java 17 - Sealed classes and Interfaces
- Sealed classes and interfaces
UNIDAD 16 - Java 17 - Records · 1 leccionesUNIDAD 16 - Java 17 - Records
UNIDAD 16 - Java 17 - Records
- Records
UNIDAD 17 - Java 17 - switch expressions and pattern matching · 1 leccionesUNIDAD 17 - Java 17 - switch expressions and pattern matching
UNIDAD 17 - Java 17 - switch expressions and pattern matching
- switch expressions and pattern matching
UNIDAD 18 - Java 17 - Text blocks · 1 leccionesUNIDAD 18 - Java 17 - Text blocks
UNIDAD 18 - Java 17 - Text blocks
- Text blocks
UNIDAD 19 - Java 17 - Assignment · 1 leccionesUNIDAD 19 - Java 17 - Assignment
UNIDAD 19 - Java 17 - Assignment
- University Assignment
UNIDAD 20 - Java 21 - Introduction, Intelli Java 20 (2023.2), javac (command prompt) · 2 leccionesUNIDAD 20 - Java 21 - Introduction, Intelli Java 20 (2023.2), javac (command prompt)
UNIDAD 20 - Java 21 - Introduction, Intelli Java 20 (2023.2), javac (command prompt)
- Java 21 Introduction
- IDE and javac
UNIDAD 21 - Java 21 - Unnamed Classes and Instance Main Methods · 2 leccionesUNIDAD 21 - Java 21 - Unnamed Classes and Instance Main Methods
UNIDAD 21 - Java 21 - Unnamed Classes and Instance Main Methods
- Unnamed Classes and Instance Main Methods (*preview*)
- Unnamed Classes and Instance Main Methods (Code)
UNIDAD 22 - Java 21 - Record Patterns · 2 leccionesUNIDAD 22 - Java 21 - Record Patterns
UNIDAD 22 - Java 21 - Record Patterns
- Record Patterns
- Record Patterns (in code)
UNIDAD 23 - Java 21 - Pattern Matching for Switch · 2 leccionesUNIDAD 23 - Java 21 - Pattern Matching for Switch
UNIDAD 23 - Java 21 - Pattern Matching for Switch
- Pattern Matching for Switch
- Pattern Matching for Switch (code)
UNIDAD 24 - Java 21 - Sequenced Collections · 2 leccionesUNIDAD 24 - Java 21 - Sequenced Collections
UNIDAD 24 - Java 21 - Sequenced Collections
- Sequenced Collections
- Java 21 - Sequenced Collections (Code)
UNIDAD 25 - Java 21 - Virtual Threads · 1 leccionesUNIDAD 25 - Java 21 - Virtual Threads
UNIDAD 25 - Java 21 - Virtual Threads
- Virtual Threads
UNIDAD 26 - Java 21 - Assignment · 1 leccionesUNIDAD 26 - Java 21 - Assignment
UNIDAD 26 - Java 21 - Assignment
- University Assignment
UNIDAD 27 - Java 25 - Introduction · 1 leccionesUNIDAD 27 - Java 25 - Introduction
UNIDAD 27 - Java 25 - Introduction
- Introduction
UNIDAD 28 - Java 25 - Unnamed Variables and Unnamed Patterns · 1 leccionesUNIDAD 28 - Java 25 - Unnamed Variables and Unnamed Patterns
UNIDAD 28 - Java 25 - Unnamed Variables and Unnamed Patterns
- Unnamed Variables and Patterns
UNIDAD 29 - Java 25 - Markdown Documentation Comments · 1 leccionesUNIDAD 29 - Java 25 - Markdown Documentation Comments
UNIDAD 29 - Java 25 - Markdown Documentation Comments
- Markdown Documentation Comments
UNIDAD 30 - Java 25 - Module Import Declarations · 1 leccionesUNIDAD 30 - Java 25 - Module Import Declarations
UNIDAD 30 - Java 25 - Module Import Declarations
- Module Import Declarations
UNIDAD 31 - Java 25 - Compact Source Files and Instance Main Methods · 1 leccionesUNIDAD 31 - Java 25 - Compact Source Files and Instance Main Methods
UNIDAD 31 - Java 25 - Compact Source Files and Instance Main Methods
- Compact Source Files and Instance Main Methods
UNIDAD 32 - Java 25 - Flexible Constructor Bodies · 1 leccionesUNIDAD 32 - Java 25 - Flexible Constructor Bodies
UNIDAD 32 - Java 25 - Flexible Constructor Bodies
- Flexible Constructor Bodies
UNIDAD 33 - Java 25 - Scoped Values · 3 leccionesUNIDAD 33 - Java 25 - Scoped Values
UNIDAD 33 - Java 25 - Scoped Values
- Scoped Values (Motivation)
- ThreadLocal (Code)
- Scoped Values (Code)
UNIDAD 34 - Java 25 - Stream Gatherers · 8 leccionesUNIDAD 34 - Java 25 - Stream Gatherers
UNIDAD 34 - Java 25 - Stream Gatherers
- Introduction
- Built-In Gatherers Code Example
- Distinct By Key Code Example
- Drop Consecutive Duplicates By Key Code Example
- Short Circuit Code Example
- Stateless Code Example
- Finisher Code Example
- Combiner Code Example
UNIDAD 35 - Java 25 - Assignment · 1 leccionesUNIDAD 35 - Java 25 - Assignment
UNIDAD 35 - Java 25 - Assignment
- Lecturer CSV Loader
UNIDAD 36 - Spring Boot 3 Application and Assignment · 26 leccionesUNIDAD 36 - Spring Boot 3 Application and Assignment
UNIDAD 36 - Spring Boot 3 Application and Assignment
- Application Architecture
- Spring Boot Setup (start.spring.io)
- H2 Database Configuration
- High-level Packages and ApplicationContext Overview
- Controller Layer Overview
- Service Layer Overview
- Repository Layer Overview
- Car Application - POST (add)
- Car Application - GET (retrieve)
- Car Application - PUT (update)
- Car Application - DELETE (remove)
- Car Application - HEAD (as with GET but no response body returned)
- Car Application - OPTIONS (Allow header in response contains verbs allowed)
- Query by Car Type
- Gotchas
- Adding Hypermedia As The Engine Of Application State (HATEOAS)
- Spring Boot Assignment
- Assignment Solution - Configuration
- Assignment Solution - Packages Overview and Entity Bean
- Assignment Solution - adding books (POST)
- Assignment Solution - retrieving books (GET)
- Assignment Solution - deleting books (DELETE)
- Assignment Solution - updating a book (PUT)
- Assignment Solution - custom query using query/request parameters
- Assignment Solution - 405 Method Not Allowed
- Assignment Solution - supporting OPTIONS
UNIDAD 37 - OCP Certification Practice Tests · 2 leccionesUNIDAD 37 - OCP Certification Practice Tests
UNIDAD 37 - OCP Certification Practice Tests
- OCP Practice Test 1
- OCP Practice Test 2
UNIDAD 38 - OCP Practice Quizzes · 5 leccionesUNIDAD 38 - OCP Practice Quizzes
UNIDAD 38 - OCP Practice Quizzes
- OCP Practice Quiz 1
- OCP Practice Quiz 2
- OCP Practice Quiz 3
- OCP Practice Quiz 4
- OCP Practice Quiz 5
UNIDAD 39 - Quiz Questions Solutions (Java Class Design) · 16 leccionesUNIDAD 39 - Quiz Questions Solutions (Java Class Design)
UNIDAD 39 - Quiz Questions Solutions (Java Class Design)
- Inheritance and Polymorphism (ocpjp.v8.2.1722)
- Object methods - equals/hashCode (ocpjp.v8.2.1298)
- Object methods - equals/hashCode (ocpjp.v8.2.1808)
- Inheritance and Polymorphism (ocpjp.v8.2.1234)
- Inheritance and Polymorphism (ocpjp.v8.2.1531)
- Object methods - equals/hashCode (ocpjp.v8.2.1332)
- Inheritance and Polymorphism (ocpjp.v8.2.1825)
- Object methods - equals/hashCode (ocpjp.v8.2.1459)
- Inheritance and Polymorphism (ocpjp.v8.2.1088)
- Singleton and Immutable Classes (ocpjp.v8.2.1190)
- Inheritance and Polymorphism (ocpjp.v8.2.1593)
- Inheritance and Polymorphism (ocpjp.v8.2.1436)
- Object methods - equals/hashCode (ocpjp.v8.2.1244)
- Object methods - equals/hashCode (ocpjp.v8.2.1304)
- Object methods - equals/hashCode (ocpjp.v8.2.1340)
- Inheritance and Polymorphism - with diagrams - ocpjp.v11.2.970
UNIDAD 40 - Quiz Questions Solutions (Advanced Class Design) · 15 leccionesUNIDAD 40 - Quiz Questions Solutions (Advanced Class Design)
UNIDAD 40 - Quiz Questions Solutions (Advanced Class Design)
- Inner Classes (ocpjp.v8.2.1893)
- Enumerated Types (ocpjp.v8.2.1508)
- Enumerated Types (ocpjp.v8.2.1463)
- Abstract Classes (ocpjp.v8.2.1763)
- Enumerated Types (ocpjp.v8.2.1437)
- Inner Classes (ocpjp.v8.2.1394)
- Interfaces (ocpjp.v8.2.1771)
- Inner Classes (ocpjp.v8.2.1383)
- Enumerated Types (ocpjp.v8.2.1388)
- Inner Classes (ocpjp.v8.2.1586)
- Inner Classes (ocpjp.v8.2.1550)
- Enumerated Types (ocpjp.v8.2.1461)
- Enumerated Types (ocpjp.v8.2.1457)
- Abstract Classes (ocpjp.v8.2.1527)
- Inner Classes (ocpjp.v8.2.1580)
UNIDAD 41 - Quiz Questions Solutions (Generics and Collections) · 16 leccionesUNIDAD 41 - Quiz Questions Solutions (Generics and Collections)
UNIDAD 41 - Quiz Questions Solutions (Generics and Collections)
- Collection API (ocpjp.v8.2.1300)
- TreeSet (ocpjp.v8.2.1471)
- Collection API (ocpjp.v8.2.1310)
- Generic classes (ocpjp.v8.2.1112)
- Collection API (ocpjp.v8.2.1511)
- Deque (ocpjp.v8.2.1133)
- Maps (ocpjp.v8.2.1380)
- Deque (ocpjp.v8.2.1131)
- HashSet (ocpjp.v8.2.1585)
- Generic classes (ocpjp.v8.2.1110)
- HashSet (ocpjp.v8.2.1513)
- Collection API (ocpjp.v8.2.1309)
- Deque (ocpjp.v8.2.1148)
- Comparable/Comparator (ocpjp.v8.2.1725)
- Generic classes (ocpjp.v8.2.1232)
- Generic marker for ArrayList and Add() must match - ocpjp.v11.2.1305
UNIDAD 42 - Quiz Questions Solutions (Lambda Expressions and Functional Interfaces) · 18 leccionesUNIDAD 42 - Quiz Questions Solutions (Lambda Expressions and Functional Interfaces)
UNIDAD 42 - Quiz Questions Solutions (Lambda Expressions and Functional Interfaces)
- Predicate (with code) - ocpjp.v8.2.1784
- forEach(Consumer) operation (with code) - ocpjp.v8.2.1801
- flatMap(Function) with diagrams and code - ocpjp.v8.2.1886
- forEach(Consumer) using Immutable types (with diagrams) - ocpjp.v8.2.1819
- IntFunction - ocpjp.v8.2.1876
- Functional Interfaces (with code) - ocpjp.v8.2.1863
- Method References in code - ocpjp.v8.2.1800
- Lambdas relationship with Functional Interfaces - ocpjp.v8.2.1806
- max() and reduce() operations (with code) - ocpjp.v8.2.1793
- Lambdas relationship with Functional Interfaces (with code) - ocpjp.v8.2.1807
- DoubleSupplier (with code) - ocpjp.v8.2.1813
- Supplier's get() - with code - ocpjp.v11.2.1814
- Function and Consumer - ocpjp.v11.2.1817
- forEach(Consumer) - ocpjp.v11.2.1818
- ToDoubleFunction - in API - ocpjp.v11.2.3340
- Composing Consumers using andThen() - ocpjp.v11.2.3339
- Function - with code examples - ocpjp.v11.2.3319
- Defining the lambda is separate to executing it - ocpjp.v11.2.3070
UNIDAD 43 - Quiz Questions Solutions (Streams API) · 17 leccionesUNIDAD 43 - Quiz Questions Solutions (Streams API)
UNIDAD 43 - Quiz Questions Solutions (Streams API)
- IntStream average() method (with code) - ocpjp.v8.2.2023
- sorted() and sorted(Comparator) with code - ocpjp.v8.2.1762
- Downstream collectors (with code) - ocpjp.v8.2.1804
- flatMap() with code and diagrams - ocpjp.v8.2.1787
- Reductions (with code) - ocpjp.v8.2.1738
- Optionals - ocpjp.v8.2.1826
- Getting an average price (with code) - ocpjp.v8.2.1809
- Collectors.toMap() and BiConsumer (with code) - ocpjp.v8.2.1846
- Collectors.toMap() with code - ocpjp.v8.2.1847
- An example where orElse() is useful (with code) - ocpjp.v8.2.1810
- Optional.ofNullable() with code - ocpjp.v8.2.1849
- Consumer with "side effects", lambdas/method refs (with code) - ocpjp.v8.2.1858
- sum() versus average() on empty streams (with code) - ocpjp.v8.2.2024
- anyMatch() and noneMatch() with code - ocpjp.v8.2.1840
- Terminal op starts streams, IllegalStateException (with code) - ocpjp.v8.2.1841
- Comparing average() and sum() - ocpjp.v11.2.2022
- Streams max() method - ocpjp.v11.2.1792
UNIDAD 44 - Quiz Questions Solutions (Java Date/Time API) · 5 leccionesUNIDAD 44 - Quiz Questions Solutions (Java Date/Time API)
UNIDAD 44 - Quiz Questions Solutions (Java Date/Time API)
- Duration - ocpjp.v8.2.1741
- Duration between two ZonedDateTime's (with code) - ocpjp.v8.2.2018
- Duration and Period examples (with code) - ocpjp.v8.2.1743
- Instant (with code) - ocpjp.v8.2.1760
- Daylight Savings Time (with code) - ocpjp.v8.2.1749
UNIDAD 45 - Quiz Questions Solutions (Localization) · 5 leccionesUNIDAD 45 - Quiz Questions Solutions (Localization)
UNIDAD 45 - Quiz Questions Solutions (Localization)
- ResourceBundle searching - ocpjp.v8.2.1154
- RescourceBundle searching (with code) - ocpjp.v8.2.1768
- ResourceBundle searching - (ocpjp.v8.2.1165)
- ResourceBundle searching - (ocpjp.v8.2.1152)
- ResourceBundle searching (with code) - ocpjp.v8.2.1201)
UNIDAD 46 - Quiz Questions Solutions (Threads) · 10 leccionesUNIDAD 46 - Quiz Questions Solutions (Threads)
UNIDAD 46 - Quiz Questions Solutions (Threads)
- start() versus run() - ocpjp.v8.2.1475
- synchronization and locks - ocpjp.v8.2.1755
- starting a thread properly - ocpjp.v8.2.1456
- deadlock - ocpjp.v8.2.1482
- Non-deterministic behaviour - ocpjp.v8.2.1483
- start() calls run() automatically - ocpjp.v8.2.1728
- synchronized block - ocpjp.v8.2.1317
- No main() method - ocpjp.v8.2.1092
- synchronized methods release locks if they complete abruptly - ocpjp.v8.2.1423
- Calling run() instead of start() - ocpjp.v8.2.1548
UNIDAD 47 - Quiz Questions Solutions (Concurrency) · 17 leccionesUNIDAD 47 - Quiz Questions Solutions (Concurrency)
UNIDAD 47 - Quiz Questions Solutions (Concurrency)
- ConcurrentMap (with code) - ocpjp.v8.2.1101
- ReadWriteLock (with code) - ocpjp.v8.2.1104
- ReadWriteLock - ocpjp.v8.2.1106
- ThreadLocalRandom - ocpjp.v8.2.1108
- RecursiveAction - ocpjp.v8.2.1238
- RecursiveAction and compute() with code - ocpjp.v8.2.1241
- ExecutorService - ocpjp.v8.2.1124
- Fork/Join framework - ocpjp.v8.2.1260
- Fork/Join framework - ocpjp.v8.2.1258
- ReentrantLocks - with code - ocpjp.v11.2.3362
- lock() and tryLock() - with code - ocpjp.v11.2.2009
- Runnable versus Callable - ocpjp.v11.2.3514
- Executors.newSingleThreadExecutor() - ocpjp.v11.2.1142
- Asynchronous use of Callable/Future (in code) - ocpjp.v11.2.1146
- Implementing Callable properly - ocpjp.v11.2.1144
- Protecting a collection with a ReadWriteLock (with code) - ocpjp.v11.2.1138
- Callable versus Runnable - ocpjp.v11.2.1136
UNIDAD 48 - Quiz Questions Solutions (IO, NIO2 and Serialization) · 18 leccionesUNIDAD 48 - Quiz Questions Solutions (IO, NIO2 and Serialization)
UNIDAD 48 - Quiz Questions Solutions (IO, NIO2 and Serialization)
- Serialization example with code - ocpjp.v8.2.1701
- Path.getName() - ocpjp.v8.2.1572
- Path.subpath() - ocpjp.v8.2.1581
- Path.relativize() - ocpjp.v8.2.1584
- Path.normalize() - ocpjp.v8.2.1602
- Path.resolve() and Path.relativize() - ocpjp.v8.2.1608
- Path.getName() - ocpjp.v8.2.1575
- Files.move() and Files.copy() - ocpjp.v8.2.1524
- BufferedWriter's close() has an in-built flush() - ocpjp.v11.2.1811
- System.in - v11.2.3345
- System.out - ocpjp.v11.2.3346
- BufferedReader's readLine() - ocpjp.v11.2.3348
- BufferedReader - ocpjp.v11.2.1392
- BufferedReder's mark() and reset() - ocpjp.v11.2.1737
- RandomAccessFile - ocpjp.v11.2.1716
- RandomAccessFile's writeChars() - with code - ocpjp.v11.2.1717
- InputStreamReader's skip() - with example - ocpjp.v11.2.1794
- Default encoding versus UTF encoding - in a hex editor - ocpjp.v11.2.1774
UNIDAD 49 - Quiz Questions Solutions (Working with Java Data Types) · 16 leccionesUNIDAD 49 - Quiz Questions Solutions (Working with Java Data Types)
UNIDAD 49 - Quiz Questions Solutions (Working with Java Data Types)
- LVTI with code - ocpjp.v11.2.3072
- LVTI, sort() and removeIf() with code - ocpjp.v11.2.3068
- LVTI and varargs - ocpjp.v11.2.3060
- LVTI and arrays with code (javac better than editor) - ocpjp.v11.2.3061
- LVTI - identify incorrect usage (with code) - ocpjp.v11.2.3062
- LVTI - processing an ArrayList - ocpjp.v11.2.3063
- LVTI - which code samples will compile ? (with code) - ocpjp.v11.2.3064
- LVTI - scope issue - ocpjp.v11.2.3231
- LVTI - identify the correct/incorrect variable declarations - ocpjp.v11.2.3220
- LVTI - spot the compiler errors - ocpjp.v11.2.3058
- Short-circuit operators - ocpjp.v11.2.948
- Operators, promotion and casting - ocpjp.v11.2.1190
- substring() - ocpjp.v11.2.968
- print(null) prints "null" - ocpjp.v11.2.935
- Pre/post increment and decrement operators - with whiteboard - ocpjp.v11.2.3570
- Integer.parseInt() and Double.parseDouble() - ocpjp.v11.2.3140
UNIDAD 50 - Quiz Questions Solutions (Java Object Oriented Approach) · 11 leccionesUNIDAD 50 - Quiz Questions Solutions (Java Object Oriented Approach)
UNIDAD 50 - Quiz Questions Solutions (Java Object Oriented Approach)
- Java OOA - how many (immutable) LocalDate objects (diagram) - ocpjp.v11.2.3139
- Java OOA - ensuring constants are initialised (with code) - ocpjp.v11.2.3464
- Implicit super() with access issues - ocpjp.v11.2.1123
- Enumerations - with code - ocpjp.v11.2.3350
- Garbage collection - with diagrams - ocpjp.v11.2.919
- Inner classes - ocpjp.v11.2.1327
- Inner versus nested classes syntax - with code - ocpjp.v11.2.1233
- Diamond of Death - in the code - ocpjp.v11.2.1072
- Order of Initialization - ocpjp.v11.2.1170
- Method overloading - ocpjp.v11.1.926
- Accessing a static field with a null reference - ocpjp.v11.3.1486
UNIDAD 51 - Quiz Questions Solutions (Arrays and Collections) · 8 leccionesUNIDAD 51 - Quiz Questions Solutions (Arrays and Collections)
UNIDAD 51 - Quiz Questions Solutions (Arrays and Collections)
- Call by value - passing an array to a method (with a diagram) - ocpjp.v11.2.946
- Multi-dimensional arrays - with diagrams and code - ocpjp.v11.2.987
- Arrays.compare() and Arrays.mismatch() - with code - ocpjp.v11.2.3102
- Arrays.compare() and Arrays.mismatch() - ocpjp.v11.2.3103
- Matrix - with diagram - ocpjp.v11.2.2015
- Arrays.compare() - ocpjp.v11.2.3104
- Processing the command line arguments correctly - ocpjp.v11.2.3576
- Maps are not backed by the data structures used to fill them - ocpjp.v11.2.3106
UNIDAD 52 - Quiz Questions Solutions (Exception Handling) · 11 leccionesUNIDAD 52 - Quiz Questions Solutions (Exception Handling)
UNIDAD 52 - Quiz Questions Solutions (Exception Handling)
- 'finally' is always executed - ocpjp.v11.2.964
- What happens is a dimension expression completes abruptly? - ocpjp.v11.2.959
- 'finally' always executes, even if you 'return' - ocpjp.v11.2.950
- Watch out for unreachable code - ocpjp.v11.2.984
- Overriding methods cannot throw new/extra checked exceptions - ocpjp.v11.2.3109
- Inheritance in Exceptions - ocpjp.v11.2.3355
- Inheritance in Exceptions - with code - ocpjp.v11.2.3356
- try-with-resources and AutoCloseable - ocpjp.v11.2.3357
- 'finally' return value replacing exception handler value - ocpjp.v11.2.3595
- try-with-resources versus old-style try-catch-finally - ocpjp.v11.2.3141
- If an arg. expr. completes abruptly, to the right is not evaluated - v11.2.1102
UNIDAD 53 - Quiz Questions Solutions (Controlling Program Flow) · 3 leccionesUNIDAD 53 - Quiz Questions Solutions (Controlling Program Flow)
UNIDAD 53 - Quiz Questions Solutions (Controlling Program Flow)
- Controlling Program Flow - loops and a 2D array, with diagram - ocpjp.v11.2.3569
- A switch example - ocpjp.v11.2.991
- A tricky 'if' statement - ocpjp.v11.2.1111
UNIDAD 54 - Miscellaneous · 5 leccionesUNIDAD 54 - Miscellaneous
UNIDAD 54 - Miscellaneous
- Immutable Classes and Call By Value
- Advanced Encapsulation (defensive copying)
- From UML to code (1 of 3) - Interpreting the UML (taken from my Java 8 course)
- From UML to code (2 of 3) - the Instructions (taken from my Java 8 course)
- From UML to code (3 of 3) - Solution (taken from my Java 8 course)
UNIDAD 55 - Bonus Content · 1 leccionesUNIDAD 55 - Bonus Content
UNIDAD 55 - Bonus Content
- Bonus Lecture
Tu certificado lo emite la SEP, no solo una plataforma
Al demostrar la competencia recibes un certificado emitido por la Secretaría de Educación Pública a través del Gobierno del Estado de México: un documento oficial que puedes presentar con confianza ante cualquier empleador o institución.
Tu certificado con INEC
- Lo emite la Secretaría de Educación Pública (SEP), a través del Gobierno del Estado de México
- Documento oficial con folio verificable en línea
- Lo otorga la Universidad Tecnológica Fidel Velázquez
Otras plataformas en línea
- Constancia privada emitida por la misma plataforma
- Solo acredita horas cursadas o asistencia
- Sin respaldo de una autoridad educativa
Tu itinerario, de la inscripción al certificado
- 1
Inscripción con pago único
Pagas $2,800 MXN una sola vez y entras de inmediato al curso.
- 2
Estudias a tu ritmo
55 unidades con videos, lecturas y actividades, disponibles 24/7 durante 12 meses.
- 3
Cuestionarios por unidad
15 cuestionarios para comprobar lo aprendido.
- 4
Certificado
Emitido por la SEP a través del Gobierno del Estado de México, con folio verificable.
Un certificado oficial de la SEP
- Emitido por la Secretaría de Educación Pública (SEP), a través del Gobierno del Estado de México. No es una constancia privada: es un documento oficial, y ese respaldo marca la diferencia frente a otras plataformas en línea.
- Contenido impartido por Dr. Seán Kennedy OCA, OCP.
- Folio y QR verificables para compartirlo con quien te contrate.
Empieza hoy, a tu ritmo
Un solo pago y acceso inmediato al curso completo durante 12 meses.
- 55 unidades · 387 lecciones · 60 h
- 12 meses de acceso
- 15 cuestionarios de evaluación
- Certificado emitido por la SEP (Gob. del Estado de México) con folio verificable
Sobre tu inscripción
¿Cómo es el pago?
Un solo pago de $2,800 MXN. No hay mensualidades ni cargos recurrentes.
¿Cuánto tiempo tengo acceso?
12 meses desde tu inscripción, 24/7, para avanzar a tu ritmo.
¿Quién imparte el contenido?
El curso es impartido por Dr. Seán Kennedy OCA, OCP; INEC gestiona tu inscripción, evaluación y certificado.
¿Qué pasa cuando vence mi acceso?
Puedes renovar tu cuenta tú mismo desde la plataforma, sin trámites ni esperas.


