Douglas Hawkins
Senior Software Engineer

Douglas Hawkins has been passionately developing software for the past 10 years -- creating applications for bioinformatics, finance, and retail.
However, Doug's true interest is exploring and explaining the low-level details inside the virtual machines that we use everyday. To make byte code more accessible, he created the open-source Java Assembler Kit (JAK) which provides a fluent API for producing Java
byte code and includes a REPL to allow for interactive experimentation.
Doug also organizes the Boston Java Meetup and is a regular presenter at both the Boston Java Meetup and the New England Java User's Group.
Presentations
Understanding Garbage Collection
Most of us don't want to go back to the days of malloc and free, but the garbage collector isn't always our friend.
In this presentation, you'll learn about the different garbage collection strategies used in JVMs, how to monitor garbage collection, analyze memory dumps, and why you might want to use one collection strategy instead of another.
VM Optimizations
We've all heard that premature optimization is the "root of all evil", but what is "premature?" By understanding how JVMs optimize our code, we can make more informed decisions.
In this presentation, you'll learn about the types of optimizations that JVMs perform, see demonstrations of these optimizations, and learn about tools to micro-benchmark your own applications.
Inside Android's Dalvik VM
Android is gaining popularity rapidly, but why does Android use its own implementation of Java?
In this presentation, we'll dig into the details behind Android's Dalvik VM. Along the way, you'll learn about Android' s service architecture, Dalvik's byte code format, and the surprising details of how Android installs, launches, and executes your applications.
Examining Java Byte Code
Ever wondered what byte code looks like? Wondered how type erasure works? Or, wondered how other JVM languages can have all exceptions unchecked?
In this presentation, you'll learn the basics of Java byte code, see tools for viewing Java byte code, and even see how to use this knowledge to statically analyze your applications.


