forked from eclipse-vertx/vert.x
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
324 changed files
with
85,306 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
Node.x is licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
|
||
You may obtain a copy of the License at | ||
|
||
http://www.apache.org/licenses/LICENSE-2.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# Node.x | ||
|
||
## What is Node.x? | ||
|
||
The next generation polyglot asynchronous application framework. | ||
|
||
* Runs on the JVM. | ||
* Embraces the good bits of event driven frameworks like node.js without the bad bits. Then adds some even juicier bits. | ||
* Everything is non-blocking. | ||
* Polyglot. Node.x will be usable from multiple languages: Ruby, Groovy, Java, JavaScript, Python, Clojure, Scala. Write your code in the language *you* choose. Leverage the power of node.x from that language. | ||
* Goes with the recent developments with InvokeDynamic in Java 7 and bets on the JVM being the future premier runtime for dynamic languages. | ||
* Enables you to create network servers or clients incredibly easily. | ||
* True scalability. Unlike other well-known event-driven frameworks, you can have more than one event loop per process. No more spinning up 32 instances just to utilise the cores on your server. | ||
* Incredibly simple concurrency model. Write your code as single threaded but watch it scale across multiple cores. No need to worry about concurrency. | ||
* Understands multiple network protocols out of the box including: TCP, SSL, UDP, HTTP, HTTPS, Websockets, etc. | ||
* Efficiently serve static files from the filesystem bypassing userspace altogether. | ||
* Provides an elegant api for composing asynchronous actions together. Glue together HTTP, AMQP, Redis or whatever in a few lines of code. | ||
* Asynchronous plugins will be provided for a wide variety of other systems and protocols including AMQP, Redis, REST, Gemfire, MongoDB, STOMP, Twitter, SMTP, JDBC, Memcached, JMS, ZeroMQ, JDBC, web frameworks, etc | ||
* Module manager. Install modules from a public repository. Create your own applications and push them to the repo. Creates a market for an ecosystem of node.x modules. | ||
|
||
## Jump to the examples | ||
|
||
Take a look at some of these working Ruby examples to see the kind of things you can do with Node.x | ||
|
||
[Ruby examples](https://github.com/purplefox/node.x/tree/master/src/examples/ruby "Ruby examples") | ||
|
||
[Java examples](https://github.com/purplefox/node.x/tree/master/src/examples/java "Java examples") | ||
|
||
## What is the status of Node.x? | ||
|
||
The first binary release, node.x 0.1, has been released. We aim to follow the mantra of "release early, release often" | ||
|
||
You can find the Road-map [here] (https://github.com/purplefox/node.x/wiki/Road-map) | ||
|
||
## What is the architecture? | ||
|
||
Node.x *core* is written in Java. We then provide a thin layer in each of the JVM languages we support which allows the API to be used in each of the supported languages. | ||
|
||
We do not expose the Java API directly in the other languages since we wish to retain the normal coding idioms for each supported language. | ||
|
||
We don't leak Java stuff to other languages through the API. | ||
|
||
Node.x internally uses [Netty](https://github.com/netty/netty "Netty") for much of the asynchronous IO. | ||
|
||
## Building from source | ||
|
||
Instructions for building node.x from source are [here](https://github.com/purplefox/node.x/wiki/Build-instructions) | ||
|
||
## Installation and running the examples | ||
|
||
Instructions for installing and running node.x are are [here] (https://github.com/purplefox/node.x/wiki/Instructions-for-installing-and-running-node.x) | ||
|
||
## Development and user discussions | ||
|
||
[node.x dev Google Group](http://groups.google.com/group/nodex-dev "Node.x dev") | ||
|
||
## FAQ | ||
|
||
FAQ [here] (https://github.com/purplefox/node.x/wiki/FAQ) | ||
|
||
## IRC | ||
|
||
There's an IRC channel at irc.freenode.net#nodex if you want to drop in to chat about any user or development topics | ||
|
||
## Join us!! | ||
|
||
There is lots to do! We are looking for contributors - both individual and corporate. Ping me twitter:@timfox, or post on the nodex-dev google group. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#!/bin/sh | ||
|
||
# This script lives on the node.x install directory which should be on the users PATH | ||
# It is called like java e.g. nodex-java -cp "somepath" org.foo.MyMainClass | ||
|
||
# We need to figure out what this directory is relative to wherever this is called from. Remember this dir is on the path | ||
# so this script can be called from anywhere | ||
|
||
PRG="$0" | ||
while [ -h "$PRG" ] ; do | ||
ls=`ls -ld "$PRG"` | ||
link=`expr "$ls" : '.*-> \(.*\)$'` | ||
if expr "$link" : '/.*' > /dev/null; then | ||
PRG="$link" | ||
else | ||
PRG=`dirname "$PRG"`/"$link" | ||
fi | ||
done | ||
|
||
DIRNAME=`dirname "$PRG"` | ||
|
||
EXTRA_CLASSPATH=$DIRNAME/../lib/java/node.x.jar:$DIRNAME/../lib/java/netty.jar:$DIRNAME/../lib/java/high-scale-lib.jar | ||
|
||
# We need to append the EXTRA_CLASSPATH to any classpath specified on the command line | ||
|
||
NEW_ARGS= | ||
APPEND_CP=false | ||
for arg in "$@" | ||
do | ||
if $APPEND_CP ; then | ||
arg=$arg:$EXTRA_CLASSPATH | ||
APPEND_CP=false | ||
fi | ||
if [ $arg = "-cp" ] || [ $arg = "-classpath" ]; then | ||
APPEND_CP=true | ||
fi | ||
NEW_ARGS=$NEW_ARGS" "$arg | ||
done | ||
|
||
java -Djava.util.logging.config.file=$DIRNAME/../logging.properties $NEW_ARGS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
#!/bin/sh | ||
|
||
# This script lives on the node.x install directory which should be on the users PATH | ||
# It is called like java e.g. nodex-java -cp "somepath" org.foo.MyMainClass | ||
|
||
# We need to figure out what this directory is relative to wherever this is called from. Remember this dir is on the path | ||
# so this script can be called from anywhere | ||
|
||
PRG="$0" | ||
while [ -h "$PRG" ] ; do | ||
ls=`ls -ld "$PRG"` | ||
link=`expr "$ls" : '.*-> \(.*\)$'` | ||
if expr "$link" : '/.*' > /dev/null; then | ||
PRG="$link" | ||
else | ||
PRG=`dirname "$PRG"`/"$link" | ||
fi | ||
done | ||
|
||
DIRNAME=`dirname "$PRG"` | ||
|
||
jruby -J-Djava.util.logging.config.file=$DIRNAME/../logging.properties -I$DIRNAME/../lib/java:$DIRNAME/../lib/ruby -rnode.x.jar -rnetty.jar -rhigh-scale-lib.jar "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||
<!-- NewPage --> | ||
<html lang="en"> | ||
<head> | ||
<!-- Generated by javadoc (version 1.7.0) on Mon Oct 10 13:16:06 BST 2011 --> | ||
<title>All Classes (Node.x Java API)</title> | ||
<meta name="date" content="2011-10-10"> | ||
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style"> | ||
</head> | ||
<body> | ||
<h1 class="bar">All Classes</h1> | ||
<div class="indexContainer"> | ||
<ul> | ||
<li><a href="org/nodex/java/core/http/AbstractConnection.html" title="class in org.nodex.java.core.http" target="classFrame">AbstractConnection</a></li> | ||
<li><a href="org/nodex/java/core/file/AsyncFile.html" title="class in org.nodex.java.core.file" target="classFrame">AsyncFile</a></li> | ||
<li><a href="org/nodex/java/core/BlockingAction.html" title="class in org.nodex.java.core" target="classFrame">BlockingAction</a></li> | ||
<li><a href="org/nodex/java/core/buffer/Buffer.html" title="class in org.nodex.java.core.buffer" target="classFrame">Buffer</a></li> | ||
<li><a href="org/nodex/java/core/CompletionHandler.html" title="interface in org.nodex.java.core" target="classFrame"><i>CompletionHandler</i></a></li> | ||
<li><a href="org/nodex/java/core/composition/Composer.html" title="class in org.nodex.java.core.composition" target="classFrame">Composer</a></li> | ||
<li><a href="org/nodex/java/core/net/ConnectionBase.html" title="class in org.nodex.java.core.net" target="classFrame">ConnectionBase</a></li> | ||
<li><a href="org/nodex/java/core/ConnectionPool.html" title="class in org.nodex.java.core" target="classFrame">ConnectionPool</a></li> | ||
<li><a href="org/nodex/java/core/Deferred.html" title="interface in org.nodex.java.core" target="classFrame"><i>Deferred</i></a></li> | ||
<li><a href="org/nodex/java/core/DeferredAction.html" title="class in org.nodex.java.core" target="classFrame">DeferredAction</a></li> | ||
<li><a href="org/nodex/java/core/file/FileProps.html" title="class in org.nodex.java.core.file" target="classFrame">FileProps</a></li> | ||
<li><a href="org/nodex/java/core/file/FileSystem.html" title="class in org.nodex.java.core.file" target="classFrame">FileSystem</a></li> | ||
<li><a href="org/nodex/java/core/file/FileSystemException.html" title="class in org.nodex.java.core.file" target="classFrame">FileSystemException</a></li> | ||
<li><a href="org/nodex/java/core/file/FileSystemProps.html" title="class in org.nodex.java.core.file" target="classFrame">FileSystemProps</a></li> | ||
<li><a href="org/nodex/java/core/Future.html" title="interface in org.nodex.java.core" target="classFrame"><i>Future</i></a></li> | ||
<li><a href="org/nodex/java/core/Handler.html" title="interface in org.nodex.java.core" target="classFrame"><i>Handler</i></a></li> | ||
<li><a href="org/nodex/java/core/http/HeaderUtils.html" title="class in org.nodex.java.core.http" target="classFrame">HeaderUtils</a></li> | ||
<li><a href="org/nodex/java/core/http/HttpClient.html" title="class in org.nodex.java.core.http" target="classFrame">HttpClient</a></li> | ||
<li><a href="org/nodex/java/core/http/HttpClientRequest.html" title="class in org.nodex.java.core.http" target="classFrame">HttpClientRequest</a></li> | ||
<li><a href="org/nodex/java/core/http/HttpClientResponse.html" title="class in org.nodex.java.core.http" target="classFrame">HttpClientResponse</a></li> | ||
<li><a href="org/nodex/java/core/http/HttpServer.html" title="class in org.nodex.java.core.http" target="classFrame">HttpServer</a></li> | ||
<li><a href="org/nodex/java/core/http/HttpServerRequest.html" title="class in org.nodex.java.core.http" target="classFrame">HttpServerRequest</a></li> | ||
<li><a href="org/nodex/java/core/http/HttpServerResponse.html" title="class in org.nodex.java.core.http" target="classFrame">HttpServerResponse</a></li> | ||
<li><a href="org/nodex/java/core/Immutable.html" title="interface in org.nodex.java.core" target="classFrame"><i>Immutable</i></a></li> | ||
<li><a href="org/nodex/java/core/stdio/InStream.html" title="class in org.nodex.java.core.stdio" target="classFrame">InStream</a></li> | ||
<li><a href="org/nodex/java/core/logging/JULLogDelegate.html" title="class in org.nodex.java.core.logging" target="classFrame">JULLogDelegate</a></li> | ||
<li><a href="org/nodex/java/core/logging/JULLogDelegateFactory.html" title="class in org.nodex.java.core.logging" target="classFrame">JULLogDelegateFactory</a></li> | ||
<li><a href="org/nodex/java/core/logging/Log4jLogDelegate.html" title="class in org.nodex.java.core.logging" target="classFrame">Log4jLogDelegate</a></li> | ||
<li><a href="org/nodex/java/core/logging/Log4jLogDelegateFactory.html" title="class in org.nodex.java.core.logging" target="classFrame">Log4jLogDelegateFactory</a></li> | ||
<li><a href="org/nodex/java/core/logging/LogDelegate.html" title="interface in org.nodex.java.core.logging" target="classFrame"><i>LogDelegate</i></a></li> | ||
<li><a href="org/nodex/java/core/logging/LogDelegateFactory.html" title="interface in org.nodex.java.core.logging" target="classFrame"><i>LogDelegateFactory</i></a></li> | ||
<li><a href="org/nodex/java/core/logging/Logger.html" title="class in org.nodex.java.core.logging" target="classFrame">Logger</a></li> | ||
<li><a href="org/nodex/java/core/net/NetBase.html" title="class in org.nodex.java.core.net" target="classFrame">NetBase</a></li> | ||
<li><a href="org/nodex/java/core/net/NetClient.html" title="class in org.nodex.java.core.net" target="classFrame">NetClient</a></li> | ||
<li><a href="org/nodex/java/core/net/NetClientBase.html" title="class in org.nodex.java.core.net" target="classFrame">NetClientBase</a></li> | ||
<li><a href="org/nodex/java/core/net/NetServer.html" title="class in org.nodex.java.core.net" target="classFrame">NetServer</a></li> | ||
<li><a href="org/nodex/java/core/net/NetServerBase.html" title="class in org.nodex.java.core.net" target="classFrame">NetServerBase</a></li> | ||
<li><a href="org/nodex/java/core/net/NetSocket.html" title="class in org.nodex.java.core.net" target="classFrame">NetSocket</a></li> | ||
<li><a href="org/nodex/java/core/Nodex.html" title="interface in org.nodex.java.core" target="classFrame"><i>Nodex</i></a></li> | ||
<li><a href="org/nodex/java/core/logging/NodexLoggerFormatter.html" title="class in org.nodex.java.core.logging" target="classFrame">NodexLoggerFormatter</a></li> | ||
<li><a href="org/nodex/java/core/NodexMain.html" title="class in org.nodex.java.core" target="classFrame">NodexMain</a></li> | ||
<li><a href="org/nodex/java/core/stdio/OutStream.html" title="class in org.nodex.java.core.stdio" target="classFrame">OutStream</a></li> | ||
<li><a href="org/nodex/java/core/streams/Pump.html" title="class in org.nodex.java.core.streams" target="classFrame">Pump</a></li> | ||
<li><a href="org/nodex/java/core/streams/ReadStream.html" title="interface in org.nodex.java.core.streams" target="classFrame"><i>ReadStream</i></a></li> | ||
<li><a href="org/nodex/java/core/parsetools/RecordParser.html" title="class in org.nodex.java.core.parsetools" target="classFrame">RecordParser</a></li> | ||
<li><a href="org/nodex/java/core/shared/SharedCounter.html" title="class in org.nodex.java.core.shared" target="classFrame">SharedCounter</a></li> | ||
<li><a href="org/nodex/java/core/shared/SharedData.html" title="class in org.nodex.java.core.shared" target="classFrame">SharedData</a></li> | ||
<li><a href="org/nodex/java/core/shared/SharedQueue.html" title="class in org.nodex.java.core.shared" target="classFrame">SharedQueue</a></li> | ||
<li><a href="org/nodex/java/core/shared/SharedUtils.html" title="class in org.nodex.java.core.shared" target="classFrame">SharedUtils</a></li> | ||
<li><a href="org/nodex/java/core/SimpleAction.html" title="class in org.nodex.java.core" target="classFrame">SimpleAction</a></li> | ||
<li><a href="org/nodex/java/core/SimpleFuture.html" title="class in org.nodex.java.core" target="classFrame">SimpleFuture</a></li> | ||
<li><a href="org/nodex/java/core/SimpleHandler.html" title="class in org.nodex.java.core" target="classFrame">SimpleHandler</a></li> | ||
<li><a href="org/nodex/java/core/logging/SLF4JLogDelegate.html" title="class in org.nodex.java.core.logging" target="classFrame">SLF4JLogDelegate</a></li> | ||
<li><a href="org/nodex/java/core/logging/SLF4JLogDelegateFactory.html" title="class in org.nodex.java.core.logging" target="classFrame">SLF4JLogDelegateFactory</a></li> | ||
<li><a href="org/nodex/java/core/stdio/Stdio.html" title="class in org.nodex.java.core.stdio" target="classFrame">Stdio</a></li> | ||
<li><a href="org/nodex/java/core/SynchronousAction.html" title="class in org.nodex.java.core" target="classFrame">SynchronousAction</a></li> | ||
<li><a href="org/nodex/java/core/net/TLSHelper.html" title="class in org.nodex.java.core.net" target="classFrame">TLSHelper</a></li> | ||
<li><a href="org/nodex/java/core/http/Websocket.html" title="class in org.nodex.java.core.http" target="classFrame">Websocket</a></li> | ||
<li><a href="org/nodex/java/core/streams/WriteStream.html" title="interface in org.nodex.java.core.streams" target="classFrame"><i>WriteStream</i></a></li> | ||
</ul> | ||
</div> | ||
</body> | ||
</html> |
Oops, something went wrong.