Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/caoccao/javenode
Javenode is Java + V8 + Node.js. It is a Node.js simulator with Java in V8.
https://github.com/caoccao/javenode
android engine java java-v8 javascript javet linux macos nodejs v8 v8-javascript-engine windows
Last synced: 3 days ago
JSON representation
Javenode is Java + V8 + Node.js. It is a Node.js simulator with Java in V8.
- Host: GitHub
- URL: https://github.com/caoccao/javenode
- Owner: caoccao
- License: apache-2.0
- Created: 2021-08-28T23:50:43.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-15T06:18:50.000Z (2 months ago)
- Last Synced: 2024-10-29T10:38:44.011Z (about 2 months ago)
- Topics: android, engine, java, java-v8, javascript, javet, linux, macos, nodejs, v8, v8-javascript-engine, windows
- Language: Java
- Homepage: https://www.caoccao.com/Javenode/
- Size: 821 KB
- Stars: 50
- Watchers: 5
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
Javenode
========|Maven Central| |Discord| |Donate|
|Linux Build|
.. |Maven Central| image:: https://img.shields.io/maven-central/v/com.caoccao.javet/javenode?style=for-the-badge
:target: https://central.sonatype.com/artifact/com.caoccao.javet/javenode.. |Discord| image:: https://img.shields.io/discord/870518906115211305?label=join%20our%20Discord&style=for-the-badge
:target: https://discord.gg/R4vvKU96gw.. |Donate| image:: https://img.shields.io/badge/Donate-Paypal-green?style=for-the-badge
:target: https://paypal.me/caoccao?locale.x=en_US.. |Linux Build| image:: https://github.com/caoccao/Javenode/actions/workflows/linux_build.yml/badge.svg
:target: https://github.com/caoccao/Javenode/actions/workflows/linux_build.ymlJavenode is Java + V8 + Node.js. It is a Node.js simulator with Java in V8.
Javenode is an extension of `Javet `_ (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.
========================= ================= ================
Feature Javet Javenode
========================= ================= ================
External Dependencies No Yes
Platform Dependent Yes No
========================= ================= ================If you like my work, please **Star** this project. And, you may follow me `@sjtucaocao `_, or visit https://blog.caoccao.com/ or http://caoccao.blogspot.com/. And the official support channel is at `discord `_.
Major Features
==============* Native Event Loop (vert.x)
* Same Modules as Node.js
* Modules
* console
* javet
* timers
* timers/promisesQuick Start
===========Dependency
----------Maven
^^^^^.. code-block:: xml
com.caoccao.javet
javenode
0.8.0
Gradle Kotlin DSL
^^^^^^^^^^^^^^^^^.. code-block:: kotlin
implementation("com.caoccao.javet:javenode:0.8.0")
Gradle Groovy DSL
^^^^^^^^^^^^^^^^^.. code-block:: groovy
implementation 'com.caoccao.javet:javenode:0.8.0'
Hello Javenode (Static Import)
------------------------------.. code-block:: java
try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime();
JNEventLoop eventLoop = new JNEventLoop(v8Runtime)) {
eventLoop.loadStaticModules(JNModuleType.Console, JNModuleType.Timers);
v8Runtime.getExecutor("const a = [];\n" +
"setTimeout(() => a.push('Hello Javenode'), 10);").executeVoid();
eventLoop.await();
v8Runtime.getExecutor("console.log(a[0]);").executeVoid();
}Hello Javenode (Dynamic Import)
-------------------------------.. code-block:: java
try (V8Runtime v8Runtime = V8Host.getV8Instance().createV8Runtime();
JNEventLoop eventLoop = new JNEventLoop(v8Runtime)) {
eventLoop.loadStaticModules(JNModuleType.Console);
eventLoop.registerDynamicModules(JNModuleType.TimersPromises);
v8Runtime.getExecutor(
"import { setTimeout } from 'timers/promises';\n" +
"const a = [];\n" +
"setTimeout(10, 'Hello Javenode')\n" +
" .then(result => a.push(result));\n" +
"globalThis.a = a;").setModule(true).executeVoid();
eventLoop.await();
v8Runtime.getExecutor("console.log(a[0]);").executeVoid();
}TODO
====* To implement `fetch`
* To implement `fs`License
=======`APACHE LICENSE, VERSION 2.0 `_
Documents
=========* `Javet `_
* `Javenode Document Portal `_