148. Introducing Panama’s architecture and terminology
When we talk about architecture, it helps to present a meaningful diagram, so here it is:
Figure 7.8: Project Panama architecture
This diagram reveals the interoperability of Panama’s components. The climax of this diagram is the Jextract tool. As you’ll see in this chapter, Jextract is a very handy tool capable of consuming the headers of native libraries and producing low-level Java native bindings. These bindings are the unit of work for two major APIs of Project Panama:
- Foreign Memory API – used to allocate/deallocate off-heap/on-heap memory
- Foreign Linker API – used to call foreign functions directly from Java and vice versa
The process described so far is entirely mechanical. When these APIs and the low-level Java native bindings are not enough for our tasks, then we can take things a step further and create a set of higher-level Java bindings. Of...