awesome-repositories.com
Blog
awesome-repositories.com

Descubre los mejores repositorios open-source con nuestra búsqueda potenciada por IA.

ExplorarBúsquedas curadasAlternativas open-sourceSoftware autohospedableBlogMapa del sitio
ProyectoAcerca deCómo clasificamosPrensaServidor MCP
Aviso legalPrivacidadTérminos
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
java-native-access avatar

java-native-access/jna

0
View on GitHub↗
8,916 estrellas·1,678 forks·Java·5 vistas

Jna

JNA is a foreign function interface and native memory mapper that allows Java applications to call functions in shared native libraries without writing custom JNI wrapper code. It serves as a JNI alternative framework for invoking C functions and mapping native data structures using high-level interfaces.

The library distinguishes itself through its ability to translate Java objects and primitives into C-style structs, unions, and pointers for cross-platform memory exchange. On Windows, it provides a dedicated toolkit for interacting with Component Object Model objects using both early and late binding.

The framework covers broad capability areas including native library integration, runtime symbol resolution, and data marshaling for complex memory layouts. It provides tools for native callbacks, shared library loading from system paths, and platform-specific API mappings for operating system tasks. Diagnostic features are included for library loading, system error retrieval, and native crash protection.

The project supports compiling native library components for various device architectures on the Android platform using standard native development kits.

Features

  • Native Function Invocations - JNA allows the invocation of functions within shared native libraries across different operating systems without writing custom JNI wrapper code.
  • Native Library Integrations - Enables calling functions in shared native libraries from Java without writing custom JNI wrapper code.
  • Native Data Marshallers - Converts complex Java objects and structures into contiguous byte buffers matching C-style memory layouts.
  • JNI Alternatives - Provides a high-level interface for invoking C functions and mapping native data structures as an alternative to JNI.
  • Direct Memory Access - Provides the ability to read and write raw memory addresses to handle native pointers and global variables.
  • Dynamic Library Loading - Locates and loads native libraries from system paths, environment variables, or bundled classpath resources.
  • Native Memory Mappers - Translates Java objects and primitives into C-style structs, unions, and pointers for cross-platform memory exchange.
  • Platform API Access - Utilizes pre-defined mappings for common system functions to simplify cross-platform native access.
  • Platform Library Mappings - Provides built-in mappings of common native functions to simplify access to platform-specific system calls.
  • System Call Interfacing - Provides a unified interface for executing low-level operating system calls across different platforms.
  • Function-Pointer Callbacks - Enables mapping Java methods to native function pointers, allowing external libraries to trigger logic within the JVM.
  • Foreign Function Interfaces - Binds Java method signatures to native symbols in shared libraries across different operating systems.
  • Native Callbacks - Maps high-level methods to C-style function pointers so native libraries can trigger logic within the runtime.
  • Data Structure Mappings - Represents C-style structs, nested structures, and arrays to exchange complex data with native libraries.
  • Native Memory Lifecycle Management - Handles pointers, by-reference arguments, and buffers to exchange raw memory blocks between runtime and native layers.
  • Native Access Libraries - Serves as a comprehensive library for calling native shared libraries from Java without custom JNI glue code.
  • Method Interception Proxies - Uses dynamic proxy systems to intercept method calls and translate arguments into native memory representations.
  • Native Bridges - Provides a low-level bridge using the Java Native Interface to execute native code without custom wrappers.
  • Native Callbacks - Allows Java methods to be passed as function pointers so native libraries can trigger logic within the runtime.
  • COM Component Integration - Supports early and late binding for COM objects and generates code from Typelibs.
  • Component Object Model Handlers - Provides interfaces for invoking registered Windows Component Object Model handlers.
  • COM Integration - Provides a dedicated toolkit for interacting with Windows Component Object Model objects using early and late binding.
  • Native Crash Protection - Intercepts memory access errors during native calls to throw exceptions instead of crashing the virtual machine.
  • Raw Memory Allocation - Allocates contiguous blocks of memory for arrays of structures to be consumed by native functions.
  • Runtime Symbol Resolution - Locates and binds native function addresses within shared libraries using platform-specific loading mechanisms.
  • Direct Native Method Mapping - Binds native library functions to static or instance methods to achieve higher execution performance than standard mapping.
  • Dynamic Native Invocation - Enables invoking functions from shared libraries using direct lookups without defining static interfaces.
  • Native String Marshaling - Converts strings to NUL-terminated char or wchar_t arrays and copies returned native strings back into the runtime.
  • Calling Conventions - Translates interface method signatures into native function names based on platform-specific calling conventions.
  • Global Variable Mappings - Obtains memory addresses of global variables in a native library to read or write their values.
  • Union Mappings - Supports defining classes that represent C-style unions and specifying the active field.
  • Native Function Pointer Invocations - JNA supports calling functions referenced by pointers found within native structures by automatically generating proxy wrappers.
  • Native Method Registration - Reduces execution overhead by creating optimized code stubs for native methods to avoid runtime reflection.
  • Native Method Resolution Strategies - Provides custom mappers to resolve naming mismatches when looking up native function symbols.
  • Native Symbol Mapping - Connects method signatures to native symbols using direct name matching or custom mapping for coding conventions.
  • Reference Argument Passing - Supports passing pointers to types to native functions to capture values updated by the external library.
  • Type Mapping Registries - Maintains a mapping between high-level data types and native representations based on platform calling conventions.
  • Native Error Retrieval - Captures native error codes from system calls and exposes them as exceptions or numeric values.
  • Desarrollo móvil - Interface for calling native libraries without JNI.

