Performance Zone is brought to you in partnership with:

Peter is a DZone MVB and is not an employee of DZone and has posted 155 posts at DZone. You can read more from them at their website. View Full User Profile

Performance Java Training

02.20.2013
| 8250 views |
  • submit to reddit

 
I am looking to provide "Master Class" Java training for developers of high throughput and low latency systems based on my experience in designing and implementing trading systems for hedge funds.

As this will be my first course, I am looking for feedback as to what to include and what to drop. I am concerned this is an overwhelming amount of information to cover in a week which will make it difficult to cover each topic in much depth.

You can contact me on peter.lawrey (a) higherfrequencytrading.com if you are interested in the course. This is in person training in English.  My first session will be in London, but I would consider other cities if there is enough interest.

Overview
The training assumes you are familiar with all the standard features of Java and know most of the topics covered by advanced Java programming courses. i.e. everything covered in most advanced books.

The scope of the training is designing, developing, testing and tuning performance Java applications.  The three areas covered are low latency, high throughput and big data techniques. Both common libraries in these spaces and how to implement simple examples of your own are covered. The course is 30% design and theory and 70% practical.

Developers should have at least five years solid, hands on Core Java coding experience. e.g. you should be able to write multi-threaded code on paper which has a good chance of compiling.

Day One

A brief coverage of advanced programming techniques from a performance point of view.  This is intended to cover in a day all the functionality you might expect to cover in a week of an advanced training course. This refresher assumes you know at least 80% of this material already. This is the foundation of the the following days sessions

These topics are discussed from a performance point of view.

   •   improvements in Java 5.0 to 7
   •   implementing the Actor pattern using the High Level Concurrency library.
   •   working with Streams, Reader/Writers and Channels.
   •   working with compressed stream in files and over sockets.
   •   using Blocking NIO.
   •   Reflection and MethodHandles.
   •   Review design patterns.

Day Two

Writing micro-benchmarks and measuring the performance of systems such as
simple network services. This will look at latency distributions, throughputs and degrees of concurrency.

Tools introduces: CPU and memory profilers. VisualVM and commercial. Libraries introduced: Caliper, Java Thread Affinity

Day Three
Designing and writing performance distributed systems.

Libraries introduced: ZeroMQ, FastMPJ, Java Chronicle.

Day Four
Lock free multi threading, ultra low garbage and off heap coding.


Libraries introduced: Trove, Javolution Fast collections, Disruptor, Under the bonnet of the Java Concurrency library.

Day Five
Performance Parsing and Serialization/Deserialization techniques.  Big Memory techniques.

   •   Using busy waiting for resources and shared data.
   •   Using intrinsics which are faster than JNI.
   •   Recycling instead of discarding data, and when to do it. What are the disadvantages?
   •   Using ByteBuffers and allocating native space.
   •   Externalizable, ObjectInput/ObjectOutput
   •   Custom serialization
   •   JSon, XML, text and binary parsers.

Libraries introduced: Javolution Struct, ByteBuffer, Unsafe, memory mapped files.


Published at DZone with permission of Peter Lawrey, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Gym Prathap replied on Sat, 2013/07/13 - 3:32am

Please add the Lambda Expressions


Java Training in Chennai 

Peter Lawrey replied on Fri, 2013/11/01 - 3:17am

The performance of lambdas is improving and I have seen example of where it is about half the speed of non-lambdas.  I haven't see any example of where they are faster than not using them and I wouldn't recommend them in low latency systems just yet.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.