Java Advanced
<Java Advanced>
Document History
Ver. Rel. Release Prepared. Remarks/Revi
Reviewed By Approved By
No. Date By sion Details
Jamuna Shree Ganesh Babu
18-Sep-24 Saravana Yaliyur Ramu Gunasekaran
V 0.1
Kumar (MS/ECA1-XC) (MS/ECX4-TM-XC)
Page 2 of 7
<Java Advanced>
Course Title: Java Basics
1.Course Summary:
This course covers following topics.
• Java Generics, Annotations and Reflection
• Serialization, Java NIO, Multi Threading
• Java 8, Java 11 and Java 17 Features
• JUnit, JNI and JNA
2. Pre-Requisite
• Good knowledge on Java Programming
• Familiarity on Java IDE (IntelliJ / Eclipse)
3. Audience
• Java Developers
4. Hardware & Network Requirements
• Laptop / Desktop with 8 GB RAM and 50 GB Storage
• Open internet connection with good speed
5. Software Requirements
• Windows / Linux / Mac OS
• Java 17 and above
• Java IDE – Intellij IDEA or Eclipse latest version
• Git Client latest version
• MySQL Server and Workbench latest version
6.Learning Outcomes:
• Understand Java Generics, Annotations and Reflection
• How to work with Serialization and Java NIO
• How to build multi threaded application using Multi Threading concepts
• Understand on New Features introduced as part of Java 8, 11 and 17 releases
• How to unit test Java application using JUnit
• How to integrate with native libraries from Java app using JNI and JNA
Page 3 of 7
<Java Advanced>
7.Course Content (day wise):
Day 1
Module 1: Java Generics
• Quick recap on Java Basics
• Generics Overview
• Benefits and Usecases
• Generic Method
• Type Inference
• Bounded Type Parameters
• Generic Class
• Type Erasure
• PECS (Producer Extends Consumer Super)
• Lower and Upper Bounds
Module 2: Java Annotations
• Annotations Overview
• Benefits and Usecases
• Standard Annotations
• Meta Annotations
• Custom Annotations
Module 3: Java Reflection
• Reflection Overview
• Accessing classes, methods, and fields at runtime
• Using reflection for debugging and testing
Day 2
Module 4: Serialisation and Java NIO
• Serialization Overview
• Object InputStream vs Output Stream
• Transient
• Serialize and De-serialize Java objects
• Intro to NIO
• NIO Benefits and Usecases
• Reading and Writing data with File using NIO
Page 4 of 7
<Java Advanced>
Day 3
Module 5: Multi-Threading
• Threading Concepts
• Synchronizing Threads
• Inter communication of Threads
• Critical Factor in thread Deadlock
• Thread Executor framework
• Intro to Fork and Join Model
• Completeable Future
Day 4
Module 6: Java 8 Features
• Fundamentals of Functional Programming
• Lambda Expressions
• Functional Interfaces
• Method References
• Default Methods
• Optional Class
• Stream API Overview
• Streaming Sources
• Intermediate Operations
• Terminal Operations
• Serial vs Parallel Stream
• New Date/Time API
Day 5
Module 7: Java 11/17 Features
• Module System Overview
• Reactive Streams Overview
• JShell
• Local Variable Type Inference
• String API / Stream API Enhancements
• New File Methods
• New HTTP client
• Switch Case Expression
• Pattern Matching
• Record
• Sealed Classes
Page 5 of 7
<Java Advanced>
Module 8: Intro to JDBC
• Databases & RDBMS Overview
• SQL Overview
• JDBC Overview
• JDBC Drivers and Sample program
Day 6
Module 9: Intro to JUnit
• Unit Testing Overview
• JUnit Overview
• Writing tests in JUnit 5
• Annotations
• Test Classes and Methods
• Assertions
• Test lifecycle
• Running Tests
• Test Mocks with Mockito
Day 7
Module 10: Intro to JNI and JNA
• Overview of JNI and its purpose
• When and why to use JNI
• Understanding the JNI architecture and components
• Creating a simple Java class with native methods
• Writing the corresponding C/C++ implementation
• Compiling the native code and generating the shared library
• Loading native libraries
• Managing native method calls and memory
• Data Types and Conversions
• Exception Handling
• Overview of JNA and its purpose
• Advantages of using JNA over JNI
• Understanding how JNA works
• Creating a simple Java class to call native functions
• Mapping C functions to Java methods
• Loading native libraries
• Working with Struts and Callbacks
• Exception Handling
Page 6 of 7
<Java Advanced>
8.Course Structure:
Activity Indicative Number of Hours
Pre-Read Hours 12
Teaching Hours 28
Hands on Sessions Hours 28
Assignments & Tutorial Hours 12
Mock Project Hours 20
9.Course Structure:
Method of Assessment Yes/No Weightage
Pre-Assessment Yes -
Mid-Assessment Yes -
Post-Assessment Yes -
Project Work Yes (Assignments) -
10.Course Resources: NA
11.Recommended Reading Links: NA
12.Course Owner (s):
Employee Name Employee Mail ID Business Unit
Ganesh Babu Gunasekaran ganeshbabu.gunasekaran@in.bosch.com (MS/ECX4-TM-XC)
Hassan Suresh Thejas thejas.hassansuresh@in.bosch.com (BGSW/PJ-ETA-SAT)
Page 7 of 7