Giter VIP home page Giter VIP logo

nodyn's Introduction

Build Status

NOTICE

This project is no longer being actively maintained. If you have interest in taking over the project, please file an issue.

What is Nodyn

Nodyn is a node.js compatible framework on the JVM.

Run node.js applications on the JVM and access to all that the Java world has to provide - directly from Javascript. You've got the entire Java ecosystem at your disposal. Nodyn supports NPM module loading and a large portion of the current node.js API.

Usage

Nodyn doesn't yet have an initial release. Until then, to use it, you will need to build from source or download a CI SNAPSHOT from Sonatype. Download the latest zip file from Sonatype. It will contain a ./bin/node binary. You can use the binary to start an application from a Javascript file, or use the REPL to experiment with small snippets of code on the command line. The ./bin/node binary behaves nearly identically to the native node binary.

Embedding

Nodyn can be embedded into existing Java programs and execute scripts like so:

public class EmbedExample {

    private static final String SCRIPT = "" +
            "var main = require('./project/main.js');" +
            "main.run();";


    public void runMain(String... args) throws InterruptedException {
        // Use DynJS runtime
        RuntimeFactory factory = RuntimeFactory.init(
            EmbedExample.class.getClassLoader(), 
            RuntimeFactory.RuntimeType.DYNJS);

        // Set config to run main.js
        NodynConfig config = new NodynConfig( new String[] { "-e", SCRIPT } );

        // Create a new Nodyn and run it
        Nodyn nodyn = factory.newRuntime(config);
        nodyn.setExitHandler( new NoOpExitHandler() );
        try {
            int exitCode = nodyn.run();
            if (exitCode != 0) {
                throw new TestFailureException();
            }
        } catch (Throwable t) {
            throw new TestFailureException( t );
        }
    }
}

Building Nodyn

To build nodyn from source, first check out the repo. Since nodyn uses node.js sources for the javascript layer, you will also need to run git submodule init and git submodule update the first time you build.

$ git clone https://github.com/nodyn/nodyn.git
$ cd nodyn
$ git submodule init
$ git submodule update
$ mvn install -s support/settings.xml

Website

http://nodyn.io/

nodyn's People

Contributors

aslakknutsen avatar bbrowning avatar bnoordhuis avatar bobmcwhirter avatar danbev avatar danielpassos avatar halfninja avatar jfsiii avatar lance avatar lholmquist avatar m0wfo avatar malaporte avatar mo-gr avatar qmx avatar sebastienblanc avatar t-beckmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nodyn's Issues

Build failure

Failure to build nodyn with mvn install on x64 Ubuntu linux. Here is the log:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.988s
[INFO] Finished at: Tue Jul 15 09:56:44 EDT 2014
[INFO] Final Memory: 8M/21M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy (default) on project nodyn: The parameters 'artifactItems' for goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy are missing or invalid -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy (default) on project nodyn: The parameters 'artifactItems' for goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy are missing or invalid
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:221)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 'artifactItems' for goal org.apache.maven.plugins:maven-dependency-plugin:2.1:copy are missing or invalid
        at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:576)
        at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:529)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:92)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        ... 19 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginParameterException

Maven Install failes (out of memory)

mvn install fails as follows:
...
Starting test: src/test/resources/http|http_test.js|testConnectionUpgrade
Exception in thread "vert.x-eventloop-thread-5" Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "vert.x-eventloop-thread-5"

"Failed to instantiate vehicle factory" vertx version 2.1M1

As discussed in #dynjs:

I get the following error while trying to use nodyn on version 2.1M1:

Failed to instantiate vehicle factory
java.lang.NoClassDefFoundError: org/dynjs/vertx/DynJSVerticleFactory

This worked when I ran it on vertx version 2.0.2.

Abstract out hard dependency on DynJS

Vert.x users typically don't use DynJS with Vert.x but mainly use Rhino and the interest in Nashorn is likely to explode given the recent Java 8 release.

For Nodyn to be effectively used by Vert.x users we would need the hard dependency on DynJS to be factored out.

A clean way to do this would be to put the common bits in a single repository (e.g. nodyn-common) and the engine specific parts in other repositories which pull in the common stuff.

As you know I already hacked at this so feel free to take that and put it where you want if you wish.

