Skip to content

Lightweight and fast java.beans.Introspector implementation

License

Notifications You must be signed in to change notification settings

panga/java-beans-lite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Beans Lite

Lightweight and fast java.beans.Introspector reimplementation used to remove dependency on java.desktop module for Bean Introspection.

Problem

The java.desktop module introduced in JDK 9 encapsulates all AWT, Swing, Image and Sound packages from Java standard libraries.

In addition to that, it contains the java.beans package with helper classes to interact with Java Beans, specifically doing introspection.

Due to its tight dependency with AWT, it cannot be easily removed from java.desktop module, causing any thirdparty library that uses java.beans package to be dependent of all java.desktop classes, adding extra 12mb of size overhead into the JVM installation and some extra memory usage.

Solution

Reimplemented java.beans.Introspector class to do analysis of Java Beans in a very lightweight and super fast way (analysis results are cached automatically) with only java.base module packages dependency.

The initial implementation is a small subset of Introspection class methods, it doesn't implement the full interface.

Usage

Using as a java.beans replacement

  1. Add a Maven Dependency
<dependency>
    <groupId>com.github.panga</groupId>
    <artifactId>java-beans-lite</artifactId>
    <version>1.0.2</version>
</dependency>
  1. Find all ocurrences of import java.beans and replace with import lite.beans.

Contributors

License

Apache License 2.0