I'm looking to replace PHP with something better (everybody seems to say that PHP is evil, right ?), and considering server-side JavaScript.
node.js seems very popular, but I'm afraid I'll go crazy with asynhronous stuff. Is it possible to write normal (synchronous) code under node ?
My whishlist: web and command-line scripting, good performance (on the
The Computer Language
Benchmarks Game , V8 seems to be an order of magnitude faster than PHP), preferably developed by some company or community so that it will not be just abandoned someday, user community with a decent modules library.
I don't consider various frameworks based on Rhino, as Rhino runs in Java, and I'm not into Java, aware of it's memory footprint, and the whole idea of compiling javascript to java makes no sense to me.
Spent some time googling, and found numerous projects: Myna, Meteor, GromJS, APE, GLUEscript, v8cgi, silkjs, wakanda, GPSEE, sorrowjs, ejscript, Persevere, PhantomJS.
Does somebody have any experience with those ? Any recommendation are welcome.
I'm looking to replace PHP with something better (everybody seems to say that PHP is evil, right ?), and considering server-side JavaScript.
node.js seems very popular, but I'm afraid I'll go crazy with asynhronous stuff. Is it possible to write normal (synchronous) code under node ?
My whishlist: web and command-line scripting, good performance (on the
The Computer Language
Benchmarks Game , V8 seems to be an order of magnitude faster than PHP), preferably developed by some company or community so that it will not be just abandoned someday, user community with a decent modules library.
I don't consider various frameworks based on Rhino, as Rhino runs in Java, and I'm not into Java, aware of it's memory footprint, and the whole idea of compiling javascript to java makes no sense to me.
Spent some time googling, and found numerous projects: Myna, Meteor, GromJS, APE, GLUEscript, v8cgi, silkjs, wakanda, GPSEE, sorrowjs, ejscript, Persevere, PhantomJS.
Does somebody have any experience with those ? Any recommendation are welcome.
Share Improve this question edited May 27, 2016 at 0:12 igouy 2,69218 silver badges17 bronze badges asked Jul 14, 2012 at 21:36 Sandman4Sandman4 2,7412 gold badges25 silver badges19 bronze badges 4- 1 If you're not ready for the asynchronous model then you're right: Node.js will drive you crazy. – Pointy Commented Jul 14, 2012 at 21:43
- @Sandman4... I can feel you on this question.. I did look for fancy new things for my simple implementations sometime back, but I dont do it anymore, unless it serves a business purpose. The challenge with fancy implementations is the maintenance in the long run. If your organization has enough PHP skills, do it in PHP.. OR simple .NET (i'm aware .NET is not simple though :D ).. OR use Node if your organization will move along that path to build competencies! – Hasith Commented Jul 15, 2012 at 1:12
- Rhino doesn't compile to Java, it compiles to bytecode. – Dave Newton Commented Jul 15, 2012 at 2:57
- 1 Don't want to sound like a fanboy, but the idea of PHP being 'evil' is more a matter of trendiness. It's still the most used language for webdevelopment by far. People tend to think Microsoft is evil too, yet 90% of us at least have a douldboot or bootcamp with Windows. – JSON Commented Mar 10, 2015 at 0:36
5 Answers
Reset to default 6Well Node.JS is the way to go if you ask me. You can write synchronous code, BUT only do that in command line scripts. When writing a web servers you have to go the async route otherwise it will not perform because JavaScript is single threaded and everything comes to a halt.
The reason Node.js is so fast is because of asynchronous IO.
You will get used to callbacks and eventing and after a while you don't want to go back.
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
Meteor. Built on top of Node.js and growing very fast.
In Meteor, your server code runs in a single thread per request, not in the asynchronous callback style typical of Node. We find the linear execution model a better fit for the typical server code in a Meteor application.
UPDATE One year later - Why Meteor
Nodejs is very good option on many fronts.
But you say you are concerned about its a async nature.
Two points on this.
you never need to worry about async and can continue to write you application from top bottom like PHP. That's if you are not performing "blocking IO".
If you are performing "blocking IO" like reading a database or accessing the file-system than you will need to deal with async. Luckly there are good ways to do this without the need to change you coding practices too much.
Have you looked at Comparison of server side JavaScript solutions ?
Node.js is popular. As for php speed, have you looked at HipHop? Rewriting your code in javascript probably won't give much of a performance boost over php.
Thanks for providing the list of "numerous projects" you found. We are currently using Microsoft ASP 3.0 ("Classic ASP", coming with IIS) that provides a server-side JavaScript implementation since 1996 - it's fast, mature and due to the COM technology quite extensible. If you are not fixed to open source, it's worth a look. For our open source strategy, we will have a closer look at SilkJS.