Class files in ByteBuffer
David Lloyd
david.lloyd at redhat.com
Mon Mar 10 17:38:12 UTC 2025
When defining a class in the JDK, one may either use a byte array or a byte
buffer to hold the contents of the class. The latter is useful when (for
example) a JAR file containing uncompressed classes is mapped into memory.
Thus, some class loaders depend on this form of the API for class
definition.
If I were to supplement such a class loader with a class transformation
step based on the class file API, I would have to copy the bytes of each
class on to the heap as a byte[] before I could begin parsing it. This is
potentially expensive, and definitely awkward.
After transformation, it doesn't really matter if you have a byte[] or
ByteBuffer because either way, the class can be defined directly.
It would be nice if the class file parser could accept either a byte[] or a
ByteBuffer. I did a quick bit of exploratory work and it looks like porting
the code to read from a ByteBuffer instead of a byte[] (using
ByteBuffer.wrap() for the array case) would be largely straightforward
*except* for the code which parses UTF-8 constants into strings. Also there
could be some small performance differences (maybe positive, maybe
negative) depending on how the buffer is accessed.
Is this something that might be considered?
--
- DML • he/him
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/classfile-api-dev/attachments/20250310/d78ff85d/attachment.htm>
More information about the classfile-api-dev
mailing list