Введение

Java AWT Native Interface (JAWT) – это интерфейс для языка программирования Java, который позволяет библиотекам рендеринга, скомпилированным в нативный код, рисовать непосредственно на поверхности рисования объектов Java Abstract Window Toolkit (AWT). Java Native Interface (JNI) позволяет разработчикам добавлять платформенно-зависимую функциональность в приложения Java. JNI позволяет разработчикам добавлять критически важные по времени операции, такие как математические вычисления и 3D-рендеринг. Ранее нативный 3D-рендеринг был сложной задачей, поскольку нативный код не имел доступа к графическому контексту. AWT Native Interface разработан для предоставления разработчикам доступа к AWT Canvas для непосредственного рисования с использованием нативного кода. Фактически, расширение Java 3D API к стандартному Java SE JDK в значительной степени опирается на AWT Native Interface для рендеринга 3D-объектов в Java. AWT Native Interface очень похож на JNI, и этапы его использования аналогичны этапам JNI. Подробное описание техник JNI, используемых AWT Native Interface, можно найти в статье Java Native Interface. AWT Native Interface был добавлен в платформу Java с версией J2SE 1.3 ("Kestrel").

Шаги нативной интерфейса AWT

Полный пример использования этой технологии доступен на ВикиКнигах (см. ссылку ниже). Подробный пример, демонстрирующий эту технологию, также доступен на ВикиКнигах (см. ссылку ниже). Для начала создается Java-приложение. В статье объясняется использование Java Native Interface. Ключевое слово `native` и метод `loadLibrary` являются неотъемлемыми компонентами, а метод `paint` вызывается, когда поток диспетчеризации событий AWT перерисовывает экран. После создания Java-приложения обычно генерируется заголовочный файл C++. Подробные объяснения можно найти в документации Java Native Interface. Далее, нативный код C++ реализуется, как правило, в файле с именем "NativeSideCanvas.cpp", и компилируется в библиотеку. Дополнительная информация об этом процессе приведена в документации Java Native Interface (JNI). После сборки программы её можно запустить как обычно. При запуске файла должно появиться окно, отображающее, например, нарисованный прямоугольник. Подробные инструкции можно найти в документации Java Native Interface. Важно отметить, что AWT Native Interface требует наличия файла "jawt.dll" (или "jawt.so") для работы вместе с приложением. Самый простой способ обеспечить это – скопировать файл "jawt.dll", который обычно находится в каталоге /jre/bin в пути установки JDK.

Местная живопись

Можно рисовать, как будто это родное приложение. В Windows, JVM передаст HWND и другую информацию об окне в родное приложение, чтобы оно "знало", куда рисовать. Оно может использовать GDI для отрисовки прямоугольника. Информация об окне, необходимая родной стороне, будет содержаться в структуре JAWT Win32DrawingSurfaceInfo (в зависимости от операционной системы), которую можно получить следующей строкой: