Course Overview
Course Content
- Multithreading: What and Why?
- Synchronized Block and Method
- Life Cycle of a Thread
- Thread API in Java
- Creating Thread
- States of Tread
- Advance Thread concepts
- Thread Pooling – Executor , Callable, Future
- Queues, Worker thread model – Executer Service etc.
- Fork Join Framework
- CountDownLarch
- CyclicBarrier
- Semaphore
- Mutex
- ThreadLocal
- ReentrantLock
- ShutdownHook
- Performing multiple tasks by multiple threads
- Garbage Collection
- Hands-On
- What is Stream?
- Input and Output Streams
- Types of Streams
- java.io package
- The Byte-stream I/O hierarchy
- Character Stream Hierarchy
- FileWriter & FileReader
- File I/O and Object Serialization
- CharArrayWriter
- Console
- Compressing and Uncompressing File
- Reading and Writing data simultaneously
- DataInputStream and DataOutputStream
- Object Stream
- Buffered Stream
- StreamTokenizer class
- Hands-On
- What is a framework in Java?
- Collection Framework
- Collection Interfaces and Implementor classes
- Types of Interfaces
- Types of Classes
- List,Set,Map
- Comparable and Comparator
- Collections and Arrays Classes
- Enhanced ForEach Loop
- Java Vector and Stack
- Enumeration
- List Interface
- ArrayList
- LinkedList
- Set Interface
- HashSet, LinkedHasSet, TreeSet
- Map Interface
- HashMap, LinkedHashMap, TreeMap
- Collection Sort
- Collection Shuffle
- Hands-On
- Platform Module System (Project Jigsaw)
- Interface Private Methods
- Try-With Resources
- Anonymous Classes
- @SafeVarargs Annotation
- Collection Factory Methods
- Process API Improvement
- New Version-String Scheme
- JShell: The Java Shell (REPL)
- Process API Improvement
- Control Panel
- Stream API Improvement
- Installer Enhancement for Microsoft windows and many more
- Hands-On
- Local-Variable Type Inference
- Consolidate the JDK Forest into a Single Repository
- Garbage-Collector Interface
- Parallel Full GC for G1
- Application Class-Data Sharing
- Thread-Local Handshakes
- Remove the Native-Header Generation Tool (javah)
- Additional Unicode Language-Tag Extensions
- Heap Allocation on Alternative Memory Devices
- Experimental Java-Based JIT Compiler
- Root Certificates
- Time-Based Release Versioning
- Hands-On
- JVM Changes – JEP 189, JEP 346, JEP 344, and JEP 230.
- Switch Expressions
- File mismatch() Method
- Compact Number Formatting
- Teeing Collectors in Stream API
- Java Strings New Methods – indent(), transform(), describeConstable(), and resolveConstantDesc().
- JEP 334: JVM Constants API
- JEP 305: Pattern Matching for instanceof
- Raw String Literals is Removed From JDK 12
- Hands-On
- Text Blocks – JEP 355
- New Methods in String Class for Text Blocks
- Switch Expressions Enhancements – JEP 354
- Reimplement the Legacy Socket API – JEP 353
- Dynamic CDS Archive – JEP 350
- ZGC: Uncommit Unused Memory – JEP 351
- FileSystems.newFileSystem() Method
- Support for Unicode 12.1
- DOM and SAX Factories with Namespace Support
- Hands-On
- Switch Expressions (Standard) – JEP 361
- Pattern Matching for instanceof (Preview) – JEP 305
- Helpful NullPointerExceptions – JEP 358
- Records (Preview) – JEP 359
- Text Blocks (Second Preview) – JEP 368
- Packaging Tool (Incubator) – JEP 343
- NUMA-Aware Memory Allocation for G1 – JEP 345
- JFR Event Streaming – JEP 349
- Non-Volatile Mapped Byte Buffers – JEP 352
- ZGC on macOS – JEP 364
- ZGC on Windows – JEP 365
- Foreign-Memory Access API (Incubator) – JEP 370
- Hands-On
- Sealed Classes (Preview) – JEP 360
- Pattern Matching for instanceof (Second Preview) – JEP 375
- Records (Second Preview) – JEP 359
- Text Blocks (Standard) – JEP 378
- Hidden Classes – JEP 371
- Remove the Nashorn JavaScript Engine – JEP 372
- Reimplement the Legacy DatagramSocket API – JEP 373
- Disable and Deprecate Biased Locking – JEP 374
- Shenandoah: A Low-Pause-Time Garbage Collector – JEP 379
- Remove the Solaris and SPARC Ports – JEP 381
- Foreign-Memory Access API (Second Incubator) – JEP 383
- Deprecate RMI Activation for Removal – JEP 385
- Hands-On
- Vector API (Incubator) – JEP 338
- Enable C++14 Language Features – JEP 347
- Migrate from Mercurial to Git – JEP 357
- Migrate to GitHub – JEP 369
- ZGC: Concurrent Thread-Stack Processing – JEP 376
- Unix-Domain Socket Channels – JEP 380
- Alpine Linux Port – JEP 386
- Elastic Metaspace – JEP 387
- Windows/AArch64 Port – JEP 388
- Foreign Linker API (Incubator) – JEP 389
- Warnings for Value-Based Classes – JEP 390
- Packaging Tool – JEP 392
- Foreign-Memory Access API (Third Incubator) – JEP 393
- Pattern Matching for instanceof – JEP 394
- Records – JEP 395
- Strongly Encapsulate JDK Internals by Default – JEP 396
- Sealed Classes (Second Preview) – JEP 397
- Hands-On
- Context-Specific Deserialization Filters – JEP 415
- Vector API (Second Incubator) – JEP 414
- Foreign Function & Memory API (Incubator) – JEP 412
- Deprecate the Security Manager for Removal – JEP 411
- Remove the Experimental AOT and JIT Compiler – JEP 410
- Sealed Classes – JEP 409
- Remove RMI Activation – JEP 407
- Pattern Matching for switch (Preview) – JEP 406
- Strongly Encapsulate JDK Internals – JEP 403
- Deprecate the Applet API for Removal – JEP 398
- macOS/AArch64 Port – JEP 391
- New macOS Rendering Pipeline – JEP 382
- Enhanced Pseudo-Random Number Generators – JEP 356
- Restore Always-Strict Floating-Point Semantics – JEP 306
- Hands-On
- UTF-8 by Default – JEP 400
- Simple Web Server – JEP 408
- Code Snippets in Java API Documentation – JEP 413
- Reimplement Core Reflection with Method Handles – JEP 416
- Vector API (Third Incubator) – JEP 417
- Internet-Address Resolution SPI – JEP 418
- Foreign Function & Memory API (Second Incubator) – JEP 419
- Pattern Matching for switch (Second Preview) – JEP 420
- Deprecate Finalization for Removal – JEP 421
- Hands-On