Classloaders are one of those subjects that affect every Java developers’ daily life, but aren’t necessarily something that most people understand to the core. The fact that you’re interested in this, my friend, makes you an exception to the rule. Luckily, our CTO Jevgeni is as well, and he regularly eats classloaders for breakfast. The great folks from Jazoon 2010 in Zurich have recently made his “Do you REALLY get class loaders?” presentation available, which we’re happy to share with you below. Jevgeni has also previously written a series of articles on class loading that you can read at your leisure. If you want to see the video stream and the slides at the same time, click anywhere other than the “Play” button and you will be taken to the Parleys website (which also happens to have lots of other great presentations).
And hey, since you’re already here, why not see how JRebel handles classloaders first hand?
Here’s the presentation abstract:
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.