© Excellent backgrounds/Shutterstock.com
Java Magazin
Kolumne: Enterprise Tales

Polyglott mit Vert.x: Eine JVM-Alternative zu Node.js

Die Umsetzung asynchroner Kommunikation im Enterprise-Java-Umfeld ist seit jeher nicht gerade trivial. Kein Wunder also, dass sich mittlerweile etliche, deutlich einfacher zu programmierende Alternativen herausgebildet haben. Am bekanntesten ist sicherlich das eventgetriebene und asynchrone JavaScript-Framework Node.js, das Googles V8 JavaScript Engine zur Ausführung verwendet. Mit Vert.x ist nun ein neuer Stern am Horizont erschienen, der einen genaueren Blick lohnt - allein schon aufgrund der Tatsache, dass eine JVM als Runtime verwendet wird.

Matthias Weßendorf, Lars Röwekamp


Node.js findet mittlerweile auch außerhalb der Hipster-Szene große Anerkennung. Selbst Industrie­größen wie Microsoft sind auf den Zug aufgesprungen [1]. Ein großer Vorteil von Node.js ist, dass es Entwicklern erlaubt wird, auf einfachste Art und Weise asynchrone, nichtblockierende Netzwerkprogramme zu schreiben:var http = require('http');http.createServer(function (req, res) {  console.log('Handling a request');  res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(1337, '127.0.0.1');console.log('Done: Server running at http://127.0.0.1:1337/'); Ein Node.js für die JVM?Listing 1: Vert.x-basierter HTTP-Server import org.vertx.java.core.Handler;import org.vertx.java.core.http.HttpServerRequest;import org.vertx.java.deploy.Verticle; public class HttpServer extends Verticle { public void start() { vertx.createHttpServer().requestHandler(new Handler() { public void handle(HttpServerRequest req) { String file = req.path.equals("/") ? "index.html" : req.path; req.response.sendFile("webroot/" + file); } }).listen(8080); }} import org.vertx.java.core.Handler;import org.vertx.java.core.http.HttpServerRequest;import org.vertx.java.deploy.Verticle; public class HttpServer extends Verticle { public void start() { vertx.createHttpServer().requestHandler(new Handler() { public void handle(HttpServerRequest req) { String file = req.path.equals("/") ? "index.html" : req.path; req.response.sendFile("webroot/" + file); } }).listen(8080); }} require "vertx" Vertx::HttpServer.new.request_handler do |req| file = req.uri == "/" ? "index.html" : req.uri req.response.send_file "webroot/#{file}"end.listen(8080) JavaScript und CoffeeScript (via Rhino)GroovyPython (via Jython)Support für WebSocket oder auch NoSQL vertx.createHttpServer().websocketHandler { ws -> ws.dataHandler { data -> ws.writeTextFrame(data.toString()) }}.requestHandler { req -> if (req.uri == "/") req.response.sendFile "websocket_app.html"}.listen(8080)WebSocketHandlerRequestHandlerFazit und AusblickDas Experimentieren mit Vert.x macht Spaß, und es kann nur empfohlen werden, sich mit dem Framework zu beschäftigen. Einen schnellen und leichten Einstieg bieten die verschiedenen Online-Tutorials [4]. Lars Röwekamp ist Geschäftsführer der open knowledge GmbH und berät seit mehr als ze...

Java Magazin
Kolumne: Enterprise Tales

Polyglott mit Vert.x: Eine JVM-Alternative zu Node.js

Die Umsetzung asynchroner Kommunikation im Enterprise-Java-Umfeld ist seit jeher nicht gerade trivial. Kein Wunder also, dass sich mittlerweile etliche, deutlich einfacher zu programmierende Alternativen herausgebildet haben. Am bekanntesten ist sicherlich das eventgetriebene und asynchrone JavaScript-Framework Node.js, das Googles V8 JavaScript Engine zur Ausführung verwendet. Mit Vert.x ist nun ein neuer Stern am Horizont erschienen, der einen genaueren Blick lohnt - allein schon aufgrund der Tatsache, dass eine JVM als Runtime verwendet wird.

Matthias Weßendorf, Lars Röwekamp


Node.js findet mittlerweile auch außerhalb der Hipster-Szene große Anerkennung. Selbst Industrie­größen wie Microsoft sind auf den Zug aufgesprungen [1]. Ein großer Vorteil von Node.js ist, dass es Entwicklern erlaubt wird, auf einfachste Art und Weise asynchrone, nichtblockierende Netzwerkprogramme zu schreiben:var http = require('http');http.createServer(function (req, res) {  console.log('Handling a request');  res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(1337, '127.0.0.1');console.log('Done: Server running at http://127.0.0.1:1337/'); Ein Node.js für die JVM?Listing 1: Vert.x-basierter HTTP-Server import org.vertx.java.core.Handler;import org.vertx.java.core.http.HttpServerRequest;import org.vertx.java.deploy.Verticle; public class HttpServer extends Verticle { public void start() { vertx.createHttpServer().requestHandler(new Handler() { public void handle(HttpServerRequest req) { String file = req.path.equals("/") ? "index.html" : req.path; req.response.sendFile("webroot/" + file); } }).listen(8080); }} import org.vertx.java.core.Handler;import org.vertx.java.core.http.HttpServerRequest;import org.vertx.java.deploy.Verticle; public class HttpServer extends Verticle { public void start() { vertx.createHttpServer().requestHandler(new Handler() { public void handle(HttpServerRequest req) { String file = req.path.equals("/") ? "index.html" : req.path; req.response.sendFile("webroot/" + file); } }).listen(8080); }} require "vertx" Vertx::HttpServer.new.request_handler do |req| file = req.uri == "/" ? "index.html" : req.uri req.response.send_file "webroot/#{file}"end.listen(8080) JavaScript und CoffeeScript (via Rhino)GroovyPython (via Jython)Support für WebSocket oder auch NoSQL vertx.createHttpServer().websocketHandler { ws -> ws.dataHandler { data -> ws.writeTextFrame(data.toString()) }}.requestHandler { req -> if (req.uri == "/") req.response.sendFile "websocket_app.html"}.listen(8080)WebSocketHandlerRequestHandlerFazit und AusblickDas Experimentieren mit Vert.x macht Spaß, und es kann nur empfohlen werden, sich mit dem Framework zu beschäftigen. Einen schnellen und leichten Einstieg bieten die verschiedenen Online-Tutorials [4]. Lars Röwekamp ist Geschäftsführer der open knowledge GmbH und berät seit mehr als ze...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang