Custom class loader in java
When you want to load class into the Java Virtual Machine(JVM), Custom Class Loader is used.
Why Custom Class Loader?
When your class has some specific needs as follows..
- Isolate modules
- Plugins
- Control class
- Non- standard sources(Databases, Encrypted Files)
Types of Class Loaders:
There are 4 types of class loaders. Here is the list.
- Bootstrap:
This Class Loader loads the core
Java classes. It uses Internal JVM resources.
- Platform:
This type uses the platform-specific
classes and modules. It Loads Java module system.
- System:
This class loader deals with
application’s classes. It includes the class path.
- Custom:
When you want to load user
defined classes like plugin, this concept is used.
Let us create an example….
First, the built – in package is included.
Next, the function findClass() is overridden.
public class MyClassLoaderEg extends ClassLoader {
@Override
protected
Class<?> findClass(String c_name) throws ClassNotFoundException {
byte[] cData =
loadClassData(c_name);
return
defineClass(c_name, cData, 0, cData.length);
}
private byte[]
loadClassData(String className) {
// it loads
the byte from file
}
}
You typically extend java.lang.ClassLoader and override the findClass(String
name) method:
public class MyClassLoader extends ClassLoader {
@Override
protected
Class<?> findClass(String name) throws ClassNotFoundException {
byte[]
classData = loadClassData(name); // Your logic to read class bytes
return
defineClass(name, classData, 0, classData.length);
}
private byte[] loadClassData(String className) {
// Load class
bytes from file, network, etc.
}
}
In the main function, include the below code.
MyClassLoader ld = new MyClassLoader();
Class<?> cl = ld.loadClass(“sample.MyClass”);
Object in = cl.getDeclaredConstructor().newInstance();
That's all. A sample Custom class loader coding is included. Hope, this blog post is useful to you. Keep Coding!!!
Comments
Post a Comment