Slashdot Mirror


Ask Slashdot: Node.js vs. JEE/C/C++/.NET In the Enterprise?

theshowmecanuck writes "I'm working at a small- to medium-sized company that creates software for mobile devices, but came from a 'large enterprise' world before. I see node.js being used increasingly in smaller companies (including ours) or in web/mobile related software. Meanwhile we see languages like Java/JEE, C/C++, and .NET continue to be used for medium-to-large enterprise corporate software. Compared to the status quo in the enterprise (JEE/C/C++/.NET ... and yes, maybe even COBOL) maybe Slashdotters can chime in on how they see Node.js in this role. I'm thinking of things like complexity of business logic (dependencies, workflows, linear processes, etc), transaction support (for processes in general and database support), messaging services, etc. Also, what is the state of Node.js in terms of paradigms like application containers, where much of the 'plumbing' is already set up for you (one of the main benefits of JEE application containers)? But there is also the question of maintainability, deployment, and ongoing operations. What say you, Slashdot?"

223 of 304 comments (clear)

  1. Who you gonna call? by skovnymfe · · Score: 5, Insightful

    When node.js goes to shit and your enterprise class software worth millions or even billions of dollars is ruined, who you gonna call? Nobody, that's who. That's why node.js isn't for enterprise use.

    1. Re:Who you gonna call? by Kjella · · Score: 3, Insightful

      And when your Java application goes to shit you're going to call Oracle? Reality is that for enterprise code it's more about longetivity than anything else (no "ancient VB6 app nobody knows how to touch anymore") and by the looks of it Javascript is here to stay. Sure sounds a lot better than many of the other fads out there.

      --
      Live today, because you never know what tomorrow brings
    2. Re:Who you gonna call? by skovnymfe · · Score: 1

      Unless of course you're sitting on a 100+ strong team of developers capable of forking the project off in the direction you want it to go, and then maintaining it for you. But then it's not really node.js anymore, is it?

    3. Re:Who you gonna call? by gl4ss · · Score: 1

      you're not gonna call anybody except your own guys. you can contract companies for node.js if you think that covers your ass.

      and an answer to the plumbing question.. go check npm. plenty to choose from and that's maybe the problem, but there's plenty of different so called plumbing solutions should you need one. it's farm more likely that node.js just plays a front end role in any large solution and linear backend stuff that takes longer time etc happens elsewhere - or perhaps in another spawned node.js.

      node.js is a handy scripting tool though.

      --
      world was created 5 seconds before this post as it is.
    4. Re:Who you gonna call? by Tridus · · Score: 3, Insightful

      And when the Oracle .net driver goes to shit, who you gonna call?

      Hint: Microsoft and Oracle will blame each other and it'll take six months to get a fix. My day job is dealing with both of them, and it does happen sometimes. I don't care for node.js much at all, but the idea that it's somehow inherently more dangerous than stuff from big companies is just nonsense.

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    5. Re:Who you gonna call? by angel'o'sphere · · Score: 4, Informative

      I reply to you, not the followups that are similar brain dead.

      What is node.js? It is a server software you can download.

      Then you have a bash script and some config files to start it. And perhaps a book from O'Reeilly.

      When you write your code against it, you figure if it is "good enough" for you.
      When you deploy it in your enterprise you very likely consider to stick stable to the current version/release for YEARS.

      So, meantime node.js is no longer maintained. WHO CARES?

      You stick to your old version, and you are good. If you need new features that belong into node.js and not into your software you hire one for it. Or you write it yourself.

      BTW: do you really believe if it is no longer maintained it won't become an Apache project?

      What about all the other software out there that once was open source and was used by enterprises and is no longer maintained? I never heared about a company going bankrupt because of this.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:Who you gonna call? by sproketboy · · Score: 4, Informative

      That's much less likely to happen with Java apps. skovnymfe's point (since it flew way over your head) was that node.js is not backed by a big company so if you're doing important development you probably would want to use something safer.

    7. Re:Who you gonna call? by sproketboy · · Score: 4, Insightful

      WTF are you talking about? Oracle .net driver? You mean you're using .net with an oracle database instead of mssql? Well there's your problem. M$ doesn't like other databases except theirs.

    8. Re:Who you gonna call? by Xest · · Score: 1, Interesting

      He's probably talking about the .NET connector which allows Oracle databases to be consumed by .NET framework features like the EF or to integrate with tools in visual studio.

      But either way what he says shouldn't ever happen. The .NET connectors don't just randomly break unless you upgrade to a version that's broken. If you test and integration test and everything works then don't upgrade without regression testing. If you upgrade and don't regression test and it breaks then it serves you fucking right.

      The GP's problem is one of a poor development, testing and go live procedure.

    9. Re:Who you gonna call? by Tridus · · Score: 4, Insightful

      Yes, because there's never been a bug that manifested in some weird situation after everything had been live and working for months. Nope!

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    10. Re:Who you gonna call? by Ugot2BkidNme · · Score: 2

      A few weeks ago I got called in by a client to talk to a 3rd party vendor of theirs regarding some problems they were having. Turns out the 3rd party vendor was Oracle. interestingly enough Oracle was providing a .Net solution running on Oracle DB to our mutual client. I was a bit shocked. Turns out Oracle does a lot of .Net development. So given Oracle and MS mutual business interests I have no doubt .Net working with Oracle DB is a priority.

    11. Re:Who you gonna call? by Anonymous Coward · · Score: 1

      The day node.js has a multi-threaded memory model and the layers/services that .net or Java libraries provide - and a steadiness which guides features/bugfixes/regular development, it'll get there.

    12. Re:Who you gonna call? by mjwalshe · · Score: 1

      well back in y2k days at British telecom Oracle was as much use as a chocolate teapot in a lot of cases and we paid a metric fuck ton of cash to them.

    13. Re:Who you gonna call? by Xest · · Score: 1

      It's not like database communication is the sort of thing that's not well understood and isn't fairly easy to build a solid test suite for. It's even easier for the consuming developer to test their own use of the even smaller subset of the features their product requires too.

      So yes these sorts of things tend to be extremely unlikely to result in bugs that just pop up out of nowhere. Where it is a possibility the occurrence is so small as to not be a factor in overall language/technology stack choice because there are much bigger factors to worry about.

      If this is prominent enough to be a concern in your choice of technology/stack then yes you're definitely doing something wrong.

    14. Re:Who you gonna call? by NJRoadfan · · Score: 1

      Years ago I developed a .NET program that connected to a MySQL database using its ADO.NET connector. It was painful, but it worked. Hopefully things have improved since than.

    15. Re:Who you gonna call? by dwpro · · Score: 2

      It seems like a half-ass attempt at best by Oracle, though it's been getting better since Microsoft quit supporting the Oracle drivers themselves. You still have to install the fairly unwieldy Oracle Client on all front end servers to access the database (though I believe they are working on a portable library). The ODP.net client doesn't do automatic cursor mapping, and if you want to use it, Oracle seriously recommends to hand/hard code into your base configuration file xml mappings for cursor return types on stored procedures. And they still refuse to provide a boolean type (except in pl/sql). Quite annoying still, but better than the old days.

      --
      Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
    16. Re:Who you gonna call? by mystikkman · · Score: 4, Insightful

      So, meantime node.js is no longer maintained. WHO CARES?

      You stick to your old version, and you are good. If you need new features that belong into node.js and not into your software you hire one for it. Or you write it yourself.

      And then you get hit by a vulnerability.

      http://blog.nodejs.org/2012/05/07/http-server-security-vulnerability-please-upgrade-to-0-6-17/

    17. Re:Who you gonna call? by Bill_the_Engineer · · Score: 2

      And when your Java application goes to shit you're going to call Oracle?

      Being a mature language, it's not that hard to find a Java developer. With enterprise software you have to think about language features and support staff turnaround.

      Sure sounds a lot better than many of the other fads out there.

      You lost me on that one. Java was first released in 1995. Node.js is about two years old and is still at a 0.10 version release. PHP, Ruby, Perl, and Python all have longevity and developer base supporting them. Let's give Node.js some time to mature before we start accusing other platforms of being "fads".

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    18. Re:Who you gonna call? by EmperorOfCanada · · Score: 2

      Years ago I was dealing with a particularly nasty problem with some new Oracle software. We called for support and went up layer after layer until we were talking with a guy involved in development. He basically said that the software in question was crap and that we would never get our thing to work.

      About the only company that vaguely impressed me with their support was Sun in that if one of their machines died they bent over backward to get it working again. In one case they sent a guy in to swap out a dead motherboard early on a Sunday morning.

      But the sad reality with Sun was that it was just cheaper and faster to buy 10 white box Linux machines for the same price and have massive redundancy.

      So don't give me Enterprise crap with things like Node.js. If you are small node.js is a proven solution. If you are big node.js is still a proven solution. If you are huge then node.js might start showing weaknesses along with basically everything else but being massive you should have people who can deal with it in no time at all.

      About the only thing that "Enterprise" solutions offer are slick salesmen and slick looking certifications.

    19. Re:Who you gonna call? by rioki · · Score: 4, Insightful

      First you chose the right tool for the job at hand. node.js is not intended for serious number crunching, but neither is Java or .Net. If you need multi-threading in node.js you are doing it wrong; node.js efficiently handles many thousand parallel executions, in one thread. Node.js is very efficient at waiting and reacting to input. One node.js instance can get up to 99% on one CPU core, something that is really hard with a Java or .Net application that happens to do I/O. If your needs extend one core you can always use cluster and thus spawn multiple node.js processes working the same program. node.js is awesome, since in almost all applications this approach results in a very easy solution to scaling out.

      So far with npm, I have found everything I can possible want under the sun and all with permissive licenses, such as MIT. I don't see the issue here.

      Finally if you really need the raw power, use C or Fortran, seriously. Java and .Net are the last places to look for performance.

    20. Re:Who you gonna call? by Anonymous Coward · · Score: 1

      Node.js stops being actively developed, as one user put, security vulnerability happens...or just a general bug. Maybe you come in one morning and one of the hotfixes for the OS cratered the Node.js server component and now all of your systems are down.

      Oh, I can write some code to fix it? Right, my enterprise apps are all down right this second and you expect me to stop and start prodding at the code mindlessly until I find a fix? Oh wait, my security team hasn't had time to review the code, nevermind the fact that it never went through change control or project planning. In all likelihood my code is crap that I just wrote, and could create many more problems then it solved, because I was writing to try and get my enterprise software back online.

      You might think this is a fringe issue, but it happens, all-the-time!

      This exemplifies the major issue with open source in the enterprise. On paper it looks great, but the issue at hand is that your developers spend more time fixing bugs as opposed to implementing new features in code, and when you have staffing issues (trouble getting people and retaining people, which everyone has these problems) or if you're growing at a tremendous rate, spending 50-60% of your dev time on bugfixes is just unacceptable. You'll never keep up with the industry.

      And finally, doesn't your argument negate the entire point of Node.js, to be simpler and make developers' lives easier? If you think about /any/ framework/library, isn't this the whole point? If not, why aren't we having all of our developers writing in C and creating their own I/O abstraction libraries for every application? Hell, even machine language.

    21. Re:Who you gonna call? by sproketboy · · Score: 1

      Nope. They haven't. the .NET data layer is still coded around concrete classes mostly and the APIs have many less features than JDBC.

    22. Re:Who you gonna call? by Anonymous Coward · · Score: 1

      Reality is that for enterprise code it's more about longetivity than anything else

      And that's the biggest problem with Node -- too new and unstable, too many beta-level modules that are under active development.

      We have a 1.5 year old project that uses Node for development (not production), and it's a complete pain in the arse to get running, one of the modules is already obsolete, and it's nearly impossible to find old documentation. Can't imagine someone will be able to get it running 5 years from now.

    23. Re:Who you gonna call? by s122604 · · Score: 3, Insightful

      Finally if you really need the raw power, use C or Fortran, seriously. Java and .Net are the last places to look for performance.

      actually the > 1.6 incarnations of Java are fast and only getting faster, and there are real time implementations of the JRE if you really need them. As far as "power" (however that is defined), folks are doing some really interesting (especially in the news lately) things with large data set analysis and manipulation with products like Hadoop.

    24. Re:Who you gonna call? by Coolhand2120 · · Score: 1

      While node.js may not be supported by a big company, the JS engine the runs node.js (V8) is run by Google.

    25. Re:Who you gonna call? by ttucker · · Score: 3, Informative

      The JIT compiler frequently optimizes code to run faster than than C++ because it knows statistical things at run-time that a static compiler could never know.

    26. Re:Who you gonna call? by ttucker · · Score: 1

      Are you saying Java is a... fad?

    27. Re: Who you gonna call? by thetoadwarrior · · Score: 2

      You're talking shit. Java beats node in all the testing I've seen and yes the package repo for node has tons of libs and a lot of them are grade-a shit. JS is very popular with newbs so it suffers the same problem as jQuery plugins or PHP in that quality varies a lot.

    28. Re:Who you gonna call? by godefroi · · Score: 1

      You're pretty ignorant. If you measure "performance" by checking how high you can get the graph in the task manager, trust me, I can cap out as many CPU cores as a machine has, and do a lot of I/O simultaneously, in Java or C#, and I can do it trivially.

      Furthermore, thanks to the JIT compiled nature of Java and C#, number crunching is just fine on these platforms, thank you very much. Even in the early days, right when .NET came out, it was fine. We ran a simple number-crunching test, calculating Fibonacci numbers, and even then, C showed zero advantage over C#, and neither showed much advantage over VB6 for that particular problem.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    29. Re:Who you gonna call? by bjohnso5 · · Score: 1

      In an enterprise setting, it's much more likely that you'd be calling IBM rather than Oracle for your application going to shit.

    30. Re:Who you gonna call? by s122604 · · Score: 1

      exactly, but "java is slow" meme, just won't die...

    31. Re:Who you gonna call? by angel'o'sphere · · Score: 1

      Yes, and then you fix it ...

      Vulnerabilities can happen in any product.

      I rather fix such bugs myself then have to wait months for Oracle or whom ever.

      The point was: who cares if the original developers no longer exist or maintain it?

      No strategy can keep you "safe" from that.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    32. Re:Who you gonna call? by SolitaryMan · · Score: 1

      I see this claim very often, but so far failed to find any evidence. Do you happen to have any?

      --
      May Peace Prevail On Earth
    33. Re:Who you gonna call? by DickBreath · · Score: 4, Informative

      > Java and .Net are the last places to look for performance.

      You obviously do not know about Java.

      Since others have addressed other points, let me touch some not yet mentioned.

      There are production servers running Java workloads with heap sizes in the tens or even hundreds of Gigabytes of memory, with 10 millisecond GC pause times. I mention that because someone always brings up GC. But JavaScript (node.js) has GC, so instead I'll ask whether you think node.js garbage collector can do that?

      The JVM (java virtual machine) is one of the most amazing pieces of software engineering on the entire planet. It has some of the most sophisticated code ever written. It's JIT is an amazing dynamic compiler whose source language is the JVM binary code emitted by the Java compiler.

      Now, imagine if your node.js could do this.

      The VM notices that a particular function (A) is getting more than it's fair share of CPU, so the JIT compiles it to native code. During compilation, if function A calls function B many times, such as in a loop, function A may inline function B.

      Now, on the JVM you can dynamically replace and reload binary classfiles in a running system. So suppose the binary file containing function B is reloaded. But now the compiled version of function A has inlined an out of date function B. No problem, the JVM ditches the compiled version of function A, and very shortly, based on real time continuous performance monitoring and statistics, it will notice that function A deserves to be compiled to native code, and repeat the whole process.

      The JVM is perhaps one the best runtimes available for many different programming languages. It provides a huge number of highly evolved services right out of the box. GC. Binary portability. Native compilation at runtime, thus making the JVM bytecode portable. Choice of GC algorithms. Choice of JVM vendors, including ones with real commercial support for your Billion dollar business application. Remote monitoring tools and consoles.

      Pick the right tool for the right job.

      --

      I'll see your senator, and I'll raise you two judges.
    34. Re:Who you gonna call? by DuckDodgers · · Score: 1

      No benchmark is flawless, but look at the computer language shootout ( http://benchmarksgame.alioth.debian.org/ ) or the TechEmpower web benchmarks ( http://www.techempower.com/benchmarks/ ) Java does very well in both. In the computer language shootout, in all eleven micro-benchmarks Java finishes within a factor of two of C++ - it uses dramatically more memory, but it runs very nearly as quickly.

      In the TechEmpower benchmarks, in a few places the lone C++ entry has a strong lead, but nowhere does it trump the well-written Java entries by as much as a factor of three, and in some places it loses soundly to some Java entries.

      Now there are a large number of applications when a 2-3x loss of speed are unacceptable and a much larger number of applications when a 5-40x increase in required memory are unacceptable. And the Java Virtual Machine HotSpot Just-In-Time compiler starts optimizing functions that have been entered 10,000 times, so for the first few seconds or minutes of operation a Java program runs more like an interpreted language than not.

      So you have to ask yourself whether Java occupies the sweet spot between the execution speed of C++ and the developer productivity of, say, Python, Ruby, Perl, and PHP. I would say... no. But that's a much more complex topic to debate. I suspect the real sweet spot might be languages like Clojure and Scala, which hit all of the strengths of the Java Virtual Machine, tie in easily to existing Java libraries, but are much nicer to work with than Java itself.

    35. Re: Who you gonna call? by DuckDodgers · · Score: 1

      Good point. On the other hand, if you're going to be doing any client-side development and your UI is anything other than very simple, you are probably going to be working on an awful lot of Javascript code anyway. That gives Node the advantage that you're not switching your mental context from Javascript to Java and back as you switch from client to server. That's potentially a productivity win, if not a performance win.

    36. Re:Who you gonna call? by DuckDodgers · · Score: 2

      My understanding is that most number-crunching performance problems with Java (and I assume C#, though I don't know much about it) are from code that "boxes" the numeric data into the numeric object types. If you work with the primitive int, long, float, and double, and arrays of such, they're very fast. In Java world, I routinely find List vals = .... easier to work with in terms of code constructs than long [] vals = .... but I'm in web work and consistently 90+% of the time we spend answering requests is waiting for the database.

    37. Re:Who you gonna call? by tibman · · Score: 1

      I had to do something similar but the other way around. A php server melted and took all the configs/drivers with it. It was PHP (php4 in 2012!) to MSSQL 2008.

      --
      http://soylentnews.org/~tibman
    38. Re:Who you gonna call? by DuckDodgers · · Score: 1

      Being able to find someone that can get Javascript form validation to work on a text field in some klugy web page is different from getting someone that can write decent Node.js code.

      But the same is true in the Java world. I've interviewed more than ten people that could read and write text from a file using Java but had never so much as built a rinky dink web application that prints "Hello World!" to a web page, and didn't know how to compile Java code without an IDE.

    39. Re:Who you gonna call? by tibman · · Score: 1

      and someone to blame, lol

      --
      http://soylentnews.org/~tibman
    40. Re:Who you gonna call? by hermitdev · · Score: 1

      I can't speak to Java, but C# only boxes if you store an value types as an object.
      So, if you do:
      int i = 1; i *= 2; // does not box
      object an_int = i; // boxes

    41. Re:Who you gonna call? by DuckDodgers · · Score: 1

      In Java, arrays can hold the primitive types but the common data types List, Map, Set, Stack, and Queue require boxed objects. Also, Java generics only work with object types. You are free to use third party libraries or write your own code that has MyListOfInt which stores a list of int without boxing them or MyMapOfDoubles that has maps with double that is not boxed, but now you've lost interoperability with the rest of the Java universe. Or you can just work with arrays, which is fine but the whole point of List, Map, Set, Stack, and Queue is that they give you features a raw array does not have.

    42. Re:Who you gonna call? by ttucker · · Score: 1

      So you have to ask yourself whether Java occupies the sweet spot between the execution speed of C++ and the developer productivity of, say, Python, Ruby, Perl, and PHP. I would say...

      It is funny that you included a benchmark (http://www.techempower.com/benchmarks/#section=data-r6&hw=i7&test=query) where Java is performing within 3% of C++ for web applications, and simply dominating the nearest PHP entry. Perhaps Java does poorly in contrived numerical benchmarks (which are slanted for platform binary entries with super short run-times) but in real life applications the differences are nowhere near 2x.

    43. Re:Who you gonna call? by ttucker · · Score: 1

      People forget that their shitty insecure C++ apps are being run in virtual machines anyways, which makes the overhead of a JVM seem paltry.

    44. Re:Who you gonna call? by julesh · · Score: 1

      Not even then, I would imagine. V8 is not marketed as an enterprise-class product. There is no support for V8; it's a free product, released only because they wanted a world-class javascript engine to include in Chrome. Any other uses are practically irrelevant as far as Google are concerned.

    45. Re:Who you gonna call? by cheesybagel · · Score: 1

      Java is really lousy at doing floating point and it has no unsigned types. It has no vector support either. That is the main issue.

    46. Re:Who you gonna call? by julesh · · Score: 1

      exactly, but "java is slow" meme, just won't die...

      That's because there are certain ways in which Java *is* slow:

      * AWT is a heap of shit, very badly designed, and takes a positive age to initialize. Swing is no better, because Swing is built as a layer on top of AWT.
      * Java's performance for floating point leaves a lot to be desired because Java's specification of some mathematical operation means that processor-specific instructions cannot be used, e.g., to calculate the result of Math.exp() on x86 processors, so it must be done in software. This bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7174532 suggests they may have recently found a solution, but I don't think this is in any released version of Java yet.
      * Garbage collection is much slower than hand-optimized memory allocation, and heap allocation is much slower than stack allocation, so a well written C++ application can always outperform Java on memory handling.

      This doesn't mean that Java isn't perfectly suitable for the vast majority of tasks, particularly those that are I/O bound like a typical server application, but there are things that it really isn't good enough for.

      (Signed, somebody who once attempted to write a high-performance neural network simulator in a language that can't do exp() at a reasonable speed.)

    47. Re:Who you gonna call? by cheesybagel · · Score: 2

      Modern Javascript environment have JIT compilation and GC as well. The performance is not going to be as good for several reasons. But JIT is not a Java specific trait.

    48. Re: Who you gonna call? by julesh · · Score: 1

      Switching between client and server is a large enough switch anyway. I'd say it's actually *easier* to work in different languages on each side, because it allows you to keep your conceptualisations of each side more distinct in your mind. Sure, I can't justify that in any way, but I doubt you can justify any assertion of a cost in a "mental context switch", either.

    49. Re:Who you gonna call? by Nivag064 · · Score: 1

      If you subscribe to JBoss from Red Hat for your enterprise Java needs, you will get very good support - for a lot less than Oracle is likely to charge. see: http://www.jboss.org/

      There is a very active community for supporting OpenJdk, which is the code base for Oracle's Java offering. see: http://openjdk.java.net/

    50. Re:Who you gonna call? by jon3k · · Score: 1

      What do you mean "node.js goes to shit" ? The server side platform? Who does Google call when their python scripts have bugs? I'm not sure you understand how this works. You can't call Oracle because your java code doesn't compile and have them fix it for you.

    51. Re:Who you gonna call? by Nivag064 · · Score: 1

      Java is fine for heavy number crunching, so long as you program accordingly.

      The JIT (Just-in-Time Java Compiler) that is part the JRE (Java Runtime Environment) JVM (Java Virtual Machine) is quite vicious at run time optimisation. Using the usage profile at run time, it compiles frequently used code into optimised machine code. It will even in-line methods calls that are at the end of long pointer chains (or more formally: at the end of a chain of object references)!

      Java has facilities for using multiple cores for parallel execution, essential for effective concurrent programming. The JVM can also effectively use gobs of memory, using a Terrabyte is not unheard of.

      If you are doing heavy number crunching: deal directly in double & int primitives, and avoid doing arithmetic using classes like Double, Integer, & BigDecimal - or unboxing & boxing will kill your performance. Sensible algorithms and other appropriate coding practices, are also needed for good performance, as well as choosing good libraries for heavy lifting in things like matrix operations.

      Java also scales well in terms of complicated logic that needs to programmed by teams of people, in a way that is relatively easy to maintain.

      I find Java the best language for most of what I want to do, though there are several aspects that cause me a lot of frustration, and (to my mind) unnecessary work.

      No language is perfect, chose one that is best overall for your situation!

    52. Re:Who you gonna call? by pseudorand · · Score: 1

      That's why I code everything for Silverlight. It's backed by Microsoft, a multibillion dollar enterprise with a long history of excellent support. How could I go wrong?

    53. Re:Who you gonna call? by elashish14 · · Score: 1

      Right, because proprietary software would never have a vulnerability.

      Much less would the software vendor give the information about it to the NSA before patching it.

      And even less that they would not bother to patch it at all, because honestly, they don't have to if they don't want to, and there's nothing you can do about it.

      --
      I have left slashdot and am now on Soylent News. FUCK YOU DICE.
    54. Re:Who you gonna call? by ttucker · · Score: 1

      Java is really lousy at doing floating point and it has no unsigned types. It has no vector support either. That is the main issue.

      The float performance is only poor when using the x87 FPU, elsewhere it is forwarded as an instruction.

    55. Re:Who you gonna call? by DuckDodgers · · Score: 1

      If you click through the various configurations in the TechEmpower benchmarks, there are places where Java handily outdoes the lone C++ entry for performance. But in other places, C++ has a clear lead. That's also the first C++ entry to the benchmark - you have a lone C++ entry against most of the kings of the Java web world, and the Java entries have been in the benchmark for all six rounds with plenty of chances for tuning. If there were lots of C++ entries, I would be more comfortable declaring the results significant.

      Conversely, the Computer Language Shootout specifically "warms" the JVM before executing the benchmarks, so that you get best-possible Java performance. So that 2x difference is realistic for some specific applications.

      And I realize Java handily outdoes PHP, Python, Perl, and Ruby in the benchmarks on a consistent basis.

    56. Re:Who you gonna call? by ttucker · · Score: 1

      Try Java again with a modern FPU (ie. not the x87 one that was on the 486dx). The advent of SSE and SSE2 are game changers for Java performance.

    57. Re:Who you gonna call? by DuckDodgers · · Score: 1

      Is it bad at doing floating point? As I stated elsewhere, Java has support for primitive types in arrays but not in other data structures like Set, List, and Map or in Java generics. So unless you carefully constraint your code to only use arrays and custom objects, you're going to have your little and fast int and double values converted to Integer and Double objects and take a huge performance hit. But beyond that, I'm not aware that Java floating point is slow.

      You're right about the unsigned types, but how often is that really a problem? It doesn't matter in web development and most fat client applications. It's only a problem for certain classes of number-crunching.

    58. Re: Who you gonna call? by DuckDodgers · · Score: 1

      I agree, I am speculating. But my wild guess is that projects like Node.js and to a lesser extent Meteor.js, etc... went from nothing to immensely popular in a short time specifically because developers were working in the same language on both sides. Aside from ease of development, what else could server-side Javascript have to recommend it?

    59. Re: Who you gonna call? by Lennie · · Score: 1

      The reason is there are 8 million webdevelopers, they like to use what they know.

      It is as simple as that.

      --
      New things are always on the horizon
    60. Re:Who you gonna call? by godefroi · · Score: 1

      A good programmer will know the platform well, and will choose algorithms and code constructs that are appropriate for it. When these are chosen poorly, performance suffers. This is not a situation that is unique to Java, C#, C++, or any other platform.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    61. Re:Who you gonna call? by DickBreath · · Score: 1

      Of course I understand JIT is not a JVM specific trait. Android has JIT compilation of Dalvik bytecode to native code.

      I was aware that at least one and I believe a couple of JavaScript environments (on browsers) do JIT.

      The Anonymous Coward above you points out that node.js also does JIT. I was not aware of that.

      As for GC, the reason, I believe, that JVM has such great GC and alternate GC algorithms is because the JVM was a good testbed for GC researchers. Source code has been available for a long time before Sun made it open source. And there have been no shortage of sizable workloads to run on top of your modified JVM with custom GC algorithm.

      --

      I'll see your senator, and I'll raise you two judges.
    62. Re:Who you gonna call? by pilot1 · · Score: 1

      Node.js is very efficient at waiting and reacting to input. One node.js instance can get up to 99% on one CPU core, something that is really hard with a Java or .Net application that happens to do I/O.

      http://en.wikipedia.org/wiki/New_I/O

    63. Re:Who you gonna call? by jrugger75 · · Score: 1

      There's a mismatch between the IEEE spec and the Java spec for floats. For instance, -0 is forbidden support in Java, but is supported on most floating point processors. And this is a problem on every single processor, not just the x86.

    64. Re:Who you gonna call? by hobarrera · · Score: 1

      Could you please elaborate why being backed by Oracle makes Java safer? How does this apply to other Sun products that Oracle has discontinued? Did Oracle over promise not to screw up Java, or end support for old versions? If so, can we trust them?

    65. Re:Who you gonna call? by n7ytd · · Score: 1

      Node.js stops being actively developed, as one user put, security vulnerability happens...or just a general bug. Maybe you come in one morning and one of the hotfixes for the OS cratered the Node.js server component and now all of your systems are down.

      If the server that has just cratered is really mission-critical, it probably would have been wise to not allow the production systems to apply their own patches.

      Yes, this sort of stuff happens all the time, but thinking that it would never happen with a commercial product is just not true. The open-source nature of node.js has nothing to do with it.

      Agreed, keeping up to date with every possible patch level is unacceptable. But, running out-of-date, but stable, versions of code (open source or proprietary) is another option.

  2. node.js has a very serious issue by etash · · Score: 4, Insightful

    it's trying to be both a backend language and a HTTP server. like being both a chef and a waiter. Why would anyone want to re-implement a full fledged http server and pass through all the difficulties and ironing out bugs that commercial http servers went through ( apache/nginx ). IMHO it should just act like PHP and all other backend languages do and not try to do everything, leaving page serving to real web servers. It's just that they (joyent) are trying to sell ( "evangelize" ) their solution as better when it's not.

    1. Re:node.js has a very serious issue by gl4ss · · Score: 3, Informative

      node.js is strong when you don't actually necessarily want nginx or apache sitting in between. for web services and alike it's nice. for serving the actual site you might want to go with nginx.. as for serving, it doesn't exactly do all that much so there isn't that much to configure or iron out.

      --
      world was created 5 seconds before this post as it is.
    2. Re:node.js has a very serious issue by effigiem · · Score: 3, Informative

      Nodejs is not trying to emulate PHP, because its intended usage is completely different - if you want to provide REST services for the frontend written in JS, why would you need to bother with passing stuff through apache? Not to mention that you can pass node through nginx. And in what world are the open source servers 'commercial http servers'?

    3. Re:node.js has a very serious issue by Anonymous Coward · · Score: 2, Insightful

      IBM HTTP Server comes bundled with all versions of IBM WebSphere, and really, it's just Apache. So yeah, in our world free software is indeed used in the Enterprise (or: 'commercial http servers'). In OS-space you've got RHEL and Suse Linux Enterprise, at the very least.

      In some cases, even in Enterprise solutions, it does make sense to use free software rather than roll everything in-house, especially when http-serving is not really your core business model.

    4. Re:node.js has a very serious issue by Xest · · Score: 5, Insightful

      I'm not really a fan of node.js (because it's redundant) but I think you misunderstand the point of node.js. If you're reimplementing a full fledged HTTP server with it then you're really using it wrong because it's not meant for tasks that heavyweight and really uses a different request processing model than that.

      But I take issue with it because even in that role you can configure technologies like IIS, various JAS' and WCF to work in pretty much the exact same manner but with the benefit of being able to use languages and tools more well designed for large scale development on top whilst also having the benefit that these technologies automatically scale better than node.js and perform better to boot. WCF for example can be run in single threaded mode but such that it automatically uses a thread per core or processor, whilst with node you have to set up clustering to make it do this. Most of node's advocates make inflated claims of it being better than these sorts of server products for no other reason than they are inexperienced with these products and don't understand them and their flexibility.

      Effectively node.js allows inexperienced developers to do something that people who understand IIS, many Java Application Servers, WCF, or even raw sockets programming have already been doing for many years already.

      So to answer the OP's question I think as I say that in the enterprise node.js is really quite redundant. It doesn't do anything that can't already be done with better performing, more tried and tested, more scalable more enterprise friendly technologies already.

      Effectively it's become popular because Javascript developers have had to start working on the server side and it's an easy jump for them, but what server side developers already have is much more secure, much better performing, and much better for development.

      About the only valid argument I've heard for node.js is it means you can share code between server and client and write once as a result, but I'm not sure how useful this is in practice given that you'll normally be doing different things server side to client side and hence having different data structures and processing needs anyway. Technologies like Java and .NET make serialisation/deserialisation to/from JSON happen automagically anyway so it's not as if getting data structures between the two is any kind of chore.

      If you already have server side developers who know their stuff then use them and don't waste your time with node. If you only have Javascript developers then use node.js until you can't. I say can't because Javascript's language design and node.js' limitations do make it increasingly more difficult to write anything of any real complexity after a point whereas C, C++, Java, C# all allow a much greater degree of scalability. It all depends on what developers you have currently and how far your needs are going to scale as to whether the deficiencies of node.js and Javascript will become a problem.

    5. Re:node.js has a very serious issue by FooBarWidget · · Score: 1

      That is exactly the problem that Phusion Passenger solves. It is a Node.js application server, built on Nginx, and not only provides world-class HTTP management but also things like auto-scaling processes, supervisoring, load balancing, resource management, etc.

    6. Re:node.js has a very serious issue by Zeromous · · Score: 2

      Agreed. In enterprise it's not what you bought which determines support, it's who you bought it from and for how much.

      --
      ---Up Up Down Down Left Right Left Right B A START
    7. Re:node.js has a very serious issue by Flammon · · Score: 2

      That's essentially what node.js does.

    8. Re:node.js has a very serious issue by Xest · · Score: 3, Informative

      As the AC said I'm talking about code scalability - the ability for a codebase to grow without becoming unmanageable. This is difficult to achieve with Javascript because it's prototype approach and lack of decent support for things like namespaces, libraries and so forth coupled with the inherently greater difficulty of capturing many classes of bugs in a dynamic language and Javascript in particular means it's a nightmare getting a Javascript codebase to scale beyond a point when compared to something like C#, Java, or C++.

    9. Re:node.js has a very serious issue by MyDixieWrecked · · Score: 2

      the thing with node is that it can handle things that your server can't necessarily handle. Things like websockets and server sent events. If you were to build a site that needed websockets for real-time feeds using traditional technologies (like php + apache), you'd wind up with apache having n open connections with n instances of your application loaded into memory. The power of node.js is the fact that a single instance of the app will stream content to an arbitrary number of clients with a single instance. It does this through the reactor pattern (http://en.wikipedia.org/wiki/Reactor_pattern) and an event loop; the same mechanism that nginx uses to outperform apache (newer versions of apache have been adding support for this, I believe).

      It's funny because people seem to have a lot of hate for node (myself included), yet don't have the same level of hate for similar technologies like python's Twisted or Ruby's EventMachine. Personally, I'm a bigger fan of Erlang/Elixir for this type of thing as it scales a lot better and takes better advantage of hardware. An 8-CPU system doesn't require 8 instances of node to take full advantage of the hardware.

      disclaimer: I haven't had coffee yet and I hate node.

      --



      ...spike
      Ewwwwww, coconut...
    10. Re:node.js has a very serious issue by Xtifr · · Score: 1

      Except that it leaves you stuck with javascript, while libmicrohttpd is in C, which means both much better performance, and access to some of the largest and best-tested libraries in the world to create the rest of your app. And, of course, C also allows you to embed perl, python, ruby, lua, tcl, and even, yes, javascript, in your app as well. Heck, even more than one of those, should you be so inclined. In fact, a C library opens you up to using just about any language you can imagine, compiled or interpreted.

    11. Re:node.js has a very serious issue by etash · · Score: 1

      i like node, and yes the biggest + for node is its easy asynchronous networking capabilities. It's just that i think it should work strictly as a backend and not try to also be yet another http server for which you would need to re-implement session management etc. etc.

    12. Re:node.js has a very serious issue by Fnkmaster · · Score: 1

      Python scales pretty well to a medium size codebase (Java scales better to a large codebase than anything I know of - old-school Java may have been painful to develop in, but this it did well).

      Javascript doesn't really seem to, at least with most common tools (if you move to using Typescript and the like, it may do a better job). However, Javascript has nowhere near the level of library and tool support for non-web-browser-based tasks that a mature platform like Python has.

      If you just need to do very simple processing of data in a fast, asynchronous manner, node.js does it (and it's fast as hell, no doubt, because v8 is the best tuned JITed engine for weak-ish typed languages out there, thank to years of browser competition). But if you want to do anything interesting with that data, I don't know how you are going to accomplish that with node - where are the NLP, vector math, linear algebra, search infrastructure, etc. etc. libraries that Java or Python have in huge volumes? Non-existant or extremely immature.

      Also - for anything serious, node.js has changed way too much in way too short a period of time to use as a platform for. Maybe in a few years it will be more stable for some applications, but not quite yet.

    13. Re:node.js has a very serious issue by Tetravus · · Score: 1

      Node.js supports the use of addons written in C/C++.

      Use JS for libraries that are shared between client & server (e.g. HTML templating) and for logic that changes frequently or needs to be accessible to dedicated front-end devs (e.g. request routing). Use compiled C for code that needs to be extremely fast &/or robust (e.g authentication & creation of dynamic resources).

      Here's a handy example addon from the node.js docs:
      http://nodejs.org/api/addons.html

    14. Re:node.js has a very serious issue by ttucker · · Score: 1

      sprintf("%s",...) ....

    15. Re:node.js has a very serious issue by foniksonik · · Score: 1

      An Enterprise should be using an ESB from someone like Tibco. Then they should have a heterogenous set of apps that publish endpoints to that ESB. Some could be Java backed, some .Net, some Node/Python/Erlang or straight C/++ (throw some COBOL or Haskell in). These apps should subscribe to each other as needed for data interchange.

      The client apps used for managing and reporting can be anything at this point. Node would be just fine for a web based GUI. It loves to consume endpoints. Sockets, REST, streams - it can handle all of those well.

      When the next tech comes along for either data wrangling or for the GUI layer just version your endpoints as needed and continue working to your SLA.

      Stop thinking about one size fits all for apps. The only thing that needs that feature is the ESB (so invest in a good one).

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    16. Re:node.js has a very serious issue by nobodyman · · Score: 1

      Why would anyone want to re-implement a full fledged http server and pass through all the difficulties and ironing out bugs that commercial http servers went through ( apache/nginx )

      But that's a false premise: you can pair nodejs and nginx/apache/iis to serve static content just like php/java/.net web apps.

    17. Re:node.js has a very serious issue by Nivag064 · · Score: 1

      Java Enterprise Edition 7, has support for web sockets & HTML5, and many other related goodies.

      Version 8 of the open source AppServer WildFly (JBoss community driven version), should be production ready before the end of the year: http://wildfly.org/

      for alpha versions see: http://www.wildfly.org/download
      for nightly versions see: https://ci.jboss.org/hudson/job/WildFly-latest-master/changes

      The nightlies are good enough for testing & development.

      Note that JBoss, which is backed by Red Hat, will incorporate WildFly 8 code next year.

    18. Re:node.js has a very serious issue by jon3k · · Score: 1

      First off, I'm NOT ADVOCATING node.js. But, the argument is that because JS is used on the client side it makes sense to use on the server side. All the energy that goes into improving JS performance now benefits the client and server side, and you only learn one language to write both your front end and back end code.

      And those are great arguments, except javascript sucks. Let's just make python work in the browser. Thanks in advance!

    19. Re:node.js has a very serious issue by Xest · · Score: 1

      "Node.js is powerful and I see the server-side language used to power node being JavaScript as arbitrary to that value. It's the reduced lines of code that have to be written to get to an end result, the unique non-blocking paradigm it offers "for free" and it's open nature that gives it great value."

      This is the thing though, the non-blocking paradigm isn't unique. C#/WCF let you do this in even less lines of code again but with far higher quality tools and with a more powerful language and framework that is also far easier to debug and far less prone to programming errors due to compile time checking, better unit test support, and all of which is more mature to boot.

      That's the issue. If it offered anything special I'd absolutely agree with you, but it brings absolutely nothing to the table and the only reason some people think it does is because they don't have the pre-requisite breadth of knowledge of other technologies to know that it doesn't. I mostly do technical architecture work now so maybe I have an advantage there over many developers in this respect but the only niche into which I could fit node.js with any degree of reasonable justification is into areas where there is a massive amount of Javascript to be exchanged client/server where the data structures can be shared and even this would likely only be as part of a larger system - someone else pointed out that LinkedIn uses it to server their HTML/Javascript based mobile app but the rest of their setup does not use it. Anything other than that extremely small niche and there's no point, I might as well take the other options - they do everything else it does other than sharing Javascript and they just do it better.

    20. Re:node.js has a very serious issue by oamasood · · Score: 1

      As a web developer, I'd say this is the most balanced response I've read so far.

  3. I think... by gigaherz · · Score: 5, Interesting

    My oppinion is that Javascript is not bad as a scripting language, but we are abusing it and twisting it beyond its original purpose. The main issue is actually that Javascript is too flexible. Untyped code has an habit of hiding mistakes in hard-to-debug ways. But once you add types to Javascript, it's not Javascript anymore.

    So, if you are working on a "pure" Web App, and you want to use one common language for the client code and the server code, then go on, use Node.js, add some packages for web services, database access, etc. and get it done. But if you want an environment that detects the mistakes as soon as you type them, runs relatively fast, can be statically verified, and still manages to keep a decent amount of flexibility, then there's nothing that compares to C#/dotNET.

    I can not speak about anything more enterprise-oriented, but I assume the more oriented something is, the more rigid it becomes at thinking anything out of it's "ruleset" must be a mistake.

    C++ is what it is. It's fast, mature, complicated, and flexible. If you want something done ASAP, don't use C++. If you want the result to be easily portable to other platforms, don't use C++. If you want the code to be safe (against hacking) without much effort, don't use C++. If you want the code to be easy to maintain, don't use C++. But in the end, it's your choice.

    1. Re:I think... by serviscope_minor · · Score: 4, Informative

      Well, obviously the right answer for the OP depends on precisely what he wants to do. That notwithstanding...

      C++ is what it is. It's fast, mature, complicated, and flexible.

      Going for the less mature end of things, C++11 is now pretty much done (GCC has almost full support, LLVM is close and amazingly even VisualStudio has most of the goodies).

      It also ain't you father's C++.

      It has taken great strides in the areas such as making the safe thing easier and quicker to write and generally less hassle and less faff all around. Additionally, the quality of implementation of things like the standard libraries has improved beyond measure. In the areas of security, other than making the secure things easier to write, between address space randomization, getting GCC to instrument pointer accesses and the NX bit, the space for exploitable (but not obviously DOSable) holes has shrunk considerably.

      C++ has changed immeasurably immeasurable since what was practical in 2003. That's not to say of course that C++ won't let you do bad things. Of course it will. But they're not all the easiest way of doing things now :)

      Still, like any material (I have seen an excellent argument that languages are more like materials than tools) one has to choose an appropriate one for a particular job. Given that I can't really tell what the OP is trying to do, it would be hard for me to commit to a given language...

      I'm not going to claim C++ is simple. That would be silly, but a rather fun fact is that the despite Java being promoted as simpler than C++ for so many years, the latest Java language spec (excluding libraries) is shorter than the latest C++ spec (excluding libraries).

      --
      SJW n. One who posts facts.
    2. Re:I think... by Anonymous Coward · · Score: 1, Insightful

      If you want something done ASAP, don't use C++.

      Neither C#. You'r better go with Python.

      If you want the result to be easily portable to other platforms, don't use C++.

      LMFAO. Don't use C#. DO use Python, C, C++ or Java, but not C#.

      If you want the code to be safe (against hacking) without much effort, don't use C++.

      If you want your code to be safe, write it carefully. Learn what makes code unsafe, and don't be an ignorant.

      If you want the code to be easy to maintain, don't use C++.

      If you want your code to be easy to maintain, write it following sound engineering principles:
      * don't optimize until you need to.
      * use established patterns when they make sense.
      * don't make it more complex than it needs to be.
      * write as little code as possible, and as simple as possible.

      So, to sum up: Don't be an ignorant, and don't use C# for portable code.

    3. Re:I think... by gigaherz · · Score: 3, Interesting

      I must assume you have never used C# 4.0, at least not in any serious way. The language, the class library and the VM are all vastly superior in performance, features, and flexibility. Yes, Java has some advantages, mostly that there's a java VM for any device (although Java lost the ME market share, so the number isn't as big as it used to be), over overall? It can't compare.

    4. Re:I think... by gigaherz · · Score: 1

      s/over/but/

    5. Re:I think... by flimflammer · · Score: 1

      Er, no?

    6. Re:I think... by hey! · · Score: 1

      My oppinion is that Javascript is not bad as a scripting language, but we are abusing it and twisting it beyond its original purpose. The main issue is actually that Javascript is too flexible. Untyped code has an habit of hiding mistakes in hard-to-debug ways. But once you add types to Javascript, it's not Javascript anymore.

      A couple of points. First, the argument you're making is for static -- i.e. compile-time -- semantic checking. I was hearing the very same argument thirty years ago among people who advocated Pascal over C; on paper it's sound, but decades of practice have convinced me that static checking, while probably helpful, is not as efficacious as it seems like it should be. After all, you *still* run into mishandled exceptions in Java, and many Java programmers do an end-run around around much of the compile-time restrictions by using runtime exceptions; in fact wrapping low-level checked exceptions in runtime exceptions are a feature of some frameworks. It's hard to get programmers out of the mindset that a core dump, or an unhandled exception, is some kind of serious calamity. You don't want them in production code of course, but they're far less calamitous than continuing processing with bad data. The place to catch those problems is in testing.

      As for the other kind of compile-time problem, handing an object to a routine that expects an interface the object does not support, what scripting languages like Python have shown is that it's not that big of a problem. Large, sophisticated systems programs have been written in Python, which lacks precisely this kind of checking.

      I'm very comfortable with Java, but there is something about the design of the language and its core libraries which encourages over-engineering. For example, itis possible to do asynchronous http handling in Java EE, like you do in Node.js, but in Node.js you simply create a non-blocking event handler for every case you want to handle. In Java EE, if memory serves, you create a ServletContextListener with a Queue member, and put that member in the servlet context. Then in your servlet you create an AsyncContext and put it in the Queue. None of this is as complicated as it sounds, but it only covers the case when you want to keep a socket open to the client, like when you're doing Comet. If you want to conserve resources by serving your I/O requests using polling rather than blocking threads (the primary Node.js use case), you've got to use java.nio, which can get complicated.

      On paper, designing programs in Java is a cinch with Java's rich OO features. Any reasonably competent programmer can quickly learn enough to demonstrate facility with the *features* of the language. In practice as a programs required feature set grows, the number of classes and interfaces explodes, unless you are a very talented software designer.

      While it's true most Javascript programmers write simple onload and onclick handlers, this doesn't make Javascript a toy language. While its object-oriented features are relatively primitive, its functional programming features are quite sophisticated, and this turns out to be just the thing when you are writing sophisticated event handlers, as in Node.js. Expert Javascript programming is about implementing higher order functions which return closures, something that current versions of Java can't do (Java SE8 is getting lambda expressions, so this might change). Functional programming is all about getting a single transformation of inputs to outputs correct; it feels *contained* -- that is to say you don't need to think a lot about the context in which your code runs. Programming in Java is often an exercise in information overload, as it typically involves mastering the nuances of multiple complex libraries and frameworks so you can fit them together properly.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    7. Re:I think... by T.E.D. · · Score: 1

      My oppinion is that Javascript is not bad as a scripting language, but we are abusing it and twisting it beyond its original purpose.

      I actually agree with this statement whole-heartedly. However, I can't help but find it amusing that you immedately go on to propose using one or more of the modern updates to C, Ken Thompson's slightly higher-level replacement for PDP-7&11 Assembly language.

    8. Re:I think... by sproketboy · · Score: 1

      I have been using .NET for several years and Visual Studio doesn't hold a candle to IntelliJ. You can't even do continuous integration with .NET. Visual Studio stores each project file separately in the "solution" so you have conflicts all the time. It doesn't help that the VS merge tool is brain dead. It's pathetic that we have to work with such garbage from a company like Microsoft.

    9. Re:I think... by phantomfive · · Score: 1

      What feature of C# 4.0 makes you think it's so great? Covariant types? Names parameters?

      C# is an ok language, but the lack of checked exceptions make it harder to write high-stability software.

      --
      "First they came for the slanderers and i said nothing."
    10. Re:I think... by acsinc · · Score: 1

      You must be doing it wrong. I have done CI many times in .Net. Sln files are not trivial to deal with, but they make life easy if you know what you are doing.

    11. Re:I think... by acsinc · · Score: 1

      Not harder just different. For one I prefer .Net's lambdas to Javas.

    12. Re:I think... by flimflammer · · Score: 1

      Wow. Perhaps you should find some newer material dated after .NET reached version 1.1 (hint: It's at 4.5 now, nearly 10 years later)

    13. Re:I think... by godefroi · · Score: 1

      There's a million of them. Take your pick. Or, you could just write maintainable/testable code without relying on some jackass' DI "framework".

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    14. Re:I think... by godefroi · · Score: 1

      We do CI with C#, using TeamCity. I don't know what these "conflicts" are that you see all the time, but perhaps you're the problem?

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    15. Re:I think... by phantomfive · · Score: 1

      If all you're doing is web programming or desktop apps, then unchecked exceptions are no big deal, they are just different, because even if your program crashes, it will be restarted easily enough.

      If you want to make highly stable software that doesn't crash, unchecked exceptions are a pain to deal with, in the same way that an unmanaged runtime is painful.

      --
      "First they came for the slanderers and i said nothing."
    16. Re:I think... by RightSaidFred99 · · Score: 1

      Nobody who knows what they're doing in both would claim Java is better than C#/.NET. I develop on both and working in Java frankly feels like I'm slumming in 2003. Java's main advantage is being cross platform, though there are domains where of course it might make more sense but if you're sitting down to develop an enterprise app .NET will be more productive and capable in almost every way.

    17. Re:I think... by godefroi · · Score: 1

      Wait, what? There's a million DI frameworks for Java too. I'm not defending anything, except maybe competence and avoiding reliance on "patterns" and "frameworks".

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    18. Re:I think... by godefroi · · Score: 1

      Besides, the poster I replied to (which may or may not be you) specifically said they'd be interested in hearing about C# DI frameworks...

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    19. Re:I think... by segfault_0 · · Score: 1

      It lost ME market share to Android which is... basically Java.

      As far as performance -- I've not seen any serious benchmarks that show the CLR outperforming the JVM so handily. Got a link?

      --

      I was crazy back when being crazy really meant something. (Charles Manson)
    20. Re:I think... by sproketboy · · Score: 1

      Yeah. It's doing it wrong to use Visual Studio with a team.

    21. Re:I think... by sproketboy · · Score: 1

      Still holds true after all these years. Kinda sad really for .NET.

    22. Re:I think... by sproketboy · · Score: 1

      Really? Every try to port a non trivial .net app to 64 bit? Good luck with that. Java gives you 64 for free. Just run the 64 bit JVM - no fuss no muss. Yeah if you're in bed with Microsoft and want to have a much higher TCO then go for .net.

    23. Re:I think... by sproketboy · · Score: 1

      ROFL. You need the IntelliJ guys who build a Java IDE to help the .net clowns do CI cause it's too difficult for Microsoft to figure out. Just like their awful diff/merge tools. What a laugh.

    24. Re:I think... by gbjbaanb · · Score: 1

      he's probably talking about TFS as its known to be useless at merging. Nothing to do with VS at all, though his problems with solution projects and CI could be more to do with MSBuild and TFS's pretty poor build system.

      The only thing I can think of where he'd have a point that VS is poor is the way projects depend on each other. Microsoft's "best practise" is to put all projects into a single huge solution so they can reference each other rather than building projects and referencing them from a common directory (as .net projects don't seem to like absolute paths in references... and if you put a reference path in your project, it turns out it gets stored in the per-user file, not anything that gets stored in source control. The old C++ way of include and link paths was a much better system when projects start to get big)

    25. Re:I think... by GiganticLyingMouth · · Score: 1

      As a minor correction, GCC (as of 4.8.1, see here) and Clang both have complete C++11 support

    26. Re:I think... by gigaherz · · Score: 1

      You write code in java, but the Java VM isn't used. The java bytecode is translated into Dalvik bytecode before it's packaged, you aren't really running Java applications in Android.

      As for performance, well like statistics, you can make benchmarks say whatever you want them to say, but here's the first benchmark I could find (it's 3 years old though, so maybe it has changed with Java 7): http://www.codeproject.com/Articles/92812/Benchmark-start-up-and-system-performance-for-Net

    27. Re:I think... by gigaherz · · Score: 1

      All the programming languages that I know have their syntax based on C, with the exception of BASIC, which I stopped using when I moved from VB6 to C# 2.0. Javascript is no exception. I fail to see the amusement. I must be too young.

    28. Re:I think... by gigaherz · · Score: 1

      I wasn't thinking of Javascript as a toy language. I was thinking more about how hard it is for Javascript code to get translated into a form the CPU can execute fast. They are doing miracles with the modern javascript engines, and not a small part of it is due to static analysis algorithms. But then they (Mozilla, in this case) suggest ASM.js as a means to make code more optimizable, instead of using/creating an open, standarized bytecode language that can fit that use case better, just because that way it can run in old browsers. Except it really can't, because if you need the optimizations in ASM.js to make the code usably fast, then it would be too slow in old browsers regardless.

      (Note: Sorry, I TL;DR'd the middle section of your reply, hopefully I didn't miss anything important that makes this reply sound stupid)

    29. Re:I think... by segfault_0 · · Score: 1

      I think depending on the application, which garbage collector you're using, which JVM (client vs server), and any number of other facets... that you would have a hard time making the argument that one or the other was "faster". For any given application you will almost certainly have to micro-benchmark to figure out which makes more sense -- and only when you're targeting the windows platform, as mono appears to lose handily (http://benchmarksgame.alioth.debian.org/).

      I think the Dalvik bytecodes are nearly identical to normal JVM codes. It even accepts classes generated by the Scala compiler just fine. But you are correct it is a different VM -- just the same language. Then again there are more JVMs for windows/linux/etc than just the Oracle one too, so when does it stop being Java?

      --

      I was crazy back when being crazy really meant something. (Charles Manson)
    30. Re:I think... by hey! · · Score: 1

      No problem on the TL DR, but you raise an important point. You're absolutely right that a strongly typed language has some optimization advantages, but CPU is only one kind of resource. Optimizing CPU usage for a sequence of statements is a good thing, but that's simply not the bottleneck in scaling web services these days.

      Node.js demonstrates this. Under the covers it uses polling (I presume) to ensure that the CPU keeps doing useful work as the load climbs, rather than spinning its wheels waiting for I/O. So instead of allocating a thread per request and stalling every single thread as it waits for the results of a database query, Node just goes down the list of queries with data returned and fires off a small event handler you write in javascript. I suppose it helps that the javascript engine Node uses is very efficient (for Javascript), but there's more to gain in efficiently CPU usage by managing *other* resources efficiently than there is by compiler optimizations -- at least for *typical* web applications, where the task is to glue back end resources like databases to front end applications in HTML.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    31. Re:I think... by T.E.D. · · Score: 1

      All the programming languages that I know have their syntax based on C,

      I'm hoping this was some kind of sheepish admission. Otherwise, you might as well walk into a car club and proclaim that you haven't the foggiest idea how to operate a stick shift.

      Seriously, this is a hole in your understanding of programming that cannot help but limit your thinking in ways you probably don't even see. I highly suggest you take steps to correct this problem.

    32. Re:I think... by RightSaidFred99 · · Score: 1

      64 bit? Lolwut? The only time you'd have to worry about that is if you use unmanaged resources. Ever heard of JNI? Same thing.

    33. Re:I think... by flimflammer · · Score: 1

      Oh, so you're just trolling. Okay then.

    34. Re:I think... by Lennie · · Score: 1

      I've done webdevelopment for years, there are things wrong with Javascript, there are things wrong with many languages. And if you stick to the subset people call 'the good parts' it's not bad.

      Your argument about untyped code is a non-argument, it has never been an issue. It's a matter of programming style. With most styles of programming you'll never encounter a problem.

      What it does do is create a performance ceiling, because untyped is hard to optimize for a VM.

      But that is what asm.js is for now, for the performance critical code paths.

      --
      New things are always on the horizon
    35. Re:I think... by gigaherz · · Score: 1

      Well, when I mentioned the market share, I was referring to Java ME. But yes I suppose it's unfair to say android doesn't use Java, although a quick read on the Wikiepdia page on Dalvik seems to point at it being far from a JVM, with Dalvik being register-based instead of a stack machine.

    36. Re:I think... by sproketboy · · Score: 1

      Right like COM which is everywhere and will never go away. Another failed promise of .NET.

    37. Re:I think... by sproketboy · · Score: 1

      Yeah, a little bit. ;)

    38. Re:I think... by Heir+Of+The+Mess · · Score: 1

      32 bit COM objects and 64 bit COM objects can both be used in a .NET app running under the 64 bit runtime. Anyone with enough experience in this field to be eligible to make a comment would know this.

      You've added 12 really lame anti .NET comments to an article that is meant be about using Node.js as an app server replacement. You add no value to the conversation, and yet you feel that you have to continuously interject. Its people like you that enforce the image that aging or Java orientated programmers are unemployable in highly dynamic environments because of their woeful inflexibility. Try to lose some of the Jade, learn something new.

      --
      Australian running a company that does C# / C++ / Java / SQL / Python / Mathematica
    39. Re:I think... by godefroi · · Score: 1

      There are CI solutions for TFS, but we don't use TFS, we use Subversion. I imagine that when we move off Subversion it will be on to Git.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    40. Re:I think... by godefroi · · Score: 1

      he's probably talking about TFS as its known to be useless at merging. Nothing to do with VS at all, though his problems with solution projects and CI could be more to do with MSBuild and TFS's pretty poor build system.

      Yeah, we don't use TFS. I haven't come across any issues with MSBuild as a build system, though.

      The only thing I can think of where he'd have a point that VS is poor is the way projects depend on each other. Microsoft's "best practise" is to put all projects into a single huge solution so they can reference each other rather than building projects and referencing them from a common directory (as .net projects don't seem to like absolute paths in references... and if you put a reference path in your project, it turns out it gets stored in the per-user file, not anything that gets stored in source control. The old C++ way of include and link paths was a much better system when projects start to get big)

      You're incorrect. Here's an excerpt from an old .csproj (which you should be storing in source control... the .suo and .csproj.user files are the per-user files) which shows a reference to a pre-compiled .dll file:

      <Reference Include="SecureBlackbox, [...]">
          <SpecificVersion>False</SpecificVersion>
          <HintPath>C:\Program Files\EldoS\SecureBlackbox.NET\Assemblies\NET_20\SecureBlackbox.dll</HintPath>
      </Reference>

      Here's an excerpt from a .csproj showing project references (which are preferred):

      <ProjectReference Include="..\myproj\myproj.csproj">
          <Project>{F4895F92-1E42-4322-9886-0585A5F06035}</Project>
          <Name>myproj</Name>
      </ProjectReference>

      Note that using absolute paths is generally a poor idea, as it requires every development machine to be set up exactly the same. Instead, solutions should contain subdirectiores, each containing one project. Project references such as the one above then always work, even when projects participate in multiple solutions (we do this ALL THE TIME). It took some time for us to work out a solid process on this, but we seem to have arrived at a very satisfactory solution. When we do references to pre-compiled DLLs (and we only do this for third-party libraries), there's a subdirectory at the solution level that contains those. That way, when multiple projects reference (for example) SQLite, they all reference the same version of it.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    41. Re:I think... by sproketboy · · Score: 1

      Then stop feeding the troll idiot.

    42. Re:I think... by sproketboy · · Score: 1

      Exactly. Why use TFS since it's shitty.

    43. Re:I think... by gbjbaanb · · Score: 1

      The new C++ system is good, you put paths in a global file (ok, this happens to live in your user directory, but there's only 1 of them, not 1 per project) and you can then reference the file in your build, so you get to say "this build requires the following environment", and you can then set your environment so your build machine can be different from your own, etc. .csprojs always used to mangle the references to relative directories, unless the reference was on a different drive letter. Maybe they've changed it, they change so much at the moment.

      TFS - well, I was really referring to the horrible xaml-based monstrosity that is the 'workflow build configuration'. Its ok to change it, but forget maintaining it.

    44. Re:I think... by tbid18 · · Score: 1

      That would be silly, but a rather fun fact is that the despite Java being promoted as simpler than C++ for so many years, the latest Java language spec (excluding libraries) is shorter than the latest C++ spec (excluding libraries).

      Did you mean to say the Java spec is longer than the C++ spec? Because I would think Java having a shorter spec would be a point in favor of its relative simplicity.

    45. Re:I think... by gigaherz · · Score: 1

      Even Microsoft agrees with that, it seems. They created a Git plugin for VS2012.

  4. Re: I think..Typescript is the answer by Anonymous Coward · · Score: 1

    Typescript is the answer here if you love JS.

  5. Apache-Quality Library & Framework Environment by Anonymous Coward · · Score: 1

    Seems illogical but the fact that there's a lot of dynamics in the node environment can hit back in Enterprise Projects. In Enterprise I need Libraries and Platforms where I can be absolutely (=100%) sure that noone breaks compatibility, noone stops maintaining the code, noone stops fixing security and stability bugs, noone stops properly documenting changes etc. in _all_ the libraries and toolkits used in the project. "The Apache Way" is a major factor in being able to maintain and run a large Enterprise System for a decade or more and Mircrosoft is also excellent at ensuring stable internal APIs for a very long and plannable way.

  6. Re: I think..Typescript is the answer by MrBandersnatch · · Score: 1

    I hate JavaScript but I've been using CoffeeScript for a project and I've been reasonably impressed at how it removes many of the worse parts of JS - how does TypeScript differ/improve on Coffee?

  7. Don't do it by Anonymous Coward · · Score: 1

    Javascript is a horrid scripting language, we should get rid of it on browsers and not to use it on servers.

  8. Re:Just say NO by MrBandersnatch · · Score: 1

    Interesting, would you care to expand?

  9. Errmmmh ... what was your question? by Qbertino · · Score: 5, Interesting

    Sorry, your rambling - that is supposed to be a question I presume - is a tad incoherrent. But I do think I catch your overall drift, so I'll chime in:

    I think the overall issue is basically about programming languages. Wether it's some software runtime enironment or the other - in the case of JS Node.js just happens to be the first to revive JS on the serverside.

    To the case:
    Wether or not a PL takes over is dependant on things that usually have nothing to do with the PL itself. Once a PL is sufficient enough .... ok, scratch that. Take for instance PHP. PHP was a joke when it becam popular. 2 guys had a thing called Zend engine and they decided to craft it around a Perl based templating "language" that was becoming popular - mostly because Perl is quite bizar to handle and it was the most popular web scripting language back then. They built PHP 3 based on the zend engine, then a mod-php was added for the popular webserver Apache and the rest is history. All things went web, as a result we have PHP pissing into serious Java territory today. I remember when PHP was a joke and JSP seemed to be posed to rule the webworld for decades to come. That didn't happen, mostly due to political reasons. ...
    Had Netscape released their webserver as FOSS back in the mid-90ies, we'd all be using JS as serverside language ever since, since JS was the serverside language on the Netscape Enterprise Server.

    I think compiled languages are impractical for web environments, for reasons everyone can come up with, so that rules out C and C++. For every environment that is set up from scratch I can't think of a single expert that would recommend .Net. .Net exists because it banked on the existing Windows/MS legacy. The MS CLR may be a neat feat, but it is a MS lockin trap, and today it's mostly pointless, since abundant server power, virtualisation and simular things have made optimisation concerning multiple runtimes on one setup a non-issue.

    This leaves us with JIT/bytecode compiled or interpreted languages. Here I see Java vs. all the rest (Python, PHP, JS, Ruby, etc.). It's basically Java vs. FOSS languages. Java *is* a FOSS language by now, but the problem is that Oracle is a very bad herald for FOSS Java, and the FOSS alternative, OpenJDK/SDK is bad/slow.

    For the future of web I do see Node.js gaining lead position. Google put serious cash into aquiring V8 technology, improving it and putting it into Chrome. Flash was killed by Steve Jobs/iOS, pushing brilliant no-Flash-allowed devices (iPhones and iPads) into millions of end-user hands, so Google had to come up with a serious alternative. Hence JS/V8.

    Not being stupid - selling software is *not* Googles business - they released the impressive V8 engine as FOSS, and some smart people put in the effort to port that engine to the serverside, where it is about to kick PHPs and Rubys ass, simply because it's at least as good as either of those *and* it is the same primary non-lockin language on the serverside as is on the clientside. Mind you, clientside JS only became popular once a guy wrote a famous blog article in which he renamed "doing important smart things with JavaScript" into "Ajax", which is a cool name and thus made JS on the clientside popular with a lot of people who formerly had no interest in looking into JS seriously. We have the same effect when some smart guy decided that plain Java objects weren't used and other things like EJBs were more popular simply because regular Java objects didn't have a cool name. So he named them Pojos (Plain Old Java Objects) and solved the problem. Any serious respectable Java toolkit today uses Pojos at its heart.

    Bottom line: Wether a tech or PL catches on, gains traction and becomes the next big thing is usually rooted in issues one would not think as relevant right away - things like 'Does the tech have a cool name?', among others. That sa

    --
    We suffer more in our imagination than in reality. - Seneca
    1. Re:Errmmmh ... what was your question? by leuk_he · · Score: 1

      If the question is about languages?

      maybe the question is about frameworks instead. A framework is a set of libraries for a certain language. E.g. The language is java, the framework is J2EE.
      For C/C++ the question leave it open, but i think C/C++ should be mainly used for support/intermediate software, and not for the business logic.
      Node.js is not a complete framework, you need to add things to make it complete. .Net is not a language, but mulplie languages can use the .Net framework.

      In a enterprise you have your enterprice level software (SAP/Dynamics/mainframe), your set of your supporting application arround it, glue software (SOA... nowadays, ftpíng files arround 10 year ago). And nowadays you glue some sort living mobile app to it that has some glue to the backbone applications. Each has its onw langueage and support. Minimizing the number of platform/languages will make your life simpler.

    2. Re:Errmmmh ... what was your question? by The+Cat · · Score: 1

      What's the V8 Javascript engine written in?

      'nuff said.

      Code it in C or get out of the way and let a real programmer finish the project.

    3. Re:Errmmmh ... what was your question? by Capt.Albatross · · Score: 1

      Sorry, your rambling - that is supposed to be a question I presume - is a tad incoherrent....

      Wether or not a PL takes over is dependant on things that usually have nothing to do with the PL itself. Once a PL is sufficient enough .... ok, scratch that...

    4. Re:Errmmmh ... what was your question? by Capt.Albatross · · Score: 4, Informative

      What's the V8 Javascript engine written in?

      'nuff said.

      Code it in C or get out of the way and let a real programmer finish the project.

      What does the machine actually execute?

      'nuff said.

    5. Re:Errmmmh ... what was your question? by The+Cat · · Score: 1

      Doesn't matter what the machine executes. What matters is using a real programming language, which Javascript isn't.

      And a C programmer has one hell of a lot better grasp of machine language than some narrow-assed Javascript monkey.

  10. It depends on what you have and what you need by stikves · · Score: 5, Insightful

    The short answer is: it depends. The longer answer is slightly more complex. It depends on the problem you have, the knowledge of your programmers, and the server environment you'll deploy.

    If most of the developers in your house are web developers, and have extensive knowledge on JavaScript, then node seems to be a more organic solution. However as others pointed, JavaScript has been abused to code everything from databases to ray tracers, but you should keep real world performance in mind. For most tasks node (backed by Google's V8 engine) will be 2x to 10x slower than an optimized C/C++ program in the real world. You're basically trading developer performance for runtime performance.

    Additionally using a dynamic language, especially modern JavaScript requires discipline. If you do not have a proper packaging or testing systems you'll run into problems. Fortunately node community already prefers doing things the modern way, so this should not be a concern for most (sane) people.

    On the other hand, one should never discount the performance benefits of C++. For our latest project we converted one of the smaller, but very CPU intensive services from PHP into C++. This offered an order of magnitude performance increase (going from a minute to a few seconds). So use your common sense, and all available tools on hand depending on situation.

    As for Java, and C#, you'll have a performance similar to C++ (same to 2x slow), as long as you have sufficient amount of RAM (a recent paper I read cited 6x RAM requirement for a GC to function properly). The only concern is that for C#, you'll most likely want to stick to Microsoft ecosystem (Visual Studio is a great development environment, but you'll have to deploy to Asure, whereas you have more choices with Java, including Amazon and Google Linux clouds).

    The bottom line is: look at the task at hand, and the people you have to choose the tools. And do not be afraid to experiment -- especially early on in the project.

    1. Re:It depends on what you have and what you need by Dambiel · · Score: 1

      GC = Garbage Collection? Six times the RAM req's?

      Sounds high but possible, can I get a link or citation on that article? Sounds like a decent read.

    2. Re:It depends on what you have and what you need by stikves · · Score: 4, Informative

      The paper is at the following link: http://www-cs.canisius.edu/~hertzm/gcmalloc-oopsla-2005.pdf

      I ran into it while reading the discussion at http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/

    3. Re:It depends on what you have and what you need by antsbull · · Score: 1

      Theres also research out there showing that GCed Java can often significantly outperform C/C++ during memory management. I find it hard to believe that you require 6 times the space to run a GC though - it probably depends on what algorithm you are forcing it to use.

    4. Re:It depends on what you have and what you need by mystikkman · · Score: 3, Informative

      > The only concern is that for C#, you'll most likely want to stick to Microsoft ecosystem (Visual Studio is a great development environment, but you'll have to deploy to Asure, whereas you have more choices with Java, including Amazon and Google Linux clouds).

      Err what? You can deploy to hundreds of hosting providers... including AWS.

      http://aws.amazon.com/windows/

    5. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      but you should keep real world performance in mind. For most tasks node (backed by Google's V8 engine) will be 2x to 10x slower than an optimized C/C++ program in the real world. You're basically trading developer performance for runtime performance.

      It's been a long time since the execution speed of the program was the bottleneck in web programming. Generally the thing that causes performance issues will either be network latency/bandwidth or database issues. The speed of the compiled code can be solved by adding a few more servers, and you will have a lot of servers before their cost is more expensive than the cost of a single developer you would have to hire to take care of C++ issues.

      --
      "First they came for the slanderers and i said nothing."
    6. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      Those are fascinating.

      --
      "First they came for the slanderers and i said nothing."
    7. Re:It depends on what you have and what you need by godefroi · · Score: 1

      6 times the RAM required for a GC to function properly? Over what? Just how, exactly, is malloc()/free() not a garbage collector? It serves the same purpose, it simply requires more handholding to do so.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    8. Re:It depends on what you have and what you need by godefroi · · Score: 1

      Overlapped I/O (or, on Unix, AIO). Learn it. Live it. Dedicating a thread to each open socket is the most brain-dead way to implement a system. It's like bubble sort for sockets. It's simple, it's easy, it's what the noobs do the first time around, but it should never, ever, be used in a system that requires performance.

      By the way, C# supports asynchronous I/O using completion ports (on Windows). I don't know for sure if Java does, but I think NIO.2 might.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    9. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      Just how, exactly, is malloc()/free() not a garbage collector?

      If you can't figure out why malloc()/free() is not garbage collection, you've missed the last 50 years of computer science.

      --
      "First they came for the slanderers and i said nothing."
    10. Re:It depends on what you have and what you need by godefroi · · Score: 1

      It's a reference-counting garbage collector that never allows the reference count to exceed one, and requires explicit reference count management from the programmer (free() calls).

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    11. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      Yeah right, I bet you're the kind of person who could describe the definition of 'up' in a way that it means down. Just because you can talk cleverly about it doesn't mean you are right.

      --
      "First they came for the slanderers and i said nothing."
    12. Re:It depends on what you have and what you need by godefroi · · Score: 1

      So, I'm clever, therefore I'm wrong? Sorry, I don't follow the logic. If I'm wrong, show me. If not, skip the ad hominem.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    13. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      No, your argument depends on defining words in a way that most people don't use. It's idiotic. That's not ad hominem, that's abuse. There's a difference, look it up.

      --
      "First they came for the slanderers and i said nothing."
    14. Re:It depends on what you have and what you need by godefroi · · Score: 1

      If I'm wrong, show me. What word did I redefine? If I'm so obviously wrong, it should be easy for you to point to how I did it.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    15. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      Garbage collection, idiot. No one refers to malloc()/free() as garbage collection except you

      --
      "First they came for the slanderers and i said nothing."
    16. Re:It depends on what you have and what you need by cavebison · · Score: 1

      Visual Studio is a great development environment, but you'll have to deploy to Asure, whereas you have more choices with Java, including Amazon and Google Linux clouds).

      This is utterly incorrect. Azure is just an option. You can deploy a .NET web app to ANY Windows server which is running IIS. From common-as-muck shared hosting companies, to Amazon or Rackspace and anywhere in between. .NET was around long before Azure.

    17. Re:It depends on what you have and what you need by godefroi · · Score: 1

      What does malloc()/free() do that GC does not? What does GC do that malloc()/free() do not?

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    18. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      lol still pretending to be ignorant? GC keeps track of all your allocations so you never need to worry about freeing them.

      --
      "First they came for the slanderers and i said nothing."
    19. Re:It depends on what you have and what you need by godefroi · · Score: 1

      So does malloc()/free()...

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    20. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      No, with malloc()/free(), you definitely have to worry about freeing allocations.

      --
      "First they came for the slanderers and i said nothing."
    21. Re:It depends on what you have and what you need by godefroi · · Score: 1

      Kind of like how you need to worry about eliminating references in pure reference-counting garbage collectors?

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    22. Re:It depends on what you have and what you need by phantomfive · · Score: 1

      If you have to do it manually, it's not garbage collection, it's mis-named. You're free to define words any way you like, however.

      --
      "First they came for the slanderers and i said nothing."
    23. Re:It depends on what you have and what you need by godefroi · · Score: 1

      So, in your opinion, in VB6, where one has to MANUALLY ensure there are no circular references, there is no garbage collection? Interesting.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
  11. Application for mobile devices? by aglider · · Score: 2

    First of all, the fact that the application is for mobile devices it doesn't say anything.
    Is the application you are mentioning runnint into the mobile device? Or is it a web application for mobile devices?
    In the former case, I think you need to stick with the device architecture constraints, like ObjectiveC for Apple mobile stuff.
    In the latter case, the choices is up to the developer team and what they know better.
    I would personally choose C++ with Wt. But that's just me.

    So, please, explain better your problem.

    --
    Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
  12. Node.js is new by jayklub · · Score: 1

    Honestly I think it's because most medium->large corporations are established entities with established codebases. It probably has more to do with switching technologies on an established product is difficult. In the next 5 years you'll probably see more medium->large companies using Node.js only because they grew to that size with it.

  13. What is best for the Job by GrimMethos · · Score: 1

    You need to use what is best for the job, there is a reason we have so many different programming languages. Do some research (it does not look like the OP has done all that much) and pick what fits the situation and your company can support with knowledgable people. You have to remember it is ECMAScript and has been around for about 15 years so it has had time to change and evolve. There are large enterprises using nodeJS, like LinkedIn using it for the server interface for their mobile application. When you talk of maintainability it is javascript, there are A LOT of people that know javascript, not to be confused with people that know jQuery but I wont go into that. If you are looking for prebuilt things, look at npm it is a package manager for node so there are a lot of packages out there for things from i2c and bluetooth controllers to full web frameworks and test suites. They even have stuff for cli utilities.

  14. The Enterprise by loufoque · · Score: 1

    I'm pretty sure the Enterprise doesn't use JavaScript. It either uses C or a Starfleet-specific language.

  15. dart by gedw99 · · Score: 1

    i used have used nodejs and c# and java extensively.

    Now i have moved across to DART.

    I get the IDE, tye aheadand OOP of c#, with the ability to deploy to Browsers as JavaScript.
    For deployment scnenarios where the environment is controlled we can deploy as Dart.
    The next version allows "edit and continue" in the IDE also.

    Dart can interoperate with plain JavaScript and with c++ if required also.

  16. JEE? by smittyoneeach · · Score: 1

    No: GTE.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  17. I only see one majour problem/challange by angel'o'sphere · · Score: 1

    Node.js is a JavaScript platform. So you need languages that ultimately compile down to JavaScript (like CoffeeScript, or you can abuse the GWT compiler and use Java).

    The problem with JavaScript is weird syntax for real oo programming on one side and dynamic typing on the other.

    Dynamic typing means you have to have a very gout test harness and really unit test nearly everything.

    I also would not wonder if you might get into new security risks. After all the server is a bunch of not compiled text files ... If you have an exploit way where input "gets evaled" you have arbitrary code running on the server. That means avoid eval() totally and make sure it is indeed avoided and/or have thought out input validation. And again: test for that!

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  18. Compiled languages by Viol8 · · Score: 1

    "I think compiled languages are impractical for web environments, for reasons everyone can come up with, so that rules out C and C++. "

    Yes - C & C++ are complex, hard to learn and require a deeper understanding of a computer than browser documents, which pretty much rules out web "developers" being able to use them. Is that one of the reasons you were thinking of?

    1. Re:Compiled languages by Xest · · Score: 1

      Hey not all of us are bad, I'd say I'm a "web developer" because it's mostly what I do, but I use C/C++ for some server products because when performance and flexibility matters it's not like I'm going to use a toy such as node.js.

      I absolutely agree with you and think node.js is redundant for this very reason, everything it does can be done in languages like C and C++ and in fact if you want to do anything that requires performance you have to drop back to C with node.js in the first place which begs the question, why bother with it at all?

      The fact is node.js is just a tool to get Javascript developers up and running on the server. If you know, or are willing to learn languages other than that it's of no value because they already offer better options.

    2. Re:Compiled languages by Bill_the_Engineer · · Score: 1

      "Web developer" has a stigma due to the early days of people learning HTML and using FrontPage and comparing themselves to people who actually used a programming language. I think the fact that web applications attract the most new people is why this stigma still exists. Who knows? I generally tune it out and judge people by their ability not by their chosen specialization.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    3. Re:Compiled languages by Xest · · Score: 1

      Yeah to be fair there's some truth to it, if anything the reason I do know languages like C, C++ and so forth is because I come from a desktop and server background as opposed to web. I do find a lot of developers who have done nothing but web development all of their lives do seem to be extremely low calibre.

  19. Re:And C# is portable to other platforms?? by gigaherz · · Score: 1

    No, if you want easy portability you use Java. That's the only good thing I see in Java. I just forgot to mention it.

  20. Re:And C# is portable to other platforms?? by gigaherz · · Score: 1

    Also, if there's a bug in the VM, you can update the VM, and every single app is back to working well, while a bug in a statically linked runtime, or in user code, requires every app with that bug to be fixed separately, or at least recompiled.

  21. Wheel reinvented once again by Anonymous Coward · · Score: 1

    Node.js seems to be the usual churn. Let's throw out decades of J2EE experience and start over! We'll write a new MVC framework! And a new ORM framework! Let's rewrite everything from scratch and make it similar to but different from everything else.

    This churn has got to stop. It's gone far beyond innovation or new technology and is just change for the sake of change. There is no reason for every platform to have its own ORM framework (Android's unnamed one, Core Data, Hibernate, EF, etc) and MVC framework. There's no reason for so many languages that are all similar to C and Java, but different. (C#, designed by the Turbo Pascal creator, uses WriteLine, while Java, a C++ syntax clone, uses Pascal's WriteLn? Really?)

    The time has come to get back to industry standards in the technology world instead of extreme Balkanization.

    1. Re:Wheel reinvented once again by Tridus · · Score: 1

      Amen.

      Seems like there's a cycle in this field where people forget everything that was already learned and have to learn it all over again by reinventing everything.

      UI designers seem to be doing the same thing by throwing stuff away and giving all new everything instead. That gave us Metro. We'd have been better off if they hadn't bothered.

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    2. Re:Wheel reinvented once again by Cereal+Box · · Score: 1

      I don't think it's change for the sake of change necessarily. You've got to remember that this stuff is created by a young generation that's just entering the workforce. They see existing technologies as old and crufty. Declaring types? Get with the times grandpa!

      Plus, there seems to be a fascination with making code as terse as possible...

    3. Re:Wheel reinvented once again by foniksonik · · Score: 1

      Node solves a problem Java can't solve. It's fast to develop for. Java takes 10 times longer for the same result (assuming your result is a web application). If you include a full suite of unit tests it still takes 1/8th the time.

      Time to market and time to add features is very significant. This also means lower cost. A good Node developer is probably an ex-Java developer so they likely cost the same (or if not an ex-Java dev they have equivalent experience, not just a front end UI guy who switches to app dev). Still, the code -> compile -> deploy -> QA process turns into code -> QA.

      This is why new companies choose Node. It's a competitive edge.

      Maybe later when they need to they will convert some mature parts of their code base to Java or C++. Until then why penalize themselves with overhead for code that may change next week?

      --
      A fool throws a stone into a well and a thousand sages can not remove it.
    4. Re:Wheel reinvented once again by segfault_0 · · Score: 1

      If you think it's implemented the same as J2EE and that it offers nothing new -- then its obvious you've never even spent 10 minutes on their site seeing what it does.

      Node.js is asynchronous and event driven -- and when compared to the thread-pool J2EE approach it's actually quite innovative and has the potential to produce a lot more client throughput (as it's not sitting around with 10 blocked threads waiting to fetch data from a disk or database).

      The only thing worse than churn is people running their mouths when they wont even take 15 minutes out of their precious day to evaluate something honestly.

      --

      I was crazy back when being crazy really meant something. (Charles Manson)
  22. Don't compare compare apples to oranges by RichSad · · Score: 1

    There is no "one right answer" as to which enterprise platform is best. Every project has a unique set of requirements and constraints. Each team consists of some group of people with some body of skills/experience. I have found it best to avoid getting religiously attached to any architecture or platform. I ask myself and my team "how do we best solve the problem the business has and deliver a great experience to customers?" I am currently engaged on a project where despite having C#/.net and PHP on LAMP stacks already in production at a large entertainment company, we opted to use node.js for a specific use case. The proof will be in the pudding after years in production, but so far node.js, CoffeeScript, MongoDB and Redis seem to be the right tools for this set of requirements. That said, I would not attempt to use node.js to cover all the use cases you specify in the original post. There are certainly people that would argue it is suitable for that, but I would not be one of them. Last thought is do a little research and see who IS using node.js and talk to them. I did this as part of my due diligence on this project. I also talked to those adamantly against using it. You have to decide what offers the right risk/reward ratio for your specific project. You will most likely end up with different tiers of your enterprise back-end with different tools for different needs.

  23. Ok for Front Office, less for Back Office by merty · · Score: 1

    In our company, we are exploring the use of node.js / javascript as a substantial part of our development strategy. What most people tend to forget is that most enterprises really don't like to develop anything but buys everything out of the box, looking closely what their competition is buying and using. We don't develop CRM systems on our own, we don't develop a billing system, we don't develop any ERP like system. We buy SAP, Siebel, Microsoft Dynamics and other programs to do this. We are not an IT software development company, it is not our core business nor do we have experience enough in house to start these kind of risky projects.

    However, what we will do, is "customise" and integrate the whole landscape of applications and have a single "online presence". In this area we do have a lot of development, consisting out of an enormous amount of relatively small changes. Most of these changes has to do with marketing campaigns, online web / applications and simply GUI or input validation logic, so to say the "Front Office" without much of business logic or processes. Most of these changes are temporary or very tailer made for a specific product and requirements will be altered during build... In the past, developers altered the "standard" back office applications for this, resulting in non-upgradable software and lots and lots of scattered code in ABAP, C#, Java, SQL and what else these applications uses. Just in case for these kind of changes, it is better to have this contained in one single environment. For this environment we had two choices: Java application server or Javascript Node.js. Both are sufficient for this kind of development. It is easier/cheaper to get Java programmers, however, since most of our changes are directly related to online/web stuff, most online developers do understand and know about javascript. Again, we didn't need the performance, en most of the changes are very, very simpel solved in a few lines of javascript using standard node.js functions and libraries. The only thing you have to be aware of is to choose one kind of framework and version & release system.
    We have measured projects doing it the "java way" and doing it the "node.js way", en we came to the conclusion that node.js projects delivered faster results with same quality. Not that much, but more like 10 java design/coding/testing mandays is comparable with 8 node.js mandays.

    The only issues we are facing is the availability of "real" javascript developers, keeping quality good enough and the terrible or often outdated documentation surrounding node.js libraries or components.

    --
    -------------------------------------------------- --------------------- Remco Schellekens
  24. Node.JS: The Good Parts? A Skeptic's View by Anonymous Coward · · Score: 1

    I found this video to be helpful - as told by a guy who is from the Java EE world who did not like Node.JS to begin with but now sees it as being useful -

    Node.JS: The Good Parts? A Skeptic's View

  25. LinkedIn uses Node by Required+Snark · · Score: 2
    Any debate on whether Node is "good enough" is already obsolete. It's being used by real companies, not just unknown overly hip startups.

    LinkedIn Moved from Rails to Node: 27 Servers Cut and Up to 20x Faster http://highscalability.com/blog/2012/10/4/linkedin-moved-from-rails-to-node-27-servers-cut-and-up-to-2.html

    Having said that, I've started using Node in a limited way and it is obviously immature. NPM is a mess. There are far too many almost the same packages, and no obvious way to choose between them without reviewing the code. A package may not be compatible with the latest release, but there is no way to tell without installing it to try it out. These are signs of a still evolving ecosystem.

    Still, it's only a matter of time until the rough edges are smoothed out and Node becomes accepted as a legitimate server side alternative.

    --
    Why is Snark Required?
    1. Re:LinkedIn uses Node by RoverDaddy · · Score: 1

      A package may not be compatible with the latest release, but there is no way to tell without installing it to try it out.

      This is the first thing I ran into as a newcomer to Node. Not just packages but programming techniques. You're trying to learn how to do something trivial for the first time, so you hit Google and then drop into Stack Overflow and find plenty of questions and answers about your very problem. Then you try to use the solution and it falls apart. That's when you look back through the comments and you discover, "Oh yeah, I wrote that answer / released that package for Node 0.4.x: it really doesn't work anymore, sorry."

      This isn't really an indictment of node, because I see this now wherever I look into the Web world (coming from the C/C++ world). So much immaturity (in the literal sense). Everything: HTML, CSS, Standards, Real-world browser support for said standards, VMs, best practices for JavaScript, tools like Dojo, Node, etc. all in flux. Documents that describe the "deprecated" old way, the new "approved" way, and the "better" way that doesn't work yet but will when the next revision is coming out (date TBD). A little more stability would go a long way.

      --
      RETURN without GOSUB in line 1050
    2. Re:LinkedIn uses Node by Laz10 · · Score: 1

      LinkedIn uses it for their mobile backend.
      But I more than suspect that the mobile backend is just a simple frontend to the real backend. And that is written mainly in Scala.

      As far as I know the closest thing to node.js in Scala would be something like Finagle, which they use at twitter:
      http://twitter.github.io/scala_school/

      For my current hobby project the backend is written in Scala, Akka and Play! - though I am considering replacing Play with Spray, since all the backed does is serving JSON from REST services.

      http://akka.io/
      http://spray.io/

  26. Re:Just say NO by murdocj · · Score: 1

    I can 't comment on Node.js but I can see what large scale Ruby would be a problem. Because Ruby is so dynamic (classes and objects altered on the fly, not static typing, etc) there's simply no way to detect errors up front. Basically Ruby throws out everything that's been done over the last 50 years to make software development safer and more predictable. It's an interesting language, but for large scale development you're going to run into problems and hard to find bugs, as the GP mentioned.

  27. Re:And C# is portable to other platforms?? by Anonymous Coward · · Score: 1

    You mean you can update the VM if somebody in the community offers a fix or if you have the competency to fix it yourself. If neither condition is present you're screwed. Your VM problem might not be a priority to anybody else, and in my experience you are much more likely to be able to fix problems in your own code than in a 3rd party offering.

  28. My 2 cents on Node.JS by randomErr · · Score: 1

    Node is great for small, narrowly focused web apps and quick development. But I find many of the supporting projects to be less then stellar. The lack of a solid IDE that has some sort of optimizer bother me. Also, JavaScript is an interpreted language which by it nature has speed issues.

    What I'm saying for long term support you'll need to roll most of your own code. Pulling in external modules may be slow because of the lack compiled code. Don't expect much from third party libraries. I've only been able to get one to work as advertised. And most of the advanced third party libraries require Python. Which begs the question: why am I using Node.JS when I could be using Python instead?

    --
    You say things that offend me and I can deal with it. Can you?
    1. Re:My 2 cents on Node.JS by Required+Snark · · Score: 4, Informative
      The Google V8 JavaScript engine used in Node has a JIT compiler that runs native machine code.

      http://en.wikipedia.org/wiki/V8_(JavaScript_engine)

      V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS CPUs) before executing it, instead of more traditional techniques such as executing bytecode or interpreting it. The compiled code is additionally optimized (and re-optimized) dynamically at runtime, based on heuristics of the code's execution profile. Optimization techniques used include inlining, elision of expensive runtime properties, and inline caching, among many others.

      I know that facts are not fashionable on Slashdot, but please make the minimum effort for a reality check before you mindlessly repeat whatever drivel you've been listening too. I don't know about the Python requirements, but given your misinformation about V8 you are most likely wrong about that as well.

      --
      Why is Snark Required?
    2. Re:My 2 cents on Node.JS by godefroi · · Score: 1

      Also, Python (the language) is for people who didn't think VB's whitespace-significant syntax went far enough.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    3. Re:My 2 cents on Node.JS by segfault_0 · · Score: 1

      Because V8 Javascript performance destroys Python all day and twice on sunday. Python is one of the slowest languages in regular use today.

      http://benchmarksgame.alioth.debian.org/u64/benchmark.php?test=all&lang=v8&lang2=python3&data=u64

      --

      I was crazy back when being crazy really meant something. (Charles Manson)
  29. Re:Just say NO by Anonymous Coward · · Score: 1

    Yes, and the exact same issues apply for Javascript I'm afraid.

  30. Huh? by emblemparade · · Score: 1

    I think you're jumping on the Node.js bandwagon without understanding why.

    Node.js is a good asynchronous server, like Tornado (written in Python). However, it sounds like you are writing a backend for a RESTful (mobile) web application. Web is rarely asynchronous and has no special benefits from using an asynchronous server. You will not be more scalable just because you choose Node.js as your platform.

    However, if you're excited about JavaScript on the server -- wonderful, because you get to use the same language throughout your project -- then consider the following products that are based on the JVM:

    Prudence (cool because it has a framework for MongoDB, which is also JavaScript-based, and also because it uses Restlet, a truly awesome JVM library)

    Helma (very mature and proved its worth)

    JSSP

    Myna

    Phobos

  31. Re:And C# is portable to other platforms?? by flimflammer · · Score: 1

    Why is mono dead on Linux?

  32. Node.js Is the future by Anonymous Coward · · Score: 1

    Node.js or something like it is the future. While the tech today is not ready for prime time, it defiantly shows the trend that programming needs to go.

    That trend of course is one language to rule them all, and that language is Javascript. Having your entire application written in one language front to back end. (And with Json, even data transfer) is a major boost to application development. Is it the best language for the task, no. But that simply does not matter because it is good enough. The removal of the context language switching, adding the ability to share code across any part of and application, and removing segration of developers based on language is such a big plus it easily outweighs javascript quicks.

    The funny thing is that the software industry has created a portable, cross platform, cross domain language despite itself.

    1. Re:Node.js Is the future by godefroi · · Score: 1

      Please, for the love of all that's holy, do not let Javascript become the "one true language". It's a steaming pile of terrible language design.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
    2. Re:Node.js Is the future by larry+bagina · · Score: 1
      You can write your entire application in java and use GWT to convert to javascript for the browser. You can write your entire application in anything that supports llvm (c,c++, objective c, brainfuck, haskel, etc) and use emscripten to convert it to javascript for the browser. You can write your entire application in Dart and convert to javascript for the browser.

      There's also java in the browser and .net in the browser.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

  33. Throw Angular in the Mix? by Nishi-no-wan · · Score: 1

    I've been primarily working with XML databases (eXist) on the back end the past several years. But the need for doing more client-side work (via JavaScript) has been increasing. Having dealt with Microsoft's weekly build breaks in IE 4 (I seriously had a list of build numbers from each week that different customers installed IE and a different aspect of my web application broke), and their inability to follow the ECMAScript standard, I've gone very grudgingly back into the whole build apps with JavaScript movement.

    What I would like to be able to do is write XQuery on both the server and in the browser. The Sausalito made that promise, but it just never felt quite right to me.

    Node and CouchDB together appear to do the same with JavaScript, and with impressive results from what I've seen. I've spent a long time evaluating it and a few other frameworks for a future project, but the surprise find for me has been AngularJS.

    Having been raised with MVC back in the 1990s in C++ and Java, there has just been something about AngularJS that has totally clicked with me. I can take a bit of the load of rendering pages away from the XML database backend and use static HTML pages in the dynamic fashion that was promised since Netscape Navigator 2.0.

    It's been nice doing everything in a single language - XQuery - for the past several years. The Model is XML, the View is XHTML and JSON output, and the Controller is XQuery. All of it running on the server side.

    The division of labor in AngularJS feels right to me. It's organized well. (Part of that organization appears to be a reliance on Node for project management. So understanding Node is useful, even if you're not going to be running from a Node HTTP server.)

  34. Re:And C# is portable to other platforms?? by Tanaka · · Score: 1

    Hardly dead. Its very much alive on Linux, Mac & Android.

  35. Re:And C# is portable to other platforms?? by Tanaka · · Score: 1

    I run a big 24/7 mission critical GPS and Mobile network on Linux/Mono for a household name. It better not be dead!

  36. Node is great, because JavaScript is great by Anonymous Coward · · Score: 1

    JavaScript is the new LISP. Once you master its scoping rules (very simple, but nuanced), and use closures with the same ease you use for-loops, you'll see the light.

    Node takes JavaScript to the next level by making everything asynchornous. You can't have some things synchronous, and some things asynchronous... Async is like a virus, and once one thing should be Async, everything touching it needs to be Async. Node helps by making a idiomatic way of handling Async things, along with making everything in their standard library Async. This is really annoying at first, if you're coming from a threads/sync world... but once you get used to it -- it's better! This is the answer to "how do we kill threads?" Threads are a mess and I'll let you Google the thousands of posts and papers on that.

    Sharing code between server and client is (surprisingly) very useful. There are a lot of "utility" type functions you'll want shared. Also, code that generates HTML can be shared between server and client side, which makes it very easy to switch between AJAX and traditional requests (because the behavior can be simulated on the server, with the HTML results sent to the client -- or the client can calculate the result themselves, and inject it into the DOM... depending on the situation).

    I know JavaScript has warts. I know. Show me a language that doesn't have warts. The point is that JavaScript is supported in every browser. So, what it really comes down to, is you can master one language that is good enough (JavaScript), or you can continue to dabble in all sorts of other languages (Java, Python, Ruby, PHP, whatever's next), and try to ignore the browser. JavaScript will dominate the web for the next two decades, due to entrenched browser support. Deal with it.

    That doesn't mean JavaScript should be used for *everything* -- it just means that if you plan on touching the web, then JavaScript is the pill you have to swallow. And once you swallow it, it isn't SO bad. It could have been a lot worse (VBScript, anyone?).

  37. JavaEE : Node.js :: Apples : Oranges by hey! · · Score: 2

    You're asking for the classic apples to oranges comparison here.

    Node.js is all about scaling the number of requests/second -- about minimizing the number of boxen you need to serve thousands of requests per second. By using polling instead of threads (under the covers) and asynchronous event handling (above the covers), it becomes simple to respond to high volumes of requests without allocating huge volumes of resources.

    But requests/second is only one dimension of scalability. There is management of the infrastructure. There is security (the number of Node tutorials which completely omit this is shocking). There is complexity (much of which in Node.js is pushed to the client side). There are features (e.g. the messaging and timer services in Java EE).

    The buzz over Node.js reminds me of the buzz over Ruby on Rails a few years back. RoR also introduced an elegant new programming paradigm -- configuration by convention. People were amazed that the could field a simple example app without having to write XML configuration files for the ORM layer. Look! It creates all CRUD interfaces for me! But in the end those tasks really aren't that challenging for an expert programmer; they're more like sand in the gears when you're starting up a project. So while RoR remains a good tool for certain kinds of web apps, it's nowhere near as revolutionary as it seemed at the time, and it has little penetration in the enterprise market. It sees to me that most of the joy in Node.js is likely to be on the front end of the project, but in the long tail of the project you're still going to have a lot of drudge work, especially where you have to roll your own enterprise features.

    Which is not to say Node.js isn't brilliant. It appeals to the old Unix man in me, because it does one thing really well. It's a superb piece of middle-ware glue. It makes exposing back end services like databases to RESTful web clients a snap, and if you've got to do that on a massive scale, where by "massive scale" I mean by retail web standards where you have to handle tens of thousands of simultaneous connections. For web applications where you don't have to integrate with a lot of back end enterprise systems and where there's a heavy emphasis on a rich HTML/CSS UI, Node.js is an elegant solution that reduces the information overload on the development team by taking advantage of the Javascript expertise they're bound to have.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  38. Please by hackula · · Score: 1

    99% of the criticism of node here is boiling down to "its a dynamic language and dynamic languages suck". Everyone gets an opinion, but clearly dynamically typed languages can be used to build large things, because they actually have been used in many many cases. As someone who has a production node product used by enterprises everyday, most of the people on this thread sound like they have never actually used node before, and the criticisms reflect a knowledge of js from 1998. Also, every language has its own ecosystem and idioms. I used to be a .Net guy. If I went in expecting a package manager like npm, I would think that the .Net ecosystem was horrible, because Nuget does not come close. However, I would be ignoring the fact that most .Net projects are off of Nuget and the expectation is to download the dlls from somewhere.

    Although I should not get into a huge flamewar about dynamics languages, I would like to point one thing out. Although we do not get compile time checking, IME the adoption of modern best practices for testing in static enterprise shops is almost non-existent. In the modern dynamic world (Rails and node.js where my personal experience lies), it is nearly universal to one degree or another. To each his own, but I would be hesitant to put so much trust in my compiler...

  39. Re:Nope by phantomfive · · Score: 2

    The only real programming language is LISP, but carry on.

    --
    "First they came for the slanderers and i said nothing."
  40. Re: I think..Typescript is the answer by larry+bagina · · Score: 1
    Coffeescript is the worst parts of python combined with the worst parts of ruby. (IMO :-)

    Typescript is a superset of javascript (legal javascript is legal typescript) with additions like static typing and some ECMAScript 6 support (classes, modules).

    If you're allergic to ;{} characters, stick to coffeescript. If you like ruby or python, stick to coffeescript. If you like c-style (C/C++/C#/Java/Javascript) languages, use Javascript, TypeScript, or Dart.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  41. Re:java vs node.js by ttucker · · Score: 1

    guess which one has had more serious vulnerabilities to date? you guessed it, java.

    you guys are idiots.

    Of course, they were all security problems with the Java browser plugin, which in no way would have any effect on server-side java, or any Java use case similar to Node.js. Reality....

  42. The project list, or ANY c++ programmer on the pl by raymorris · · Score: 1

    When node.js goes to shit and your enterprise class software worth millions or even billions of dollars is ruined, who you gonna call? Nobody, that's who.

    That's why node.js isn't for enterprise use.</quote>

    If Java has an issue, ONLY Oracle could address it. If they don't care to fix it, you're fucked.
    Node.js, being open source, could be fixed by the current project team, or any C++ progra

    Java maintenance stops when Oracle's suits decide they have something better to do.
    Node.js maintenance stops when no one alive can code C++.

  43. Don't do it by DrakkenWulf1 · · Score: 1

    My company went that route. Bad idea on multiple levels. The weak typing of JS means you spend a bunch of time on unit tests that the compiler should catch instead. That is time you should be investing on your biz logic, not syntax errors. Node.js' use of callbacks instead of promises makes your code a mess of boomerangs.

    There are better solutions out there. JVM based ones are good, so I'm told.

  44. Vert.x baby! by OdinOdin_ · · Score: 1

    http://vertx.io/ Have both (the promises of Node.JS and the enterprisey seal of approval from the Java ecosystem :)

    There also exists Servlets + ASync + WebSockets exists if you want to lean towards the more traditional model (one thread per request) but need a little bit of ASync.

    The Java ecosystem is set to get better native JS support (to run / integrate JavaScript directly into the JVM), via both improved Rhino (based on new Java7/8 features) and also a V8 engine (also webkit) due in future JREs. So once these things happen the polygot vert.x can push JS directly as well. As historically JS performance is not good on JVM.

  45. Re:And C# is portable to other platforms?? by tibman · · Score: 1

    I think it's more like "meh, good enough".

    --
    http://soylentnews.org/~tibman
  46. Sold. by mosb1000 · · Score: 1

    Effectively node.js allows inexperienced developers to do something that people who understand IIS, many Java Application Servers, WCF, or even raw sockets programming have already been doing for many years already.

    Ok, you sold me on it.

  47. Re:The project list, or ANY c++ programmer on the by cheesybagel · · Score: 1

    IBM also makes their own compilers and VM there are others. No one forces you to use Oracle's implementation.

  48. Re:The project list, or ANY c++ programmer on the by cheesybagel · · Score: 1

    Oh and Sun open sourced Java so no one is stopping you from continuing development if Oracle gave up on it anyway.

  49. Re:A mixed bag, for sure by cheesybagel · · Score: 1

    Uh no. Plenty of people wrote CGIs in C back in the 90s. That is the easiest way for a C application to interface with the web. If you want even better performance you can use FastCGI which is supported by web servers like lighthttpd.

    We do not commonly use C today for web programming for other reasons.

  50. the enterprise isnt ready. but they will be. by darrenoakey1 · · Score: 1

    I'd split this into two questions. _will_ node.js be very successful in the enterprise, and _should_ it be.

    the first is pretty easy - no. Fundamentally if you do a project in java, and it screws up, no one is going to come looking for your head - but if you do it in javascript - it doesn't matter how many gains you get - at the first tiny little problem you are going to be attacked. People are scared of new things, particularly in big business - and all those people who've spent 20 years becoming god's gift to C++ have a very strong interest in watching you fail.

    however, should it? I also think this is easy.. "yes". The why is a very complicated answer.

    Years ago we spent a long time "getting it working". The tools, libraries, frameworks, services and particularly knowledge (i.e. google) out there mean that any idiot can get something major working very quickly - in most cases you can just type in exactly what you want and find source code for it.

    We also spent a lot of time optimising. But now computers are _fast_. and they have lots of memory. And optimisers and jits and vms are really fast. And libraries are so high level that all of your critical sections are usually in someone else's existing highly optimised code anyway. People like to talk a lot about speed - but usually conflate latency and throughput the amount of latency sensitive tasks is _very_ few and far between once you mention hft you starting having to think. And for throughput your grid or gpu able to do thousands or millions of things at once sorta makes you start laughing at the supposed 1.6x improvement you'll get for C++ over java. Then it becomes a _cost_ issue - and that has some interesting trade-offs.

    When you really look at it 99..999% of code is not latency sensitive. For that that is, obviously, C is the best option. Then, as your code complexity increases, C becomes messy, and java starts looking like a good way of managing that complexity. Imagine a graph of complexity vs performance requirements - your requirement is a point on the graph and the suitability of the language is a line. Java is ok at performance, but great at complexity. C++ is _much_ better at performance, but worse at complexity - and C is just much better at complexity. As great a language as C++ is, there's just no point on the graph where it makes sense to use it. Especially as your choice doesn't have to be mutually exclusive - it's quite possible to write the 1% of code that gets executed 99% of the time in C, or hell even ASM - and use a pretty language for the rest (mind you I _hate_ java with a passion - it can never hope to equal the elegance of a C# or Miranda)

    Of course, large enterprises still spend a lot of time writing code. That's because of many things - mostly because every single person is writing the same thing - and because they are all doing it in the context of "legacy" apps which have good historical reasons for what now appears to be rampant insanity.

    and you start seeing the real cost of software - which is not "making it work" - but really "putting it together" - "reusing" - "sharing" - "discovering", not duplicating. And this is where C++ has really hurt the industry. It's _much_ easier to rewrite a library than to get it compiling with another one. Sorry What version of RogueWave was that?

    This is something java is really good at - if you can live with the fact that every word has been used a thousand times - java libraries tends to just compose fairly well. Besos showed another way - which is to have services everywhere. That's great in theory.

    But it's really hard to write a large new thing that way. It's hard to trace - to debug. and especially release. And nowadays - it's all about releasing - people talk about CI, CD - gatekeepers and the like - but websites now have to be up 24x7. Trading systems give you an hour window a day maybe - but that's going away. Software quality _expectations_ have gone up. It's no longer ac