java-beans-lite

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

License

License

Categories

Categories

Java Languages
GroupId

GroupId

com.github.panga
ArtifactId

ArtifactId

java-beans-lite
Last Version

Last Version

1.0.2
Release Date

Release Date

Type

Type

jar
Description

Description

java-beans-lite
Lightweight and fast java.beans.Introspector implementation used to remove dependency on java.desktop module for Bean Introspection
Project URL

Project URL

https://github.com/panga/java-beans-lite
Source Code Management

Source Code Management

https://github.com/panga/java-beans-lite.git

Download java-beans-lite

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.panga/java-beans-lite/ -->
<dependency>
    <groupId>com.github.panga</groupId>
    <artifactId>java-beans-lite</artifactId>
    <version>1.0.2</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.panga/java-beans-lite/
implementation 'com.github.panga:java-beans-lite:1.0.2'
// https://jarcasting.com/artifacts/com.github.panga/java-beans-lite/
implementation ("com.github.panga:java-beans-lite:1.0.2")
'com.github.panga:java-beans-lite:jar:1.0.2'
<dependency org="com.github.panga" name="java-beans-lite" rev="1.0.2">
  <artifact name="java-beans-lite" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.panga', module='java-beans-lite', version='1.0.2')
)
libraryDependencies += "com.github.panga" % "java-beans-lite" % "1.0.2"
[com.github.panga/java-beans-lite "1.0.2"]

Dependencies

test (2)

Group / Artifact Type Version
junit : junit jar 4.12
org.hamcrest : hamcrest-core jar 1.3

Project Modules

There are no modules declared in this project.

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

Versions

Version
1.0.2
1.0.1
1.0.0