Natywny interfejs Java AWT
Java AWT Native Interface ( jawt ) to interfejs języka programowania Java , który umożliwia renderowanie bibliotek skompilowanych do kodu natywnego w celu rysowania bezpośrednio na powierzchni rysunkowej
obiektu Java Abstract Window Toolkit (AWT) Canvas.
Java Native Interface (JNI) umożliwia programistom dodawanie funkcji zależnych od platformy do aplikacji Java . JNI umożliwia programistom dodawanie krytycznych czasowo operacji, takich jak obliczenia matematyczne i renderowanie 3D . Wcześniej natywne renderowanie 3D było technicznie trudne, ponieważ natywny kod nie miał dostępu do kontekstu graficznego. Natywny interfejs AWT ma na celu zapewnienie programistom dostępu do płótna AWT
w celu bezpośredniego rysowania za pomocą natywnego kodu. W rzeczywistości Java 3D API do standardowego Java SE JDK w dużej mierze opiera się na natywnym interfejsie AWT do renderowania obiektów 3D w Javie. Natywny interfejs AWT jest bardzo podobny do JNI, a kroki są w rzeczywistości takie same jak w przypadku JNI. Zobacz Java Native Interface , aby uzyskać wyjaśnienie technik JNI stosowanych przez AWT Native Interface. Natywny interfejs AWT został dodany do platformy Java wraz z wersją J2SE 1.3 („Kestrel”).
Kroki natywnego interfejsu AWT
Kompletny przykład tej technologii jest dostępny na Wikibooks (patrz link poniżej).
Utwórz aplikację w Javie
Zobacz artykuł Java Native Interface , aby uzyskać wyjaśnienie słowa kluczowego native
i metody loadLibrary()
. Metoda paint()
zostanie po prostu wywołana, gdy wątek wywołujący zdarzenie AWT „przemaluje” ekran.
Utwórz plik nagłówkowy C++
Utwórz plik nagłówkowy C++ w zwykły sposób. (Zobacz Java Native Interface, aby uzyskać pełniejsze wyjaśnienia).
Zaimplementuj natywny kod C++
Wpisz to w pliku o nazwie „NativeSideCanvas.cpp” i skompiluj do biblioteki. Zobacz Java Native Interface (JNI), aby uzyskać pełniejsze wyjaśnienie. (Aby zapoznać się Solaris i innymi systemami operacyjnymi, zobacz łącza poniżej).
Uruchom program
Należy uruchomić plik jak zwykle. Powinno się wtedy zobaczyć okienko z narysowanym w nim np. prostokątem. (Patrz Java Native Interface, aby uzyskać pełne instrukcje).
Uwaga: Można zauważyć, że natywny interfejs AWT wymaga do działania aplikacji „jawt.dll” (lub „jawt.so”), więc najłatwiejszym sposobem na to jest skopiowanie „jawt.dll”. (powinien znajdować się w ścieżce pliku .../jre/bin ścieżki instalacyjnej JDK.) [ Potrzebne źródło ]
Malarstwo rodzime
Można malować tak, jakby to była natywna aplikacja. W systemie Windows JVM przekaże HWND i inne informacje o oknie do natywnej aplikacji, dzięki czemu aplikacja będzie „wiedzieć”, gdzie rysować. Może użyć GDI do narysowania prostokąta. Informacje o oknie, których potrzebuje strona natywna, będą znajdować się w JAWT_Win32DrawingSurfaceInfo
(w zależności od systemu operacyjnego ), którą można pobrać za pomocą następującego wiersza: dsi_win = ( JAWT_Win32DrawingSurfaceInfo * ) dsi -> platformInfo ;