פיתוח תוכנה

Extreme Java

מספר הקורס 4359

32 סה"כ שעות אקדמאיות
4 מפגשים
* מספר המפגשים והשעות למפגש עשויים להשתנות בין קורס לקורס

המועדים הקרובים

הקורס נפתח גם במתכונת Live class –  למידה און ליין בכיתות אינטראקטיביות עם מיטב המרצים והתכנים של ג'ון ברייס /המי"ל.ניתן לפתוח קורס בהתאמה אישית לארגונים במועד שיתואם עימנו


קורס בוקר


תל אביב


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.


Recently, Java 9 was released with some environmental and API dramatic enhancements. These enhancements includes Modular Java (Jigsaw project), Reactive programming API and cool new utilities like Jlink. The course relates to these new capabilities.


מטרות הקורס


Who Should Attend

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


תכנית הלימודים

PDF להורדה

JVM Internals

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



  • 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


  • 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



  • 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


Java 9 – New features

  • APIs
    • Reactive programming with flow
    • Collection Factories
    • Stream API new features
    • Private interface methods
    • HTTP/2 API
    • Stack walking
  • Environmental
    • Modular Java & Jlink
    • Jshell
    • Multi version jars
    • G1 made default
  • Experience in Java development

Schedule Appointment

Fill out the form below, and we will be in touch shortly.

לא הצלחנו לאתר את הטופס.