"Failed to instantiate vehicle factory" vertx version 2.1M1

As discussed in irc:

I get the following error while trying to use nodyn on version 2.1M1:

Failed to instantiate vehicle factory
java.lang.NoClassDefFoundError: org/dynjs/vertx/DynJSVerticleFactory

This worked when I ran it on vertx version 2.0.2.

jvm-npm bug in windows file system

In my Maven test setup with nodyn.nodyn-0.1.1-SNAPSHOT I had to override the findRoot() method in jvm-npm.js (line 166) to cope with backslashes file paths as follows:

function findRoot(parent) {
    if (!parent || !parent.id) { return Require.root; }

    var osName = java.lang.System.getProperty("os.name").toLowerCase();
    var separator;

    if ( osName.indexOf( 'win' ) >= 0 ) {
      separator = "\\";
    } else {
      separator = '/';
    }
    var pathParts = parent.id.split(separator);
    pathParts.pop();
    return pathParts.join('/');
}

SockJS in vert.x fails with nodyn

var vertx = require('vertx');
var console = require('vertx/console');

var server = vertx.createHttpServer();

// Serve the index page
server.requestHandler(function (req) {
    if (req.uri() == "/") req.response.sendFile("./index.html");
});

var sjsServer = new vertx.createSockJSServer(server);

// The handler for the SockJS app - we just echo data back
sjsServer.installApp({prefix: "/testapp"}, function(sock) {
  sock.dataHandler(function(buff) {
    sock.write(buff);
  });
});

server.listen(8080, 'localhost', function (err) {
    if (!err) {
        console.log('App started');
    }
});

The datahandler part throws an exception when nodyn is my engine rather than rhino.

xception in DynJS JavaScript verticle
org.dynjs.exception.ThrowException: TypeError: not callable: [DerefRef: value=undefined; ref=[Reference: name=dataHandler; base=org.dynjs.runtime.DynArray@20cff041 (org.dynjs.runtime.DynArray)]]
    at <global>.<anonymous>(sockjs.js:17)
    at <global>.<native function: Call>(org/dynjs/runtime/builtins/types/function/prototype/Call.java:0)
    at <global>.<anonymous>(vertx/sockjs.js:228)
    at <global>.<eval>(sockjs.js:22)
    at <global>.<eval>(Unknown Source)
    at org.dynjs.runtime.interp.InvokeDynamicInterpretingVisitor.visit(InvokeDynamicInterpretingVisitor.java:97)
    at org.dynjs.parser.ast.FunctionCallExpression.accept(FunctionCallExpression.java:85)
    at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:480)
    at org.dynjs.parser.ast.ExpressionStatement.accept(ExpressionStatement.java:54)
    at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:286)
    at org.dynjs.parser.ast.BlockStatement.accept(BlockStatement.java:102)
    at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:28)
    at org.dynjs.runtime.BasicBlockDelegate.call(BasicBlockDelegate.java:26)
    at org.dynjs.runtime.CompilableBasicBlock.call(CompilableBasicBlock.java:24)
    at org.dynjs.runtime.wrapper.JavascriptFunction.call(JavascriptFunction.java:58)
    at org.dynjs.runtime.ExecutionContext.internalCall(ExecutionContext.java:219)
    at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:168)
    at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:163)
    at org.dynjs.runtime.builtins.types.function.prototype.Call.call(Call.java:33)
    at org.dynjs.runtime.AbstractNativeFunction.call(AbstractNativeFunction.java:67)
    at org.dynjs.runtime.ExecutionContext.internalCall(ExecutionContext.java:219)
    at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:168)
    at org.dynjs.runtime.linker.InterpretingInvokeDynamicHandler.call(InterpretingInvokeDynamicHandler.java:40)
    at org.dynjs.runtime.interp.InvokeDynamicInterpretingVisitor.visit(InvokeDynamicInterpretingVisitor.java:93)
    at org.dynjs.parser.ast.FunctionCallExpression.accept(FunctionCallExpression.java:85)
    at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:480)
    at org.dynjs.parser.ast.ExpressionStatement.accept(ExpressionStatement.java:54)
    at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:286)
    at org.dynjs.parser.ast.BlockStatement.accept(BlockStatement.java:102)
    at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:28)
    at org.dynjs.runtime.BasicBlockDelegate.call(BasicBlockDelegate.java:26)
    at org.dynjs.runtime.CompilableBasicBlock.call(CompilableBasicBlock.java:24)
    at org.dynjs.runtime.wrapper.JavascriptFunction.call(JavascriptFunction.java:58)
    at org.dynjs.runtime.ExecutionContext.internalCall(ExecutionContext.java:219)
    at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:168)
    at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:163)
    at org.dynjs.gen.impl.HandlerJS_0.handle(Unknown Source)
    at org.vertx.java.core.sockjs.impl.Session.register(Session.java:262)
    at org.vertx.java.core.sockjs.impl.WebSocketTransport$1.handle(WebSocketTransport.java:54)
    at org.vertx.java.core.sockjs.impl.WebSocketTransport$1.handle(WebSocketTransport.java:48)
    at org.vertx.java.core.http.impl.WebSocketMatcher.handle(WebSocketMatcher.java:56)
    at org.vertx.java.core.http.impl.WebSocketMatcher.handle(WebSocketMatcher.java:29)
    at org.vertx.java.core.http.impl.ServerConnection.handleWebsocketConnect(ServerConnection.java:236)
    at org.vertx.java.core.http.impl.DefaultHttpServer$ServerHandler.handshake(DefaultHttpServer.java:742)
    at org.vertx.java.core.http.impl.DefaultHttpServer$ServerHandler.doMessageReceived(DefaultHttpServer.java:671)
    at org.vertx.java.core.http.impl.DefaultHttpServer$ServerHandler.doMessageReceived(DefaultHttpServer.java:567)
    at org.vertx.java.core.http.impl.VertxHttpHandler.channelRead(VertxHttpHandler.java:78)
    at org.vertx.java.core.net.impl.VertxHandler.channelRead(VertxHandler.java:156)
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:341)
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:327)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:155)
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:341)
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:327)
    at org.vertx.java.core.http.impl.cgbystrom.FlashPolicyHandler.channelRead(FlashPolicyHandler.java:53)
    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:341)
    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:327)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:116)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:494)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:461)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:378)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:350)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
    at java.lang.Thread.run(Thread.java:744)

