⇨ node.x, a Asynchronous Event Framework for the JVM
July 11, 2011 ⚑
What is Node.x?
- A general purpose framework that uses an asynchronous event based style for building highly scalable network or file system aware applications
- Runs on the JVM.
- Everything is asynchronous.
- Embraces the style of node.js and extends it to the JVM. Think node.js on steroids. Plus some.
- Polyglot. The same (or similar) API will be available in multiple languages: Ruby, Java, Groovy, (Python?, JS?, Clojure?), etc
- 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 threading. Unlike node.js, Python Twisted or Ruby EventMachine, it has true multi-threaded scalability. No more spinning up 32 instances just to utilise the cores on your server.
- Understands multiple protocols out of the box including: TCP, SSL, UDP, HTTP, HTTPS, Websockets, AMQP, STOMP, Redis etc
- Provides an elegant api for composing asynchronous actions together. Glue together HTTP, AMQP, Redis or whatever in a few lines of code.
A framework a la node.js (and some more) in a multithreaded environment on the JVM is an intriguing idea with a lot of potential and the examples look both simple and powerful.
This project is based on Netty, an asynchronous event-driven network application framework, that I can't stop to praise. We use it in HornetQ and is a big reason why HornetQ is so fast.
Tim is an ex-colleague from Red Hat and the previous lead of HornetQ. He knows his stuff about performance, concurrent and asynchronous code and I am intrigued to see where he will go with node.x (esp. if he adds a Clojure layer on top of it, functional programming is a good match for an asynchronous event framework).