[Go to site: main page, start]

0% found this document useful (0 votes)
39 views7 pages

Advanced Java Course Overview

The document outlines a Java Advanced course covering topics such as Java Generics, Annotations, Reflection, Serialization, Multi-Threading, and features from Java 8, 11, and 17. It includes prerequisites, audience details, hardware and software requirements, and a day-wise breakdown of course content and structure. The course aims to equip Java developers with advanced skills through hands-on sessions and assessments.

Uploaded by

jeganrock500
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views7 pages

Advanced Java Course Overview

The document outlines a Java Advanced course covering topics such as Java Generics, Annotations, Reflection, Serialization, Multi-Threading, and features from Java 8, 11, and 17. It includes prerequisites, audience details, hardware and software requirements, and a day-wise breakdown of course content and structure. The course aims to equip Java developers with advanced skills through hands-on sessions and assessments.

Uploaded by

jeganrock500
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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

[Link] 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

[Link] 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>

[Link] 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>

[Link] 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

[Link] Structure:

Method of Assessment Yes/No Weightage

Pre-Assessment Yes -
Mid-Assessment Yes -
Post-Assessment Yes -
Project Work Yes (Assignments) -

[Link] Resources: NA

[Link] Reading Links: NA

[Link] Owner (s):

Employee Name Employee Mail ID Business Unit

Ganesh Babu Gunasekaran [Link]@[Link] (MS/ECX4-TM-XC)


Hassan Suresh Thejas [Link]@[Link] (BGSW/PJ-ETA-SAT)

Page 7 of 7

Common questions

Powered by AI

Thread deadlock occurs when two or more threads are blocked forever, each waiting on the other to release resources, typically due to cyclical resource dependency . Critical factors in deadlocks include resource locking sequence and improper synchronization. Java's Executor framework mitigates this by providing a higher-level API for creating and managing thread pools, reducing the manual handling of thread creation and lifecycles, hence lowering the risk of deadlock by aligning resource allocation with task execution policies .

Generics in Java allow for stronger type checks at compile time, enabling developers to detect errors early in the development process . They eliminate the need to type-cast objects and enhance code readability and maintenance. Use cases include creating type-safe collections and reducing runtime errors, as Generics provide the ability to operate on objects of various types while providing compile-time type safety .

Java NIO (New Input/Output) provides a non-blocking I/O operation, allowing for multiplexed non-blocking I/O, which results in efficient data processing over network and file systems . It supports scalable applications by allowing threads to perform I/O operations while still being capable of processing other tasks. This contrasts with traditional Java I/O which is blocking, meaning threads can block waiting for data, potentially reducing throughput and responsiveness .

Switch Case Expressions in Java 17 enable switch to be used as an expression, returning a value, thus eliminating the need for break statements and reducing case fallthrough errors . Pattern Matching allows for conditional extraction of components from objects with type checking, supporting concise and type-safe operations. Together, they contribute to simpler code by allowing expressive and streamlined handling of conditions and object structures .

The new Date/Time API in Java 8 addresses many shortcomings of the existing java.util.Date class, such as its mutability and lack of consistency regarding timezone handling . It introduces the java.time package which offers immutable objects and supports a more comprehensive handling of time zones and locales. The API provides clear and concise methods for date and time manipulation, improving precision, and eliminating the inherent thread-safety issues of the Date class .

Local Variable Type Inference introduced in Java 10 allows developers to use `var` for inferring local variable types, enhancing the readability of complex symbolic representations while leaving type discovery to the compiler . This can lead to more concise code and reduce boilerplate, although it requires developers to be cautious of misinterpretations of types, particularly in complex generic instantiations. It encourages developers to focus on variable names rather than types, impacting code clarity and maintainability through expressive variable embedding .

JNI (Java Native Interface) requires developers to write the native code in languages like C/C++ and manage memory allocation manually, providing fine-grained control but with more complexity . Conversely, JNA (Java Native Access) simplifies the process by dynamically invoking native shared libraries without requiring additional C/C++ code, easing memory management and integration. Developers may prefer JNA for easier and faster implementations unless there are performance requirements or native functionality constraints, where JNI's detailed control might be necessary .

Java Reflection provides the ability to inspect classes, methods, and fields at runtime, which can be crucial for debugging and testing by allowing dynamic retrieval of class information . This allows developers to write flexible and reusable code by employing reflection to modify the behavior of applications during execution. It enables testing frameworks to invoke methods on classes under test and check their accessibility, thus facilitating automated unit testing .

The Module System in Java 11 improves application security by enforcing encapsulation of code and metadata within modules, limiting access to only the modules declared as dependencies . This results in stricter governance over APIs and mitigates unauthorized access vulnerabilities. Performance is enhanced by enabling faster application startup and performance optimization through modularization, which allows for smaller-sized compiled code and a reduction in memory footprint .

JUnit 5 introduces a more powerful and extensible architecture that supports Java 8 and above features, improving upon the limitations of its predecessors . It provides a modular approach with the Jupiter API for writing tests and Jupiter Engine for executing them, facilitating diverse testing styles and the integration of custom extensions. The new annotations and lifecycle methods offer better control and clarity, leading to more readable and maintainable test cases .

You might also like