Articles by Angelika Langer & Klaus Kreft
Here is a list of articles, whitepapers and conference presentations,
which I contributed to as author or co-author. Most of them were published
in print or online magazines, including C++ Report, C/C++ Users Journal
(CUJ), JavaMagazin, JavaSpektrum, JavaWorld and JavaPro. The versions
made available here are draft versions of the respective magazine articles.
Readers interested in Java topics might also want to take a look at
the Java Generics FAQ available on this website at
GENERICS
and the Lambdas & Streams Tutorial/Reference at
LAMBDAS
.
JAVA
Articles
|
Topic
|
Published
|
Language
|
|
|
|
Concurrent
Programming
|
|
|
Multithreading
Basics
|
JavaSPEKTRUM, January 2004 |
German
|
Synchonization
in Detail
|
JavaSPEKTRUM, March 2004 |
German
|
Explicit
Locks (a new feature in JDK 5.0)
|
JavaSPEKTRUM, May 2004 |
German
|
wait() and
notify() in Detail
|
JavaSPEKTRUM, July 2004 |
German
|
The
Nested Monitor Problem
|
JavaSPEKTRUM, September 2004 |
German
|
Stopping and
Suspending Threads
|
JavaSPEKTRUM, November 2004 |
German
|
Thread-Safe
Collections and Synchronizers
|
JavaSPEKTRUM, January 2005 |
German
|
Asynchronous
Tasks (Callable and Future)
|
JavaSPEKTRUM, March 2005 |
German
|
Thread Pools
|
JavaSPEKTRUM, May 2005 |
German
|
Introduction
to Memory Model Issues in Java
|
JavaMagazin
, July 2008 |
German
|
Overview
of the Java Memory Model
|
JavaMagazin
, August 2008 |
German
|
The
Cost of Lock-Based Synchronisation
|
JavaMagazin
, September 2008 |
German
|
Volatile
Variables
|
JavaMagazin
, Octember 2008 |
German
|
Double-Check
Locking
|
JavaMagazin
, November 2008 |
German
|
Idioms
for Use of Volatile
|
JavaMagazin
, December 2008 |
German
|
Initialization
Safety
|
JavaMagazin
, February 2009 |
German
|
Immutable
Types
|
JavaMagazin
, April 2009 |
German
|
The
Danger of Aggressive Optimizations
|
JavaMagazin
, June 2009 |
German
|
Atomic
Scalar Variables
|
JavaMagazin
, August 2009 |
German
|
Atomic
Reference Variables
|
JavaMagazin
, October 2009 |
German
|
CopyOnWriteArrayList
|
JavaMagazin
, December 2009 |
German
|
The Java
Memory Model
|
JavaZone 2011 Conference
, September
2011 |
English
|
Fork-Join-Framework
- Purpose & Internals
|
JavaMagazin
, February 2012 |
German
|
Fork-Join-Framework
- Usage
|
JavaMagazin
, April 2012 |
German
|
The Phaser
Synchronizer
|
JavaMagazin
, June 2012 |
German
|
New
Concurrency Utilities in Java 8
|
GOTO Berlin 2014 Conference
,
November 2014 |
English
|
CompletableFuture
|
JavaMagazin
, March 2015 |
German
|
Topic
|
Published
|
Language
|
|
|
|
Java
Performance Tuning
|
|
|
Micro-Benchmarking
|
JavaSPEKTRUM, July 2005 |
German
|
Micro-Benchmarking
and HotSpot Compilation
|
JavaSPEKTRUM, September 2005 |
German
|
Profiler
Tools
|
JavaSPEKTRUM, November 2005 |
German
|
Functional
Performance Hot Spots
|
JavaSPEKTRUM, January 2006 |
German
|
Memory
Hot Spots
|
JavaSPEKTRUM, March 2006 |
German
|
Micro-Benchmarking
|
JavaMagazin
, November 2016 |
German
|
JMH
- Java Micro Benchmarking Harness
|
JavaMagazin
, January 2017 |
German
|
JIT
Compilation and its Impact on Micro Benchmarking
|
W-JAX 2017 Conference
,
September 2011 |
German
|
|
|
|
Garbage
Collection
|
|
|
Garbage
Collection Algorithms
|
JavaSPEKTRUM, May & July 2006 |
German
|
Tuning the Garbage
Collector
|
JavaSPEKTRUM, September 2006 |
German
|
Generational
Garbage Collection
|
JavaMagazin
, February 2010 |
German
|
Young
Generation Garbage Collection
|
JavaMagazin
, April 2010 |
German
|
Old
Generation Garbage Collection - Mark-and-Compact
|
JavaMagazin
, June 2010 |
German
|
Old
Generation Garbage Collection - Concurrent-Mark-and-Sweep
|
JavaMagazin
, August 2010 |
German
|
Garbage
Collection Tuning Goals
|
JavaMagazin
, October 2010 |
German
|
Garbage
Collection Tuning Strategies
|
JavaMagazin
, December 2010 |
German
|
"Garbage
First" (G1) Garbage Collector - Overview
|
JavaMagazin
, February 2011 |
German
|
"Garbage
First" (G1) Garbage Collector - Tuning
|
JavaMagazin
, April 2011 |
German
|
The
Art of Garbage Collector Tuning (for the HotSpot JVM)
|
JavaZone 2011 Conference
, September
2011 |
English
|
The
Art of Garbage Collector Tuning (for the HotSpot JVM)
|
Jfokus
2012 Conference
, February 2012 |
English
|
|
|
|
Memory
Leaks
|
|
|
Memory Leaks
- An Example
|
JavaMagazin
, August 2012 |
German
|
Accumulating
Memory Leaks
|
JavaMagazin
, October 2012 |
German
|
Nulling-Out
References
|
JavaMagazin
, December 2012 |
German
|
Dynamic
Memory Leak Analysis
|
JavaMagazin
, February 2013 |
German
|
Post-Mortem
Memory Leak Analysis
|
JavaMagazin
, April 2013 |
German
|
Weak
References
|
JavaMagazin
, June 2013 |
German
|
Topic
|
Published
|
Language
|
|
|
|
Java
9
|
|
|
An
Overview of Java 9
|
W-JAX Conference
,
November 2016 |
German
|
An
Overview of Java 9
|
JavaMagazin
, September 2017 |
German
|
An
Overview of Java 9
|
GOTO Berlin
Conference
, November 2017 |
English
|
|
|
|
Java
8 - Lambdas & Streams
|
|
|
Lambda Tutorial
|
Online Tutorial, April 2013 |
English
|
The
Closure Debate
|
JavaWorld
, June 2008 |
English
|
Overview
of New Features in Java 8
|
JavaMagazin
, March 2014 |
German
|
CompletableFuture
|
JavaMagazin
, March 2015 |
German
|
The
Date/Time API
|
JavaMagazin
, January 2015 |
German
|
The Stream API
|
W-JAX Conference
,
November 2014 |
German
|
Lambdas
& Streams in Java 8
|
ACCU 2014 Conference
,
April 2014 |
English
|
Programming
with Lambda Expressions in Java
|
jDays 2013 Conference
, November 2013 |
English
|
Functional
Programming with Lambda Expressions in Java
|
W-JAX Conference
,
November 2013 |
German
|
Lambdas und "Lambdafication" in
Java 8
|
W-JAX Conference
,
November 2012 |
German
|
Lambdas
in Java 8
|
Jfokus
2012 Conference
, February 2012 |
English
|
Lambdas
in Java 8
|
JavaZone 2012 Conference
, September
2012 |
English
|
Functional
Programming in Java
|
JavaMagazin
, September 2013 |
German
|
Lambda
Expressions & Method References
|
JavaMagazin
, November 2013 |
German
|
Default
and Static Interface Methods
|
JavaMagazin
, January 2014 |
German
|
Streams:
Overview of The Extended Collection API
|
JavaMagazin
, May 2014 |
German
|
Stream
Creation & Stream Operations
|
JavaMagazin
, July 2014 |
German
|
Stream
Collectors
|
JavaMagazin
, September 2014 |
German
|
Side
Effects of Stream Operations' Functional Parameters
|
JavaMagazin
, November 2014 |
German
|
Optional<T>
|
JavaMagazin
, May 2015 |
German
|
Parallel
Streams
|
JavaMagazin
, July 2015 |
German
|
The
Performance Model of Streams
|
JavaMagazin
, September 2015 |
German
|
The
Performance Model of Streams
|
jDays 2015 Conference
,
March 2015 |
English
|
The
Performance Model of Streams
|
GeeCon 2015
Conference
, May 2015 |
English
|
reduce()
vs. collect()
|
JavaMagazin
, November 2015 |
German
|
User-Defined
Collectors
|
JavaMagazin
, January 2016 |
German
|
Parallel
Streams and Blocking Functionality
|
JavaMagazin
, March 2016 |
German
|
User-Defined
Stream Sources and Spliterators
|
JavaMagazin
, September 2016 |
German
|
API
Design with Lambdas
|
JavaMagazin
, May 2016 |
German
|
Programming
with Lambdas
|
JavaMagazin
, July 2016 |
German
|
Stream
Puzzlers
|
jDays 2017 Conference
,
March 2017 |
English
|
Stream Puzzlers
|
Voxxed Thessaloniki
2017 Conference
, November 2017 |
English
|
Java
8 in Retrospect
|
W-JAX Conference
,
November 2017 |
German
|
The Stream API
|
|
|
Overview
of the Stream API
|
JavaMagazin
, May 2014 |
German
|
Stream
Creation and Stream Operations
|
JavaMagazin
, July 2014 |
German
|
Stream
Collectors
|
JavaMagazin
, September 2014 |
German
|
Side
Effects of Stream Operations' Functional Parameters
|
JavaMagazin
, November 2014 |
German
|
reduce()
vs. collect()
|
JavaMagazin
, November 2015 |
German
|
Parallel
Streams
|
JavaMagazin
, July 2015 |
German
|
Parallel
Streams and Blocking Functionality
|
JavaMagazin
, March 2016 |
German
|
User-Defined
Collectors
|
JavaMagazin
, January 2016 |
German
|
User-Defined
Stream Sources and Spliterators
|
JavaMagazin
, September 2016 |
German
|
Stream
Puzzlers
|
jDays 2017 Conference
,
March 2017 |
English
|
Stream Puzzlers
|
Voxxed Thessaloniki
2017 Conference
, November 2017 |
English
|
Java
7
|
|
|
New
Features in Java 7 - Overview
|
JavaMagazin
, June 2011 |
German
|
Strings
in switch, Multi-Catch, Try-With-Resources, Numeric Literals
|
JavaMagazin
, August 2011 |
German
|
Diamond
Operation & Varargs
|
JavaMagazin
, October 2011 |
German
|
NIO2 - File
System API & Asynchronous I/O
|
JavaMagazin
, December 2011 |
German
|
Fork-Join-Framework
- Purpose & Internals
|
JavaMagazin
, February 2012 |
German
|
Fork-Join-Framework
- Usage
|
JavaMagazin
, April 2012 |
German
|
The Phaser
Synchronizer
|
JavaMagazin
, June 2012 |
German
|
Java
Generics
|
|
|
Introduction
to Generics and Parameterized Types
|
JavaSPEKTRUM, March 2007 |
German
|
Wildcards in
Java Generics
|
JavaSPEKTRUM, May 2007 |
German
|
Raw Types
and Type Erasure
|
JavaSPEKTRUM, July 2007 |
German
|
Type
Erasure - The Dark Side
|
JavaSPEKTRUM, September 2007 |
German
|
Generic
Creation
|
JavaSPEKTRUM, November 2007 |
German
|
Implementing
a Generic Pair Class (Part 1)
|
JavaSPEKTRUM, January 2008 |
German
|
Implementing
a Generic Pair Class (Part 2)
|
JavaSPEKTRUM, March 2008 |
German
|
Diamond
Operation & Varargs
|
JavaMagazin
, October 2011 |
German
|
Programming
With Java Generics
|
JavaOne Conference, June 2005 |
English
|
Java Generics FAQ
|
Online FAQ, October 2004 |
English
|
Die Sprachmittel
von Java Generics
|
JavaMagazin
, April 2004 |
German
|
Type Erasure und
das Java Typsystem
|
JavaMagazin
, October 2004 |
German
|
Language
Features of Java Generics
|
JavaPro, March 2004 |
English
|
Wildcard
Instantiations of Parameterized Types
|
JavaPro, May 2004 |
English
|
Enumeration Types
|
|
|
The Language Feature
of Enumeration Types
|
JavaSPEKTRUM, November 2006 |
German
|
Enumeration
Types - A Common Pitfall
|
JavaSPEKTRUM, January 2007 |
German
|
|
|
|
|
|
|
Core
Java
|
|
|
Unveränderliche
Typen und Duale Klassen
|
JavaSPEKTRUM, March 2003 |
German
|
Immutability-Adaptoren
für Collections und die Bedeutung von final
|
JavaSPEKTRUM, July 2003 |
German
|
final-Klassen
und final-Methoden
|
JavaSPEKTRUM, September 2003 |
German
|
Polymorphe
Methodenaufrufe und Konstruktoren
|
JavaSPEKTRUM, November 2003 |
German
|
Secrets of equals
|
Java Solutions, April 2002 |
English
|
Implementing
equals for Mixed-Type Comparison
|
Java Solutions, August 2002 |
English
|
Objektvergleich
-
Die Prinzipien einer Implementierung von equals()
|
JavaSPEKTRUM, January 2002 |
German
|
Objektvergleich
- Der Vergleichbarkeitstest
|
JavaSPEKTRUM, March 2002 |
German
|
HashCode Berechnung
|
JavaSPEKTRUM, May 2002 |
German
|
Comparators
in Java -
Prinzipien einer Implementierung von compareTo()
|
JavaSPEKTRUM, July 2002 |
German
|
Das Kopieren
von Objekten -
Der Sinn und Zweck von clone()
|
JavaSPEKTRUM, September 2002
|
German
|
Das Kopieren
von Objekten -
Prinzipien
einer Implementierung
von clone()
|
JavaSPEKTRUM, November 2002
|
German
|
Das Kopieren
von Objekten - Die CloneNotSupportedException
|
JavaSPEKTRUM, Januar 2003
|
German
|
Effective
Java Programming
|
OOP 2002 Conference Proceedings, January 2002 |
German
|
Really Understanding
Java -
Myths and Truths Comparing C++ and Java
|
Whitepaper, 1998 |
English
|
|
C++
Articles
|
Topic
|
Published
|
Language
|
|
|
|
IOStreams
|
|
|
Curiously Recurring
Manipulators
|
C++ Experts Forum, June 2001 |
English
|
Implementing Manipulators
Part
1
/
Part 2
|
C++ Report, April 2000 / June 2000 |
English
|
The Stream Buffer Classes
|
C++ Report, April 2000 |
English
|
User-Defined Inserters and Extractors
Part
1
/
Part 2
|
C++ Report, September 1999 / February 2000 |
English
|
New Features in Standard IOStreams
-
Comparing Classic and Standard IOStreams
|
Whitepaper, 1998 |
English
|
New Features in
Standard IOStreams
|
C++ Report, June 1997 |
English
|
Deriving
from IOStreams
|
C++ Report, September 1995 |
English
|
STL
|
|
|
Unary Predicates
in the STL
|
C++ Experts Forum, April 2001 |
English
/
Russian
|
The Difference
between for_each() and transform()
|
C++ Experts Forum, February 2001 |
English
/
Russian
|
Explicit
Function Template Argument Specification
|
C++ Experts Forum, December 2000 |
English
|
Are Set Iterators Mutable
or Immutable?
|
C++ Experts Forum, October 2000 |
English
|
Output Iterators
|
C++ Report, June 1999 |
English
|
Stream Iterators
|
C++ Report, May 1999 |
English
|
Insert Iterators
|
C++ Report, February 1999 |
English
|
Iterators
in the Standard C++ Library
|
C++ Report, November/December 1996 |
English
|
Allocators
|
C++ Report, June 1998 |
English
|
Combining OO Design and
Generic Programming
|
C++ Report, March 1997 |
English
|
Standard
Library
(other
than STL and IOStreams)
|
|
|
The
auto_ptr
Class Template
|
C++ Report, November/December 1998 |
English
|
Internationalization Using
Standard C++
|
C/C++ Users Journal , September 1997 |
English
|
The Locale
Framework
|
C++ Report, September 1997 |
English
|
Standard Facets
|
C++ Report, November/December 1997 |
English
|
User-Defined
Facets
|
C++ Report, February 1998 |
English
|
Character
Types and Character Traits
|
C++ Report, April 1998 |
English
|
Core
C++
|
|
|
Expression
Templates
|
C/C++ Users Journal, March 2003 |
English
/
Russian
/
Chinese
|
Explicit
Function Template Argument Specification
|
C++ Experts Forum, December 2000 |
English
|
Sequence Points and
Expression Evaluation
|
VSJ, August 2002 |
English
/
Russian
|
Programmieren
mit C++ Templates
|
objektSPEKTRUM, März 2003 |
German
|
Dynamische
Allokation von Ressourcen
|
Elektronik, März 1998 |
German
|
Compile-Time Computations
in C++
|
Whitepaper, 2000 |
English
|
New Features in ANSI
C++
|
Whitepaper, 1998 |
English
|
|
|