forked from sheetjs/sheetjs
35 lines
1.5 KiB
Markdown
35 lines
1.5 KiB
Markdown
|
# Other JS Engines and Deployments
|
||
|
|
||
|
There are many JS engines and deployments outside of web browsers. NodeJS is the
|
||
|
most popular deployment, but there are many others for special use cases. Some
|
||
|
optimize for low overhead and others optimize for ease of embedding within other
|
||
|
applications. Since it was designed for ES3 engines, the library can be used in
|
||
|
those settings! This demo tries to demonstrate a few alternative deployments.
|
||
|
|
||
|
|
||
|
## Nashorn
|
||
|
|
||
|
Nashorn ships with Java 8. It includes a command-line tool `jjs` for running JS
|
||
|
scripts. It is somewhat limited but does offer access to the full Java runtime.
|
||
|
|
||
|
`jjs` does not provide a CommonJS `require` implementation. This demo uses a
|
||
|
[`shim`](https://rawgit.com/nodyn/jvm-npm/master/src/main/javascript/jvm-npm.js)
|
||
|
and manually requires the library.
|
||
|
|
||
|
The Java `nio` API provides the `Files.readAllBytes` method to read a file into
|
||
|
a byte array. To use in `XLSX.read`, the demo copies the bytes into a plain JS
|
||
|
array and calls `XLSX.read` with type `"array"`.
|
||
|
|
||
|
|
||
|
## duktape and skookum
|
||
|
|
||
|
[Duktape](http://duktape.org/) is an embeddable JS engine written in C. The
|
||
|
amalgamation makes integration extremely simple! Duktape understands the source
|
||
|
code and can process binary strings out the box, but does not provide I/O or
|
||
|
other standard library features.
|
||
|
|
||
|
To demonstrate compatibility with duktape, this demo uses the JS runtime from
|
||
|
[Skookum JS](https://github.com/saghul/sjs). Built upon the duktape engine, it
|
||
|
adds a simple I/O interface to enable reading from files.
|
||
|
|