Michael Ernst | Devoxx US

Michael Ernst
Michael Ernst Twitter

From University of Washington

Michael D. Ernst is a Professor in the Computer Science & Engineering department at the University of Washington.

Ernst's research aims to make software more reliable, more secure, and easier (and more fun!) to produce. His primary technical interests are in software engineering, programming languages, type theory, security, program analysis, bug prediction, testing, and verification. Ernst's research combines strong theoretical foundations with realistic experimentation, with an eye to changing the way that software developers work.

More information is available at his homepage: http://homes.cs.washington.edu/~mernst/.

Blog: http://homes.cs.washington.edu/~mernst/

method_archi Methodology & Architecture

Preventing null pointer exceptions at compile time


Null pointer exceptions are the bane of programmers, and have been called the "billion dollar mistake". They happen even if you think hard about your code and test it thoroughly. However, you don't have to be a victim any longer! Come learn about a simple, yet powerful, type system that prevents null pointer exceptions at compile time.

This session will explain the causes of null pointer exceptions, including their relationship to issues such as object initialization, map keys, method contracts, Java 8's Optional class, and dynamic checks. It will show how programmers' informal reasoning can be automated into a formal proof, in a way that is easier to use than Java generics or the Optional class.

You will learn how to use pluggable type-checking, and in particular a freely-available tool called the Nullness Checker (http://CheckerFramework.org/) that integrates with your development environment and toolchain. It has found hundreds of bugs in millions of lines of well-tested code, and it is easy enough for novices such as beginning CS students.

Bring your tricky nullness issues and see how they can be solved!

method_archi Methodology & Architecture

The Checker Framework in action: Preventing errors before they happen


Are you tired of null pointer exceptions, unintended side effects, SQL injections, concurrency errors, mistaken equality tests, and other run-time errors? Are your users tired of them in your code? This presentation shows you how to guarantee, at compile time, that these runtime exceptions cannot occur. You have nothing to lose but your bugs!

The Checker Framework provides more than a dozen pluggable type systems that are ready to use, including nullness, immutability, and concurrency type-checkers. These type systems have found hundreds of bugs in well-tested open source code, including from Oracle, Google, Apache, etc., and even when other tools like FindBugs gave the code a clean bill of health. The Checker Framework also enables you to create your own new pluggable type system for Java.

This short presentation is primarily a demo that concretely shows you the tool in action, helping you to understand how it works and whether it is right for you. You will leave the demo understanding the concepts of pluggable type-checking and ready to use it to improve your code.

The tool is freely available at http://CheckerFramework.org/. You have nothing to lose but your bugs!