Проект Panama: связь JVM и нативного кода
Мы улучшаем и расширяем связи между виртуальной машиной Java и чётко определёнными, но «внешними» (не-Java) API, в том числе многими интерфейсами, которые часто используют программисты на C.
Для этого проект Panama будет включать большинство или все из следующих компонентов:
- вызов нативных функций из JVM
- доступ к нативным данным из JVM или внутри кучи JVM
- новые схемы размещения данных в куче JVM
- определение нативных метаданных для JVM
- инструменты извлечения API из заголовочных файлов (jextract)
- API для управления нативными библиотеками
- «хуки» интерпретатора и среды выполнения, ориентированные на нативный код
- «хуки» разрешения классов и методов
- JIT-оптимизации, ориентированные на нативный код
- инструменты или промежуточные обёртки для обеспечения безопасности
- исследовательская работа с нативными библиотеками, которые трудно интегрировать
Сообщество
Спонсор проекта — группа HotSpot.
- Рассылки и новости
- panama-dev — Foreign Function & Memory API, Vector API
- jextract-dev — инструмент jextract
- Следите за последними новостями разработки Panama на Inside.java
- Проектная документация
- Доступ к внешней памяти в Panama
- Поддержка внешних функций в Panama
- Примеры использования jextract в Panama
- ранний обзор проблемной области: the isthmus in the VM
- JEP
- Доклады
Организация репозиториев
Проект Panama предназначен для развития ряда компонентов, которые в итоге войдут в JDK путём отобранного слияния (curated merge). Возможности проекта Panama активно разрабатываются в следующих репозиториях:
- Поддержка внешнего кода в Panama, которая добавляет поддержку доступа к внешней памяти, а также вызовов внешних функций;
- Поддержка векторов в Panama, которая добавляет в Java поддержку векторизации с помощью интринсиков JVM; и
- jextract — инструмент, который автоматически генерирует привязки Java по заголовочным файлам нативных библиотек.
Старый репозиторий Panama также доступен здесь, хотя мы не планируем вести в нём дальнейшую работу; поэтому использовать этот репозиторий не следует (в будущем мы, возможно, обозначим это явно, пометив старый репозиторий как доступный только для чтения).