{"id":21402606,"url":"https://github.com/caoccao/javenode","last_synced_at":"2025-09-12T03:33:35.568Z","repository":{"id":57718099,"uuid":"400912604","full_name":"caoccao/Javenode","owner":"caoccao","description":"Javenode is Java + V8 + Node.js. It is a Node.js simulator with Java in V8.","archived":false,"fork":false,"pushed_at":"2025-01-02T23:21:10.000Z","size":855,"stargazers_count":66,"open_issues_count":2,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-09-02T18:43:42.144Z","etag":null,"topics":["android","engine","java","java-v8","javascript","javet","linux","macos","nodejs","v8","v8-javascript-engine","windows"],"latest_commit_sha":null,"homepage":"https://www.caoccao.com/Javenode/","language":"Java","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/caoccao.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":"caocao","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":"caoccao","otechie":null,"custom":["https://paypal.me/caoccao?locale.x=en_US"]}},"created_at":"2021-08-28T23:50:43.000Z","updated_at":"2025-08-13T11:23:09.000Z","dependencies_parsed_at":"2024-01-12T08:48:25.650Z","dependency_job_id":"749691b3-627f-40bc-931a-6d8079aac13b","html_url":"https://github.com/caoccao/Javenode","commit_stats":{"total_commits":69,"total_committers":2,"mean_commits":34.5,"dds":0.3623188405797102,"last_synced_commit":"c876418af8bcd0a03c5b9f7505ddc9ac6beb6acc"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/caoccao/Javenode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoccao%2FJavenode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoccao%2FJavenode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoccao%2FJavenode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoccao%2FJavenode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caoccao","download_url":"https://codeload.github.com/caoccao/Javenode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caoccao%2FJavenode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274748317,"owners_count":25341941,"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","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["android","engine","java","java-v8","javascript","javet","linux","macos","nodejs","v8","v8-javascript-engine","windows"],"created_at":"2024-11-22T15:39:28.986Z","updated_at":"2025-09-12T03:33:35.516Z","avatar_url":"https://github.com/caoccao.png","language":"Java","funding_links":["https://opencollective.com/caocao","https://issuehunt.io/r/caoccao","https://paypal.me/caoccao?locale.x=en_US"],"categories":[],"sub_categories":[],"readme":"Javenode\n========\n\n|Maven Central| |Discord| |Donate|\n\n|Linux Build|\n\n.. |Maven Central| image:: https://img.shields.io/maven-central/v/com.caoccao.javet/javenode?style=for-the-badge\n    :target: https://central.sonatype.com/artifact/com.caoccao.javet/javenode\n\n.. |Discord| image:: https://img.shields.io/discord/870518906115211305?label=join%20our%20Discord\u0026style=for-the-badge\n    :target: https://discord.gg/R4vvKU96gw\n\n.. |Donate| image:: https://img.shields.io/badge/Donate-Paypal-green?style=for-the-badge\n    :target: https://paypal.me/caoccao?locale.x=en_US\n\n.. |Linux Build| image:: https://github.com/caoccao/Javenode/actions/workflows/linux_build.yml/badge.svg\n    :target: https://github.com/caoccao/Javenode/actions/workflows/linux_build.yml\n\nJavenode is Java + V8 + Node.js. It is a Node.js simulator with Java in V8.\n\nJavenode is an extension of `Javet \u003chttps://github.com/caoccao/Javet\u003e`_ (Java + V8). It aims at simulating Node.js with Java in Javet V8 mode. Why? Because Javet V8 mode is much more secure than the Node.js mode, but lacks of some basic features, e.g. `setTimeout`, `setInterval`, etc. So, these **must-have** API can be found in Javenode.\n\n========================= ================= ================\nFeature                   Javet             Javenode\n========================= ================= ================\nExternal Dependencies     No                Yes\nPlatform Dependent        Yes               No\n========================= ================= ================\n\nIf you like my work, please **Star** this project. And, you may follow me `@sjtucaocao \u003chttps://twitter.com/sjtucaocao\u003e`_, or visit https://blog.caoccao.com/ or http://caoccao.blogspot.com/. And the official support channel is at `discord \u003chttps://discord.gg/R4vvKU96gw\u003e`_.\n\nMajor Features\n==============\n\n* Native Event Loop (vert.x)\n* Same Modules as Node.js\n* Modules\n    * console\n    * javet\n    * timers\n    * timers/promises\n\nQuick Start\n===========\n\nDependency\n----------\n\nMaven\n^^^^^\n\n.. code-block:: xml\n\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.caoccao.javet\u003c/groupId\u003e\n        \u003cartifactId\u003ejavenode\u003c/artifactId\u003e\n        \u003cversion\u003e0.8.0\u003c/version\u003e\n    \u003c/dependency\u003e\n\nGradle Kotlin DSL\n^^^^^^^^^^^^^^^^^\n\n.. code-block:: kotlin\n\n    implementation(\"com.caoccao.javet:javenode:0.8.0\")\n\nGradle Groovy DSL\n^^^^^^^^^^^^^^^^^\n\n.. code-block:: groovy\n\n    implementation 'com.caoccao.javet:javenode:0.8.0'\n\nHello Javenode (Static Import)\n------------------------------\n\n.. code-block:: java\n\n    try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime();\n         JNEventLoop eventLoop = new JNEventLoop(v8Runtime)) {\n        eventLoop.loadStaticModules(JNModuleType.Console, JNModuleType.Timers);\n        v8Runtime.getExecutor(\"const a = [];\\n\" +\n                \"setTimeout(() =\u003e a.push('Hello Javenode'), 10);\").executeVoid();\n        eventLoop.await();\n        v8Runtime.getExecutor(\"console.log(a[0]);\").executeVoid();\n    }\n\nHello Javenode (Dynamic Import)\n-------------------------------\n\n.. code-block:: java\n\n    try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime();\n         JNEventLoop eventLoop = new JNEventLoop(v8Runtime)) {\n        eventLoop.loadStaticModules(JNModuleType.Console);\n        eventLoop.registerDynamicModules(JNModuleType.TimersPromises);\n        v8Runtime.getExecutor(\n                \"import { setTimeout } from 'timers/promises';\\n\" +\n                        \"const a = [];\\n\" +\n                        \"setTimeout(10, 'Hello Javenode')\\n\" +\n                        \"  .then(result =\u003e a.push(result));\\n\" +\n                        \"globalThis.a = a;\").setModule(true).executeVoid();\n        eventLoop.await();\n        v8Runtime.getExecutor(\"console.log(a[0]);\").executeVoid();\n    }\n\nTODO\n====\n\n* To implement `fetch`\n* To implement `fs`\n\nLicense\n=======\n\n`APACHE LICENSE, VERSION 2.0 \u003cLICENSE\u003e`_\n\nDocuments\n=========\n\n* `Javet \u003chttps://github.com/caoccao/Javet\u003e`_\n* `Javenode Document Portal \u003chttps://www.caoccao.com/Javenode/\u003e`_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaoccao%2Fjavenode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaoccao%2Fjavenode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaoccao%2Fjavenode/lists"}