3
omom
7y

! rant, needing advice

I'm about to start a big and ambitious project, and I'm stuck with a dilemma: what to pick for the back end server, node js vs Java JEE

The thing is that node is way faster than jee in concurrency transactions, which is a critical point for the program. But Java is Java.. I never worked on a huge app with JavaScript and it may become really messy..

Comments
  • 4
    I actually question wether node is so much faster. Java can be vary fast.
  • 0
    Can you specify how many actions .. and screens you have ? And how many tables you intending to have ? Does your app communicate with other external systems?
  • 1
    @Vikram the system is not meant to communicate with external environments, at least not yet.
    There will be a website + a rest API for phone applications with at the end about 15 pages and about the double of that number for the actions.
    Speaking about the database there would be 13 till now (this may evolve a bit after finishing the study phase)
    Roughly these are the numbers..
  • 1
    @Voxera emphasis on *can*. Garbage Collector, input processing, time and memory footprint say hello
  • 0
    @omomthings Anything but Java and you are good to go :D
  • 2
    @magnusi don't say that ! Never ..It depends on what kind of app you are making .For enterprise applications like in IT industries you don't go for Node js that's just not so viable option. .Java is way better than many languages it everything has its own pros and cons
  • 1
    @omomthings okay it seems small app so you can go for Node js it's faster to develop and test gud learning curve.Saying that if you want to more scalability and maintainence​ like if your DB grows in future and you want performance and fast processing you might need ORM support and business logic is executed way faster in back end than in client side like js ! Java has many types of collection s which you can take advantage of when sending/processing heavy data which js doesn't. Large computation can eat your browser memory which can crash app but in the case of J2EE app
  • 1
    Have a Look at vertx.io. It uses the same concurrency model as node, but can be used from many languages, Java included.
  • 1
    @Vikram Java is and always has been deeply flawed. Stupid Garbage Collector, inconsistent casing even in the standard library, refusal for real properties, but still requiring people to write getter and setter doppelgangers, dumb input processing (compare Scanner objects to the C# way or C/C++ ways), Date or Calendar?, why don't we use another third party library?, primitive types are not objects, why? You want to have an array with more than 2^31 elements? Haha, nope? Methods can only be 64kb. Do you need to make a compound value type? Sorry, nope. Operator overloading is so handy I will only use it in the standard library and don't allow users to have it. Native unsigned type coming from a native library? Bad luck

    And one word: Generics

    I could go on and on. The problem is that Java is being taught as the first language and people either don't know better or fail to see the flaws.

    Be sane, use Scala, Kotlin or Ceylon for (JVM) or C#, C, C++.

    Note that some info might be outdated.
  • 3
    Any technology out there is flawed in any way or another. The trick here is to select one covering all use cases and being the simplest/fastest to develop.

    As others said - NodeJS is fast to build and roll out, however Java is historically more suitable for large applications. It all depends on your needs, problems you want to solve and your capabilities in both technologies :)

    Good luck making the right choice!
  • 1
    @magnusi I agree with most of your points though some of them no longer applies like date thing which is now corrected in Java 8 ! Although Java has great third party or other framework​ support ! Saying that notably Scala came from criticism of Java so it was intended to be more better than Java.Some drawback s of it like IDE support (refactoring, plugin quality)
    - Slow compiler
    -Code can become complex to read
    -Lack of XPath support in XML
    -Immature frameworks
    - Lack of backward compatibility in its own versions.
    These things make me think twice 😉
  • 0
    @dexie can't agree more !
  • 1
    @omomthings in btw what's the database on your mind ? Mongo Db / SQL lite for Node js & Oracle 11g is best for enterprise applications !
  • 0
    @Artemix I was mentioning C# for things like better date and time solution, real properties, better input handling, a better garbage collector and some syntax improvements. I do, however, agree that it is heavier.
  • 1
    @Vikram Yes, I mentioned that some information might be outdated. Thanks for correcting me, I am glad some issues have been fixed.
  • 0
    I like to quote Guido Van Rossum: "Not execution time is too slow, development is too​ slow!" Start in whatever technology you can iterate the fastest. Then afterwards if performance REALLY becomes a problem, you can start to optimize - change technologies
  • 1
    Node, hands down. With good tooling you can make crazy robust apps in no time.
    I recommend AVA for testing, XO for linting and if you're developing an API, Koa with koa-joi-router OR koa-resourcer.
    Joi does runtime level input validation, so actual types, not that TypeScript compile time M$ garbage,
    Resourcer does automatic routing and mounting, so the groundwork is fast, much less boilerplate
  • 2
    Is it your own product, if so dont worry about "scalability", because finding 1k concurrent users is actually a LOT harder than scalability.

    I'd say do it with whatever you are more productive with and quickly get it in the hands of users and see if they actually want it. (For me that's usaully nodejs/go)

    Also more web apps these days rely heavily on the db, rather than the server app layer. Postgres is a great choice for that. I also find arangodb a pretty useful alternative.
  • 0
    Great points. Well put and said. @rusty-hacker
  • 2
    Something to consider: take a look at how much time you have to complete the project. From there think about which technology you are stronger at. If you are crunched for time I recommend using what you know best. Otherwise, seeking out input like you are doing is a great way to go.
  • 3
    @magnusi well node.js also does garbage collection so thats no gain over java or c#

    And both use jit compilation.

    Of cause, for some problems that node has specific libraries node could be faster but for most cases I would think that any speed disadvantage java has is due to bad framework or bad code.

    Node generally has thin frameworks that do a few things very well and with simple code or a good programmer that gives good performance.

    But with a good developer java can give excellent performance to.
  • 0
    @Voxera mixed agreement with you 😉
  • 0
    @Voxera Well there are garbage gollectors and garbage collectors.

    C#'s GC is undeniably smarter and can be controlled from within your program, while Java's can only be controlled with command line arguments and has a nasty habit of not putting back the stuff it borrowed, but it is not that bad in comparison with for example Go's GC.

    Nodejs GC is fairly unsophisticated, but for the most part serves well. It cant be controlled either, which is a shame

    As for raw speed, Node turns about 20% than Java EE, though.

    Another thing important is that Node has generally faster development speed, which could be a deciding factor as well.

    I wouldn't call it excellent performance, because that's why I have C & C++, but I agree that okay performance can be achieved with Java, too.

    Also Node is interpreted, not JIT

    NOTE: Some information might be outdated a year or two. Please correct me.

    NOTE 2: I prefer using neither, not inclined to use one over another
  • 0
    Thanks everyone one for the advices! Finally went on PHP! Thank you however! :D hahahahahha just kidding, used node to try it out and because @rusty-hacker 's comment got my feelings..
Add Comment