Error: cannot load module express

Nodyn built from: 6612004
Express version: 3.4.8

JavaScript (app.js):
var express = require("express");

Exception:

Exception in thread "main" org.dynjs.exception.ThrowException: Error: cannot load module express
    at Object.require(org/dynjs/runtime/builtins/Require.java:0)
    at <global>.Require(<eval>:62)
    at <global>.<eval>(app.js:8)
    at org.dynjs.runtime.builtins.Require.call(Require.java:161)
    at org.dynjs.runtime.AbstractNativeFunction.call(AbstractNativeFunction.java:67)
    at org.dynjs.runtime.ExecutionContext.internalCall(ExecutionContext.java:219)
    at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:168)
    at org.dynjs.gen.Then11.call(Unknown Source)
    at org.dynjs.gen.Then10.call(Unknown Source)
    at org.dynjs.gen.FunctionBody5.call(Unknown Source)
    at org.dynjs.runtime.BasicBlockDelegate.call(BasicBlockDelegate.java:26)
    at org.dynjs.runtime.CompilableBasicBlock.call(CompilableBasicBlock.java:24)
    at org.dynjs.runtime.wrapper.JavascriptFunction.call(JavascriptFunction.java:58)
    at org.dynjs.runtime.ExecutionContext.internalCall(ExecutionContext.java:219)
    at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:168)
    at org.dynjs.runtime.linker.InterpretingInvokeDynamicHandler.call(InterpretingInvokeDynamicHandler.java:40)
    at org.dynjs.runtime.interp.InvokeDynamicInterpretingVisitor.visit(InvokeDynamicInterpretingVisitor.java:93)
    at org.dynjs.parser.ast.FunctionCallExpression.accept(FunctionCallExpression.java:85)
    at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:1519)
    at org.dynjs.parser.ast.VariableDeclaration.accept(VariableDeclaration.java:43)
    at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:1530)
    at org.dynjs.parser.ast.VariableStatement.accept(VariableStatement.java:71)
    at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:286)
    at org.dynjs.parser.ast.BlockStatement.accept(BlockStatement.java:102)
    at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:28)
    at org.dynjs.runtime.BasicBlockDelegate.call(BasicBlockDelegate.java:26)
    at org.dynjs.runtime.CompilableBasicBlock.call(CompilableBasicBlock.java:24)
    at org.dynjs.runtime.wrapper.JavascriptProgram.execute(JavascriptProgram.java:37)
    at org.dynjs.runtime.ExecutionContext.execute(ExecutionContext.java:140)
    at org.dynjs.runtime.Runner.execute(Runner.java:82)
    at org.projectodd.nodyn.Main.executeFile(Main.java:84)
    at org.projectodd.nodyn.Main.run(Main.java:64)
    at org.projectodd.nodyn.Main.main(Main.java:54)

