Extreme Java

מק"ט: #4359 | משך קורס: 32 שעות אק'
| מספר מפגשים: 4

Java community, with more than 13 million programmers, seeks for experts. Mastering Java amazing APIs is great, but also common knowledge. Most Java developers uses containers such as servers, frameworks and mobile OS. They know a lot about these environments, which in most cases are written in Java. They create and deploy simple and complex applications to these containers. Actually, both containers and deployed modules are all hosted on Java Virtual Machine.
What do we really know about the JVM?
How memory is really used?
How classes are getting loaded?
What is the role of the 'invoke dynamic' feature?
How does the GC works?
And most important – how can we effect and optimize such features?
This course provides answers and much more.  

לפרטים נוספים, מלא את פרטיך או התקשר 03-7100673
*שדות חובה
PDF version

קהל יעד

Java developers that want to become experts by exploring JVM internals and Java high-end core APIs

תנאי קדם

Experience in Java development

נושאים

JVM Internals

  • Roles
  • Hotspot & JIT
  • Client & server compiler
  • Tiered compilation
  • Memory model
  • Object lifecycle
  • Memory areas
  • METASPACE (Java8)
  • Escape analysis
  • Class share
  • JVM tuning

 

GC

  • Roles
  • System.gc() & finalize()
  • GC algorithms
  • GC strategies
  • JVM defaults
  • Minor GC & Full GC
  • G1 & CMS
  • Monitoring GC

 

Class loading

  • introduction
  • Phases
  • Monitoring classes & class share
  • CL hierarchy
  • Custom CLs
  • Parallel class loading

 

Weak references

  • The need
  • References and ref queues
  • Soft ref
  • Weak ref
  • Phantom ref

 

Java concurrent API

  • Java basic thread model
  • Understanding wait() & notify()
  • ThreadLocal
  • ConcurrentAtomic
    • Why 'volatile' is not enough
    • Primitive wrappers
    • Object wrappers
    • Arrays wrappers
  • Thread executors
    • Runnable & Callable<T>
    • Executors utility
    • Executor types
    • Submit & execute
    • invokeAny, invokeAll
    • Handling Future<Y>
    • Custom thread factory
    • CompletableFuture (Java8)
    • Fork-Join
  • Lock API
    • Lock interface
    • ReadWriteLock
    • Conditions
    • CyclicBarrier
    • CountDownLatch
    • Semaphore
    • Optimistic reading with StampedLock (Java8)
  • Concurrent Collections
    • BlockingQueues
    • ConcurrentMaps


IO

  • NIO channels
    • File, socket
    • Selectable channel and non-blocking IO
  • NIO buffers
  • Encoders & decoders
  • NIO.2 file system API – intro
  • NIO.2 asynchronous channels
  • NIO.2 watch services – FS change detection

 

Reflection

  • The need
  • Loading classes
  • Exploring class constructors, methods and fields
  • Manipulate objects with reflection
  • Handling arrays
  • Handling annotations
  • Reflecting parameter names (Java8)

 

Java Functional programming – (Java8)

  • Understanding invoke dynamic
  • @FunctionalInterface
  • Predicate, Function, Consumer, Supplier
  • Default methods for interfaces
  • Using LAMBDA expressions
  • Using method references
  • Basic functional programming with Stream API
  • Intro to parallel streams, common pool and dedicated pools 
תגיות