{"id":23550396,"url":"https://github.com/coralblocks/coralcpp","last_synced_at":"2025-04-28T10:51:41.907Z","repository":{"id":159981624,"uuid":"634440536","full_name":"coralblocks/CoralCpp","owner":"coralblocks","description":"Call Java from C++ and C++ from Java with a variety of old and new projects like JNI, JNA, JNR, FFM, JExtract, BridJ, GraalVM, JNI-Bind, etc.","archived":false,"fork":false,"pushed_at":"2024-12-30T17:39:18.000Z","size":10634,"stargazers_count":34,"open_issues_count":0,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-30T08:51:17.060Z","etag":null,"topics":["bridj","cpp","ffm","graalvm","graalvm-native-image","java","jextract","jna","jni","jni-bind","jnr","jnr-ffi","jvm"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coralblocks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-30T05:56:42.000Z","updated_at":"2025-03-05T13:57:22.000Z","dependencies_parsed_at":"2024-01-16T03:17:21.832Z","dependency_job_id":"484e5448-c4df-4fef-95ab-6342b13c0f66","html_url":"https://github.com/coralblocks/CoralCpp","commit_stats":null,"previous_names":["coralblocks/coralcpp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coralblocks%2FCoralCpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coralblocks%2FCoralCpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coralblocks%2FCoralCpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coralblocks%2FCoralCpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coralblocks","download_url":"https://codeload.github.com/coralblocks/CoralCpp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251300350,"owners_count":21567433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bridj","cpp","ffm","graalvm","graalvm-native-image","java","jextract","jna","jni","jni-bind","jnr","jnr-ffi","jvm"],"created_at":"2024-12-26T10:16:06.105Z","updated_at":"2025-04-28T10:51:41.897Z","avatar_url":"https://github.com/coralblocks.png","language":"C++","readme":"# CoralCpp\nCall Java from C++ and C++ from Java with a variety of old and new projects like JNI, JNA, JNR, FFM, JExtract, BridJ, GraalVM, JNI-Bind, etc.\n\nThis project is intended to be used as a quick reference on how to get going with Java and C++ integration, from both sides. It is a _step-by-step_ guide, in the form of shell scripts (for Linux and MacOS) to compile and run the C++ and Java examples, so you don't have to guess anything. Just see \"_Hello World!_\" popping up in your terminal to celebrate! :champagne: :tada: :confetti_ball:\n\n\u003cpre\u003e\nFeel free to use our official \u003ca href=\"https://hub.docker.com/r/coralblocks/coralcpp\"\u003eDocker image\u003c/a\u003e for Linux/arm64 available on DockerHub\n\u003c/pre\u003e\n\n#### MacOS\n```\n$ uname -a; sw_vers | grep ProductVersion; arch\nDarwin MacBook-Air.local 22.6.0 Darwin Kernel Version 22.6.0: Wed Jul  5 22:17:35 PDT 2023; root:xnu-8796.141.3~6/RELEASE_ARM64_T8112 arm64\nProductVersion:\t\t13.5.2\narm64\n\n$ java -version\njava version \"23.0.1\" 2024-10-15\nJava(TM) SE Runtime Environment Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11-jvmci-b01)\nJava HotSpot(TM) 64-Bit Server VM Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11-jvmci-b01, mixed mode, sharing)\n\n$ clang++ --version\nHomebrew clang version 18.1.8\nTarget: arm64-apple-darwin22.6.0\nThread model: posix\nInstalledDir: /opt/homebrew/opt/llvm@18/bin\n\n$ native-image --version\nnative-image 23.0.1 2024-10-15\nGraalVM Runtime Environment Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11-jvmci-b01)\nSubstrate VM Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11, serial gc, compressed references)\n\n$ jextract --version\njextract 22\nJDK version 22+35-2369\nLibClang version clang version 13.0.0\n```\n#### Linux\n```\n$ (uname -a; cat /etc/issue; arch) | grep -v '^$'\nLinux 2d4c02259081 4.15.0-188-generic #199-Ubuntu SMP Wed Jun 15 20:42:56 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux\nUbuntu 22.04.5 LTS \\n \\l\nx86_64\n\n$ java -version\njava version \"23.0.1\" 2024-10-15\nJava(TM) SE Runtime Environment Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11-jvmci-b01)\nJava HotSpot(TM) 64-Bit Server VM Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11-jvmci-b01, mixed mode, sharing)\n\n$ clang++ --version\nUbuntu clang version 18.1.8 (++20240731024944+3b5b5c1ec4a3-1~exp1~20240731145000.144)\nTarget: x86_64-pc-linux-gnu\nThread model: posix\nInstalledDir: /usr/bin\n\n$ native-image --version\nnative-image 23.0.1 2024-10-15\nGraalVM Runtime Environment Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11-jvmci-b01)\nSubstrate VM Oracle GraalVM 23.0.1+11.1 (build 23.0.1+11, serial gc, compressed references)\n\n$ jextract --version\njextract 22\nJDK version 22+35-2369\nLibClang version clang version 13.0.0\n```\n\n## Java calling C++\n\n### [JNI](https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/jniTOC.html)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/jni/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jni_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni/runJava.sh) the Java code\n```\n# For Mac\n$ ./bin/mac/jni/all.sh 2 Awesome\nHello CoralBlocks from JNI! =\u003e Awesome\nHello CoralBlocks from JNI! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni/runJava.sh) the Java code\n```\n# For Linux\n$ ./bin/linux/jni/all.sh 2 Awesome\nHello CoralBlocks from JNI! =\u003e Awesome\nHello CoralBlocks from JNI! =\u003e Awesome\n```\n\n### [JNA](https://github.com/java-native-access/jna)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/jna/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jna_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jna/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jna/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jna/runJava.sh) the Java code\n```\n# For Mac\n$ ./bin/mac/jna/all.sh 2 Awesome\nHello CoralBlocks from JNA! =\u003e Awesome\nHello CoralBlocks from JNA! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jna/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jna/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jna/runJava.sh) the Java code\n```\n# For Linux\n$ ./bin/linux/jna/all.sh 2 Awesome\nHello CoralBlocks from JNA! =\u003e Awesome\nHello CoralBlocks from JNA! =\u003e Awesome\n```\n\n### [JNR](https://github.com/jnr/jnr-ffi)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/jnr/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jnr_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jnr/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jnr/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jnr/runJava.sh) the Java code\n```\n# For Mac\n$ ./bin/mac/jnr/all.sh 2 Awesome\nHello CoralBlocks from JNR! =\u003e Awesome\nHello CoralBlocks from JNR! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jnr/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jnr/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jnr/runJava.sh) the Java code\n```\n# For Linux\n$ ./bin/linux/jnr/all.sh 2 Awesome\nHello CoralBlocks from JNR! =\u003e Awesome\nHello CoralBlocks from JNR! =\u003e Awesome\n```\n\n### [FFM](https://docs.oracle.com/en/java/javase/21/core/foreign-function-and-memory-api.html)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/ffm/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_ffm_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/ffm/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/ffm/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/ffm/runJava.sh) the Java code\n```\n# For Mac\n$ ./bin/mac/ffm/all.sh 2 Awesome\nHello CoralBlocks from FFM! =\u003e Awesome\nHello CoralBlocks from FFM! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/ffm/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/ffm/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/ffm/runJava.sh) the Java code\n```\n# For Linux\n$ ./bin/linux/ffm/all.sh 2 Awesome\nHello CoralBlocks from FFM! =\u003e Awesome\nHello CoralBlocks from FFM! =\u003e Awesome\n```\n\n### [JExtract](https://github.com/openjdk/jextract)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/ffm_jextract/HelloWorld.java)\n- Check the [C++ header](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_ffm_jextract_HelloWorld.h)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_ffm_jextract_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/ffm_jextract/compileCpp.sh) the C++ code\n- [Generate](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/ffm_jextract/generateJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/ffm_jextract/compileJava.sh) the Java code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/ffm_jextract/runJava.sh) the Java code\n```\n# For Mac\n$ ./bin/mac/ffm_jextract/all.sh 2 Awesome\nHello CoralBlocks from JExtract! =\u003e Awesome\nHello CoralBlocks from JExtract! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/ffm_jextract/compileCpp.sh) the C++ code\n- [Generate](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/ffm_jextract/generateJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/ffm_jextract/compileJava.sh) the Java code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/ffm_jextract/runJava.sh) the Java code\n```\n# For Linux\n$ ./bin/linux/ffm_jextract/all.sh 2 Awesome\nHello CoralBlocks from JExtract! =\u003e Awesome\nHello CoralBlocks from JExtract! =\u003e Awesome\n```\n\n### [BridJ](https://github.com/nativelibs4java/BridJ)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/bridj/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_bridj_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/bridj/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/bridj/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/bridj/runJava.sh) the Java code\n```\n# For Mac\n$ ./bin/mac/bridj/all.sh 2 Awesome\nHello CoralBlocks from BridJ! =\u003e Awesome\nHello CoralBlocks from BridJ! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/bridj/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/bridj/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/bridj/runJava.sh) the Java code\n```\n# For Linux\n$ ./bin/linux/bridj/all.sh 2 Awesome\nHello CoralBlocks from BridJ! =\u003e Awesome\nHello CoralBlocks from BridJ! =\u003e Awesome\n```\n\n## C++ calling Java\n\n### [JNI](https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/invocation.html)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/jni_jvm/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jni_jvm_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_jvm/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_jvm/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_jvm/runCpp.sh) the C++ code\n```\n# For Mac\n$ ./bin/mac/jni_jvm/all.sh 2 Awesome\nHello CoralBlocks from JNI-JVM! =\u003e Awesome\nHello CoralBlocks from JNI-JVM! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_jvm/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_jvm/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_jvm/runCpp.sh) the C++ code\n```\n# For Linux\n$ ./bin/linux/jni_jvm/all.sh 2 Awesome\nHello CoralBlocks from JNI-JVM! =\u003e Awesome\nHello CoralBlocks from JNI-JVM! =\u003e Awesome\n```\n\n### [GraalVM](https://www.graalvm.org)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/graal/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_graal_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/graal/compileJava.sh) the Java code\n- [Generate](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/graal/nativeImage.sh) the native image\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/graal/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/graal/runCpp.sh) the C++ code\n```\n# For Mac\n$ ./bin/mac/graal/all.sh 2 Awesome\nHello CoralBlocks from GraalVM Native-Image! =\u003e Awesome\nHello CoralBlocks from GraalVM Native-Image! =\u003e Awesome\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/graal/compileJava.sh) the Java code\n- [Generate](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/graal/nativeImage.sh) the native image\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/graal/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/graal/runCpp.sh) the C++ code\n```\n# For Linux\n$ ./bin/linux/graal/all.sh 2 Awesome\nHello CoralBlocks from GraalVM Native-Image! =\u003e Awesome\nHello CoralBlocks from GraalVM Native-Image! =\u003e Awesome\n```\n\n## C++ calling Java which calls back C++\n\n### [JNI](https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/invocation.html)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/jni_callback/CallbackFromJava.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jni_callback_CallbackFromJava.cpp) that calls Java\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jni_callback_CallbackFromJavaSharedLib.cpp) that receives the callbacks from Java\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jni_callback_CallbackFromJavaSharedLib.h) header file for the C++ code above\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_callback/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_callback/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_callback/runCpp.sh) the C++ code\n```\n# For Mac\n$ ./bin/mac/jni_callback/all.sh 2\nReceived callback from Java: 1683119040946\nReceived callback from Java: 1683119040947\nJoin returned, exiting C++ code...\n```\n###### Linux\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_callback/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_callback/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_callback/runCpp.sh) the C++ code\n```\n# For Linux\n$ ./bin/linux/jni_callback/all.sh 2\nReceived callback from Java: 1683119062956\nReceived callback from Java: 1683119062957\nJoin returned, exiting C++ code...\n```\n\n## Java calling C++ which calls Java\n\n### [JNI-BIND](https://github.com/google/jni-bind)\n- Check the [Java code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/java/com/coralblocks/coralcpp/jni_bind/HelloWorld.java)\n- Check the [C++ code](https://github.com/coralblocks/CoralCpp/blob/main/src/main/c/com_coralblocks_coralcpp_jni_bind_HelloWorld.cpp)\n###### MacOS\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_bind/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_bind/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/mac/jni_bind/runJava.sh) the Java code\n```\n# For Mac\n$ ./bin/mac/jni_bind/all.sh 2 Awesome\nHello CoralBlocks from JNI-Bind! =\u003e Awesome\nHello CoralBlocks from JNI-Bind! =\u003e Awesome\n```\n###### Linux\n**NOTE:** For Linux make sure you have **libc++-dev** and **libc++abi-dev** installed.\n\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;`sudo apt-get install libc++-dev libc++abi-dev`\n\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_bind/compileJava.sh) the Java code\n- [Compile](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_bind/compileCpp.sh) the C++ code\n- [Run](https://github.com/coralblocks/CoralCpp/blob/main/bin/linux/jni_bind/runJava.sh) the Java code\n```\n# For Linux\n$ ./bin/linux/jni_bind/all.sh 2 Awesome\nHello CoralBlocks from JNI-Bind! =\u003e Awesome\nHello CoralBlocks from JNI-Bind! =\u003e Awesome\n```\n\n##### Pure JNI x JNI-Bind\n\n###### Pure JNI:\n```c++\njclass helloWorldClass = env-\u003eFindClass(\"com/coralblocks/coralcpp/jni_bind/HelloWorld\");\njmethodID helloWorldConstructor = env-\u003eGetMethodID(helloWorldClass, \"\u003cinit\u003e\", \"()V\");\njobject helloWorldObj = env-\u003eNewObject(helloWorldClass, helloWorldConstructor);\njmethodID sayHelloMethod = env-\u003eGetMethodID(helloWorldClass, \"sayHello\", \"(ILjava/lang/String;)V\");\nenv-\u003eCallVoidMethod(helloWorldObj, sayHelloMethod, x, msg);\n```\n\n###### JNI-Bind:\n```c++\nstatic constexpr jni::Class kClass {\n    \"com/coralblocks/coralcpp/jni_bind/HelloWorld\",\n    jni::Method {\n        \"sayHello\",\n        jni::Return \u003c void \u003e {},\n        jni::Params \u003c jint , jstring\u003e {}\n    }\n};\n\njni::LocalObject \u003c kClass \u003e helloWorld {}; // Constructs new instance.\nhelloWorld(\"sayHello\", x, msg);\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoralblocks%2Fcoralcpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoralblocks%2Fcoralcpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoralblocks%2Fcoralcpp/lists"}