Debug log before the exception:

00171 FunctionBody15 ExecutionContext Completion . .  : Completion  :    L15
00172 FunctionBody15 ExecutionContext Completion . .  : Completion  :    FRAME SAME1 org/dynjs/runtime/Completion
00173 FunctionBody15 ExecutionContext Completion . .  : Completion  :     DUP
00174 FunctionBody15 ExecutionContext Completion . .  : Completion Completion  :     GETFIELD org/dynjs/runtime/Completion.value : Ljava/lang/Object;
00175 FunctionBody15 ExecutionContext Completion . .  : Completion Object  :     IFNULL L17
00176 FunctionBody15 ExecutionContext Completion . .  : Completion  :     ASTORE 2
00177 FunctionBody15 ExecutionContext Completion . .  :  :     GOTO L18
00178 FunctionBody15 ExecutionContext Completion . .  : Completion  :    L17
00179 FunctionBody15 ExecutionContext Completion . .  : Completion  :    FRAME SAME1 org/dynjs/runtime/Completion
00180 FunctionBody15 ExecutionContext Completion . .  : Completion  :     DUP
00181 FunctionBody15 ExecutionContext Completion . .  : Completion Completion  :     ALOAD 2
00182 FunctionBody15 ExecutionContext Completion . .  : Completion Completion Completion  :     GETFIELD org/dynjs/runtime/Completion.value : Ljava/lang/Object;
00183 FunctionBody15 ExecutionContext Completion . .  : Completion Completion Object  :     PUTFIELD org/dynjs/runtime/Completion.value : Ljava/lang/Object;
00184 FunctionBody15 ExecutionContext Completion . .  : Completion  :     ASTORE 2
00185 FunctionBody15 ExecutionContext Completion . .  :  :    L18
00186 FunctionBody15 ExecutionContext Completion . .  :  :    FRAME SAME
00187 FunctionBody15 ExecutionContext Completion . .  :  :     GOTO L19
00188 FunctionBody15 ExecutionContext Completion . .  : Completion  :    L16
00189 FunctionBody15 ExecutionContext Completion . .  : Completion  :    FRAME SAME1 org/dynjs/runtime/Completion
00190 FunctionBody15 ExecutionContext Completion . .  : Completion  :     ASTORE 2
00191 FunctionBody15 ExecutionContext Completion . .  :  :    L19
00192 FunctionBody15 ExecutionContext Completion . .  :  :    FRAME SAME
00193 FunctionBody15 ExecutionContext Completion . .  :  :     ALOAD 2
00194 FunctionBody15 ExecutionContext Completion . .  : Completion  :     ARETURN

initializeCode()V
00000 FunctionBody15  :  :     RETURN

File load

Would be great if nodyn could load files like it does node.js and like require works.
For example, if there is module flop and in package.json field main = flop.js, and we in directory ../flop, this code will work in node.js :

> node flop

And this would not:

> nodyn flop

Nodyn will say that File flop not found and we always should add extension .js. Only this one will work in nodyn:

> nodyn flop/flop.js

clustered mode missing ClusterManagerFactory

I'm experimenting with nodyn, which seems really great. In trying nodyn with --clustered it fails with an apparent missing dependency.

With a fresh clone, mvn clean install'ed. On MacOSX 10.9.1, Java 1.7.0_40.

