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?"

304 comments

  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 Anonymous Coward · · Score: 0

      This argument didn't fly back in the MS anti-Linux FUD days and it doesn't fly now. More importantly its not even true, you have providers like StrongLoop, The Node Firm, and Iris NPM you can go directly to. I'm not a huge fan of node.js but your reasoning is worst reasoning...

    4. 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.
    5. Re:Who you gonna call? by Anonymous Coward · · Score: 0

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

      Ghostbusters!

      Or maybe that should be FUD-busters.

    6. 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
    7. 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.
    8. 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.

    9. 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.

    10. 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.

    11. 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
    12. 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.

    13. 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.

    14. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      You can say it doesn't fly all you want, but that doesn't make it true. He's right.

    15. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Actually it does, or more accurately did, fly. That's why companies like Red Hat and The Node Firm exist.

    16. 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.

    17. 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.

    18. 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.

    19. 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
    20. 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/

    21. 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...
    22. 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.

    23. 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.

    24. 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.

    25. 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.

    26. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Don't point out reality to people, it just messes up their delusion.

    27. 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.

    28. 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.

    29. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      ADO.Net works fine if you aren't an incompetent boob.

      No, serously. System.Data.SqlClient is for when you want to hard code SQL Server (and only SQL Server) database support into your app. If you're even moderately competent at writing .Net code, you've long since figured out how to use System.Data.Common.DbProviderFactory. It's dirt simple to use and makes supporting any arbitrary ADO.Net database library a cinch without having to rewrite anything.

      The System.Data.OracleClient stuff works fine through this mechanism.

    30. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      ADO.Net is not based on concrete classes. It's based on the abstract classes in System.Data.Common.

      You obviously have a Java background, since you don't get the concept of an base class enforcing implementations like an interface would. That's how abstract classes work. You can code the common methods of something, then require that the concrete classes implement the rest.

      And then there's System.Data.Common.DbProviderFactory, which pretty much completely destroys your entire complaint. If you aren't using it, you're doing it wrong.

    31. 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.

    32. 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.

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

      Are you saying Java is a... fad?

    34. 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.

    35. 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)
    36. 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.

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

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

    38. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      However, Google doesn't give a fuck about node.js and makes changes to v8 without thinking about how it will affect node.

    39. 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.
    40. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      You're a fucking retard.

    41. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      That "who you gonna call" argument can be made for any open source tool. In my 15 years of experience working with MS based tech, maybe once or twice did we ever actually reach out to MS to fix a strange issue. It was always too expensive and time consuming and the effort would have been better spent with access to the code and brute-force hacking.

    42. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      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.

      Right. This is why most Enterprise shops tend to go with a single vendors stack (Oracle, Microsoft, PeopleSoft) and make integration the exception. Integration across vendor platforms is always going to be required to some degree, but these are risk most companies don't see worth taking just gain the the benefits of what node.js would offer over other more sound, Enterprise-grade options that have a 800 number you can call at 3:00 AM when you're counting millions of dollars of loss by the hour.

    43. Re:Who you gonna call? by Anonymous Coward · · Score: 0

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

      By definition, if it is no longer maintained, then even if it was an Apache project it would still be no longer maintained. Otherwise it would be maintained.

    44. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Javascript is a very mainstream language and there are no shortage of programmers that are proficient in it.

    45. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      node.js is not intended for serious number crunching, but neither is Java or .Net.

      I can't really comment about .NET but I can state you are categorically wrong about Java, it is indeed meant for number crunching, not only that it is extremely fast and extremely precise with it, something most languages and platforms have no way to achieve.

      There's a metric crapton of ignorance floating around about Java and I can only assume it's from people who either haven't touched it in over half a decade or have only ever scratched the surface.

    46. 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
    47. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Yes. There is nothing better than hiring someone experienced with making those annoying javascript ads to handle server code. Just because the language is mainstream doesn't mean that the people versed in that language have the skills.

    48. 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.
    49. 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.

    50. 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.

    51. 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.

    52. 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
    53. 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.

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

      and someone to blame, lol

      --
      http://soylentnews.org/~tibman
    55. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Ghost busters!!!

    56. Re: Who you gonna call? by Anonymous Coward · · Score: 0

      How many Java apps are written to make all I/O asynchronous? That includes reading from files, executing database queries, making service calls, etc.

      Node may run very slowly compared to Java, but if even one I/O task is done synchronously in the Java version, the node version usually ends up being faster than the Java version.

    57. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      So? Google is not going to respond to your Node.js specific support request unless the V8 engine is directly involved.

    58. 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

    59. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      >JIT compilation to native code
      Yeah. node.js does this.

      https://www.youtube.com/watch?v=UJPdhx5zTaw

    60. 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.

    61. 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.

    62. 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.

    63. Re:Who you gonna call? by Anonymous Coward · · Score: 0

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

      You aren't making a convincing argument that it will be here to stay...

    64. 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.

    65. 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.

    66. 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.)

    67. 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.

    68. 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.

    69. 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/

    70. 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.

    71. 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!

    72. 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?

    73. 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.
    74. 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.

    75. 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.

    76. 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.

    77. 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.

    78. 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?

    79. 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
    80. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      LOOOL,

      Are you *really* going to go there? How could this have possibly received +5 Insightful?

      Java vulnerabilities are like candy. Some of the best pieces (worst) most recently. Oracle is absolute swiss cheese with regards to security. Oracle has patch times that will make n00b hackers clap with joy.

      What happens when your vendor of Java kills of version 1.6? What happens when that upgrade doesn't go well?

      Everyone has this problem...

    81. 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)
    82. 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.
    83. 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

    84. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Lots of JBoss programmers are out there and have massive enterprise dev experience.

    85. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Right, because Joyent is just 2 assholes working out of their garage....

    86. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      NASDAQ OMX entire stock exchange is written in Java, with latency down to 100 microseconds and extreme throughput. There are other large stock exchanges written in Java as well, with the most extreme demands on performance. Some are written in C++ as well, but they show similar numbers, they are not faster. Actually, the fastest stock exchange in the world is probably NASDAQ OMX, written in Java. Faster than C++ exchanges. NASDAQ OMX never trigger the GC, they avoid it completely. The trick is to preallocate all objects and then then reuse them, never delete them. This is how the GC is avoided.

      Also, because Java is adaptive optimizing, it will optimize the binary for every run JIT. C++ is compiled once, and typically you dont use any special optimizations at all, you target your C++ binary to the least common hardware, so no support for AVX stream instructions or other esoteric speed up instructions. In contrast, Java VM will optimize every time you run your code and will discover that your cpu has support for AVX so JVM will turn on the optimization for your specific hardware. C++ can never do that. In some benchmarks, Java is faster than C++. In practice (large stock exchanges) Java is faster than C++ too.

    87. 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.

    88. 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?

    89. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Yes, if you're writing the same C++ and Java code. But if you take advantage of C++ generic programming / template metaprogramming, C++ is still the fastest language.

    90. 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.

    91. Re:Who you gonna call? by Anonymous Coward · · Score: 0

      Whilst I don't have numbers, the approximate paradigms of node.js (i.e. non blocking execution) is easily implemented in modern .NET using the await, async keywords.

  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: 0

      or skip apache, nginx and node.js and go straight for lighttpd

    4. 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.

    5. 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.

    6. 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.

    7. Re:node.js has a very serious issue by Xtifr · · Score: 0

      Or skip having a separate, standalone server, and just embed libmicrohttpd directly in your app.

    8. 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
    9. Re:node.js has a very serious issue by Flammon · · Score: 2

      That's essentially what node.js does.

    10. Re:node.js has a very serious issue by Anonymous Coward · · Score: 0

      node.js is already near perfect horizontally scalable. I'm wondering what you mean by "scalability".

    11. Re:node.js has a very serious issue by Anonymous Coward · · Score: 0

      Node.js is good for scaling out in the sense of more requests. I think he was talking about making a very complex program with many special conditions, and the JavaScript language itself.

    12. Re:node.js has a very serious issue by Anonymous Coward · · Score: 0

      nginx and node work really well together. We run node to support our single page apps and use nginx to serve up the static content and act as a load balancer for node processes running on their own internal ports to get better fault tolerance and to take advantage of more CPU's. It works really well for REST based stateless services that mainly just shovel data in and out of a DB.

      For things like complex workflows, business logic, etc. it may not be the best tool as it's weakness is intensive CPU operations, however if you are planning on having a SOA that primarily uses REST services node woks great for that top interface layer and you could then write more complex logic as console apps and let node glue them together.

    13. 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++.

    14. Re:node.js has a very serious issue by hackula · · Score: 0

      ... and then he suggested C as a better alternative. Hmm, I think we might just have someone who does not know how to write javascript properly.

    15. 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...
    16. 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.

    17. 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.

    18. Re:node.js has a very serious issue by Anonymous Coward · · Score: 0

      Being able to run javascript on both client and server is useful sometimes.

      I actually have a perl server which runs server-side javascript through libv8 and much of the same code runs both client and server side. It is a form validation tool with user given form definitions with all sorts of advanced features like repeating row structures (built with HTML tables dynamically), check rules that validate field interdependencies, and summing rules that produce output into fields based on states of other inputs.

    19. 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.

    20. 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

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

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

    22. 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.
    23. Re:node.js has a very serious issue by Anonymous Coward · · Score: 0

      I'm enjoyed your reply. I'm enterprise developer of 15 years and I understand your perspective. I feel like your ideology on node.js can be summed up with "it's for the new generation of kiddies who know JavaScript inside and out and don't want to work at doing things the right way". While there is definitely merit to that idea if you look at the underpinning architecture of node.js there is nothing there you can't do with existing web servers and enterprise web development frameworks (e.g. .NET) the value in the-node-way is the same value languages like C# and Java provided us over C++. It's more abstraction that buys less development effort and allows developers to do things that would take a lot of effort up front with precursor technologies. Node.js is valuable but I think it has to be highly qualified to use in the enterprise. That's where an experienced developer or architect comes into play. But to discredit it's value in the big puzzle that is web development on a grand scale, I can't get on board with you. 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.

    24. 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.

    25. 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.

    26. 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!

    27. 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.

    28. 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 Anonymous Coward · · Score: 0

      "use strict"

    2. Re:I think... by Anonymous Coward · · Score: 0

      That does not give you type checking, but only that variables have been declared.

    3. 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.
    4. Re:I think... by Anonymous Coward · · Score: 0

      C++11 certainly makes programming a lot faster. With Duetto you can even compile it to JavaScript and have it talk to your C++ server.

      Vert.x is a project that is in between J2EE and Node.js.

    5. Re:I think... by Anonymous Coward · · Score: 0

      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 disagree with that sentiment. Like PHP it gets used a lot and for that reason plenty people think it must be good for something, right?

      Well, uhm, no. Wide availability and popularity do not a good language make. You have a point about the stretching but I disagree that it was any good to start with. Merely really, really widely available. And apparently well-suited for the kind of non-thinking that abounds in its niche. Which makes it enterprise-y, in a sense.

    6. 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.

    7. Re:I think... by Anonymous Coward · · Score: 0

      Well you could just use Python instead of C++.

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

      You had me until "there's nothing that compares to C#/dotNET." Er JAVA which is 10 times better?

    9. 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.

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

      s/over/but/

    11. Re:I think... by Anonymous Coward · · Score: 0

      Never heard of mono? There's nothing wrong with writing portable code in C#. Not anymore than doing the same with Java.

    12. Re:I think... by Anonymous Coward · · Score: 0

      Haha. Oh man, that was a good one. ... ...Wait, you weren't joking?

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

      Er, no?

    14. Re:I think... by Anonymous Coward · · Score: 0

      > Untyped code has an habit of hiding mistakes in hard-to-debug ways

      Is there any hard evidence of this, or is it just someone's opinion?
      I've been programming for many years in strong-typed and weak-typed languages and I never run into a hard-to-debug type-related issue.

    15. Re:I think... by Anonymous Coward · · Score: 0

      The [C#] language, the class library and the VM are all vastly superior in performance, features, and flexibility.

      As well as the ability to write completely unmaintainable code. I looked through some C# 4.0 books, and was astonished at how easy it would be to write completely obfuscated code that appeared to be totally straightforward. That's not to say there aren't some good parts to C#, but the language designer should have stopped short of including the kitchen sink.

      Also, unless C# has a dependency injection framework, Spring/Guice/CDI with Java still kicks C# to the curb. (If C# *does* have a DI framework, I'd be really interested in hearing about it.)

    16. 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.
    17. 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.

    18. 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.

    19. 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."
    20. Re:I think... by Anonymous Coward · · Score: 0

      then there's nothing that compares to C#/dotNET

      Nothing? How about Java/Spring?

    21. Re: I think... by Anonymous Coward · · Score: 0

      MEF ships with .Net 4 and there are a ton of other DI options if you aren't happy with what you get for free with the language.

    22. 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.

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

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

    24. 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)

    25. 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)
    26. 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)
    27. 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."
    28. 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.

    29. Re:I think... by Anonymous Coward · · Score: 0

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

      This attitude is one reason why people hate Microsoft as a whole. I suppose I shouldn't be surprised you're using it to defend one of their core technologies...

    30. 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)
    31. 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)
    32. 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)
    33. Re:I think... by sproketboy · · Score: 1

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

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

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

    35. 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.

    36. 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.

    37. 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)

    38. 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

    39. 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

    40. 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.

    41. 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)

    42. 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)
    43. 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.
    44. 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.

    45. 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.

    46. Re:I think... by Anonymous Coward · · Score: 0

      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,

      [citation needed]

      features,

      Even if you don't run it on Windows?

      and flexibility.

      What kind of flexibility? As you said, Java is better supported on many platforms.

      As far as I know, C# and .NET don't offer anything significantly better than Java if you don't do Windows development. I don't see any reason to use it instead of Java on other platforms. I don't have anything against the language itself, it's pretty much the same as Java.

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

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

    48. 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
    49. 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.

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

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

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

      Yeah, a little bit. ;)

    52. 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
    53. 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)
    54. 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)
    55. Re:I think... by sproketboy · · Score: 1

      Then stop feeding the troll idiot.

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

      Exactly. Why use TFS since it's shitty.

    57. 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.

    58. 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.

    59. 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. A mixed bag, for sure by Anonymous Coward · · Score: 0

    JEE/C/C++/.NET is a diverse group of stuff with diverse capabilities. You've mixed in JEE and .NET, which will both give you all you could ask for with straight up C. Easiest way to turn C into a packaged web thing is probably using JNI or P/Invoke and let the non-C side handle that part. As for your question about node.js, I don't know. I'll say the obvious: the tooling is less mature. If it lets your developers share responsibility for and code between client and server portions that's great. JavaScript is very versatile; in some ways it outdoes Perl in the more-than-one-way-to-do-it sense. But Perl isn't hot now. That's probably your biggest risk with node.js: popularity, rather than app packaging. That some day not far from now you'll stick a job ad up and when the respondents hear node.js and server-side JavaScript they'll hold their noses, mutter something about it not being 2013 anymore, and walk out. If your maintaining your application in five years is a bigger concern than rapid deployment I would avoid node.js until there is a more permanent community of developers, regardless of what answer you find to the question you asked.

    1. 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.

  6. Just say NO by Anonymous Coward · · Score: 0

    We tried both large scale Ruby and Node.js deployments, and it was simply horrible to maintain and we got bitten by very-hard-to-find bugs due to the lack of a type system. Don't go there for serious stuff.

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

      Interesting, would you care to expand?

    2. Re:Just say NO by Anonymous Coward · · Score: 0

      WebODF uses Closure Compiler to do type checking and has lots of unit tests. This rigorous checking is essential if you want to write a serious project in pure JavaScript.

    3. 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.

    4. Re:Just say NO by Anonymous Coward · · Score: 1

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

    5. Re:Just say NO by Anonymous Coward · · Score: 0

      Lemme guess, you skipped the idea of rigorous unit tests?

  7. 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.

  8. 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?

  9. 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.

  10. 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 Anonymous Coward · · Score: 0

      yes.. in customize product everything need to fast update.. compile version or restart webserver just for updating file is a joke.
      If before people might force to use remote desktop with single application to overcome update problem. Many Point Of Sales using this concept.
      Ya,php is joke but i like it because fast to code..

    2. 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.

    3. 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.

    4. Re:Errmmmh ... what was your question? by Anonymous Coward · · Score: 0

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

      Can you expand on that briefly? Serious question.

    5. 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...

    6. 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.

    7. Re:Errmmmh ... what was your question? by Anonymous Coward · · Score: 0

      AJAX = Asynchronous Javascript And Xml

      But if you use JSON to transfer data = AJAJ

      Is that cool anymore?

    8. Re:Errmmmh ... what was your question? by Anonymous Coward · · Score: 0

      What does the machine actually execute?

      Sarah Connor, is that you?

    9. Re:Errmmmh ... what was your question? by Anonymous Coward · · Score: 0

      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.

      Nice FUD. You are incorrect. .Net is not tied to windows in any way. There is no "lock in" to windows, or even microsoft. The .Net MVC project is open source and ported to other platforms. The IDE is way better. Development is way faster. The resulting website is way more secure. I think Node.js is perfect... for my competitors. :-)

    10. 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.

    11. Re:Errmmmh ... what was your question? by Anonymous Coward · · Score: 0

      Not assembly language, if that's what you mean. It takes a binary executable and then transforms that into micro-ops.

  11. 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 Anonymous Coward · · Score: 0

      You're basically trading developer performance for runtime performance.

      Developers are expensive and servers are cheap. Why wouldn't you make that trade?

    6. 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."
    7. 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."
    8. Re:It depends on what you have and what you need by Anonymous Coward · · Score: 0

      This is one of the key points of node many people ignore. It can shell out to any linux based program very easily. So in any case where you need to get extra performance you can go ahead and write that very focused and contained feature in C++ and spin up that executable with a very simple non-blocking callback pattern just like you would fetching data from a DB. If it's a feature that is heavily used and pervasive throughout your service, then you can write node.js bindings an consume it like any other module within your app.

      To say that node.js is slow, and there for should not use it, is not a very valid argument because it's your design that makes it slow. If you want to build proper systems that use the right tool for the job for each feature node facilitates that very well, vs. trying to use a single monolithic php, java, .net, etc. app to just do everything.

    9. Re:It depends on what you have and what you need by Anonymous Coward · · Score: 0

      The flip side to that is since node is single threaded, and uses an event loop vs. using a thread per request (thing nginx vs apache) you can make up a lot of the ram overhead by not having hundreds of threads sitting and spinning and holding on to copies of bootstrap memory waiting for some DB or network operation to complete.

    10. 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)
    11. 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)
    12. 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."
    13. 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)
    14. 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."
    15. 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)
    16. 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."
    17. 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)
    18. 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."
    19. 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.

    20. 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)
    21. 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."
    22. 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)
    23. 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."
    24. 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)
    25. 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."
    26. 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)
  12. 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.
  13. List by Anonymous Coward · · Score: 0

    https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node

  14. 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.

  15. 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.

  16. 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.

    1. Re:The Enterprise by Anonymous Coward · · Score: 0

      The Enterprise probably STILL has COBOL code running somewhere

  17. Use Ada by Anonymous Coward · · Score: 0

    Seriously, I'd use Ada instead. Strong static typing will catch 80% of all errors at compile time, it will work in 20 years from now and can easily be interfaced with C.

    I know that some people think this is a joke, but Ada is really the best choice for sustainable business. Even if you disagree with that, it surely is better than Javascript.

  18. Nope by The+Cat · · Score: 0, Flamebait

    Javascript is not a real programming language. Put away your toys and do your job.

    1. 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."
  19. 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.

  20. 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
  21. Deliberate trolling by Anonymous Coward · · Score: 0

    Why is there a new article every week about the legitimacy of JS around here?

    There's no right answer, and slashdot is geared towards a slightly 'old-school' crowd, and the answer is obviously going to be, it doesn't matter what you write it in, you're code is going to suck, be late, and you're going to quit in a year, and it's going to be someone else's problem.

    Look at resumes for programmers in your area/budget. Meet a few. Decide if you think you can find a node.js or a Java programmer or whatever programmer. Decide what community you want to get into bed with, and do it.

    We don't need a blog post or a question or a whatever every 20 seconds about whether or not Ruby or C or assembly or Lisp or VB or Lua or whatever else is legitimate for a project or not. You can find out pretty easily what people are using, look at other companies job listings. Someone's gotta be first for a newer technology, decide if you and your team are up for it. Otherwise, follow the status quo, and stop starting flamewars.

    PS, a technology is never going to solve your real problems, which is making the right thing, communicating with the right people, and staffing people to make the right thing. This question is a waste of time.

  22. 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.
  23. And C# is portable to other platforms?? by Viol8 · · Score: 0

    Mono on linux is pretty much dead so C# is more or less a Windows only language now making it a locked in dead end for developers who don't want to be tied to the MS upgrade treadmill all their working lives.

    As for your other points, C++ is easy to maintain if you're competant in the language and as for hacking - remind me what happens if there's a vulnerability in a VM? Oh thats right , every single fucking program running on it is potentially screwed , thats what.

    1. 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.

    2. 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.

    3. 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.

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

      Why is mono dead on Linux?

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

      It is for sure not dead, I 've used it recently.

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

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

    7. 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!

    8. 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
  24. 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.

  25. 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)
  26. 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.

  27. 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
    1. Re:Ok for Front Office, less for Back Office by Anonymous Coward · · Score: 0

      I've had really good results with turning our C# devs into node.js devs. Many of them disliked JS, but not so much the language as much as UI programming with heavy DOM manipulation in general. When they start working with node and put together some callbacks and see that it kind of just works they latch on and run with it pretty quick.

      One of our main drivers was that we were mandated to move away from MS for new products, but I still had to retain my .net guys for legacy fixes and updates. php or java would have lead to high-turnover, where those now working with node don't seem to want to work with anything else anymore.

      Add in angular.js to get out of jQuery hell and bring a cleaner and testable experiance to the front end and I have a lot of happy ex c# devs vs.a new workforce that knows nothing about the business or legacy products.

  28. 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

  29. 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/

    3. Re:LinkedIn uses Node by Anonymous Coward · · Score: 0

      I think maturity is the most important thing for software development. The language, libraries and DE are the tools we use to make new stuff. The tools are not supposed to be new tech, only the result. The software industry would get so much more done if it would put this much effort on new products, not new tools.

  30. 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 Anonymous Coward · · Score: 0

      >Which begs the question: why am I using Node.JS when I could be using Python instead?
      About the performance: Until PyPy is ready, NodeJS - which is based on V8, a JIT-Compiler - is still much faster. Maybe not as fast as C++ using Wt, but still about a big factor.
      Also, consider the non-blocking model of NodeJS. It's ideal for applications like say irc only clients.

      Also: Before someone says: "But there's Tornado", consider that it's made for long connections only.

    3. 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)
    4. 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)
  31. 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

  32. strengths and weaknesses by Anonymous Coward · · Score: 0

    Most web software is heavy on the I/O, and light on the processing. For that kind of workload, node.js is emerging as a very viable solution; certainly better than a .NET or full JavaEE stack. But for processing-heavy, transactional workloads, node.js is simply not appropriate, and a JavaEE-based solution is still far preferable. It's a question of using the right tool for the job, not of what's "old" and what's "new".

    As for support, well: Oracle isn't very good, and neither is Microsoft. Node's document sucks, but then again so does that of most of the tools used by Java and .NET developers (anyone ever look into JBoss' docs? And IBM produces copious documentation, but you can never find the one thing you're actually looking for).

    So: if your workload is I/O bound, and you intend to run the code in the cloud, definitely take a peek at node.js, especially if you have a team of highly skilled Javascript developers (you'll need them; node is non-trivial). If you don't, then look at Java-based solutions, either JavaEE/Spring for transactional applications, or even Vert.x for I/O bound workloads (once the dust settles down on the IP issues).

  33. 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.

  34. 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.)

  35. Node.JS can do Enterprise, but isn't ready yet by Anonymous Coward · · Score: 0

    Node.js doesn't have enough libraries, support, and adoption to be used in the Enterprise yet. Oh, and no billion dollar company selling it.

    Java & .Net have their issues, but they are mostly related to antiquated libraries. The languages themselves are fine and to catch up with some of the advances of more modern languages and platforms they just need some key libraries restructured.

  36. Re: I think..Typescript is the answer by Anonymous Coward · · Score: 0

    NOTHING can possibly improve on Coffee!!

    Oh wait: You're talking about a programming language.

    Sorry.. Nevermind...

  37. 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?).

  38. To everyone saying node.js is immature and risky.. by Anonymous Coward · · Score: 0

    It's used by a lot of companies to get real work done. https://github.com/joyent/node/wiki/Projects,-Applications,-and-Companies-Using-Node

    A few from the list:
    eBay
    Heroku
    LinkedIn
    Microsoft (a core contributor to node.js for Windows) ...and many more.

  39. Going Mobile by Anonymous Coward · · Score: 0

    I think the crux of your question, that many of these posts overlook, is the target of your development: mobile. In that context, node.js probably offers a decent solution without the bloat and complexity of the more established server environments. If you were serving a larger context or a larger enterprise, you'd probably be best served, (all puns intended), with a hybrid environment. Those who vociferously pitch C or Java really overlook that the only programming environment you should be coding in is assembler. Beyond that, it's all fluff.

  40. Adopt a robust approach for your projects by Anonymous Coward · · Score: 0

    COBOL for Android is a real winner.

  41. 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.
  42. 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...

  43. java vs node.js by Anonymous Coward · · Score: 0

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

    you guys are idiots.

    1. 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....

  44. 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.

  45. Bad idea by Anonymous Coward · · Score: 0

    Strong-typing = static safety checks = errors found at compile time by developers.
    Dynamic language = weak-typing = runtime checks = errors found by your users.

  46. 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++.

  47. 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.

  48. 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.

  49. 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.

  50. 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.

  51. 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.

  52. Re:The project list, or ANY c++ programmer on the by Anonymous Coward · · Score: 0

    nah, buy your jre from IBM ...

  53. 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