Java Topics
Environment
Language Elements
Java Language Specifications
ClassLoader Framework
OOP Framework
Extending Classes and Inheritance
Package
Exception Handling
Multi-Threading
NIO
Streams
Regular Expressions
Security
JDBC
Hibernate
Additional Topics to be covered
Third-party Libraries to be covered
Java 21
Class Fundamentals
Object & Object reference
Object Life time & Garbage Collection
Creating and Operating Objects
Constructor & initialization code block
Access Control
Modifiers
Methods Nested
Inner Class & Anonymous Classes
Abstract Class & Interfaces Defining Methods
Argument Passing Mechanism
Method Overloading
Recursion,
Dealing with Static Members
Try Catch Finalize
Native Method
Use of “this “ reference
Use of Modifiers with Classes & Methods
Design of Accessors and Mutator Methods Cloning Objects
Shallow and deep cloning
Generic Class Types.
Use and Benefits of Inheritance in OOP
Types of Inheritance in Java,
Inheriting Data members and Methods
Role of Constructors in inheritance
Overriding Super Class Methods
Use of “super”
Polymorphism in inheritance
Type Compatibility and Conversion
Implementing interfaces
Organizing Classes and Interfaces in Packages
Package as Access Protection
Defining Package
CLASSPATH Setting for Packages
Import and Static Import
Making JAR Files for Library Packages
Naming Convention For Packages
Exceptions & Errors
Types of Exception
Control Flow In Exceptions
JVM reaction to Exceptions
Use of try catch finally throw throws in Exception Handling
In-built and User Defined Exceptions
Checked and Un-Checked Exceptions
Creating and Starting Java Threads
Thread creation by implementing the Runnable Interface
Thread Class vs Runnable Interface
Lifecycle and States of a Thread
Thread Priority
Race Conditions and Critical Sections
Thread Safety and Shared Resources
Thread Safety and Immutability
Java Memory Model
Java Synchronized Blocks
Java Volatile Keyword
CPU Cache Coherence in Java Concurrency
Java ThreadLocal
Java Thread Signaling
Typical problems in Java concurrency:
Deadlock Prevention
Starvation and Fairness
Nested Monitor Lockout
Slipped Conditions
False Sharing
Thread Congestion
Locks in Java
Read / Write Locks in Java
Reentrance Lockout
Semaphores
Blocking Queues
Java Concurrency Utilities ([Link]):
Java Executor Framework (Callable, Runnable, Thread Pools, Executors etc)
Concepts
Channels
Buffers
Scatter - Gather
Channel to Channel Transfers
Selectors
FileChannel
SocketChannel
ServerSocketChannel
Non-blocking Server Design
DatagramChannel
Pipe
NIO vs. IO
Path
Files
AsynchronousFileChannel
Channels and Buffers
Implementations
FileChannel
Opening a FileChannel
Reading Data from a FileChannel
Writing Data to a FileChannel
Closing a FileChannel
FileChannel Position
FileChannel Size
FileChannel Truncate
FileChannel Force
DatagramChannel
Opening a DatagramChannel
Receiving Data
Sending Data
Connecting to a Specific Address
SocketChannel
Opening a SocketChannel
Closing a SocketChannel
Reading from a SocketChannel
Writing to a SocketChannel
Non-blocking Mode - connect() write() read() and with Selectors
ServerSocketChannel
Opening a ServerSocketChannel
Closing a ServerSocketChannel
Listening for Incoming Connections
Non-blocking Mode
Channel Transfers - transferFrom() transferTo()
Basic Buffer Usage
Buffer Capacity, Position and Limit
Buffer Types
Allocating a Buffer
Writing Data to a Buffer
Reading Data from a Buffer
flip() rewind() clear() compact() mark() reset() equals() and compareTo()
Selectors
Creating a Selector
Registering Channels with the Selector
SelectionKey
Interest Set
Ready Set
Channel + Selector
Attaching Objects
Selecting Channels via a Selector
selectedKeys()
wakeUp() and close()
Pipe
Creating a Pipe
Writing to a Pipe
Reading from a Pipe
Path
Creating a Path Instance
Creating an Absolute Path
Creating a Relative Path
relativize()
normalize()
Files
[Link]()
[Link]()
[Link]()
Overwriting Existing Files
[Link]()
[Link]()
[Link]()
Searching For Files
Deleting Directories Recursively
other useful functions, like functions for creating symbolic links, determining the file size, setting file permissions etc
Introduction to Java 8 Streams
Java Stream Creation
Java Stream Operations
forEach
map
collect
filter
findFirst
toArray
flatMap
peek
Comparison Based Stream Operations
sorted
min and max
distinct
allMatch, anyMatch, and noneMatch
Method Types and Pipelines
Lazy Invocation & Evaluation
Java Stream Specializations
Reduction Operations
reduce
Advanced collect
joining
toSet
toCollection
summarizingDouble
partitioningBy
groupingBy
mapping
reducing
Parallel Streams
Infinite Streams
Streams in File Operations
File Write Operation
File Read Operation
Introduction
Test Harness
String Literals
Character Classes
Predefined Character Classes
Quantifiers
Capturing Groups
Boundary Matchers
Methods of the Pattern Class
Methods of the Matcher Class
Methods of the PatternSyntaxException Class
Java Cryptography
Introduction
Message Digest and MAC
Message Digest
Creating a MAC
Keys and Key Store
Keys
Storing keys
Retrieving keys
Generating Keys
KeyGenerator
KeyPairGenerator
Digital Signature
Creating Signature
Verifying Signature
Cipher Text
Encrypting Data
Decrypting Data
JDBC Basics
Getting Started
Processing SQL Statements with JDBC
Establishing a Connection
Connecting with DataSource Objects
Handling SQLExceptions
Setting Up Tables
Retrieving and Modifying Values from Result Sets
Using Prepared Statements
Using Transactions
RowSet Objects
JdbcRowSet Objects
CachedRowSetObjets
JoinRowSet Objects
FilteredRowSet Objects
WebRowSet Objects
Advanced Data Types
Large Objects
SQLXML Objects
Array Objects
DISTINCT Data Type
Structured Objects
Customized Type Mappings
Datalink Objects
RowId Objects
Stored Procedures / Callable
Overview
Architecture
Environment
Configuration
Sessions
Persistent Class
Mapping Files
Mapping Types
Examples
O/R Mappings
Annotations
Query Language
Criteria Queries
Native SQL
Caching
Batch Processing
Interceptors
Secure Coding Guidelines for Java
Sonalint (Intro, Installation for Eclipse, Use, Remediation of Issues etc)
SSL (Tutortial of SSL Basics – Chapter 1, 2, 3, 4, 8, 9 from [Link]
One-way TLS
Two-way TLS
BouncyCastle (for all things related to Security)
Apache HTTPComponents (for consuming third-party REST APIs)
ZeroMQ (for Messaging concepts and use)
JasperReports (for Report design and rendering in detail)
Apache POI (for creating, reading, editing and manipulating Microsoft Office documents particularly XLS/ XLSX)
Apache Log4J (for logging)
Jsoniter (for reading and writing JSON)
VTD-XML Parser & JDOM (for reading and writing XML)
Jcraft Jsch (for FTP, SFTP in Java)
ZK Ajax (in detail – see sheet ZK Topics)