Posts

Showing posts from August, 2012

Node.js - lightweight and efficient

Using Node.js you can write a web server in as little as six lines of code. Here is a variation for the sample from the Node.js  (Node.js Synopsis) //Imports the http library var = require(http); http.createServer(function(request, response){     response.writeHead(200,{'Content-Type':'text/plain'});     response.end('Hello World\n'); }).listen(8124); console.log('Server running at http://127.0.0.1:8124/'); I was asking myself why would i want a server side javascript (which is the whole idea of Node.js) ? Besides that it uses a non-blocking I/O model (this means that other processing can continue if it does not depend fro an I/O to complete, kind of like an asynchronous call to perform the I/O) . One use case that i can think of is that  I can wrap other services (e.g. other source of data like json/xml)  specially ones that are exposed as web service APIs (e.g. Google APIs).

Looking into the Future

The Future When dealing with concurrent processing, starting Java 1.5 the 'Future' looks bright. In java 1.5 it is now easier to collect results from asynchronous processes by getting the future. Here are the objects that you are going to need to process concurrently and collect results from those concurrent processes: //Please refer the the Java API documentation on how to properly instantiate the objects below //This is just to give an overview on how they are used together and relate to each other. //A ThreadPoolExecutor is basically a pool of threads that you configure that will asynchronously //perform the tasks that you provide it ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(); //A completion service is the object that collects the results of the task that the ThreadPoolExecutor //completes. That is why when you instantiate it you need to pass it a ThreadPoolExecutor. CompletionService completionService = new ExecutorCompletionService (th