Comparison with Previous Releases

In Java 2, version 1.3, no class loader can define a class that is in the java package (i.e., whose class name begins with java). In 1.2 and earlier releases, that restriction is not present (unless you code it into your own class loader). That’s one reason why there is no class loader that uses the checkPackageDefinition( ) method (although that method was not used in 1.2 either).

In Java 1.1, class loading was significantly different. To begin, there are no code source or protection domain objects in 1.1, and classes do not carry associated permissions with them. Security in 1.1 is solely up to the security manager, and the class loader simply loads classes.

That means that the loadClass( ) method in 1.1 is very different. In particular, there is only one defineClass( ) method that it can call (the one without a protection domain argument), and it does not call the findClass( ) method. In order to write a class loader in 1.1, you must override the loadClass( ) method and perform all your work in that method. We show an example of this in Appendix D.

The secure class loader and URL class loader were introduced in Java 2, version 1.2. In 1.1, the primordial class loader is used to load all classes on the classpath in addition to the classes in the core API.

Delegation was also introduced in Java 2, version 1.2. In 1.1, a custom class loader can make a special method call to load classes from the classpath, but there is no general hierarchy of ...

Get Java Security, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.