Session: Do you really get class loaders?
Wednesday, 15:35 - 16:25
Track: Java
Class loaders are at the core of the Java language. Java EE containers, OSGi, NetBeans modules, Tapestry 5, Grails and many others use class loaders heavily. Yet when something goes wrong, would you know how to solve it?
In this session we'll take a tour of the Java class loading mechanism, both from JVM and developer point of view. We'll see how different delegation systems are built, how synchronization works, what is the difference between finding classes and resources, what wrong assumptions has been made and are now supported.
Next we will look at typical problems that you get with class loading and how to solve them. ClassNoDefError, IncompatibleClassChangeError, LinkageError and many others are symptoms of specific things going wrong that you can usually find and fix. For each problem we'll go through a hands on demo with a corresponding solution.
We'll also take a look at how and why classloaders leak and how can you remedy that.
Finally we'll take a look at the complicated class loading mechanisms like the ones used in OSGi and Tapestry 5. We'll look in detail at the benefits they have and problems they might cause.
Prerequisites
Basic Java knowledge
Jevgeni Kabanov is the founder and CTO of ZeroTurnaround, a development tools company that focuses on productivity. As part of the effort to reduce development time tunraround he wrote JRebel, a class reloading JVM plugin.
Jevgeni is a co-founder of two open-source projects. Aranea is a web development and integration platform based on strong object-oriented principles. Squill is a typesafe internal DSL for constructing and executing SQL queries