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.
							 | 
						||
| 
								 | 
							
								
							 |