Обновить

Первый предварительный релиз порта Foreign Function & Memory API для Android.

С выпуском стабильной версии JDK 22 в конце марта, вышла окончательная версия FFM API — современного переосмысления доступа к нативной памяти и функциям. Примечательно, что его история начиналась ещё в JDK 14 несколько лет назад, тогда же я и обратил на него своё внимание. Мне стало интересно, возможно ли без поддержки со стороны платформы полноценное портирование этого API, и ответ — ДА!

На скриншоте выше - пример из официальной документации, запущенный на android 8.0. В нём происходит вызов функции qsort из libc, при этом один из параметров — указатель на функцию сравнения. С помощью метода upcallStub можно создать указатель на MethodHandle как на нативную функцию, что и демонстрирует пример. Полная документация исходного апи доступна на официальном сайте oracle

Отдельно отмечу отличия:

  • Полностью воссоздать API не получилось т.к. до android 9.0 отсутствует его важный компонент — класс VarHandle, поэтому был создан другой класс с теми же методами, но без полиморфного поведения (чуть хуже оптимизация)

  • MemoryLayout`ы нулевого размера не разрешены (в исходном варианте их поведение не совпадает с фактическим в компиляторах C и C++)

  • Временно не работают upcall вызовы из потоков, не подключённых к jvm. Скоро исправлю, но ещё не придумал оптимальный путь

  • Вернул методы MemoryLayout.valueLayout и paddedStructLayout. Не знаю почему их убрали в конечной версии

  • Возможно что-то ещё

Весь исходный код доступен на github

Теги:
Всего голосов 7: ↑7 и ↓0+7
Комментарии1

Более 100 000 вакансий: полный анализ IT‑рынка России в 2026 году. И почему hh.ru нас обманывает?

Привет, Хабр! (И тебе, IT-шник, который хочет разобраться, что в 2026 вообще здесь происходит? Сейчас разберёмся, но легче тебе от этого не станет).

Сегодня будем препарировать весь IT рынок России на более чем 100 тысяч вакансий со всевозможных площадок. По-настоящему полная и честная аналитика. С графиками, цифрами и верой в светлое будущее...

Здесь будет всё, зарплаты, актуальные стеки и то что уже никому не нужно, прогнозы, тренды, и многое другое, будет интересно...

Более 100 000 вакансий: полный анализ IT‑рынка России в 2026 году. И почему hh.ru нас обманывает?

Публикации