3 ms·
Is it possible to have unmanaged code in Java at all… or you mean linking libs and exposing them through Java API in the lang?
by larodi 3y ago
Is it possible to have unmanaged code in Java at all… or you mean linking libs and exposing them through Java API in the lang?
- rfoo 3y agoAh, I meant Java code manipulating off-heap memory. For Java I don't think there's a way to mix managed and unmanaged code like you do in C#/C++ CLR.
- neonsunset 3y agoIn C# you usually don't want to mix in C++. Manipulating off-heap memory is indeed easy - nowadays pointers to both object interiors, stack and unmanaged memory can be represented as `ref T` where T is byte, int, etc. These are then subsequently wrapped by `Span<T>` and `ReadOnlySpan<T>` respectively. This way a span can be a slice of memory that can have any origin: var fromStack1 = (stackalloc byte[32]); var fromStack2 = (Span<byte>)[0x20, 0x20, 0x20, 0x20]; var fromHeap = new byte[32].AsSpan(); unsafe { var ptr = NativeMemory.Alloc(32); var fromMalloc = new Span<byte>(ptr, 32); // Don't forget to free :) }
- pjmlp 3y agoPanama has helped into that direction, it isn't like C# though, for feature parity we will eventually need Valhalla, which since they want to keep existing JARs working, it is taking its time. Ignoring the type systems from Eiffel, Objective-C, Oberon and Modula-3 linage, even though they were inspirations for Java, has been shown to have been a bad decision in hindsight.