Use OpenCV image-processing functions from a Java or Android app without writing any C++ glue code.
Call TensorFlow or CUDA GPU-computing code directly from a Java application via JavaCPP Presets.
Wrap any C++ library for Java by letting JavaCPP auto-generate the JNI connector instead of hand-coding it.
Add a high-performance C++ dependency to a Maven or Gradle project with a single dependency declaration.
| bytedeco/javacpp | spring-attic/spring-security-oauth | 981011512/-- | |
|---|---|---|---|
| Stars | 4,694 | 4,698 | 4,687 |
| Language | Java | Java | Java |
| Setup difficulty | hard | moderate | hard |
| Complexity | 4/5 | 3/5 | 5/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires a C++ compiler installed on the same machine, as some native compilation happens locally when building the bindings.
JavaCPP is a Java library that lets Java programs call code written in C++. Java and C++ are two different programming languages, and normally they cannot talk to each other directly. JavaCPP acts as a bridge, translating calls between them so that a Java application can use a C++ library as if it were a native part of the Java ecosystem. The need for this kind of bridge arises frequently in areas like computer vision, machine learning, and multimedia processing, where many high-performance libraries are written in C++. JavaCPP has already been used to wrap well-known C++ libraries including OpenCV (image processing), FFmpeg (video encoding), TensorFlow, and CUDA (GPU computing), among others. Those wrapped versions are available as a companion project called JavaCPP Presets. Under the hood, JavaCPP uses a standard Java mechanism called JNI (Java Native Interface) to communicate with native code. What JavaCPP adds on top of JNI is automatic generation of the connector code, so you do not have to write the tedious glue yourself. It handles a wide range of C++ features that are difficult to bridge, including templates, operator overloading, function pointers, virtual functions, inheritance, and memory management through shared pointers. To use JavaCPP in a project, you add it as a dependency through Maven, Gradle, or another standard Java build tool. It requires a Java installation (version 8 or newer) and a C++ compiler on the same machine, because some compilation happens locally when building the native bindings. It works on Linux, macOS, and Windows, and also supports Android. The project is available on Maven Central, which means it can be added to any Java project with a single dependency declaration. Documentation and examples are provided through a wiki, and community support is available via a mailing list and GitHub Discussions.
A Java library that lets your Java code call high-performance C++ libraries directly by automatically generating the bridging code, so you can use tools like OpenCV, FFmpeg, and TensorFlow from Java without writing glue code.
Mainly Java. The stack also includes Java, C++, JNI.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.