Historial de estrellas

Gráfico del historial de estrellas de java-native-access/jnaGráfico del historial de estrellas de java-native-access/jna

Búsqueda con IA

Explora más repositorios increíbles

Describe lo que necesitas en lenguaje sencillo: la IA clasifica miles de proyectos open-source curados por relevancia.

Start searching with AI

Alternativas open-source a Jna

Proyectos open-source similares, clasificados según cuántas características comparten con Jna.
  • bytedeco/javacppAvatar de bytedeco

    bytedeco/javacpp

    4,697Ver en GitHub↗

    JavaCPP is a JNI C++ bridge and foreign function interface that provides a binding generator, a native library loader, and a native memory manager. It automates the creation of Java wrappers around native C++ headers and shared libraries to enable interoperability between the two languages. The project features a C++ binding generator that parses header files to automatically produce the necessary glue code and interfaces for calling native functions. It includes a native library loader that locates and extracts platform-specific binaries from the classpath into a local cache for runtime exec

    Javacc-plus-pluscpp
    Ver en GitHub↗4,697
  • node-ffi/node-ffiAvatar de node-ffi

    node-ffi/node-ffi

    4,322Ver en GitHub↗

    node-ffi is a foreign function interface library for Node.js that enables calling functions from native C dynamic libraries without writing manual C++ bindings. It serves as a system for loading shared objects and DLLs into process memory, translating JavaScript values into binary representations, and executing external binaries at runtime. The project utilizes a wrapper around the libffi library to construct call frames and execute native functions with dynamic arguments. It distinguishes itself by providing a native memory manager for allocating raw pointers and a mapping system that connec

    JavaScript
    Ver en GitHub↗4,322
  • janet-lang/janetAvatar de janet-lang

    janet-lang/janet

    4,308Ver en GitHub↗

    Janet is a Lisp-based dynamic programming language featuring a register-based bytecode virtual machine and an embeddable scripting engine. It functions as a fiber-based concurrency runtime and includes a parsing engine based on Parsing Expression Grammars. The project is distinguished by its ability to be integrated into C or C++ applications via a minimal header interface. It utilizes a Lisp-style macro system for compile-time code transformation and employs prototype-based table inheritance for object-oriented behavior. The runtime covers a broad set of capabilities, including asynchronous

    Ccfunctional-languageimperative-language
    Ver en GitHub↗4,308
  • flutter-team-archive/pluginsAvatar de flutter-team-archive

    flutter-team-archive/plugins

    17,710Ver en GitHub↗

    This project is a collection of official plugin packages and a native integration library designed to provide a consistent interface for accessing hardware and software functionality across different mobile and desktop platforms. It serves as a native platform bridge, enabling cross-platform applications to invoke native code and manage operating system dependencies. The project utilizes a federated plugin architecture, splitting plugins into common interfaces and separate platform implementations to allow for independent development and extension. It further supports native integration throu

    Dartandroiddartflutter
    Ver en GitHub↗17,710
Ver las 30 alternativas a Jna→

Preguntas frecuentes

¿Qué hace java-native-access/jna?

JNA is a foreign function interface and native memory mapper that allows Java applications to call functions in shared native libraries without writing custom JNI wrapper code. It serves as a JNI alternative framework for invoking C functions and mapping native data structures using high-level interfaces.

¿Cuáles son las características principales de java-native-access/jna?

Las características principales de java-native-access/jna son: Native Function Invocations, Native Library Integrations, Native Data Marshallers, JNI Alternatives, Direct Memory Access, Dynamic Library Loading, Native Memory Mappers, Platform API Access.

¿Qué alternativas de código abierto existen para java-native-access/jna?

Las alternativas de código abierto para java-native-access/jna incluyen: bytedeco/javacpp — JavaCPP is a JNI C++ bridge and foreign function interface that provides a binding generator, a native library loader,… node-ffi/node-ffi — node-ffi is a foreign function interface library for Node.js that enables calling functions from native C dynamic… janet-lang/janet — Janet is a Lisp-based dynamic programming language featuring a register-based bytecode virtual machine and an… flutter-team-archive/plugins — This project is a collection of official plugin packages and a native integration library designed to provide a… crystal-lang/crystal — Crystal is a statically typed, compiled programming language designed for high performance and memory safety. It… nodejs/node-addon-api — This project provides a header-only C++ wrapper for the Node-API, serving as a framework for building high-performance…