This course aims to explain best practice programming techniques
for high-performance Java programs and practices performance profiling
and analysis including appropriate tuning techniques.
Application performance is a crucial issue in every software development
project - regardless of the technology and language being used. In
order to build a high-performance software system programmers and software
engineers must have in-depth knowledge of the technology and language specific
performance issues.
This seminar is for Java programmers specifically and explores strategies
for improving the performance of Java programs.
The focus is on core Java - the language itself and its platform libraries
(JDK). The seminar talks about those areas of Java that are relevant
for
all
Java developers regardless of their respective project context.
Specific architectures, such as databases, communication frameworks, web
or application servers, etc. are not considered, because there are too
many of them and they are highly context specific.
Attendants study programming techniques for efficient use of the Java
language and its runtime environment, with emphasis on the implementation
of high-performance software. Benchmarking and profiling techniques are
explained and practiced in hands-on labs. The goal is to enable attendants
to identify and analyze performance bottlenecks in a Java application and
then apply appropriate tuning techniques to remove the performance impediment.
IMPLEMENTATION
(or: Do the right thing)
Naturally, this seminar will not solve all your performance problems.
Rather than trying to cover the broad range of all conceivable
performance issues, this course has a strong and narrow focus: core Java
- the language itself and its platform libraries (JDK). This may
sound petty, but software developers make hundreds of design and implementation
decisions every day. They eventually sum up and add to the overall performance
characteristics of the application as a whole.
Here is where the course aims to help improving the performance: attendants
learn to habitually apply programming techniques that improve performance
and help avoiding the pitfalls that impair performance.
PERFORMANCE
PROFILING AND TUNING (or: When you think you're done)
The programming techniques discussed and practiced in this course are
also relevant for performance profiling and tuning. Often, the last
phase of an implementation effort is a profiling and tuning phase where
programmers try to verify that the application meets its performance requirements.
If not, performance bottlenecks must be identify, analyzed, and removed.
A major part of this seminar is devoted to exactly this phase of a project.
Profiling will be practiced in hands-on sessions, including an explanation
of how profiling tools work, what can be expected of them, how they are
utilized and how the resulting data is best interpreted and analyzed.
Once a bottleneck is found all the programming tips and techniques discussed
in the course kick in: they can be used to remove or at least mitigate
the performance penalty.
|
Prerequisite Courses
and Skills:
|
Sound knowledge of Java.
(1-2 years of practical experience). |
Duration:
|
4 days |
This is a course for professional Java software developers with an interest
in high-performance Java software. It is best attended after
a couple of years of on-the-job Java experience.
It is a hands-on course for practicing programmers, which means that
the focus is on programming and tuning, not on high-level design and testing.
Practicing programmers will get the most out of this seminar. It
is a seminar on programming for performance, performance profiling and
analysis, and performance tuning.
OBJECTIVES
|
Understand programming techniques that improve performance |
|
Know how to avoid the pitfalls that impair performance |
|
Learn how to profile and tune an application effectively |
|
Know how to identify and analyze performance bottlenecks |
The course is designed by Klaus Kreft & Angelika
Langer and backed by years of experience in teaching and more than a decade
of practical experience in industrial software development both in C++
and Java.
Angelika Langer
is a freelance trainer/consultant in the area of software
development in C++ and Java, author of language reference material such
as the Java Generics FAQs [
],
the Lambdas/Streams Tutorial & Reference [
],
and countless articles on C++ and Java topics [
].
Klaus Kreft
is a senior consultant for more than 25 years and has served
as the lead architect and performance expert on several successful industry
projects. He has been working in Java since its advent in 1995.
Both are recognized speakers at OO and Java conferences and author of numerous
articles on C++ and Java topics in various computer magazines worldwide.
Together they write a column for the German Java magazine JavaMagazin
[
]
and are authors of the books "Standard C++ IOStreams and Locales"
(2000) [
]
and "Java Core Programmierung" (2011) [
],
the Online FAQ on Java Generics [
],
and the Lambdas/Streams Tutorial & Reference [
].
|