Foreign memory access with classes
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Tue Nov 8 10:44:17 UTC 2022
I believe adding Java syntax to model objects backed by memory segments
might be pushing things a little too far. From a pedagogical perspective
you would now have to explain to _every_ Java developers that there are
two different kinds of objects, plain and native, and the rules which
govern their access would be different (plain objects are
garbage-collected, native objects are not).
Seems like a nightmare, for a relatively little pay off. Note that, if
you declare a record class with components X and Y, it is relatively
easy to construct a function that can read a segment, with given struct
layout into a record with matching components. I believe JPassport [1]
does something in this direction. With something like this you get
basically 90% of what you are aiming for, without the need to change the
language by adding a new keyword, and making the programming model more
complex for all the developers out there, including those who do not
care about off-heap access.
Cheers
Maurizio
[1] - https://github.com/boulder-on/JPassport/
On 08/11/2022 06:52, Red IO wrote:
> I just had a crazy idea on how to make foreign memory access work and
> feel like java native class member access.
> The idea is that you define special classes maybe with an interface or
> a special class keyword. This class can then be "constructed" using a
> MemorySegment being bound by its special and temporal bounds. The
> object would be either null or every memory access throws an exception
> when the bounds are breached. The class would be implicitly final and
> would extend a class Native.
> This could look something like this :
>
> //c struct
> typedef struct {
> int x;
> int y;
> } Point;
>
> //java native class
> public native class Point {
>
> int x;
> int y;
>
> //implicit and forced private constructor
> //normal creation would make things difficult
> }
>
> MemorySegment data =... //native memory
> Point p = data.object(Point.class);
>
More information about the panama-dev
mailing list