Let's build a Firefox extension with Kotlin

Run Node.JS in Android app

Android is more customisable and easy to use mobile operating system nowadays. And in upcoming growing language node.js is dramatic up with their great power which uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.

And for developer would be feel good when they integrate Node.Js with their android application to use that power with existing application.



Here is the library which do it same for you named as Node-Android library which is used to run Node.js on Android by rewrite Node.js in Java with the compatible API.

Download this library from here

Now lets dive with process of integrate and their features :

Build

Clone the code, open Android Studio (1.*) and import the project.
For Eclipse ADT user, refer to this.

Javascript code injection

> adb shell am start -a android.intent.action.VIEW -n com.iwebpp.nodeandroid/.MainActivity -e js "var run = function () { return 'hello world'; } run();"

Features


  • Node.js 0.10.x compatible API
  • Multi-threading: run separate node context in Java thread
  • libUV native support
  • Timer, set/clear Timeout/Interval
  • EventEmitter
  • Stream
  • HttpParser(rewrite http-parser.c in java)
  • HTTP
  • HTTPP(run http over udp)
  • TCP
  • UDT(udp transport)
  • DNS
  • URL
  • IPv6
  • for API usage, check 
  • WebSocket/WebSocketServer supported, check 
  • Connect middleware
  • Crypto: NACL support, public box,secret box,signature/verify
  • SecureWebSocket over NACL

JS runtime


  1. Rhino supported
  2. Exposed node-android packages: com.iwebpp.node.http, com.iwebpp.node.stream, com.iwebpp.node.net, etc
  3. Exposed node-android classes: com.iwebpp.node.EventEmitter2, com.iwebpp.node.Dns, com.iwebpp.node.Url, etc
  4. Exposed node-android native context in JS standard scope as NodeCurrentContext alias NCC
  5. Exposed Android API: android.util.Log
  6. NodeJS compatible internal modules are available in JS standard scope
  7. Exposed WebSocket classes: com.iwebpp.wspp.WebSocket, com.iwebpp.wspp.WebSocketServer


JS usage

In case Rhino, create class 'MyScript' extends from com.iwebpp.node.js.rhino.Host
Implement 'public String content()' in 'MyScript' to return user script
Execute JS engine in a separate Java Thread with 'MyScript.execute()'
When authoring script, please use NodeCurrentContext(alias NCC) in node-android API

Hope you like this tutorial and if you use this library then please hand on this blog with sample app. Just send us sample app source code. So we can help more people easily.
Subscribe us to get more juicy and fresh article like this.

Comments