Java Low Latency Training First Part: Introduction


Under this generic title seems that Oracle has decided to include some diverse but related areas from the Java world. Anyway, last 1-3 July I was the teacher in a Java Low Latency training for some of my work colleagues (seven, but three of them were girls, wow!). I'd like to meditate for a while about this strange expression "Java Low Latency".
First of all we have the JVM. Like James Gosling some times says, the JVM and Java programming should not be separated. Maybe it s good for beginning developers but actually any mature Java professional cannot be foreign to the JVM issues. I mean that we all must consider when programming and/or designing a system based on the JVM:


  1. The CPU architecture
  2. Available physical memory
  3. Operative System and its version number
  4. The JVM version number even the update number!
  5. The JVM settings
  6. The available JMX availble connections
  7. The tool for profiling
  8. Administration consoles, access to the operative system or whatever that allows us to review the JVM settings and behavior (I mean, profiling).
  9. Decide when you prefer the JVM crashes.
  10. Define a protocol for JVM reporting and which will be the parts of this report. 
  11. Define a protocol for dump generation and retrieval.
  12. Plan the dump generation in time in order to have an archive of JVM dumps showing its health status. This information will be unvaluable when problems comes to us and we'll need compare dumps from a stressed JVM with other from its normal performance.


The second part of the training was related to Java Programming for Performance. It involved topics as:


  1. Multithreading Basics
  2. Multithreading testing
  3. The fork/join framework
  4. The NIO API
  5. Asynchronous Programming
  6. Benchmarking
  7. Patterns
The rest of the parts of the training were focused on 3rd Party libraries and intensive exercises.


Some considerations from these training days can be interesting since I was thinkins about how to improve contents and exercisess in this type of sessions. I was thinking about what type of developer profile we want cretae, which are his/her main features, seniority level, autonomy, etc.
In coming soon entries I'll comment more extensively about these topics.


Comments