PermaLink Meteor.js/Derby.js (Node.js underneath) vs. Vert.x02/02/2013 08:34 PM
Quick comparison of these frameworks for a new web app I'm writing (note that these frameworks are rapidly evolving so what is below is only valid as of the creation date of this article obviously).  This is a summary of features (though Vert.x isn't really a web framework...it's mostly the foundation on which you can put frameworks on via its event bus so it'll depend a lot on what modules are available for the language you use in Vert.x).

Feature

Meteor.jsDerby.jsVert.x
LanguageJavascriptJavascriptPolyglot: Java, Javascript, CoffeeScript Ruby, Groovy, Python (will support Scala and Clojure)
Decent examples*great* examples of typical web apps with lots of dynamic UI; excellent documentationGood core examples and one good shopping cart/auth example
Package managementCustom meteor wrapper and can use most (not ones w/ heavy dependencies) Node.js modules by going into the app/server directory and using npmUses node.js' standard npm package managerUses vertx package manager
Server-side templatingdoes view generation on clientBest at this so client-side loads are very fastMustache module for JS, Groovy has built-in templating. No templating for other languages built-in AFAIK
Web crawlable outputYes, added recentlyYes (side effect of server-side templating)Yes (Mustache/Groovy output HTML)
Event busYesYesYes
Uses multiple CPU coresYes, but needs one instance per core (Node.js limitation)Yes, but needs one instance per core (Node.js limitation)Yes (Java engine underneath uses all CPUs)
OAuth AuthenticationBuilt in OAuth moduleYes, but you have to code it using Node.js' Passport moduleNo, though can be done using scribe-java
DB AuthenticationBuilt in, including password recoveryPartially in...EveryAuth module will be added eventuallyBuilt-in, but no password recovery
Default DBMongoDBMongoDBMongoDB
Easy to Replace DBNo, because MongoDB API is exposed at browserYesYes
Offline DB Conflict ResolutionNoWork in ProgressNo
Dynamic DOM bindingOne way, renders entire DOM that needs updatingTwo way, renders partial DOM as needed when changes made on clientNot a web framework
DOM Event HandlersCSS referenceHTML attributes in templatesNot a web framework

I think the quick summary is that Meteor.js is the easiest to use as a complete web framework. Performance with Derby.js and Vert.x is better but they seem to be less complete packages at this time.

References:
http://www.slideshare.net/studgeek/an-overview-of-derbyjs-and-meteorjs-for-the-nova-nodejs-meetup
http://blog.derbyjs.com/2012/04/14/our-take-on-derby-vs-meteor/
http://stackoverflow.com/questions/10390619/derbyjs-and-authentication
http://news.ycombinator.com/item?id=3948727
http://www.jinspired.com/site/a-preliminary-performance-analysis-of-the-vert-x-vs-node-js-http-benchmark
https://github.com/pmlopes/bson.vertx.eventbus
Comments :v

1. Kynao03/24/2014 19:15:25


Excellent. Thanks for this kind of head to head, very useful.
Can it be updated to now ?
Are you interested into suggestions for adding rows into this table ?




2. ken02/27/2013 16:04:05


@Tony:
Firebase is actually looks more exposed than Meteor is. With Meteor, you can force all updates to be done via server methods where you can use JS business logic to validate things. When you update subscribed MongoDB collections on the server, the data gets pushed down to the web client. It's not too bad, but you do have to be careful that you don't publish too much info down to the client.




3. Tony02/26/2013 08:37:38


Nice comparison. You could add firebase into the pack.

My concerns with Meteor and Firebase are that they're exposing the DB API out to the world, and anyone could take advantage of that.
Also, they're quite rigid with the chosen DB.

cheers,
T




Start Pages
RSS News Feed RSS Comments Feed CoComment Integrated
The BlogRoll
Calendar
December 2024
Su
Mo
Tu
We
Th
Fr
Sa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Search
Contact Me
About Ken
Full-stack developer (consultant) working with .Net, Java, Android, Javascript (jQuery, Meteor.js, AngularJS), Lotus Domino