± ./bin/nodyn --clustered --console
log4j:WARN No appenders could be found for logger (io.netty.util.internal.logging.InternalLoggerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.IllegalStateException: No ClusterManagerFactory instances found on classpath
    at org.vertx.java.core.impl.DefaultVertx.<init>(DefaultVertx.java:113)
    at org.vertx.java.core.impl.DefaultVertx.<init>(DefaultVertx.java:96)
    at org.vertx.java.core.impl.DefaultVertxFactory.createVertx(DefaultVertxFactory.java:36)
    at org.vertx.java.core.VertxFactory.newVertx(VertxFactory.java:41)
    at org.projectodd.nodyn.Main.initializeRuntime(Main.java:111)
    at org.projectodd.nodyn.Main.startRepl(Main.java:93)
    at org.projectodd.nodyn.Main.run(Main.java:67)
    at org.projectodd.nodyn.Main.main(Main.java:55)

Node licensed files

Shouldn't the LICENSE file contain the node license(s) too? I believe NoDyn contains files that come from node.js

running Main.java from source with args --debug --console gives error

Hi,
I am trying to run dynjs from source, but i get the error below

There was an error loading the module util.js. Error message: ReferenceError: unable to reference: global
at .(util.js:67)
at Object.require(util.js:659)
at Object.require(node_console.js:1)
at .(:15)
at .(Unknown Source)
at org.dynjs.runtime.interp.InvokeDynamicInterpretingVisitor.getValue(InvokeDynamicInterpretingVisitor.java:146)
at org.dynjs.runtime.interp.BasicInterpretingVisitor.visit(BasicInterpretingVisitor.java:966)
at org.dynjs.parser.ast.DotExpression.accept(DotExpression.java:70)
at org.dynjs.runtime.interp.InvokeDynamicInterpretingVisitor.visit(InvokeDynamicInterpretingVisitor.java:64)

What is the right way to run dynjs from source?

NPMModuleProvider should consider node_modules inside node modules packages

Test case:

  • create a node_modules directory in CWD if it not exists.
  • 'npm install socket.io' (just as an example)
  • dependendcies from package.json has been stored inside socket.io node_modules directory.

It looks like that npm packages could have a node_modules for each package module of "dependencies"

broken link

Although not technically an issue with the code in this repo, the link to this repo from the nodyn.io page is broken (it links to github.com/nodyn/nodyn' with the extra apostrophe on the end breaking it), I assume someone on the list of committers to this project also has write access to nodyn.io.

Provide DTRACE hooks

This may only work on Sun/Oracle/OpenJDK JVMs, which provide dtrace bindings.

vert.x pipeline misconfigured

When sending a DefaultLastHttpContent or DefaultHttpRequest across http, a DEBUG message in thread vert.x-eventloop-thread-0 states that: io.netty.channel.DefaultChannelPipeline Discarded inbound message [DefaultLastHttpContent... | DefaultHttpRequest...] that reached at the tail of the pipeline. Please check your pipeline configuration.

Perhaps (refering to http://stackoverflow.com/questions/15242793/netty-pipeline-warning) the http response handler is missing?

Command line client can't instantiate NodeJSVerticleFactory

Failed to instantiate verticle factory
org.vertx.java.platform.PlatformManagerException: Failed to instantiate verticle factory
at org.vertx.java.platform.impl.DefaultPlatformManager.doDeploy(DefaultPlatformManager.java:1092)
at org.vertx.java.platform.impl.DefaultPlatformManager.doDeployVerticle(DefaultPlatformManager.java:510)
at org.vertx.java.platform.impl.DefaultPlatformManager.access$1300(DefaultPlatformManager.java:52)
at org.vertx.java.platform.impl.DefaultPlatformManager$10.run(DefaultPlatformManager.java:349)
at org.vertx.java.platform.impl.DefaultPlatformManager$9.run(DefaultPlatformManager.java:320)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassCastException: org.projectodd.nodyn.NodeJSVerticleFactory cannot be cast to org.vertx.java.platform.VerticleFactory
at org.vertx.java.platform.impl.ModuleReference.getVerticleFactory(ModuleReference.java:74)
at org.vertx.java.platform.impl.DefaultPlatformManager.doDeploy(DefaultPlatformManager.java:1090)

TypeError: undefined cannot be coerced to an object

/**

  • test.js
  • code sequence of io.js (reduced)
    */

(function (exports, global) {

var io = exports;

io.version = '0.0.0';

})('object' === typeof module ? module.exports : (this.io = {}), this);

// Produce following exception:
// TypeError: undefined cannot be coerced to an object: version

./bin/nodyn examples/http_connect_test.js fails

After successfully building nodyn, I attempted to run the examples/http_connect_test.js script and got this failure:

`````` bash./bin/nodyn examples/http_connect_test.js 2014-07-15 13:20:10,895 [vert.x-eventloop-thread-0] WARN io.netty.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception. java.lang.NullPointerException at io.nodyn.loop.RootManagedEventLoopGroup.doShutdown(RootManagedEventLoopGroup.java:43) at io.nodyn.loop.AbstractManagedEventLoopGroup.decrCount(AbstractManagedEventLoopGroup.java:37) at io.nodyn.loop.RefHandle.unref(RefHandle.java:41) at io.nodyn.loop.RefHandleHandler.channelUnregistered(RefHandleHandler.java:27) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:182) at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:168) at io.netty.channel.ChannelInboundHandlerAdapter.channelUnregistered(ChannelInboundHandlerAdapter.java:53) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:182) at io.netty.channel.AbstractChannelHandlerContext.fireChannelUnregistered(AbstractChannelHandlerContext.java:168) at io.netty.channel.DefaultChannelPipeline.fireChannelUnregistered(DefaultChannelPipeline.java:738) at io.netty.channel.AbstractChannel$AbstractUnsafe$6.run(AbstractChannel.java:607) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:341) at io.netty.util.concurrent.SingleThreadEventExecutor.confirmShutdown(SingleThreadEventExecutor.java:640) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:358) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) at java.lang.Thread.run(Thread.java:744) 2014-07-15 13:20:10,927 [globalEventExecutor-1-1] WARN io.netty.util.concurrent.DefaultPromise - An exception was thrown by io.nodyn.net.ServerHandler$1.operationComplete() org.dynjs.exception.ThrowException: java.lang.NullPointerException: group at <global>.<anonymous>(_http_client.js:86) at <global>.<anonymous>(http_connect_test.js:40) at <global>.<native function: Call>(org/dynjs/runtime/builtins/types/function/prototype/Call.java:0) at <global>.<anonymous>(events.js:90) at <global>.<anonymous>(net.js:19) at <global>.bound-function:<anonymous>(net.js:0) at <global>.<eval>(http_connect_test.js:29) at org.dynjs.parser.ast.FunctionCallExpression.interpret(FunctionCallExpression.java:119) at org.dynjs.parser.ast.ExpressionStatement.interpret(ExpressionStatement.java:56) at org.dynjs.parser.ast.BlockStatement.interpret(BlockStatement.java:150) at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:30) at org.dynjs.runtime.wrapper.JavascriptFunction.call(JavascriptFunction.java:45) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:188) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:599) at org.projectodd.rephract.LinkPlan.linkInvocation(LinkPlan.java:186) at org.dynjs.parser.ast.FunctionCallExpression.interpret(FunctionCallExpression.java:113) at org.dynjs.parser.ast.ExpressionStatement.interpret(ExpressionStatement.java:56) at org.dynjs.parser.ast.BlockStatement.interpret(BlockStatement.java:150) at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:30) at org.dynjs.runtime.wrapper.JavascriptFunction.call(JavascriptFunction.java:45) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:188) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:178) at org.dynjs.runtime.builtins.types.function.prototype.Call.call(Call.java:26) at org.dynjs.runtime.AbstractNativeFunction.call(AbstractNativeFunction.java:67) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:188) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:599) at org.projectodd.rephract.LinkPlan.linkInvocation(LinkPlan.java:186) at org.dynjs.parser.ast.FunctionCallExpression.interpret(FunctionCallExpression.java:113) at org.dynjs.parser.ast.ExpressionStatement.interpret(ExpressionStatement.java:56) at org.dynjs.parser.ast.BlockStatement.interpret(BlockStatement.java:150) at org.dynjs.parser.ast.SwitchStatement.interpret(SwitchStatement.java:107) at org.dynjs.parser.ast.BlockStatement.interpret(BlockStatement.java:150) at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:30) at org.dynjs.parser.ast.AbstractStatement.invokeCompiledBlockStatement(AbstractStatement.java:201) at org.dynjs.parser.ast.IfStatement.interpret(IfStatement.java:108) at org.dynjs.parser.ast.BlockStatement.interpret(BlockStatement.java:150) at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:30) at org.dynjs.runtime.wrapper.JavascriptFunction.call(JavascriptFunction.java:45) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:188) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:599) at org.projectodd.rephract.LinkPlan.linkInvocation(LinkPlan.java:186) at org.dynjs.parser.ast.FunctionCallExpression.interpret(FunctionCallExpression.java:113) at org.dynjs.parser.ast.ExpressionStatement.interpret(ExpressionStatement.java:56) at org.dynjs.parser.ast.BlockStatement.interpret(BlockStatement.java:150) at org.dynjs.runtime.interp.InterpretedBasicBlock.call(InterpretedBasicBlock.java:30) at org.dynjs.runtime.wrapper.JavascriptFunction.call(JavascriptFunction.java:45) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:188) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:178) at org.dynjs.runtime.BoundFunction.call(BoundFunction.java:52) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:188) at org.dynjs.runtime.ExecutionContext.call(ExecutionContext.java:178) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:599) at org.projectodd.rephract.LinkPlan.linkInvocation(LinkPlan.java:186) at org.dynjs.gen.impl.CallbackJS_0.call(Unknown Source) at io.nodyn.EventSource.emit(EventSource.java:20) at io.nodyn.net.ServerHandler$1.operationComplete(ServerHandler.java:25) at io.nodyn.net.ServerHandler$1.operationComplete(ServerHandler.java:22) at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:682) at io.netty.util.concurrent.DefaultPromise$3.run(DefaultPromise.java:596) at io.netty.util.concurrent.GlobalEventExecutor$TaskRunner.run(GlobalEventExecutor.java:337) at java.lang.Thread.run(Thread.java:744) Caused by: java.lang.NullPointerException: group at io.netty.bootstrap.AbstractBootstrap.group(AbstractBootstrap.java:79) at io.nodyn.http.agent.AgentWrap.enqueue(AgentWrap.java:43) at io.nodyn.http.client.ClientRequestWrap.writeHead(ClientRequestWrap.java:66) at io.nodyn.http.client.ClientRequestWrap.write(ClientRequestWrap.java:99) at io.nodyn.http.client.ClientRequestWrap.end(ClientRequestWrap.java:115) at io.nodyn.http.client.ClientRequestWrap.end(ClientRequestWrap.java:111) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:599) at org.projectodd.rephract.LinkPlan.linkInvocation(LinkPlan.java:186) at org.dynjs.parser.ast.FunctionCallExpression.interpret(FunctionCallExpression.java:113) ... 53 morebash```

module.exports doesn't work anymore

./nodyn --console
nodyn> module.exports.flavor = "cool ranch";
TypeError: undefined cannot be coerced to an object: flavor

Consider that Test of src/test/resources/modules|modules_test.js|testFindsModulePackageDotJson

does not cover the issue.

Build is broken: Failure to find org.dynjs:dynjs:jar:0.2.2-SNAPSHOT

Probably you have an additional repository configured in your settings.xml.

[WARNING] The POM for org.dynjs:dynjs:jar:0.2.2-SNAPSHOT is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Nodyn ............................................. FAILURE [0.378s]
[INFO] nodyn-verticle .................................... SKIPPED
[INFO] nodyn-standalone .................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.739s
[INFO] Finished at: Sat Mar 08 11:49:18 CET 2014
[INFO] Final Memory: 10M/106M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project nodyn: Could not resolve dependencies for project org.projectodd:nodyn:pom:0.1.1-SNAPSHOT: Failure to find org.dynjs:dynjs:jar:0.2.2-SNAPSHOT in https://repository-projectodd.forge.cloudbees.com/snapshot was cached in the local repository, resolution will not be reattempted until the update interval of projectodd-snapshot has elapsed or updates are forced -> [Help 1]

i can't run my application with nodyn

i write a langs.properties file with:
"nodyn=org.projectoddnodyn-verticle0.1.1-SNAPSHOT:org.projectodd.nodyn.NodeJSVerticleFactory
.js=nodyn"

and i run it with "vertx run app.js"

but it run with default js language module, rather than nodyn.

i find one module called "io.vertxlang-dynjs1.0.0-SNAPSHOT" installed in dir "sys-mods".

the vert.x version is 2.1M2
why?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.