Slashdot Mirror


Java Vs. C#: Which Performs Better In the 'Real World'?

Nerval's Lobster writes "Software developer Jeff Cogswell writes: 'Let's compare Java and C#, two programming languages with large numbers of ardent fans and equally virulent detractors. I'm not interested in yet another test that grindingly calculates a million digits' worth of Pi. I want to know about real-world performance: How does each language measure up when asked to dish out millions of Web pages a day? How do they compare when having to grab data from a database to construct those pages dynamically? The results were quite interesting.' Having worked as a professional C# programmer for many years, Cogswell found some long-held assumptions challenged."

437 comments

  1. Language is hardly relevant by InterBigs · · Score: 5, Insightful

    When talking about large-scale websites the language is hardly relevent. There are as many high-traffic sites running on C#, Java, PHP or whatever. When facing large scale other factors play a much larger role. The only exception is when you're talking Facebook or Twitter scale: Facebook has practically reinvented PHP and also has some parts of their code in C (or C++, not sure) and Twitter made a switch from Ruby to Scala in order to handle the onslaught of users. The results mentioned in the article (accepting 2000 requests takes 600ms longer when using simple code) are not that interesting in this context.

    1. Re:Language is hardly relevant by QBasicer · · Score: 5, Insightful

      This is more a comparison between runtimes and servers, and less about language.

      The reason this is interesting, is it's a very simple test, and hows the maximum performance. Requests can never be faster than returning a simple string. CLR + ISS is slower than JVM + Tomcat. Unfortunately, we don't know where exactly the performance difference lies.

      --
      x86, oh yes, I'm pro.
    2. Re:Language is hardly relevant by cod3r_ · · Score: 5, Funny

      Assembly is the only way to go when it comes to database oriented web apps.

    3. Re:Language is hardly relevant by samkass · · Score: 5, Interesting

      It's also interesting to note that all tests were done on Windows. Despite him using Tomcat for Java and IIS for C# because that's the "typical" usage, he then completely does an about-face and deploys the Tomcat on Windows-- a configuration I've actually never seen and which has to give C# a bit of an advantage as the vendor-supplied OS. And yet Java still won when talking about doing anything substantial...

      --
      E pluribus unum
    4. Re:Language is hardly relevant by PhrostyMcByte · · Score: 5, Insightful

      C# 5.0 (the latest version) has language-integrated async functionality that makes writing vertically scalable software a snap. It looks and behaves almost exactly like sync code, but actually runs async. Talking about server-side async here, not client-side.

      Doing the same thing with Java or an older version of C#, where you have only the base libraries to help you, is really quite tedious to do properly.

      So, for a test like this involving web development, I'd say language is actually a pretty relevant topic. Unless you've got lots of money to spend and can throw more hardware at something, the kind of perf improvement that can be provided by this is pretty astounding.

      But, there are problems with this test. He says explicitly that he's looking for a real-world test, but then goes and basically times a Hello World. There is no database access, no concurrent users. No real-world anything.

    5. Re:Language is hardly relevant by squiggleslash · · Score: 5, Funny

      No, that's not fine tuned enough. Standard practice here is to program an FPGA to do the less important work, with wire wrapped transistors doing anything that needs to perform well.

      Anything less is, well, lazy.

      --
      You are not alone. This is not normal. None of this is normal.
    6. Re:Language is hardly relevant by Anonymous Coward · · Score: 2, Insightful

      You've gotta be kidding.

      Hey, I know of this great conspiracy site...

    7. Re:Language is hardly relevant by Electrawn · · Score: 2

      I also add the tests were run on cloud servers, which is a time share environment.

      Also, I would have used TC server instead of tomcat. Or another java enterprise JSP container.

    8. Re:Language is hardly relevant by squiggleslash · · Score: 5, Insightful

      I've seen Tomcat on Windows a lot. Remember that most Enterprise environments until relatively recently used Windows for everything, but also bought into Java as the development platform to standardize on. Developers would be required to develop Java under Windows, and the Gods of IT would refuse to countenance a Linux server in their server room even if the developers wanted Windows.

      RHEL's rise has changed things somewhat, but it's still a common combination.

      --
      You are not alone. This is not normal. None of this is normal.
    9. Re:Language is hardly relevant by Anonymous Coward · · Score: 5, Insightful

      The reason this is interesting, is it's a very simple test, and hows the maximum performance. Requests can never be faster than returning a simple string. CLR + ISS is slower than JVM + Tomcat. Unfortunately, we don't know where exactly the performance difference lies.

      Nope, maybe that's what author think's he's doing, but he clearly doesn't understand the stacks.

      For .NET, he's using the entire ASP.NET MVC framework to return a simple string. For Java, he's just using a bare servlet, and no framework code. To make this a fair test, he should be using Spring or something on the Java side.

    10. Re:Language is hardly relevant by darjen · · Score: 5, Informative

      I been a Java developer for 8 years, worked at several different consulting companies and large in-house corporate environments. I've never seen Windows+Tomcat being used in an actual production setup. For development, yes, almost always. But Linux+Tomcat is much more common for live servers in my experience. At least it is in today's business world.

    11. Re:Language is hardly relevant by zifn4b · · Score: 3, Interesting

      Assembly is the only way to go when it comes to database oriented web apps.

      This is what I find funny about C++ zealots who hate .NET and java. Interestingly enough, Microsoft had an incubating effort to build a "framework" called Casablanca that would give C++ developers an easy way to host a web server or a RESTful web service. Part of the C++11 standard is incorporating features in languages like C# and java. It's interesting to watch the pendulum shift back and forth and the philosophical arguments being argued from ivory towers.

      --
      We'll make great pets
    12. Re:Language is hardly relevant by red_dragon · · Score: 3, Informative

      ... he then completely does an about-face and deploys the Tomcat on Windows-- a configuration I've actually never seen and which has to give C# a bit of an advantage...

      The official Tomcat installer for Windows (as in, the one that you'd download from tomcat.apache.org installs the Tomcat Native Connector, which improves performance considerably. And there's a lot of vertical market applications for Windows that bundle Tomcat.

      --
      In Soviet Russia, Jesus asks: "What Would You Do?"
    13. Re:Language is hardly relevant by Anonymous Coward · · Score: 2, Informative

      Facebook has practically reinvented PHP and also has some parts of their code in C (or C++, not sure)

      Facebook has significant parts in C++, and employed people like Andrei Alexandrescu to do some of the heavy lifting. He has given some talks with regards to computational efficiency in C++ for Facebook, based on his work.

    14. Re:Language is hardly relevant by sideslash · · Score: 4, Funny

      At my shop we engineer universes to produce all desired output at the exact moment it's needed with zero latency. It's a highly parallelized operation. Unfortunately, we currently occupy one of the universes that got mostly wrong answers.

    15. Re:Language is hardly relevant by Anonymous Coward · · Score: 5, Insightful

      Unless you're running Facebook or Twitter, the odds are that you don't really need to be asking questions like this. The bottlenecks you encounter are more likely to be poor code within your codebase than anything intrinsic about the language.

      If you are running a site like Facebook that needs to scale beyond what that platform can realistically cope with, and your codebase is perfect and can't be made any faster, then it may be more feasible to do what Facebook did with PHP and fix the platform, rather than to switch to something different as that would involve rewriting your entire codebase, at which point you no longer have "perfect" code any more, and you lose the benefits of your dev team's existing skillset.

      But very few of us are ever going to be in that position. Facebook did what the needed to do given the circumstances, but the rest of us should just concentrate on improving our own code before criticising the platform we're using.

      Bottom line: If you write decent code, it doesn't matter what language it's in; all the major platforms are perfectly capable of running a high traffic web site. Conversely badly written code can and will bring even the most resiliant of servers to its knees. It's all about your code, not about the platform.

      Anyone who tells you otherwise and says "language X isn't capable of doing that" is being a language snob. Feel free to ignore them.

    16. Re:Language is hardly relevant by TyIzaeL · · Score: 5, Informative

      You must not work in the education sector. PowerSchool is becoming quite popular in many districts (at least where I live) these days and Windows and Mac are all they support. They most commonly set up Tomcat + Oracle on Windows servers.

    17. Re:Language is hardly relevant by Anonymous Coward · · Score: 5, Funny

      Dueling useless anecdotes.

    18. Re:Language is hardly relevant by Anonymous Coward · · Score: 1

      On top of this, there's no way in hell the .NET CLR runs slower than Sun's JVM. Even when MS was creating a competing JVM theirs was faster than Sun's.

      Yeah, nobody could possibly write more efficient code than Microsoft. What.

    19. Re:Language is hardly relevant by Let's+All+Be+Chinese · · Score: 0

      Facebook chose to "invent" a php-to-C compiler because they couldn't rewrite the massive pile of php and they started to notice they needed more and more servers, and it's costing them. Sort of how sexchange setups need moar hardware than, oh, just about everything else. Sometimes to the tune of a large factor. Four quad-core xeon servers to run a bit of sexchange email? Same can be done with two dual-core xeons with some FOSS for OS and IMAP in front of a filer, with room to spare. For about ten times as many users.

      Though from a management perspective, facebook probably made the right call there, as opposed to netscape that committed suicide by trying to start from scratch with nothing to tide them over. Where facebook certainly didn't make the right call was by using php in the first place. And, well, they're now content with their fancy php compiler contraption, and so won't move to something maintainable.

      I think neither java nor c# are good choices in that first place either.

      You want scale? Go simple. Serve static as much as you can. Use a fast, FOSS server. (For user-friendlyness, cut down on needless filching of cycles on that side too. Constructing css in js? Just serve up the css already, fool). Constructing that stuff? Eh, awk to do the markup tagging might be peachy fine in such a generate once, serve many times scenario. Or just about anything else you'd like to use. As long as you serve up static pre-generated html files with a fast server (kqueue, sendfile, memory filesystems if disk really is the bottleneck) and a suitable pipe to fill.

      If I'd have to have something non-static I'd have a few interesting options at my disposal, and neither java nor c# would be near the top of the list. Or on the shortlist, for that matter.

      If I'd have to have something non-static and I'd have to choose something running on top of a VM, well, the JVM has less problems with vendor-lock-in, though it's no panacea. But I'd look at some other language first. There are a few suitable alternatives that run on top of the JVM, so that's something to look at.

      Java-the-language is too enterprise-y for my taste. Same with c#, and it's got more vendor lock-in sauce, no matter how their marketeering department likes to spin it. No, mono isn't really a viable alternative. And neither is serving up anything whatsoever with the vendor-native OS. That stuff just doesn't belong on the public internet.

      What does enterprise-y mean? It means that the language is dumbed down for griding; for employing roomfuls of mediocre code grinders that are indeed cheaper when bought overseas (but that need more oversight and code auditing there--though it's a difference of degree only--and so are even more unsuitable for MBA-only managing). If you're going that route, the question of which is faster is pretty much moot: You're going at it brute force with the "human resources", so no excuse nor point, really, to not go the same route and buy more hardware, or hire ever larger chunks of your preferred supplier's cloud to serve up your fancy apps.

      If that's what you care about, all you need is dosh to make the machine go. If it's something else, uhm, how did we arrive at this silly pseudo-dillemma again?

    20. Re:Language is hardly relevant by lightknight · · Score: 3, Insightful

      This is Sun we're talking about, now Oracle; they were the original planet weird when it came to implementing programming languages. Swing is one of the few things I've seen leave programmers speechless with frustration.

      Plus Oracle has been doing so well with their JREs that even DHS has recommended disabling their plugins lately.

      --
      I am John Hurt.
    21. Re:Language is hardly relevant by Anonymous Coward · · Score: 2, Funny

      Yes, it’s called “Slashdot”.

    22. Re:Language is hardly relevant by SJHillman · · Score: 5, Funny

      If you measure efficiency in terms of average revenue per line of code, it's hard to beat MS. I mean, look at Vista, it was a single line of code calling bluescreen.bmp and it made them millions.

    23. Re:Language is hardly relevant by Anonymous Coward · · Score: 5, Informative

      Yay PowerSchool. For over a year, they didn't even support sFTP. Most of their customers transferred student data over the Internet with no VPN using FTP. Should have seen all the SSN, name, and address data for both students and teachers that was transferred. Not to mention their data is messy.

    24. Re:Language is hardly relevant by Anonymous Coward · · Score: 1

      Java has had threading support since before C# was a language. Use Futures with a threadpool, its very simple to use if a bit verbose. There are a number of other java based languages from groovy (Grails) to Scala that you could try if you want less verbose syntax.

      On a side note, most java people that i have worked with use some kind of in memory caching like Hibernate to make the query time less relevant.

      In general, spawning off a whole bunch of threads means that you should look at how your data is structured to see if it can be stored in a better way. If you were to suddenly get concurrent users, and each page load requested data from a number of databases, you may run into issues waiting for the slowest database to get back to you. Database design gets particularly interesting when you have a lot of concurrent writes.

      Perhaps a better test would be to give a seasoned java developer and a .net developer each $1000 and a week to set up a simple twitter clone using any hosting provider with any os/platform they want. We then see how many requests they can handle over the course of a month, and how fast those requests are.

    25. Re:Language is hardly relevant by Anonymous Coward · · Score: 4, Interesting

      I've been doing Java development for 15+ years and most of that in web apps. Production deployments to Linux, mainframes, and Windows. Sadly, most often, the production machines are Windows. A typical argument is that it is best to have the production system similar to development (and QA, and integration testing, and user acceptance testing) system to avoid surprises as the build travels through the process.

      Concerning portability of Java across platforms, I can only recall having three issues and they are all related to file systems: paths (developer assumption), permissions, and Windows misreporting file creation time. For Java web apps, your portability issues are the same regardless of language--the browsers.

      For a true comparison of Java to C#, I can only think of one way to do it. Give four weeks of identical requirements to two teams, one of C# fanbois and one of Java fanbois. Limit them to three development weeks each, and then judge by features completed and application performance. Switch teams and complete the job. Try a larger project to flush out the architecture set up phase and then adjust your results by availability of skilled resources in the market.

    26. Re:Language is hardly relevant by roccomaglio · · Score: 1

      I agree that for large sites language is not necessarily important. For most large media sites performance is mostly dependent on how well the caching structure is set up. You only hit the servers as often as you need to update the cache. The traffic is served from a combination of varnish/squid and some CDN (akami). If you are serving customized information (billing,user accounts,product catalog) then you may start to talk about load and language performance.

    27. Re:Language is hardly relevant by bfandreas · · Score: 2

      Oh wow. then he should have used a JSF 2.0 implementation. On top of Tomcat...good luck with that.

      Clueless test is clueless. Comparing Apple to Al Quaida to give management advice to system architects..
      Technology most commonly is used by what the corporate standard is.
      If there isn't one then you choose what your devs are most familiar with.
      If you aren't fettered by considerations as these then you choose the plattform with the least cost attached to. Which bloody well isn't anything .NET.
      Oracle had the misfortune to acquire Java and all tech attached after the hippies at Sun decided to have an open plattform. It's amazing what you have to pay for when using C# as compared to Java or Perl. The server side open-source community isn't behind .NET. Apache springs to mind.

      If performance is your main concern THEN YOU TAKE A LOOK AT THE WHOLE THING and measure where in your application you spend the most time. Do you spend too much time in the database? Do you lose too much time during network connects? Does your streaming performance not live up to scratch? Yep, these are real world issues.
      What a waste of everybody's time!

      --
      20 minutes into the future
    28. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      I guess the OP's question didn't state if it was real performance, or how quickly a server could be exploited... ;-)

    29. Re:Language is hardly relevant by Anonymous Coward · · Score: 5, Funny

      At my company we travel back it time and tweak the early universe to give the appropriate settings in the present day. It's currently optimised for cat videos which is probably why your settings aren't working.

    30. Re:Language is hardly relevant by bfandreas · · Score: 1, Insightful

      The dot.com bubble called. They want their Applets back.

      Whoever still uses Java Applets in 2013 should have a very good explanation for his doings. We stopped using them 10 years ago.
      I also fail to see how Java applets running in a web browser in any way relate to server-side code?
      Swing actually has a quite nice API. I've seen worse. Of course it got a bad reputation after legions of hobby-grade developers failed to use threads for heavy lifting and instead did everything in the render thread.
      I can write bad code in any language. There are many good reasons -a lot, actually- to not use Java client-side. Swing is not neccessarily one of them.

      --
      20 minutes into the future
    31. Re:Language is hardly relevant by mikey1134 · · Score: 1

      The default Blackberry Enterprise Server install is Tomcat on Windows. The same with ADP's self hosted packages.

      --
      <gir voice> I love this sig... </gir voice>
    32. Re:Language is hardly relevant by LongearedBat · · Score: 1

      The thought of debugging that... gives me nightmares.

    33. Re:Language is hardly relevant by thetoadwarrior · · Score: 1

      Yes there is a difference. Php is much slower, it's broken and easily the least trustworthy language.

    34. Re:Language is hardly relevant by PhrostyMcByte · · Score: 3, Informative

      Threading is a form of async, but not the one I meant.

      I was referring to async I/O, where you can request the OS perform some I/O and then notify you when it's complete without blocking any of your threads. This enables you to write apps with co-operative multitasking where you switch between tasks while you wait for I/O, which is far more efficient than switching between threads.

      With this model you can (somewhat) easily service 10,000 clients per-thread.

      Typically this form of async is done using callbacks or eventing, which is doable with some practice but creates code which is really gnarly to anyone lacking experience with async. .NET has supported this form of async for many years, and I believe Java's NIO library provides the same thing.

      C# 5.0 takes it a step further and gives an incredibly useful syntax sugar -- basically hiding all the callbacks, making it look like a simple synchronous method. Behind the scenes, the C# compiler generates a state machine class that does all the heavy lifting.

    35. Re:Language is hardly relevant by Anonymous Coward · · Score: 1

      I been a Java developer for 8 years, worked at several different consulting companies and large in-house corporate environments. I've never seen Windows+Tomcat being used in an actual production setup. For development, yes, almost always. But Linux+Tomcat is much more common for live servers in my experience. At least it is in today's business world.

      My guess is that's selection bias in your case, for the kinds of large companies who would employ you or consult for you.

      My organization has paid (God knows how much) for essentially unlimited Windows Server licenses and my department already employs Windows technicians. So the the cost of adding one more Windows virtual server is essentially zero vs. the cost of hiring a competent Linux admin. Thus, our intranet's Tomcat server runs Windows.

      For many small/midsized companies, especially those whose business does not involve high-traffic or public-facing web applications, Windows comes standard and Linux admins are an added-cost option. If your server traffic is measured in the dozens or hundreds of users per day, and you've already got the Windows "talent" in-house, it's the path of least resistance.

    36. Re:Language is hardly relevant by Lothsahn · · Score: 1

      I realize that Tomcat on windows is pretty rare, but at our company we have hundreds of Windows-based Tomcat deployments. They work just fine and perform roughly equivalent to their Linux counterparts (within a few %).

      --
      -=Lothsahn=-
    37. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      FPGAs are used in database applications when the problem is big enough, amusingly.

    38. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      I do consulting and I also have never seen Tomcat + Windows in live/production environment, only in development environments. And I also do not work in education sector.

    39. Re:Language is hardly relevant by Pieroxy · · Score: 3, Insightful

      That and the fact that his "simple" test took longer to run than his supposedly more complex test in Java. Something wrong with the first test ? With the second?

      Well, something very wrong with the overall test. When your results contradict themselves, you should not publish them.

    40. Re:Language is hardly relevant by Pieroxy · · Score: 1

      The most loathing thing is that for C# the "complex" test takes longer than the "simple" test. This is fine.

      However, on the Java side, the "complex" test goes much faster than the "simple" test.

      Hmmmm. Crap. Which is fine. The real question is: why did they decide to publish such Rubbish(C)?

    41. Re:Language is hardly relevant by aztracker1 · · Score: 2

      I will have to disagree with the "cost" of .Net over say Java. In context, if you are talking ANY_LANGUAGE + ORACLE, the cost isn't a concern. If It's Java + Oracle vs. .Net + MS-SQL, I would advise that the cost is probably lower in the .Net case. Another issue is time, every time I have worked in a Java project, I feel like I'm pulling teeth just to get the environment setup... Eclipse + Tomcat + project + nant tasks + debug ... vs VS + solution/project + debug ... Add to that most of the applications I've seen in either environment are over-engineered crap... If you aren't doing unit testing, and aren't supporting multiple backends, then WTF are you abstracting your data tier through interfaces, and factories? It increases development time in the short term, and in the long term increases maintenance costs. I mean, I think unit testing can be a good thing, and that test environments are important, but sometimes you *SHOULD* make assumptions in favor of the simplest solution that works.

      All of that said, about half of my new development lately has been NodeJS in WebStorm, which I feel is the best fit to my workflow, even if it is a little like running with scissors. In any case 99% of the time, the architecture being used will be whatever your developers are most comfortable with, combined with some pragmatic choices based on availability of drones (I mean employee/contractor developers) with the skills needed to maintain your codebase with the least training costs. Most applications can handle a few thousand simultaneous users without imploding regardless of the backend architecture. Scale is a complicated problem in any case, and gets very complicated depending on what any actual bottlenecks are, and where consistency is more important than actual raw performance under light load.

      --
      Michael J. Ryan - tracker1.info
    42. Re:Language is hardly relevant by Anonymous Coward · · Score: 5, Funny

      > I've never seen Windows+Tomcat being used in an actual production setup.

      Then you haven't seen shit.

    43. Re:Language is hardly relevant by LordLimecat · · Score: 2

      Symantec Endpoint Management uses Tomcat / Java / Windows, as does CrashPlan, Blackberry Enterprise, and probably scores of others. It seems like any time Im dealing with an "enterprisey" service that has some kind of "shiney" web interface, its got tomcat on the backend.

      For the record, BES has been tomcat basically forever.

    44. Re:Language is hardly relevant by ByOhTek · · Score: 3, Informative

      Overall, I'd say the test showed that the author doesn't know how to benchmark.

      IIS sucks pure and simple. Even on Windows I use Apache. It's just better.

      But I also noticed, he spent a lot of time and effort 'breaking the rules' to make Java better, and working to make it more efficient, but he didn't do that for C#.

      So we have... Java's raw implementation is slower than C#s
      But when combined with a server, Java Tomcat (still Linux? Or is it back to Windows) is faster than C# on IIS/Windows.

      No shit shirlock, really? Might as well add Python and ModWSGI on Apache then. Have, what is usually regarded as the performance king, in the comparison.

      I think just about everyone knows, performance wise with the same hardware, a server will be faster on about any *NIX but MacOS (and probably even that) than Windows.

      I think just about everyone ALSO knows that IIS is a steaming pile, and Apache is pretty damn good (IIRC TomCat is built on Apache).

      Now, if we compare the raw tests (C# vs Java) C# is faster, but when we move to the web servers, suddenly Java is better. That tells me... IIS is significantly (orders of magnitude) worse than Tomcat/Apache.
      That wasn't news a decade ago.
      And this is article longer a comparison of Java/C#

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    45. Re:Language is hardly relevant by The+Moof · · Score: 3, Informative

      Unfortunately, we don't know where exactly the performance difference lies.

      The test details are very, very light (some code would've been nice). However, just looking at the details we have, I see two issues with the C# testing in test #2 -

      1) The tests were pushed through the MVC4 Framework - this is an additional layer of unneeded overhead and processing for the C# tests. It's not mentioned if the Java requests were piped through an MVC engine.

      2) "I can have a servlet return some HTML, or I can return the results of a JSP page. These are analogous to the C# controller and View approaches, respectively." - This is incorrect. Servlets would be analogous to writing an HTTP Module, and JSP would be the equivalent to writing an ASPX page/HTTP Handler.

      These two problems probably stem from the author's unfamiliarity with C# on IIS outside of an MVC environment.

    46. Re:Language is hardly relevant by Samantha+Wright · · Score: 1

      All programs should be exactly 100 lines long. No more, no less. If your program is fewer lines than that, you're using too high-level a language. If it's longer, you're using too low-level a language.

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    47. Re:Language is hardly relevant by luis_a_espinal · · Score: 1

      This is more a comparison between runtimes and servers, and less about language.

      But this comparison is still nearly meaningless since it does not count architecture, deployment choices and infrastructure. Barring the case of extremelly poorly written web-facing applications, architecture and infrastructure are king.

      The reason this is interesting, is it's a very simple test, and hows the maximum performance.

      But that is not much different from a simple CPU-burning test that computes PI to the uberth degree or something. The only difference here is that instead of churning numbers, we are churning web pages. But that is only part of the equation.

      The test claims to try to test the runtimes in the context of the web, and yet the web requires a lot more than that. Requests can never be faster than returning a simple string. CLR + ISS is slower than JVM + Tomcat. Unfortunately, we don't know where exactly the performance difference lies.

    48. Re:Language is hardly relevant by Samantha+Wright · · Score: 5, Funny

      Isn't there a free implementation of that in Emacs?

      --
      Bio questions? Ask me to start a Q&A journal. Computer analogies available for most topics!
    49. Re:Language is hardly relevant by tarius8105 · · Score: 2

      VMWare vCenter is a tomcat application and the installer only works on Windows. Thats one example. There are other COTS applications out there that use tomcat for a backend on windows. While you personally may not do it others have done it. I agree with you that Linux and Tomcat is the most common configuration though.

    50. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Try NetBeans. I fucking hate eclipse. Netbeans comes with everything you need to start working right away.

    51. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Doing things through JMS helps too, makes coding distributed apps simple.

    52. Re:Language is hardly relevant by asliarun · · Score: 4, Interesting

      No, that's not fine tuned enough. Standard practice here is to program an FPGA to do the less important work, with wire wrapped transistors doing anything that needs to perform well.

      Anything less is, well, lazy.

      From what (little) I know, that's exactly what data warehouse appliances like Netezza and Teradata do. They have custom built FPGAs to do the SQL execution significantly faster than what a CPU can do.

    53. Re:Language is hardly relevant by HaZardman27 · · Score: 1

      My experience mostly matches this, although I've also seen a decent bit of SPARC Solaris as the platform of choice.

      --
      Apparently wizard is not a legitimate career path, so I chose programmer instead.
    54. Re:Language is hardly relevant by luis_a_espinal · · Score: 2

      I've seen Tomcat on Windows a lot. Remember that most Enterprise environments until relatively recently used Windows for everything.

      As far as I can remember (at least since 1998) I've almost never seen a Java/Windows-based web-application enterprise environment. I've only seen that twice, and these were for subsets of web apps that were meant to run on laptops that would temporarily be on the field, disconnected from a network.

      And before the advent of Java, most enterprise systems were running on a combination of mainframes and minicomputers (the good but now almost forgotten AS400s and their like), and the old UNIX workstations. Windows (and before that, DOS) was only on the clients, and sometimes not even that because clients were typically nothing more than VT100 green-ugly terminals.

      In general, the "enterprise" does not (and has not) run on windows until recently. The client-side delivery of things and stuff like Microsoft Exchange and ActiveDirectory might, but the rest, back-end servers, database servers, content management servers, caching servers, address validation servers, proxies and firewalls, all that stuff runs predominantly on UNIX.

      but also bought into Java as the development platform to standardize on. Developers would be required to develop Java under Windows,

      Required? Never seen anything like that. Maybe your experience is different from mine, but again, 8 different companies in distinct industries since 1998, and I've never seen anything like that. Granted, you can do your coding in Windows (which I do at times), but you also typically have a dedicated UNIX server for compilation and testing (and more often than not, a development user account on said server(s)).

      People doing Java development exclusively in Windows without a developmental stage prior to testing on the intended platform (UNIX/Linux + Java), that's just asking for shit to blow up in pieces.

      and the Gods of IT would refuse to countenance a Linux server in their server room even if the developers wanted Windows.

      What year are we talking about here? The late 90's?

      RHEL's rise has changed things somewhat, but it's still a common combination.

      Your work experience is very strange. When I worked for a very large banking organization (Citicorp), it was all UNIX and Linux (and that was 2001 already). Man, I know of large ties-and-suits insurance companies that were adopting Linux (the Slackware distros of old which predated RedHat by internet eons) in their server rooms back in 1997. And I don't necessarily live in a technology-embracing area so to speak.

    55. Re:Language is hardly relevant by Anonymous Coward · · Score: 5, Informative

      Sorry to burst your bubble, but Pearson is a private company. It is not an academic institution. You can blame this on bureaucracy in large institutions making bad choices, but teachers don't get a say on this stuff. The leadership does.

    56. Re:Language is hardly relevant by MrEricSir · · Score: 1

      I program in Vala for a living, which looks like C# but compiles down to C, which then compiles to native binaries. It's based around GObject.

      Recently they added async support and it's pretty amazing. The code you have to write to use an async method is hardly beautiful, but it's MUCH less ugly than kicking off a separate thread.

      That said, saying that async methods "look and behave almost exactly like sync code" is true for simple cases, but once you get any kind of complexity it's not really true. In a big enough piece of software you will end up with a lot of the same issues multithreaded apps have with order of operations, reentrancy problems, etc.

      --
      There's no -1 for "I don't get it."
    57. Re:Language is hardly relevant by Lost2Home · · Score: 1

      I been a Java developer for 8 years, worked at several different consulting companies and large in-house corporate environments. I've never seen Windows+Tomcat being used in an actual production setup.

      I work for a large corporation and we have several in production. It almost always boils down to vendor A supports a few different OS's. When none of the Unix versions comply with corporate standards, then you deploy Java applications (including Tomcat) on Windows.

    58. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Or, as one of my uni professors said half jokingly, half cynically to reps of the student Linux user association (I wasn't one of those guys tho):

      "Will that Linux give us a PC lab? What events do they organise? Will there be any grants from them?"

      Tho our faculty were keen on taking Oracle, Cisco and Microsoft money and free licences, they'd never be that stupid to deploy Windows on web-anything even back then.

    59. Re:Language is hardly relevant by swb · · Score: 5, Informative

      You've never been in education, have you? It shows.

      "Educators" are the actual teachers. They have near zero say in what systems get selected, and those doing the selecting seldom have any experience in being an educator, and usually the selection committee ("Committee Decisions: Because you can't fire the committee") is judging the software on features and functionality, not on underlying technology.

      If there is someone in a specific educational organization who has specific architectural biases against Windows, I can assure you they have nothing to do with system selection, only implementation.

      And what are the VIABLE alternatives? Professionally I've worked with several educational institutions that have made a run at being all Macintosh, and it has always been a dismal and expensive failure on the back end. They all migrated to Windows servers and kept Macs only for teachers and students, if that.

      Linux may be viable for some functions, but with most of these things it boils down to dollars. Linux may be "free" but support isn't, and finding people who can support it is expensive for school districts, at least a datacenter level and not a kludged whitebox install level. Maintaining an all-Linux backend usually requires a lot of high level administrative support and the administrators I can guarantee you are looking at COST first THEN functionality and they will ALWAYS see a Microsoft-based solution as inherently cheaper "because we already do that."

    60. Re:Language is hardly relevant by cfulton · · Score: 3, Insightful

      Just an FYI. There is nothing that prevents running Java + MS-SQL. It is a common back end stack and is used for all web applications at my current employer. It works very well. KISS is a good strategy and should be employed in any project. However, part of that strategy is to keep dependencies low across the project hence interfaces. Part of that strategy is to find bugs prior to integration hence unit testing. I have worked with Java for a long time and if you are conversant with it the "Eclipse + Tomcat + project + nant tasks + debug" setup doesn't take any longer than the "VS + solution/project + debug" setup. I think it is more of a matter of taste than anything.

      --
      No sigs in BETA. Beta SUCKS.
    61. Re:Language is hardly relevant by Beetjebrak · · Score: 5, Funny

      That comment was actually better the second time I read it.

      --
      Learn from the mistakes of others. There isn't enough time to make them all yourself.
    62. Re:Language is hardly relevant by Belial6 · · Score: 1

      tests were run on cloud servers

      That sums up the tests right there. Worthless.

    63. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      This is pretty straightforward on the JVM with Scala / Play

    64. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      The most common Norwegian authentication system for online banking uses a java applet and a (physical) RSA token. Nobody has explained _why_ very well, but they seem intent on keeping it running until further notice. It's even been expanded fairly recently to be a valid form of ID for other online activity, like updating your expected taxable income (and requesting new forms to go with that), and other governmental interactions.

    65. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      ok - I go back even further in the Enterprise environment - 1995 that I personally was responsible for pieces.Prior to that, every place I worked, including 3 universities, were all UNIX. In 1995, we were already deploying Linux (Slackware) for DNS and DHCP servers, primarily, but also file share servers. Windows came in around 98 with Exchange, the other option, Lotus Domino/Notes was unbearable from a user perspective. Since then, in Java development, I've seen Windows stacks at a few places, the last 4 were installed by cheap consultants, go figure why they would do that. Prior to that, the last stack I saw was in 2001, right before we dropped it in favor of *nix only.

      Even for development, me personally no windows machines at all for 5 years now, and even windows VMs are virtually non-existent. Other developers at many companies (yep, consultant at the moment) are moving towards macs as their machine of choice for devs. Even hardcore windows fanatics and apple haters have migrated to macbook pros (some of the latter run Linux distros, but that's fine, it's not Windows).

    66. Re:Language is hardly relevant by CastrTroy · · Score: 1

      Nothing to stop you from using Java + MySQL/PostGres or .Net + MySQL/PostGres. I find there's way too many people who just choose Oracle or MS SQL because it's "part of the default stack" when using MySQL would save them a metric truckload of money. MySQL is actually a pretty good database and has come a long way since the days of "February 31" and other such shenanigans.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    67. Re:Language is hardly relevant by Giant+Electronic+Bra · · Score: 1, Informative

      Ummmmm, Unix has been the server platform of choice in practically every secondary education institution in the US (one might even say on Earth) since time immemorial. It would be HIGHLY unusual to see anything with "University" in its name running any significant outward-facing IT infrastructure on Windows. Smaller and newer institutions, yes perhaps, but even most colleges that have been around since the 80's are basically Unix shops (and these days are mostly basically Linux shops, though you will still find a decent amount of AIX/Solaris/etc here and there). Not to say that Windows isn't quite common and even prevalent in some niches in the schools I've been associated with, but none of them would have had any difficulty or hesitation in running a line-of-business web application on a *nix platform, and most wouldn't have even thought about using Windows for that unless there was a specific reason for doing so.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    68. Re:Language is hardly relevant by ahabswhale · · Score: 2

      You do realize that Java is one of the fastest languages on the planet, right? And unlike C#, it's fast on many different operating systems.

      --
      Are agnostics skeptical of unicorns too?
    69. Re:Language is hardly relevant by Anonymous Coward · · Score: 1

      Isn't there a free implementation of that in Emacs?

      Ah, yes, M-x optimize-universe-for-cat-videos.

    70. Re:Language is hardly relevant by smartr · · Score: 1

      I've been doing web based Java development professionally for about 7 years. The comparison is more like comparing a Mini Cooper to Toyota, by picking out a Toyota Camry. The Camry performed better as a mid sized sedan, because it is a mid sized sedan. Never mind the completely different types of Toyota cars or the different Mini options.

    71. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      (IIRC TomCat is built on Apache).

      No. It isn't!

    72. Re:Language is hardly relevant by Giant+Electronic+Bra · · Score: 1

      As others have said, it can go either way. My business is building enterprise class trading systems, which are MOSTLY Java based systems. IME the TCO for Linux servers is lower, so we do preferentially deploy stuff on them. OTOH sometimes Windows will be a platform of choice for some installations simply because they have the infrastructure in place, need to run various Windows components anyway, etc.

      What I am seeing is people moving to the cloud, and that seems to favor Linux. AWS for instance if you have either option there's little incentive to use Windows, the cost is about 2x as much for EC2 per-instance, which can add up. While in theory it might seem important to use RHEL for example, negating any cost advantage, truthfully the Amazon custom AMIs work fine, actually better than the RHEL/CentOS, and will run pretty much anything out of the box. Certainly if you're running OSS based web apps then its almost always the way to go. I suspect Windows will be increasingly not relevant in that sector and it will eventually eat the vast majority of application server business.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    73. Re:Language is hardly relevant by yoshman · · Score: 2
      I would say that async/await turned out to be a lot less useful compared to how it could have been. The .Net team figured out how to write very clever and efficient iterators by letting the compiler construct a state machine under the hood, a great hammer in the .Net toolbox.

      The risk with figure out something really clever is that you want to apply it to more things, and the .Net team applied their compiler trick to the wrong thing. Sure, it will work for GUI programs that might create 100 or even 1000 concurrent with async. But unless I completely has misunderstood how they implement this , async/await in C#5 will not scale to 100.000 concurrent tasks as it will put way to much presure on the GC and the memory bus due to the way they. (lots of memcpy from the stack into the heap when an async task need to block).

      Description of how it is working under the hood can be found here
      http://msdn.microsoft.com/en-us/magazine/hh456402.aspx

      The trick applied here is to put all the automatic variables on the stack just as expected, but a method marked as "async" might "lift" the local variables into a Task instance (i.e. allocate a piece of memory an copy the needed context from the stack into that memory area). This won't scale well in scenarios where you have hundred-of-thousands of concurrent clients to track, and they are doing a lot calls that need to block for some time.

      Erlang and Go got this right, they don't allocate large number of memory areas and copy stuff around, they just ensure that every new process/goroutine (equivalent of Task in Erlang/Go) can start out with a _very_ small stack (like 200-300 bytes) and switching to a new process/gorouting will just involve switching the CPU-registers (including the stackpointer).

      C# got another thing wrong in the process: marking a method returning T as async changes the signature of that function. It now returns Task instead. That is bad because you have to decide upfront which methods you want to run asynchronous and which to run synchronous, unless you are prepared to break your API later. Yet again something Erlang and Go got right, the signature of a function is always the same as you always implement it as if it would run synchronous. The _caller_ of your function determins if he/she want to make a synchronous ("normal" call) or asynchronous call (just wrap it into a process/goroutine).

      They rewritten the async API 3 times in .Net now, they need at least one more try to get it right.

    74. Re:Language is hardly relevant by cfulton · · Score: 1

      I agree completely. The java stack is very flexible and I've worked on plenty of projects that use MySQL and have had good luck.

      --
      No sigs in BETA. Beta SUCKS.
    75. Re:Language is hardly relevant by Dcnjoe60 · · Score: 2

      You've never been in education, have you? It shows.

      "Educators" are the actual teachers. They have near zero say in what systems get selected, and those doing the selecting seldom have any experience in being an educator, and usually the selection committee ("Committee Decisions: Because you can't fire the committee") is judging the software on features and functionality, not on underlying technology.

      If there is someone in a specific educational organization who has specific architectural biases against Windows, I can assure you they have nothing to do with system selection, only implementation.

      And what are the VIABLE alternatives? Professionally I've worked with several educational institutions that have made a run at being all Macintosh, and it has always been a dismal and expensive failure on the back end. They all migrated to Windows servers and kept Macs only for teachers and students, if that.

      Linux may be viable for some functions, but with most of these things it boils down to dollars. Linux may be "free" but support isn't, and finding people who can support it is expensive for school districts, at least a datacenter level and not a kludged whitebox install level. Maintaining an all-Linux backend usually requires a lot of high level administrative support and the administrators I can guarantee you are looking at COST first THEN functionality and they will ALWAYS see a Microsoft-based solution as inherently cheaper "because we already do that."

      Yes I have been in education. Teachers are not the only educators. Most of the administration are educators, too, often with advanced degrees. While I agree that the teachers are not making those decisions, surely the administration is. I was in no way inferring that the teachers are the problem, but, like doctors, most professional educators don't make the best business decisions, probably because those decisions are outside their area of expertise. That's not a condemnation, just an observation.

    76. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Windows + Tomcat is in production all over the place. Your experience is not common.

    77. Re:Language is hardly relevant by shutdown+-p+now · · Score: 3, Funny

      No-no-no. The only way to write databse-oriented web apps is surely PL/SQL!

    78. Re:Language is hardly relevant by Dcnjoe60 · · Score: 1

      Not sure why I was modded a troll. I assume because somebody thought I was bashing teachers. I would just like to point out that teachers are not the only educators in our public education system. Most of the administration of a school district is run by professional educators with advanced degrees. Teachers, in the classroom, rarely get to make real decisions. Sometimes, principals at school do, but often it comes from the district. And it is the district level that jumps at the opportunity for free Windows or Office because we need to educate our children, instead of looking at the computer as tool to assist in the education of children.

      Today, kids don't do reports, they make powerpoint presentations. The two are not the same and different types or research skills are needed. We have all heard the phrase "death by powerpoint" and yet we keep kids focused on making powerpoints instead of the content that goes into the powerpoint. Simply put, we have our kids do all of that, not because it improves learning, but because we have all of the free software (or almost free software) from Microsoft.

      Microsoft has become the great benefactor of our public school system (Apple used to be, at least on the East and West coasts). We have convinced ourselves that everybody has to know how to use Word, Excel and Powerpoint to succeed in life. It is from that framework that I asked whether or not it comes as a surprise that the administration of the school district, which receives free Microsoft products, chose a Microsoft based solution, which was not free and was not standard?

      If asking a question like that makes one a troll, then I guess I am. However, being retired from the education field, but having a spouse still actively engaged in the field, troll or not, I think I know what I am talking about.

    79. Re:Language is hardly relevant by Dcnjoe60 · · Score: 2

      Ummmmm, Unix has been the server platform of choice in practically every secondary education institution in the US (one might even say on Earth) since time immemorial. It would be HIGHLY unusual to see anything with "University" in its name running any significant outward-facing IT infrastructure on Windows. Smaller and newer institutions, yes perhaps, but even most colleges that have been around since the 80's are basically Unix shops (and these days are mostly basically Linux shops, though you will still find a decent amount of AIX/Solaris/etc here and there). Not to say that Windows isn't quite common and even prevalent in some niches in the schools I've been associated with, but none of them would have had any difficulty or hesitation in running a line-of-business web application on a *nix platform, and most wouldn't have even thought about using Windows for that unless there was a specific reason for doing so.

      They were talking about the public school system K-12.

    80. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      M-x badum-tish

    81. Re:Language is hardly relevant by shutdown+-p+now · · Score: 1

      On top of this, there's no way in hell the .NET CLR runs slower than Sun's JVM

      You're wrong, and here's why.

      CLR does JIT compilation of all methods on first call - it doesn't have a bytecode interpreter at all. Because of that, the cost of said JIT compilation has to be low enough, otherwise you'll be sitting there for ages waiting for shit to compile before it can (finally) run blazing fast. This, in turn, limits the kinds of optimizations that JIT can do - some more expensive ones are basically off-limits.

      Java (or rather specifically Sun JVM) is a hybrid VM - it has both bytecode interpreter, and a JIT compiler. It interprets methods by default, and gathers statistics on how often they're called. It only JIT-compiles them when they're called frequently enough. Consequently, it can spend more time optimizing them (and running bytecode in the meantime, if it needs to).

      The other aspect is that some things that JVM has to guess, CLR just trusts the developer about. For example, Java has no value types on language level, and so JVM has to do escape analysis to see where it can possibly treat a class as a value type and avoid heap allocations. C# has structs, so it doesn't need that. But there are still plenty of types in .NET standard library that could benefit from being value types, but they aren't ones. JVM would optimize them; CLR does not. Another example is virtual calls. In Java, all methods are virtual, and JVM has to do runtime analysis to see if it can safely rewrite them as non-virtual at any given point. In C#, you have to explicitly mark methods as virtual, and they're non-virtual by default, with corresponding semantics - and CLR will trust you on that, so if you call a method marked "virtual", it is always dispatched as such.

    82. Re:Language is hardly relevant by Zero__Kelvin · · Score: 1

      Wire wrapped transistors will be much slower than an FPGA for the same application.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    83. Re:Language is hardly relevant by PickyH3D · · Score: 3, Insightful

      In the first test, he explicitly mentions going back on his word to use a Linux machine.

      Because of this discrepancy, I feel compelled to try out the Java version on a Linux server. The server used is a “c1.medium” on Amazon EC2. I install the two different Java classes and see essentially the same speeds. The HttpServer class takes about 14 seconds to process 15 requests. Not very good.
      slashdot (http://s.tt/1yA3K)

      The author is clearly not a Java developer, and the second test really calls the first test into question. In the first test, he is having trouble with socket connections, which proved devastating to Java's numbers. Then, he moved onto using ASP.NET versus JSP in the second test, and JSP did significantly better than his simple socket tests in Java.

      The simple fact that he did not go back to figure out what was wrong with his first test demonstrates quite clearly that both sets of his results are useless. It should be obvious that he is a weak Java developer--even without seeing the code--and I suspect he is not a particularly strong C# developer either on the basis that he did not question the results.

    84. Re:Language is hardly relevant by pkphilip · · Score: 2

      We have the @Asynchronous annotation in Java 6 that pretty much does the same thing.

      http://docs.oracle.com/javaee/6/api/javax/ejb/Asynchronous.html

      It is actually pretty nifty.

    85. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      They didnt even have to code re-code it. It is borrowed from Microsoft ME.

    86. Re:Language is hardly relevant by PickyH3D · · Score: 1

      Java has had threading support since it was released. java.util.concurrent.Future appeared in Java 1.5, which was after C# and .NET appeared on the scene.

      C#'s async keyword provides language level support to performing asynchronous work, as opposed to framework level support. As a Java developer, I do love the Executors (thread pools) provided by Java, but that is not really the same thing. It's just a shame that running C# on anything other than Windows is simply unrealistic, even with Mono.

      As a language, Java is far behind C#, and it's even behind C++ since C++11. In terms of the JVM versus the CLR, they're relatively comparable and both have impressively good JIT engines.

    87. Re:Language is hardly relevant by gangien · · Score: 3, Interesting

      Swing is one of the few things I've seen leave programmers speechless with frustration.

      umm what? as much as a pain as layouts can be to get things to do what you want, swing was still really well done and is incredibly flexible and versatile. I'd hardly call swing something form planet weird. And having worked with solaris/sunos some, it's really well done as well. Honestly, saying sun was from planet weird is just... weird to me :P

    88. Re:Language is hardly relevant by Anonymous Coward · · Score: 1

      With the sanity of JavaFX 2, applets are again a viable option, as is java on the desktop. JavaFX is clean and simple, though it does lack the power for complex UI widgets.

      It is better than Flash, or the deprecated Silverlight, AJAX is problematic for complex apps, especially those that have more responses from the server then requests, and all the necessary HTML 5 components needed to replicate what JavaFX applets can do is not yet finalized and nowhere near implemented in all the major browsers.

      HTML 5 may be the future, but until then, there is nothing better than a JavaFX applet.

      Yeah, Java the language sucks and is needlessly verbose, but JavaFX 2 is reasonable, as long as you ditch the XML bullshit that makes Swing's GridBagLayout seem sane, and just use the method calls(almost all JavaFX calls are nothing more than ArrayList methods) and CSS.

    89. Re:Language is hardly relevant by edlong · · Score: 1

      This post topic, while relevant, the actual contents hardly were. No rigor at all in the testing. No wonder I'm reading slashdot less and less.

    90. Re:Language is hardly relevant by Cramer · · Score: 1

      *cough*VMware vCenter*cough*

      You haven't seen it because you haven't been looking for it. It's there, but few people ever notice what's being installed behind that setup.exe.

    91. Re:Language is hardly relevant by mjwalshe · · Score: 1

      you develop an a different platform and OS to the live system bloody hell you must have worked for some cowboy outfits - you should always develop on the same system as your live environment ideally on identical hardware at BT we even wanted to have the dev and test servers from the same production batch so as top have exactly the same MB revs - we did allow disks from different batches (though our sysadmin would have preferred not to)

    92. Re:Language is hardly relevant by JAlexoi · · Score: 1

      And I've been a professional Java developer for 13 years and have routinely seen Tomcat deployed on Windows(prod, QA and dev).

    93. Re:Language is hardly relevant by benjymouse · · Score: 4, Informative

      We have the @Asynchronous annotation in Java 6 that pretty much does the same thing.

      No it does not do "pretty much the same thing". Not even close.

      To start with, the @Asynchronous annotation is for EJB session beans only.

      C# async is a generalized async capability baked into the language. C# async works with disk IO, network IO, threads or anything else that follows one of several async patterns.

      The big boon with async compared to task based parallelism (on which C# async is based) comes from the capability to write the code in a pseudo-sequential form and (not least) the ability to *compose* async tasks.

      Think about how you handle exceptions in a flow of, say, 3 async calls. Without language support for async you have to register callbacks or futures which will execute once the previous task completes. How would you go about defining an exception handler that covers all 3 calls? You can't; not without some serious wrangling with closures and state machines.

      Now think about how you would create a loop over async task #2. You cannot span a single while loop across the task call because the task will call back to a continuation function which syntactically needs to be *outside* the loop.

      Now combine the loop with the exception handler. In Java this gets so unwieldy that it is next to impossible. In C# it is trivially easy and reads like sequential code:


      try{
              var res1 = await FirstAsync();
              while(someCondition) {
                    await SecondAsync(res1);
              }
              var res3 = await ThirdAsync(res1)
      } catch (SomeException ex) { ...
      }

      GP is correct, the async continuations is C# are pretty unique at this point.

      --
      Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
    94. Re:Language is hardly relevant by w_dragon · · Score: 1

      Universities are post-secondary. Secondary refers to high school.

    95. Re:Language is hardly relevant by RocketRabbit · · Score: 2

      Are you shitting me? Microsoft, through a campaign of relentless Pharisaic marketing and subversion, has managed to get MANY universities to convert to Windows on the backend. Sure, it sucks, but at this point your average Uni IT department is filled to the brim with CTO types and diversity hires, not actual geeks. These shills in training know which side of the bread their butter is on.

      Because many of these departments simply waste all their money, the new hipness is to offer some half-assed cloud solution so the school can function while IT subjects selected lab monkeys (departments) to ever stranger IT setups.

      The university is dead as far as It goes.

    96. Re:Language is hardly relevant by jasmusic · · Score: 0

      NGEN makes the topic of JIT compilation time irrelevant, and also allows the possibility of memory-mapping for multiple processes. JIT is a one-time thing per process anyway. There's a lot of inefficiency in the .NET Framework, but I get around it by writing my own stuff.

    97. Re:Language is hardly relevant by Giant+Electronic+Bra · · Score: 1

      I guess the places I've dealt with are fortunate not to be in that boat, lol.

      --
      "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
    98. Re:Language is hardly relevant by Anonymous Coward · · Score: 1

      FWIW, Java and Unix do async waaaayyyy differently from Windows and C#. The Unix way is readiness polling, the Windows way is event completion. The Windows way is theoretically faster (under certain conditions), while the Unix way is dramatically easier to compose.

      A lot of people do readiness polling with callbacks, but this is a mistake. It's something GUI developers have been doing, but it's lazy and leads to crap software. Of course C# would try to paper over the ugliness, but on Unix you can avoid the ugliness altogether if you desire. The proper way is to do it the way the kernel works, i.e. you reenter the same routine, asking it if it can complete the operation. This is something you can easily do with Java, but not so much with C#.

    99. Re:Language is hardly relevant by shutdown+-p+now · · Score: 1

      lots of memcpy from the stack into the heap when an async task need to block

      There's no memcpy from the stack into the heap. All locals that are used in the continuation (or any other closure, really - this isn't async/await-specific) are allocated on the heap from the get go.

    100. Re:Language is hardly relevant by JAlexoi · · Score: 1

      So, for a test like this involving web development, I'd say language is actually a pretty relevant topic

      Can you imagine how much web developers would be paid if they actually did this kind of stuff? This particular feature is highly irrelevant to web development, because web developers(server-side web developers, obviously) don't write the servers they are using. They only deliver the final functionality to the end user. The code is largely easily written in sequential and independent blocks with the database being the sync point.

      C# 5.0 (the latest version) has language-integrated async functionality that makes writing vertically scalable software a snap. It looks and behaves almost exactly like sync code, but actually runs async.

      Except that it does not solve the shared data access issues, the thing that makes it hard to write parallel code. Also Java 8 is 8 months away and has similar constructs.

      But hey, if I want to have a very scalable solution I'll just use Scala.

    101. Re:Language is hardly relevant by Skuld-Chan · · Score: 1

      Hershey Singularity (document archiving system) Windows+Tomcat was the only supported environment. It may not be great software, but I ran/supported it for a number of years in an actual production environment.

    102. Re:Language is hardly relevant by Vellmont · · Score: 1


        (IIRC TomCat is built on Apache).

      Tomcat is an Aparche Software Foundation project, but it really shares about zero code with Apache httpd. Tomcat is a pure Java implementation of a Java Application Server, and thus has no C code embedded in it. There's some kind of native connector for windows, but I wouldn't bet that has anything to do with apache httpd.

      --
      AccountKiller
    103. Re:Language is hardly relevant by JAlexoi · · Score: 1

      FYI: CLR VM does do hot spot optimizations, they are not as good as Java VM's but still...

    104. Re:Language is hardly relevant by shutdown+-p+now · · Score: 1

      NGEN makes the topic of JIT compilation time irrelevant

      That is irrelevant to my argument. CLR itself cannot rely on every assembly being NGEN'd - it has to assume that JIT-compiling something will be necessary. Because of that, the compiler tries to be fast, sacrificing optimization quality for the sake of performance.

    105. Re:Language is hardly relevant by shutdown+-p+now · · Score: 1

      What do you mean by "hot spot optimizations"?

      CLR does not have a bytecode interpreter. It really is as simple as that. If it needs to run a method - i.e. the first time a method is called - it has to compile it.

      Also, while I don't know how precisely things work as of .NET 4.5, in 3.5 the CLR would never recompile the methods after they're first JIT-compiled - so it wouldn't do dynamic profile-guided optimizations, the way HotSpot does.

    106. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      I think we can all agree that the education sector is too full of teachers that stumble across an old technology and then hail it as the next great thing. They are usually most interested in 'good enough' technology to demonstrate points, but are never interested in refined advanced technology, especially if it requires them learning something that takes more effort than what they can teach to a student.

    107. Re:Language is hardly relevant by DuckDodgers · · Score: 1

      We use Tomcat on Windows, in production. I can't say how it scales versus Tomcat on Linux because all of our performance problems are related to the database anyway. Tomcat just chugs along.

    108. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      I have never seen Windows+Tomcat either.

      Of course, the reason is that I choose to not work with idiots. In my consulting or full-time job.

      Yeah, idiots can choose to use Linux, but no one with a clue would allow Windows in the server room, ever.

      If you use Windows in the server room, or much of anything on the desktop for that matter, you are an idiot that can be safely ignored and I choose to.

    109. Re:Language is hardly relevant by dkf · · Score: 2

      Swing is one of the few things I've seen leave programmers speechless with frustration.

      I see you've never used Motif. Direct use of Xlib is nicer and less frustrating than Motif. Heck, personally whistling the X protocol down a telephone line connected to a 300 baud modem would probably be better than Motif. Did I mention that I really disliked Motif, and think that no matter how much GTK and Qt are idiotic, they still do a better job?

      Swing's main problem was that every single one of the layout managers was crap (and writing a good one is genuinely hard, though that's actually not a Java problem per se but rather due to the fact that the algorithms required to do a good job are genuinely tricky).

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    110. Re:Language is hardly relevant by DuckDodgers · · Score: 1

      Damn, I understood some of that. And here I thought I wasted my time trying to read a Java performance book from Oracle.

      So where did you learn it? I'm just curious.

      Nice username, by the way.

    111. Re:Language is hardly relevant by bbn · · Score: 3, Informative

      But I also noticed, he spent a lot of time and effort 'breaking the rules' to make Java better, and working to make it more efficient, but he didn't do that for C#.

      It is clear that he is a Java novice and he admits so much. He failed to do it right, both his version of HttpServer and his ServerSocket are WRONG.

      HttpServer needs to be configured with a thread pool. If you fail to do that, it will run single threaded. And it is clear that is exactly what happened.

      ServerSocket is the old network API from the first version of Java. It was build with the idea of "one thread for each connection". Therefore all IO calls are blocking because you are supposed to run them in threads. ServerSocket has an accept call that will block until the next connection. You are then supposed to start a new thread (or use a thread pool) and let the new thread handle the new connection. He clearly failed to do that, instead he made a single threaded implementation.

      Modern Java frameworks use NIO - the new network IO for Java. This has non-blocking IO calls and allows much faster processing. It is also much harder to use on a low level, which is why most developers never do that.

      All of this explains why he is suddenly having much more luck when he switches to Tomcat. This takes him away from the low level stuff that he is doing wrong. Tomcat will do the IO correctly, it will use threads. It will AFAIK not use NIO however. But just doing it right using threads will give him a speed up of order of magnitudes.

      Conclusion: He was not spending a lot of time and effort on making Java better. He was trying to learn Java. Too bad that he failed. Great that he moved on to easier higher level Java.

    112. Re:Language is hardly relevant by Anonymous Coward · · Score: 1

      Or you publish them in the hope that someone can educate you on the "why".

      There were so many variables here as to be nearly useless, though. Beyond that, first comment nailed it. Use whatever you like... just use it well. Factors well outside the vm and stock libs will probably present bigger problems, sooner.

    113. Re:Language is hardly relevant by DuckDodgers · · Score: 1

      I haven't played much with concurrency and multi-threading in Java, but I think Java Futures (sounds like an investment vehicle, but I think it's the feature you want) fit the bill: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Future.html

      In terms of other convenient methods for doing lots of concurrent work, there's the Akka project under the Apache 2 license: http://akka.io/ It is supposed to be a pretty decent implementation of the Actor concurrency model for Java and Scala ( https://en.wikipedia.org/wiki/Actor_model )

    114. Re:Language is hardly relevant by ILongForDarkness · · Score: 2

      Perhaps this just shows that you can't just think about your language you might actually have to spend a few minutes thinking about the platform you'll run on. Don't throw it on Tomcat just because that is the first java server you find or IIS because it comes in the box.

      But ultimately at any sort of scale you are going to have redundant web servers, data servers, caching nodes etc. This is like testing how quickly the gas pedal goes down on the latest Porche when the engine, tires, transmission etc all have a part in determining how fast the car can handle the same road (load pattern in the case of a web presence).

    115. Re:Language is hardly relevant by DuckDodgers · · Score: 1

      What would you use instead of the JVM? That's curiosity, not an intent to challenge.

    116. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      What you are describing sounds a lot like Java NIO which was introduced in J2SE 1.4 over eleven years ago. It offers non-blocking IO through an extremely simplistic API that somehow manages to frustrate you to the point of kicking puppies.

    117. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Remember that most Enterprise environments until relatively recently used Windows for everything,

      I've spent the good part of the last decade and a bit working in the financial sector primarily in banking, which I consider to be "Enterprise" and most environments Ive worked in are prominently not Windows and until recently where UNIX based. It was the meteoric rise of Java and middleware that brought about the large scale introduction of Linux.

      In the 90's I worked in large scale manufacturing and distribution, and again UNIX was king.

      If anything, it is only now that these institutions even start to consider Windows as a viable alternative, but Java not C# was and still is the middleware glue that a majority have used and still use.

    118. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      You mean you don't use ASICs? What kind of caveman shop are you running with wire-wrap?

    119. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      "Remember that most Enterprise environments until relatively recently used Windows for everything,"

      I think you're a talking about the car dealership up the street using windows or the asian manicure lady
      using a windows small business software cash register. I've seen very little use of windows in an enterprise
      environment during the past 19 years of my career EXCEPT as a "new-fangled frontend" to decades old
      mainframe apps or anything you need a web browser for. Yes the software that is figuring out your insurance
      premiums is 35 years old and written in S/390 assembler and literally generations of programmers maintain it.

    120. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Hahaha yeah you're right, of all the retarded things people do in IT, there is an outfit out there right now being that stupid.

    121. Re:Language is hardly relevant by shutdown+-p+now · · Score: 1

      Most of it is actually documented, either in the documentation on the corresponding VM, or else one of the people who worked on it wrote a blog post on the subject. Historically, I happened to work much more with .NET, especially so since working at MS, so I've read more about it. Here is a pretty good article that anyone who wants to know how CLR works should probably read first. I'm sure other people, who are more familiar with Java, can provide links to similar materials on JVM.

      Then, of course, there's the source code. JVM is open source these days. CLR isn't, but the "shared source" SSCLI implementation that was made available back in the day, is basically trimmed down CLR 2.0 - and a great many things there remain the same, or close enough to make no practical difference, to this day.

    122. Re:Language is hardly relevant by stenvar · · Score: 1

      When talking about large-scale websites the language is hardly relevent. There are as many high-traffic sites running on C#, Java, PHP or whatever.

      When talking about small scale websites, language isn't relevant, because such sites usually operate far below server capacity, and small scale web sites make up the bulk of the web. But for large scale web sites, and in particular web sites that have to perform compute intensive operations for users (image processing, speech recognition, etc.), performance, and hence language, matters a great deal: a factor of two speedup cuts your hardware costs in half.

      In fact, little performance critical code is written in Java, Ruby, or languages like that because their performance is lousy. As you note yourself, people convert performance critical parts to C or C++. But such mixed language systems are hard to maintain, and C/C++ programming itself is costly and risky. A language that combines runtime safety with near-C performance is an excellent compromise. There are several languages that offer that, including C# and D, but industry inertia keeps them from being adopted.

    123. Re:Language is hardly relevant by stenvar · · Score: 4, Insightful

      Maintaining an all-Linux backend usually requires a lot of high level administrative support and the administrators I can guarantee you are looking at COST first THEN functionality and they will ALWAYS see a Microsoft-based solution as inherently cheaper "because we already do that."

      That's utter nonsense. In reality, Linux is no harder (and probably easier) to maintain than Windows: it's less complicated, its interfaces and tools change less over time, and there are numerous ready-made, turnkey server solutions that you basically just boot up and use. More CS grads will know and will have administered Linux systems than Windows systems because administration for Linux systems is much more similar between single user and multi-user.

      School administrators may choose Windows because they believe it's easier to maintain, but they are mistaken.

    124. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      And those features didn't come from C# and Java. They came from other languages.

    125. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Of course it's weird. It is well designed, logical and internally consistent. So it stands out from the alternatives.

    126. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      It's a lot more relevant than you want to believe. C# and Java both have garbage collectors which work in very particular ways. If a programmer doesn't write their code in a way that plays well with the garbage collector then even a simple operation can run like crap. There is also the matter of language features, for example C#'s lambda methods can be used to dynamically build methods that are going to be used often, this eliminates a lot of branches which can be potentially slow. However such language features are a double edge sword, used in the wrong places they can and will decrease performance. A good programmer will be able to identify the situations where language features can increase performance and use them accordingly.

      It's just unfair to compare two languages without comparing the various ways a process can be performed in those languages.

    127. Re:Language is hardly relevant by rev0lt · · Score: 1

      Scaling out static content or cached dynamic content is a solved problem. Churning out meaningful data from huge datasets by following complex business logic in milisseconds is not - even with complex cache mechanisms. Even smaller-than-memory datasets can be a problem, if the business logic is complex enough. Think about it - a Xeon 5680 has a memory bandwidth of 32GB/s, so if you have a 100GB dataset in memory that requires complex processing, it will take some time - more than a couple of seconds. Since most people doesn't program in assembly, you also get the extra cost of whatever language was chosen to build the business logic. And the operating environment will also eat resources, resulting in delaying of execution. How do you solve that? With smarter algorithms. At this point, stuff stops being trivial - at least as trivial as you put it. And believe it or not, most complex sites are actually not static, but rather static-ish. You receive a (mostly) cached copy of the data you need. Even the resources like css and js (and sometimes js itself also implements business logic, but that's another discussion).

    128. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      CLR + ISS is slower than JVM + Tomcat.

      Well of course it is, the request has to travel INTO ORBIT first...

    129. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      You've missed swb's point. He's not saying that it's actually easier or necessarily cheaper for an institution like a school to go all Windows, the Selection Committee thinks it is. And when your previous hiring practices depended on picking the person with the longest list of Microsoft certifications, you can see how you'd have to rehire or retrain your workforce. Which means money.

    130. Re:Language is hardly relevant by PhrostyMcByte · · Score: 1

      with the database being the sync point.

      Which is a big problem. Would you like to block a thread on a database call, or have it do something useful in the meantime?

      Except that it does not solve the shared data access issues, the thing that makes it hard to write parallel code.

      You're right, C#'s async support doesn't try to solve sharing issues. But should it? After all, async does not mean concurrency, or even threading.

    131. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      He's not saying that it's actually easier or necessarily cheaper for an institution like a school to go all Windows

      Yes, he is saying that: "Linux may be "free" but support isn't, and finding people who can support it is expensive for school districts, at least a datacenter level and not a kludged whitebox install level." His run-on sentence makes it appear like it is just a perception, but he actually stated that the cost of Linux is higher, not merely that it appears higher to decision makers.

    132. Re:Language is hardly relevant by phantomfive · · Score: 2

      Swing is one of the few things I've seen leave programmers speechless with frustration.

      Wow, you must not have done anything with MFC.

      --
      "First they came for the slanderers and i said nothing."
    133. Re:Language is hardly relevant by DuckDodgers · · Score: 1

      Thanks. I'll read the link you provided. I appreciate the help.

    134. Re:Language is hardly relevant by gadzook33 · · Score: 1

      Thank you. I love posts like this. People who seem to barely understand this stuff making ridiculous claims about these comparisons. The only thing better is the whole slashdot community getting fired up saying, see! I knew it! Finally, my world view that Microsoft's evilness has bled over into the performance of their CLR is confirmed.

    135. Re:Language is hardly relevant by recharged95 · · Score: 1

      The Tomcat/Linux combo is not because of performance or technology.

      It's just when you use tomcat and Java,9 out of 10 IT pros might as well go free and clear with free (not as in beer) Linux instead of paying for Windows, MSDN support, subscripts and stuff. It's not about the tech, it's about the cash!

    136. Re:Language is hardly relevant by claytongulick · · Score: 1

      I'm doing some fun stuff with chains js, an experimental library I've been working on to make async javascript look/feel more synchronous.

      --
      Drinking habits can be dangerous. You can choke on the cloth and the nuns will wonder where their clothes are.
    137. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      We use Java + Microsoft SQL Server. Only the CTO knows why as he chose it... but it's heavily used by a massive project as works well as long as all your queries are ugly like "WITH NO ROWLOCK".

    138. Re:Language is hardly relevant by zbobet2012 · · Score: 1

      No, you are 100% incorrect. Java has await, and has since 1.5 in 2004. The linux kernel has had an asynch waiting api since 2004, and due to interrupts basically forever informally. Clojure also has await and runs on the JVM. Got to love a C# developer who thinks a feature 9 years behind the times makes his language cutting edge.

    139. Re:Language is hardly relevant by aztracker1 · · Score: 1

      I do understand that... My real point was that a .Net stack isn't always more expensive than other options... I think that a lot of people have one jerk reactions against anything MS made. I really love C# as a language... Especially the recent additions. More of my Dev is leading elsewhere though.

      --
      Michael J. Ryan - tracker1.info
    140. Re:Language is hardly relevant by aztracker1 · · Score: 1

      I just wanted to point that just because it is made from Microsoft and commercial software doesn't mean it costs more.

      --
      Michael J. Ryan - tracker1.info
    141. Re:Language is hardly relevant by bfandreas · · Score: 1

      I agree on AJAX. If you want to use AJAX and do everything from scratch and you don't use a framework that already supports it then you are facing much more effort than doing the whole thing as a proper fat client/server solution. If you need a lot of AJAX then you should take a long hard look if your thing really should be a browser based application. It definitely is an indicator for such considerations.

      Now we have a few sane JavaScript libraries and most MVC web frameworks support AJAX. It's not as big a hassle as it used to be. It's moving out of the "dirty hack" phase into "we have a couple of standards and tools".

      The problem I have with relying on any browser plugins are these:
      -another piece of framework needed which increases architectural complexety(another thing I need to deal with and another thing to break)
      -availability on the client machines
      -reduces the ability to run scripted tests against the whole system(as opposed to unit tests)

      These past few years I have been reducing the number of dependencies on 3rd party libraries and frameworks. Architectural complexity went down. Testability went up. Code quality went up. Productivity went up. Overtime is very close to zero.

      I can't comment on JavaFX 2 since it's been a while since I last had the opportunity to take a look at it. ATM I'm rather looking into(read: got my company to buy me the latest shiniest toys) App development for tablets since our customers are asking for it. That's gonna be a whole new beast(unrelyabe network connection; deployment difficulties...). Also there is some HTML5 looming in the near future. But our clients just migrated away from IE6 to IE8 so...not that urgent.

      --
      20 minutes into the future
    142. Re:Language is hardly relevant by Xest · · Score: 1

      "The reason this is interesting, is it's a very simple test, and hows the maximum performance. Requests can never be faster than returning a simple string."

      That'd be great, if it were true.

      But there's still so so many variables involved here, what headers was each configured to return? is the CLR's initial response slower than Java's but subsequent responses faster? If you do multiple tests how is caching configured, how does it play into it? He chose ASP.NET MVC4 on the .NET side but a simple servlet on the Java side, despite what he says these things aren't equal. More equal would be to use say, a Spring MVC controller or similar as ASP.NET MVC has to do far more in terms of being passed through the router. Further, I notice he's using dynamic content in his view, what view engine? that matters - Razor is faster than the old view engine.

      This is precisely why this test isn't interesting, because of what has been said above - in the "real world" there are just far too many variables to do a realistic comparison between the two technology stacks. Even returning a simple string isn't simple and so many layers of framework and platform technology are involved.

      I was doing some performance tests the other day, in C#, specifically testing the impact of various configurations of encryption and compression algorithms on data being sent across a network. You could get some statistically meaningful results for larger data transfers of a few megabytes, but when you got down to data of only a few bytes it became hard to get any meaningful results, the garbage collector kicking in inconveniently could throw out the total processing times involved by a literal couple of orders of magnitude such that you'd get an average of maybe only 0.0052 on one set of 1,000 runs, then 0.73 on another set.

      I don't think in the real world it really matters. Both platforms run high performance sites, Java due to it's longer history probably has more at a guess, but as someone else said above it's all meaningless at the high end and again as someone else pointed out that yeah, sure, Facebook runs on PHP, but Facebook PHP was first off just PHP translated into C++ so it was really actually just running on C++ with PHP used to generate the C++, and now they've written or are writing a VM for it so it looks just like Java/C# anyway. The same is true with Java and C# though, at the high end, on real high performance websites, they look so different from your run of the mill simple single server IIS/Tomcat deployment in terms of the amount of detailed configuration changes that have been made, and extra tools used, that you really can't determine anything about high performance worth of these platforms where all tweaks and changes necessary to make them perform to the best extent possible for the particular use case at hand from a simple low performance default configuration test using arbitrary frameworks with clear differences in best case use cases.

    143. Re:Language is hardly relevant by Xest · · Score: 1

      "Now, if we compare the raw tests (C# vs Java) C# is faster, but when we move to the web servers, suddenly Java is better. That tells me... IIS is significantly (orders of magnitude) worse than Tomcat/Apache."

      It tells you that, because you, like him, didn't understand the fundamental issue with his tests.

      The issue at hand being that he used ASP.NET MVC (a full web application framework) for the C# tests which involves many extra steps behind the scenes, but a simple servlet for the Java tests which is about as barebones a method of returning web data as you can get on the Java platform.

      In reality, eliminating the ASP.NET MVC framework overhead would tell us there's really fuck all difference between them and that IIS isn't actually any worse than Tomcat for this sort of simple task.

      You harp on about "everyone knows IIS is slow", "it was a decade ago" or whatever. What, you think software never ever improves?

      It sounds like you heard IIS was bad a decade ago, and assume nothing whatsoever has changed and have an attitude that if something was bad a decade ago it's never ever worth reevaluating it. That's just stupid.

      Things change, stuff you knew to be true a decade ago, doesn't necessarily remain true now, especially in the fast moving IT world. Just like Windows Server, IIS has come a massively long way since then.

    144. Re:Language is hardly relevant by XDirtypunkX · · Score: 1

      No, the features are actually completely different. The C# await doesn't block, it creates a continuation that will be called as a callback when the asynchronous task is complete (and the asynchronous task maybe a processing task, or it maybe I/O, or it maybe an event happening later on the same thread). This means that the current thread can continue processing (not block).

    145. Re:Language is hardly relevant by Xest · · Score: 1

      For what it's worth I worked on a .NET + MySQL project only about 2 years ago, and there are many good reasons not to use MySQL - the MySQL .NET connector was always shit and massively incomplete compared to Oracle and MSSQL connectors meaning you had to skip many of the features of the .NET framework - the entity framework was pretty much unusable because of it for example.

      Also, we had a number of occasions where the MySQL data files just literally corrupted themselves, and needed to be repaired. This defies one of the key objectives of having a database system in the first place - reliability.

      I struggle to believe in the last 2 years MySQL has magically fixed all it's ills. The reason people go for Oracle or MS SQL is not because it's part of the default stack, but because it's a known quantity and because for all their faults - they at least get the fundamentals right and don't suffer issues like the whole database completely falling over once in a while requiring a repair to the database files themselves with the response from the team behind the software being "Well you should just restore from your backups if the repair doesn't work" - a database shouldn't spontaneously just corrupt itself like that in the first place. Postgres is much better, but MySQL is not fit for purpose in real business applications, it's best left to pet projects and projects where it doesn't matter if it goes down now and again and causes a bit of data loss.

      Using MS SQL with .NET buys you a massive amount in terms of productivity gains and assurance that you're getting a solid product. MySQL may be cheap, but you'll waste many hundreds of man hours from slower development due to poor integration, database corruption, bugs, and data loss on even a moderate project at which point the initial cost saving starts looking a lot less worthwhile or justifiable. Over the life of the product if it's going to be around say 3 years or more, then it'll end up resulting in a net loss.

      If you want free go Postgres but absolutely not MySQL - it's best left as a beginners tool for learning a bit about SQL because it's easy to use and play with and nothing more.

    146. Re:Language is hardly relevant by ByOhTek · · Score: 1

      So, he did the first test wrong.

      Rather than doing it right, within the scope of his rules, he switch to 'cheating' like moving over to Linux, even though he said his tests would be Windows.

      There are a few tricks and techniques he could use to speed up .NET sockets - I wonder if he actually used them? i.e. it has the ability to create a socket with a callback, so it automatically spawns incoming requests on a new thread. Did he do that, or did he use a similarly naive approach as he did on Java?

      (I didn't notice links to the source code when I read it, so it's possible I missed useful info)

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    147. Re:Language is hardly relevant by ByOhTek · · Score: 1

      You harp on about "everyone knows IIS is slow", "it was a decade ago" or whatever. What, you think software never ever improves?

      You are good at bad assumptions aren't you? Did it require training.

      Several alternative theories:
      (1) IIS has improved, but not enough to catch up with a stagnant Tomcat.
      (2) IIS has improved, but so has Tomcat.

      Should I make a bad assumption to, and say "Why do you think only IIS has improved?"

      Werecently (~a year ago) switched from IIS to Apache where, and got a better performance (still on Windows). With the hardware upgrades we did end up moving to Linux.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
    148. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      RE: "In reality, Linux is no harder (and probably easier) to maintain than Windows"

      That's your incorrect assumption right there... sure Linux may be harder or easier than Windows, but that's irrelevant. Business thinks about RISK and COST.

      Windows is typically perceived as cheaper as the cost of maintenance is generally lower; the long term cost of a server is power and maintenance. There are far more engineers supporting Windows than Linux, and consequently the theory of supply & demand would suggest lower cost Windows support.

      Risk is a little more complex to specify for, but more engineers for a single common platform would suggest the lower risk option. Sure there are numerous turnkey Linux solutions, but therein lies the problem; lots of solutions = less real-world operational testing for any one solution. Microsoft has one product and has to work to maintain it's credibility; when was the last time you heard of Linux issues on the news.

    149. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Linux may be "free" but support isn't,

      VS the "free" support you get from Windows-centric IT techs.

      Talented techs will cost you money - be it "linux" ones or "windows" ones.

      Do show the cost of "talented linux techs" VS "talented Windows techs" and add in the cost of licence complance along with software costs. And no cheating by claiming Red Hat Professional is a "valid" "Linux" cost.

    150. Re:Language is hardly relevant by jrumney · · Score: 1

      The official Tomcat installer for Windows (as in, the one that you'd download from tomcat.apache.org [apache.org] installs the Tomcat Native Connector, which improves performance considerably.

      Only if you're going through another server, and comparing it to the older connectors for that purpose (which went through an additional network socket). If you're going for speed, you'd be better off serving the HTTP direct from Tomcat and cutting Apache or IIS out of the loop entirely. It used to be worth deploying Tomcat behind another web server so static content could be served without touching Tomcat, which was very slow at delivering files from the filesystem compared with other servers. But that hasn't been true since Tomcat 4.1 or so.

    151. Re:Language is hardly relevant by Xest · · Score: 1

      You seem to think that performance improvements can be made linearly but that's faults, you start to get diminishing returns on the time spent relative to performance gains realised. That's why IIS has been able to catch up with Apache, and why Apache hasn't been able to maintain it's lead over IIS over the last decade - because it got to a point where Apache needed to start pouring exponentially more resources in, and hence increase exponentially the cost of development to maintain that lead. Even in open source that's not sustainable, especially not across 10 years.

      The same is even true of Windows Server, 15 years ago it was a joke compared to Linux, but from Windows Server 2003 things started to improve, and as of Windows Server 2008 it's pretty trivial to secure a Windows server as well as a Linux server, and it performs comparatively well as well despite 10 - 15 years before hand it being the butt of all security jokes. Things change. Times change.

      "Werecently (~a year ago) switched from IIS to Apache where, and got a better performance (still on Windows). With the hardware upgrades we did end up moving to Linux."

      You simply can't make this comparison in a valid way though, Apache out the box with no modules enabled will always perform better than a default IIS setup, but that's not a like for like comparison, because there are even lighter weight servers again available if all you want to do is serve static HTML with no security - IIS doesn't even try and pretend to compete in that arena. If however you make Apache as useful as IIS, so set up say Apache with Tomcat so that you can serve a Spring MVC application which is a fair comparison against IIS serving an ASP.NET MVC application then in practice you realise absolutely no worthwhile difference to matter, and that remains true whether Windows or Linux.

      This is what the story is supposed to be about - real world use cases, not theoretical massively cut down FOSS options vs. default IIS with hefty frameworks on top (which is what the author compared) and which is what you seem to be alluding to given that what you say isn't true of a comparable set of setups and when frankly, many of the statements in your previous post allude to a past, which simply just is not true anymore.

      For what it's worth my current project is an Apache Tomcat targetted Java + Spring project, so it's not as if I have a particular interest in the Microsoft stack, however I do have a lot of experience with it to know that what you say does not ring true and that the way you say it makes it sound like it's something you knew/heard 10 years ago, but haven't bothered to properly check back on in recent years to find is simply not true anymore.

      I really like Tomcat and Java, which is hence, why, now, as a technical architect, I chose it as the platform for our current project, but I chose it for portability to make it easier for our clients with varying platforms to deal with, not because of any inherent performance benefit- and this system really does have to be performant given the high volumes it will handle and perhaps somewhat ironically, it will be interfacing with IIS hosted .NET services with those same volumes of data that are already out there doing that work.

    152. Re:Language is hardly relevant by jrumney · · Score: 1

      IIRC TomCat is built on Apache

      Tomcat was originally built by Sun as the reference implementation of a servlet container. They handed it over to the Apache foundation to maintain when they decided it competed too well with whatever J2EE server they were trying to sell at the time. But its code base is still completely separate from Apache httpd.

    153. Re:Language is hardly relevant by Let's+All+Be+Chinese · · Score: 1

      Well, I can run non-java stuff on JVM natively also. There's app-level providers and such these days (higher level abstraction), or I might consider an OS-VM as the container and truck those around (lower level abstraction). It's more an issue of if I have to have JVM somewhere (as in, I have to abstract at that level) then I'd still not simply settle on java because I have to have JVM.

      There may be reasons, like corporate policies for example, why I'd have to have some VM thingy, and the upside of JVM is that there do exist multiple viable solutions from different sources. But since I'm not in that situation, the question of whether to use some VM, and then which one, comes last, not first.

    154. Re:Language is hardly relevant by DuckDodgers · · Score: 1

      I'm a guy who graduated school and went to work at a shop that used a very narrow subset of C and C++, which works fine until you interview elsewhere and don't know a damn thing about STL or Boost or a host of other language features. So seven years ago I moved into the Java world. I thought it was a pretty damn cool language and first, and I learned how to get a lot done with it.

      I've gradually come to the view that the language is so syntactically heavy that it gets in its own way a lot. I'm still working in it, because they pay me nicely and treat me well. But I'm also thinking that some other JVM options might be better. I think for complex projects the Java static type system very nearly is more hindrance than help, and the solution might be languages like Python/Jython or Clojure with dynamic types so the type system doesn't get in the way, or languages like Scala which has a heavyweight type system that is a bit of a pain to learn but far more flexible than the one in Java.

    155. Re:Language is hardly relevant by Let's+All+Be+Chinese · · Score: 1

      The message was exactly to reduce the problem as much as possible to this static content serving thing as much as possible to make use of the solved-problem properties of that solution. For the smartest algorithm of all is the one that does the least amount of work: Nothing. So if you're bent on speed, it pays to move heaven and earth in development to make that algorithm applicable in practice.

      "Most" websites these days burn cycles on dynamic content just because, and so they're leaving a lot of cycle savings on the table for "developer convenience" that may turn out to not be convenience at all--the logic needs maintenance too.

      Similarly, plenty of sites are too free with client-side cycles again for "convenience", glossing over opportunities to offer a blazingly fast site with about the same effort, possibly less, that they're now sinking in creating things dynamically that really ought to've been created statically and served up as such. It's a related problem of needless wastage holding you down.

      For someone sitting at a nice and fast client developing these things, it's easy to overlook the cost. But if you have millions of users with not quite the latest in hardware (a statistical inevitability, really) then you really should've made sure to not spend their cycles needlessly.

      Up until this there's quite a lot to be gained in trivial fashion. Beyond that, the original question was an either/or dilemma that IMO isn't really germane to large scale either, because other approaches can crunch through more data faster. And with the small fry solved, you can spend your time optimising just the heavy bits to run as fast as you can get it in the available hardware.

      And so we arrive at the conclusion: You want this either/or pick?

      That pick really has nothing to do with speed. It has to do with what "enterprise ecosystem" you feel warmest and fuzziest at home with. So take your pick, and any time you run into problems you throw money at hardware and you assume the problems go away. Otherwise, well, neither is really suitable for the static content solved problem nor for scaling out to computationally hard problems.

      If you come to the party with the preconception of having exactly these two options to choose from, then it really is that trivial. In that sense, you misread the point: I'm really saying that the given options suck and that there are better choices available outside the imposed solution space.

    156. Re:Language is hardly relevant by zbobet2012 · · Score: 1

      So in other words it is a closure, something that has been around since Scheme in 1975. Again the feature is not unique in modern times C# either, Clojure (get it right?) has them, Objective-C has them (dispatch_async), etc. etc.

    157. Re:Language is hardly relevant by red_dragon · · Score: 1

      If you're going for speed, you'd be better off serving the HTTP direct from Tomcat and cutting Apache or IIS out of the loop entirely.

      Tc-native supports HTTP, HTTPS, and AJP, so you still get native code to handle your sockets whether you want to put a separate HTTP in front of Tomcat or not. The Java-based connectors might be fast, but the native connectors are even faster.

      --
      In Soviet Russia, Jesus asks: "What Would You Do?"
    158. Re:Language is hardly relevant by Murdoch5 · · Score: 1

      That would make sense, the education sector rarely does what is smart. Windows + Anything will never match the same setup as Linux + Anything. Windows does not deliver the same amount of performance when compared to a properly set up Linux system.

    159. Re:Language is hardly relevant by Murdoch5 · · Score: 1

      Windows is typically perceived as cheaper as the cost of maintenance is generally lower; the long term cost of a server is power and maintenance. There are far more engineers supporting Windows than Linux, and consequently the theory of supply & demand would suggest lower cost Windows support.

      Your assumption is wrong, Windows does not come off as cheaper in anyway when compared to the cost of supporting a well designed Linux system. A good Linux admin will outperform a Windows admin every day of the week and at the same time complete most jobs with time left over. If you compare costs you have to pay thousands for a set of Windows Server license packs, with Linux you download it, hire a qualified IT staff and your off and running. If I sat down with an IT staff and they tired to tell me that Linux would be a harder road to travel and cost us more money with Risk / Cost, well I wouldn't have that same staff for much longer. I've done support for many large and small company's and with out exception Linux has always been the cheaper option.

    160. Re:Language is hardly relevant by Murdoch5 · · Score: 1

      If I walked into a server room and saw Windows installed on any system that didn't 100% require it, I would tell the admin to change them over to Linux or get the hell out of the company.

    161. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      IIS sucks, no getting around that.

    162. Re:Language is hardly relevant by highphilosopher · · Score: 1

      I've been doing Java development for 15+ years and most of that in web apps. Production deployments to Linux, mainframes, and Windows. Sadly, most often, the production machines are Windows. A typical argument is that it is best to have the production system similar to development (and QA, and integration testing, and user acceptance testing) system to avoid surprises as the build travels through the process.

      Concerning portability of Java across platforms, I can only recall having three issues and they are all related to file systems: paths (developer assumption), permissions, and Windows misreporting file creation time. For Java web apps, your portability issues are the same regardless of language--the browsers.

      My favorite quote of all time (unfortunately I can't claim credit).

      Saying Java is better cause it'll run on all platforms is like saying anal sex is better because it works on all genders.

    163. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Maintaining an all-Linux backend usually requires a lot of high level administrative support and the administrators I can guarantee you are looking at COST first THEN functionality and they will ALWAYS see a Microsoft-based solution as inherently cheaper "because we already do that."

      That's utter nonsense. In reality, Linux is no harder (and probably easier) to maintain than Windows: it's less complicated, its interfaces and tools change less over time, and there are numerous ready-made, turnkey server solutions that you basically just boot up and use. More CS grads will know and will have administered Linux systems than Windows systems because administration for Linux systems is much more similar between single user and multi-user.

      School administrators may choose Windows because they believe it's easier to maintain, but they are mistaken.

      The problem is, everyone has Windows admins on staff anyway. It's a sunk cost.

      It's not Windows vs. Linux. It's Windows vs. Windows-and-Linux. And while, in some cases, Windows-and-Linux may actually be cheaper than Windows alone, it is not always the case, and it is not always easy to see when that is the case.

    164. Re:Language is hardly relevant by rev0lt · · Score: 1

      "Most" websites these days burn cycles on dynamic content just because, and so they're leaving a lot of cycle savings on the table for "developer convenience" that may turn out to not be convenience at all--the logic needs maintenance too.

      In quantity, yes. In traffic, not even by a long shot.

      But if you have millions of users with not quite the latest in hardware (a statistical inevitability, really) then you really should've made sure to not spend their cycles needlessly.

      Scaling out something like you describe to millions of users is also a solved problem. The problem is, when you need millions of simultaneous users, or tens of millions of regular users. And sooner or later, the dataset size. And that's not solvable on the hardware side, you need software. You need smart software - and usually it is simpler to write smart software in higher level languages. And even then, resources are finite, and at that point the weak link is always bandwidth - that won't save you even with static resources.

      I'm really saying that the given options suck and that there are better choices available outside the imposed solution space.

      Such as?

    165. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      streamline.js, a JavaScript preprocessor, does almost exactly the same thing for JavaScript. So this feature isn't unique but it is splendid.

    166. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      For JavaFX 2, they ditched the third-rate scripting language. You use the java networking libraries which are anything but unreliable.

      It also is shipped with all JDK and JRE now so deployment is easy no matter where you deploy.

      Yeah, the browser plugin part kinda sucks, but Javascript is no different than a plugin, only that it ships with the browser.

    167. Re:Language is hardly relevant by jwhitener · · Score: 1

      I think he was referring to the time before linux was stable. Back in 1998 in healthcare, there was IBM AS/400, VAX/VMS, other UNIX, and Windows. Some of us were experimenting installing linux on the desktop every 6 months or so, but usually gave up because it was in a sorry state back then.

      Apache tomcat wasn't even released until 1999. However, java 1.0 was released in 1996, meaning java stuff did often end up on Windows servers. It took some time before open source began to dominate the server market.

    168. Re:Language is hardly relevant by jwhitener · · Score: 1

      We are a large community college and have always had a mix of servers. Probably equal parts windows, linux, some netware. We choose the best application to meet the needs of our clients (other employees, faculty, and students), and consider the OS largely irrelevant.

      I'm not sure what percent of schools operate that way though. The few other schools in our state that I've talked to though are very similar to us. If I had to guess, I would say that the larger the school, the more likely it is that they confidently handle a mixed environment.

      It has been my experience that Windows and Linux are identical in terms of admin support costs. A good windows admin should cost you as much as a good Linux admin. However, I find that Linux ends up costing less over time from a system administration perspective. You can usually find free and open source products (of enterprise quality) to do things like cloning, anti-virus, etc.. for linux, but usually you have to pay for similar features on windows servers.

    169. Re:Language is hardly relevant by XDirtypunkX · · Score: 1

      Have you actually not bothered to read about the feature or are you just trolling? The whole point is to avoid explicitly having to write closures or callback functions.

    170. Re:Language is hardly relevant by Let's+All+Be+Chinese · · Score: 1

      I have considered brushing up java to sell to employers, as a copyright firewall between what I like to do and what they pay me to do. If you can stand it, and have a contract to suit, it might work.

      A chance remark elsewhere pointed me to why xml and its various(!) query languages is so popular in certain places: It's easier to get things done in that than in java. So that meshes well with your experience. This is not to imply that xml is a good idea elsewhere.

      As your interface to telling the computer what to do, various languages have their various upsides. I've been looking into python for quite a bit lately even though the community turned out to have a few nasty spots in it. Someone argued it's sort-of lisp in drag and it's certainly nice for a broad class of things to do with it. I didn't like ruby much but I can see where its appeal lies. Maybe just not my style. And if you'd like to try a lisp, go right ahead, though watch it for that road might lead to emacs. I also have a few things yet I'd like to try but no point in trying to do everything at once, eh.

      To me, though, there is zero need to rely on the JVM. I'm much closer to the system (many hats, mostly unix family and friends) so I'm just as likely to write a shell or awk script. Or use C to glue things together, effectively using it as some sort of scripting language.

      And some things I like to do in C++, though I'll also revamp a tool back to C if it turns out it didn't need any C++ features. Strict typing doesn't other me, though I recall disliking java's way. It's been a while. In fact, too loose typing and I start to feel I lose track of what was what again. But sometimes being able to just return whatever regardless of type is nice too.

      Without STL you haven't really done C++, similarly you need some idea how and what for objects work best in C++. But then, apparently most "C/C++" is really just shitty C with some perfunctory C++ sauce. Boost is a bit too large to casually throw in (I've seen FOSS projects replace libsigc++ with requiring all of boost but using only a tiny part, as that was somehow undefinedly "better" or some malarky--it'd've saved everyone using the source quite a lot of bother to leave well alone), but it's quite useful as a baseline to prevent groups from reinventing the wheel too much, so for that sort of project familiarity with it is useful.

      The bottom line is that it pays to know a few different languages so that you have a few choices picking whichever is most suitable for the problem or goal at hand.

      So I can't really recommend anything specific to using the JVM; last time I had to use it, it involved having to have both 32 and 64bit windows versions so various 3rd party applets would function in a 32bit browser on top of the 64bit "OS", and then the whole holes oracle wouldn't or couldn't fix thing started. Glad I don't have to care for that any longer. Neither windows nor JVM here.

      But if you have reason to want something that runs on top of JVM, well, no reason not to try something that isn't java but does run on the JVM.

    171. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      The arguments were never ivory tower arguments. They were always thinly veiled support for the last language the person learned really well.

    172. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      What made you assume the poster was saying that teacher had a say in PowerSchool. Don't see the original poster or anyone else suggesting that? Are you hearing voices that you are arguing with?

    173. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      You've never been in education, have you? It shows.

      "Educators" are the actual teachers. They have near zero say in what systems get selected,

      Partially true. It depends on the institution politics. Educators opinion doesn't count on the platform (OS) selected, but their word (and sometimes students too) is taken when choosing things like computer languages to be used.

      Also usually the first group that start making pressure to upgrade an Office installation on an institution is the faculty.

    174. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Only amateurs with no experience who don't know what they're doing think so.

      You must be an amateur with no experience.

    175. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      There are people with Tomcat on Windows - both my brother and I have seen this in commercial production. It's painful.

    176. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Given that the world does not run on Windows or IIS, you look pretty retarded.

    177. Re:Language is hardly relevant by benjymouse · · Score: 1

      So in other words it is a closure, something that has been around since Scheme in 1975. Again the feature is not unique in modern times C# either, Clojure (get it right?) has them, Objective-C has them (dispatch_async), etc. etc.

      You are wrong again and you are embarrassing yourself.

      The C# async/await feature has nothing to do with the "asynch waiting api" of Linux.

      It also is not a closure. C# has had closures since version 2.0. Java still does not have closures (but it is arriving soon in an amputated state). But I digress.

      With C# async/await the compiler generates a finite state machine and *uses* closures. It turns out that the code you need to write if you want to be able to branch, loop, handle exceptions over multiple asynchronous invocations is both really complicated (finite state machines) as well as very systematic. The last point can be used to make the *compiler* write the tedious boilerplate code.

      Maybe you should actually try to understand the topic instead of googling a few keyword and jump the bias-driven conclusions. Just saying.

      --
      Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
    178. Re:Language is hardly relevant by benjymouse · · Score: 1

      streamline.js, a JavaScript preprocessor, does almost exactly the same thing for JavaScript. So this feature isn't unique but it is splendid.

      No it does not. It uses *promises* which admittedly does make async coding simpler and more robust. It compares to task based parallelism of both C# and Java (fork-join).

      But you still cannot *compose* the async flow like you can in C#. The promise is a closure which can access local/captured variables, but what it *cannot* do is terminate a loop, a branch (if-then-else) or an exception handler block which was started *outside* of the promise closure. To achieve that with promises you would have to always turn the rest of the method into a promise closure and rewrite loops, branches and exception blocks into state machines.

      Not saying it cannot be done, but so far not even js does not have anything akin to C# async/await.

      --
      Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
    179. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      Eh? streamline.js doesn't use promises. It rewrites code to use callbacks. Or am I missing something?

    180. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      When you say closure do you mean anonymous function/method?

      If you don''t what you are writing makes no sense.

      Closure is a property of something, not a programming construct.

      An anonymous function may or may not support closures.

    181. Re:Language is hardly relevant by Anonymous Coward · · Score: 0

      java.util.concurrent.locks.Lock, with Condition(s).

    182. Re:Language is hardly relevant by ByOhTek · · Score: 1

      Where did I assume linearity?

      OK, there may be assumptions, for the past year, but given the difference we saw switching from IIS to Apache, EVEN ON WINDOWS, I doubt that they changed that much in one year.

      Oh, you are now assuming I'm using out of the box Apache? or that we didn't tweak IIS to turn off the features we didn't need? Or that, even if you don't need them you should have all those features you don't need/want available?
      Get your head out of your ass because all you can come up with are bad ASSumptions.

      Tweaked to similar feature availability, we still had better performance on Apache. Admittedly we didn't need ASP or Java serlets on either, but turning them off, or not adding the components, as appropriate, was not that difficult.

      I will grant IIS, I'd rather go in and configure it than apache. The Metabase is fairly simple/clean, and one of the few good XML implementations I've seen, where Apache seems to be a hodgepodge of some SGML derivative mated with a classic config file, saved only be decent comments and documentation. However, for performance, once each is tweaked to suit the needs of an app, Apache so far has run better. Maybe if we needed *everything* IIS does, it would be a good web server, but that's a pretty narrow niche.

      I can't see a good reason, other than ASP to run IIS. And while I'd rather code in C# than Java, I would take a Java servlet on a decent engine over IIS + ASP, and I would take a Python or C module in Apache to a .NET application server backend over either.

      --
      Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  2. Which one is the bigger security threat? by crazyjj · · Score: 1, Redundant

    It would seem that the U.S. Dept. of Homeland Security are C# fans.

    --
    What political party do you join when you don't like Bible-thumpers *or* hippies?
    1. Re:Which one is the bigger security threat? by clark0r · · Score: 4, Informative

      This would be the browser plugin you're talking about? Websites are not served up by browser plugins. Stop spreading lies.

    2. Re:Which one is the bigger security threat? by Anonymous Coward · · Score: 1

      If they were concerned about security, they wouldn't use windows on a server.

    3. Re:Which one is the bigger security threat? by lightknight · · Score: 0

      Yeah, they'd be running Slackware, and compiling all their software from source.

      --
      I am John Hurt.
    4. Re:Which one is the bigger security threat? by Anonymous Coward · · Score: 0

      What's wrong with implementing the entire website as a Java applet? Flash gets away with that. ;-)

  3. Aspects... by Anonymous Coward · · Score: 1

    What aspects of a language matter to you and how do you weigh them?

    1. Re:Aspects... by squiggleslash · · Score: 1

      Read that sideways and you have an interesting way to evaluate programming languages. Write equivalent, readable, code in the languages you're evaluating.

      Now print out each example, and weigh it. The one that weighs least is probably written in the programming language to use.

      --
      You are not alone. This is not normal. None of this is normal.
    2. Re:Aspects... by Anonymous Coward · · Score: 0

      This is why I use obfuscated ruby without newlines.

    3. Re:Aspects... by burisch_research · · Score: 3, Insightful

      Um, no. You could probably write an entire office suite in perl and have it fit onto a few small pieces of paper when printed out; but nobody would ever understand it, probably not even the person who wrote it in the first place!

      --
      char*f="char*f=%c%s%c;main(){printf(f,34,f,34);}";main(){printf(f,34,f,34);}
  4. They are both as good by hsmith · · Score: 5, Insightful

    As your worst developer on the team.

    I've used both and really haven't seen issue with either. I have a slight preference for C#, personally, but it all comes down to your design, architecture, and implementation that will slow you down.

    1. Re:They are both as good by Threni · · Score: 2

      And whether you prefer Visual Studio's IDE, or Eclipse.

    2. Re:They are both as good by AwesomeMcgee · · Score: 1

      ... that will slow your down.

      and eventually kill you! Muahaha! I mean, what?

    3. Re:They are both as good by teknopurge · · Score: 2, Funny

      Netbeans - Eclipse sucks.


      So does emacs. (vi!!!!)


      something something something LAWN!

    4. Re:They are both as good by MacGyver2210 · · Score: 2

      Eclipse is much more user-friendly and stable than NetBeans in every iteration I have used it.

      --
      If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
    5. Re:They are both as good by Exitar · · Score: 1

      Agreed, with the exception of Juno that has a lot of performance issues if unpatched.

    6. Re:They are both as good by nitehawk214 · · Score: 2

      Eclipse is much more user-friendly and stable than NetBeans in every iteration I have used it.

      Most problems people have with Eclipse are due to crap plugins. If you pile a bunch of plugins into it, it will run like a dog.

      --
      I'm a good cook. I'm a fantastic eater. - Steven Brust
    7. Re:They are both as good by ImprovOmega · · Score: 5, Insightful

      Eclipse is the emacs of the IDE world. It tries to be everything to everyone - infinite customizability, plugins, addons, tweaks you can make...it is at the point where for a new user it is really difficult to get a starting point to go from, and finding simple commands can be a PITA to find since they're in non-obvious (unless you've been using Eclipse for years) places.

      NetBeans does a better job of exposing the functionality you need, though the extensibility is more limited (like vi or nano).

    8. Re:They are both as good by O('_')O_Bush · · Score: 1

      Surely a team of below average developers will put together a poorer performing system than a team of rockstar developers plus an intern?

      --
      while(1) attack(People.Sandy);
    9. Re:They are both as good by Anonymous Coward · · Score: 0

      Eclipse is much more user-friendly and stable than NetBeans in every iteration I have used it.

      Most problems people have with Eclipse are due to crap plugins. If you pile a bunch of plugins into it, it will run like a dog.

      And Eclipse without any plugins is pretty useless.

      In fairness, though, if you're a software developer, you should have a top of the line development machine. If I'm paid $100 grand a year, a $5000 workstation is going to pay for itself.

    10. Re:They are both as good by gshegosh · · Score: 3, Interesting

      Eclipse is much more user-friendly and stable than NetBeans in every iteration I have used it.

      That is interesting, my experience is completely opposite -- Netbeans is better focused on most often used functionality than on some niche stuff and extreme configurability almost noone needs, has shorter menus, less cluttered toolbars, has more intelligent and intuitive text editor (variable names guessing is so brilliant you don't notice it until you go back to other editors), has Alt-Tab that works instantly, etc. etc.

      It is also periodically reviewed for performance and tuned up, which results in amazing improvements between, say, version 6.5 and 7.2.

      Netbeans doesn't require me to get and configure additional plugins for SVN or Maven. It is much better integrated with application servers.

      etc, etc

      Have you tried Netbeans recently, or do you base your Eclipse preference on Netbeans 3.5? Because I have been forced to use Eclipse Juno for past 3 months and it is slow as hell, unintuitive, has menus that still require scrolling in full hd and still proposes arg0 as variable names...

    11. Re:They are both as good by Applekid · · Score: 1

      Depends on how much boring grunt work they pawned off to the intern while the rockstars pontificated on architecture.

      --
      More Twoson than Cupertino
    12. Re:They are both as good by aztracker1 · · Score: 1

      I'd say one rockstar dev-architect and 2-4 mid-level devs are probably best in terms of productivity... so long as *rockstar* doesn't try to over-engineer the application...

      --
      Michael J. Ryan - tracker1.info
    13. Re:They are both as good by ripdajacker · · Score: 2

      IntelliJ IDEA does the job for me, surely beats Eclipse in terms of out of box functionality.

    14. Re:They are both as good by Anonymous Coward · · Score: 0

      Unless rockstar devs overengineer half of a solution while pointless arguments over langs/platforms/style slow them down with the other half. By the end of the project the users will like it but use something they're used to -- which is what below averages built:

      Meanwhile team of below averages will hack something that users simply love up with PHP and shell scripts that the rockstar op will simply hide behind a clever caching implementation and get management to throw a bit more money into UI design and some more hardware/cloud resources.

    15. Re:They are both as good by lannocc · · Score: 1

      Netbeans and Vim forever!

    16. Re:They are both as good by Anonymous Coward · · Score: 0

      IntelliJ FTW.

    17. Re:They are both as good by JAlexoi · · Score: 1

      Anything beats Eclipse for OotB, it's the customizability of that box...

    18. Re:They are both as good by Dr_Barnowl · · Score: 1

      The arg0 thing is where there are no available sources to look up for the API you are targetting.

      The 3.8 build of Juno is much snappier than the 4.2 build. But I get you about the "getting used to it". When I've tried NetBeans I've usually just fled back to Eclipse because that's what I'm used to.

  5. Does it matter. by Anonymous Coward · · Score: 5, Insightful

    I personally would expect one to win in some regards and the other to win in others. My concern is that C# is too tightly bound to MS platforms. Java isn't perfect, it isn't the write once run everywhere that was promised, but the port from Java on MS to Java on Linux, Mac ... will most certainly be better.

    That is enough that I would prefer Java over C# on my projects. Of course there are always outside parameters that might be enough to tip the scale.

    1. Re:Does it matter. by i+kan+reed · · Score: 5, Interesting

      On the other hand, C#'s syntax has ruined java for me. Many simple tasks in java feel like they take 3 times as many steps as they need to: e.g. overloading a method with an optional bool defaulting to false requires actually writing a new overload and passing the default. To be fair, there are times when python or a functional language makes C# feel the same way, but java is just too far removed on the convenience factor for me.

    2. Re:Does it matter. by hsmith · · Score: 5, Insightful

      I'll give it to MS, they have moved the language forward. Linq is amazing. Oracle has just isn't pushing forward as MS has done.

    3. Re:Does it matter. by Anonymous Coward · · Score: 0

      You chose Java. Do you prefer back doors?

      C# has T4 templates that allow you to use C# to write C# code. Think about that with regard to LINQ, database model generation, and reflection. It's very powerful if you install intellisense support. Without that, you'll go insane because it's hard to otherwise make sense of where the generated code starts and your template ends.

    4. Re:Does it matter. by Anonymous Coward · · Score: 1

      e.g. overloading a method with an optional bool defaulting to false requires actually writing a new overload and passing the default.

      If you need binary compatibility (e.g., you're shipping a reusable module, and can't expect on third parties to recompile their code), doesn't the C# overload-with-default break existing clients? Honest question :)

      I definitely prefer C# and Visual Studio to Java and Eclipse/Whatever - lots of nifty touches that makes development faster and code more readable. But it's Java at the job, and we get by.

    5. Re:Does it matter. by Nemyst · · Score: 2

      Yeah, while I'm not a fan of being entirely bound to MS (though thanks to Mono that's not as much of an issue as it could be), C# just feels so much more modern than Java. Just having an actual event structure instead of passing through all sorts of hoops is refreshing, and then things like lambda functions, LINQ, extension methods and all that. No, none of it is essential, but it's mighty convenient and it also makes the code a lot more readable, which in my opinion is a much more important metric for worth than raw performance, which isn't going to be that different anyways. If the code is intuitive and easy to parse, it's likely going to be easier to maintain and expand, which can have much more important long-term impact on performance than anything in the language's intrinsic speed.

    6. Re:Does it matter. by Anonymous Coward · · Score: 0

      The Mono project is something you might want to look at. You can write C# in Visual Studio and run it anywhere. Apparently their virtual machine on non-Windows systems has improved greatly in recent years as well. Most benchmarks put it slightly ahead of Java, although still well below native .NET (although apparently this guy's comparison of two web servers turns all the other evidence on its head).

    7. Re:Does it matter. by thetoastman · · Score: 2

      I haven't used mono on Linux in a while, so maybe it's been improved. Earlier versions on Fedora were a mess.

      One of the biggest issues I had with mono was its clash with SELinux. There was just no way to get Apache HTTPD / Mono / SELinux to play nicely together. After the fifteenth or sixteenth custom SELinux rule I just punted. I lodged all the SELinux bugs with Mono, and there they sat.

      Another issue I had was with hard-coded ports. It was very difficult at the time to run both the Mono server and something like Tomcat on the same platform. To me, this was the only reasonable way to test ease of development, software release, and performance. Unfortunately, I didn't have a set of identical boxes at the time.

      Due to all of these infrastructure issues (including chasing down obscure libraries - I don't mind building them), I abandoned C# / Mono and happily run everything on Tomcat or Glassfish (or Jonas or JBoss, etc). Tomcat just works on every platform I run it on. I run it on Linux, I run it on XP, I run it on Windows 7 (haven't tried Windows 8 yet), I run it on MacOS. The same web application (if written properly) runs on all of those platforms without change.

      I'm not much of a developer - more a systems architect - but I've developed Java - based web applications on Windows, Macintosh, and Linux. I use the same tools (I'm a NetBeans / Maven fan), and they operate in the same way across all platforms. To me, having a platform - agnostic environment is very important. I am then not constrained (nor do I have to constrain team members) to a particular environment. I work on Linux, the servers run on Linux, most people develop on Windows, and there is one person on a Macintosh. And yes, right now I'm posting from a Windows machine.

      I can do the same thing with PHP, Ruby, Python, Scala, Lua, Perl, or Scheme. I cannot create a flexible, platform - agnostic environment with C#. I also have issues with the C# language, but this isn't really a language wars thread.

    8. Re:Does it matter. by PmanAce · · Score: 1

      Hehe, that was like three versions ago.

      --
      Tired of my customary (Score:1)
    9. Re:Does it matter. by geekboybt · · Score: 1

      What's great about running Java on the server platform is that while most of these exploits allow properly crafted code to do something nasty, our goal as a service provider is to never let users run their own code on our servers in the first place.

    10. Re:Does it matter. by adam.voss · · Score: 3, Interesting

      Thankfully there is scala ( http://www.scala-lang.org/ ) on the JVM to advance language functionality while Java is not. I would say C# and scala are more feature similar than C# is to Java anymore, especially if Macros end up coming out of the Roslyn project.

    11. Re:Does it matter. by StormReaver · · Score: 2

      [Java] isn't the write once run everywhere that was promised

      I've been writing Java apps that run on Linux and Windows for a long time, and have yet to run into this. Can you give an example where using pure Java doesn't work the same across platforms?

    12. Re:Does it matter. by Anonymous Coward · · Score: 0

      On the other hand, C#'s syntax has ruined java for me. Many simple tasks in java feel like they take 3 times as many steps as they need to: e.g. overloading a method with an optional bool defaulting to false requires actually writing a new overload and passing the default.

      Most of the real innovation in the JVM space has come from other languages like Groovy, Scala, Clojure, etc. The Java Community Process was always relatively slow under Sun and it seems to have gotten positively glacial under Oracle.

      I personally prefer Groovy syntax to Java for the same issues you describe. With Groovy 2.0 having a static compilation option, many of the objections about Groovy's runtime performance should diminish.

    13. Re:Does it matter. by shutdown+-p+now · · Score: 1

      If you need binary compatibility (e.g., you're shipping a reusable module, and can't expect on third parties to recompile their code), doesn't the C# overload-with-default break existing clients? Honest question :)

      Adding a new optional parameter to an existing method is, indeed, a breaking change on binary level, because overload resolution happens at compile-time, and bytecode references functions by their full signatures (so it'd be "call instance void Foo::Bar(int32, bool)", not just "call Foo::Bar"). But I think GP was talking about the situation where you initially start with a method where you want a defaulted parameter - in Java you still need to write an overload for that.

    14. Re:Does it matter. by ConceptJunkie · · Score: 1

      What the platforms don't have the exact same version of the JRE for one.

      --
      You are in a maze of twisty little passages, all alike.
    15. Re:Does it matter. by Anonymous Coward · · Score: 1

      F# (fsharp.net) is the .Net functional language of choice.

    16. Re:Does it matter. by bondsbw · · Score: 1

      The difference is their evolution. Java started superior to C# (this coming from a long-time .NET developer and fan). But the C# team looked to fundamental language design and mathematical concepts to substantially improve the language. Every version of the language has added something I can't imagine living without now, and C# 5 feels like a different language compared with C# 1. Frankly, I feel like most new features added to Java over time have been half-baked attempts to catch up with other languages, including C#.

      This isn't to say that C# hasn't had to make compromises in its evolution. Every language does. C# has become more complex to parse and to maintain, and older libraries and language features remain in the name of backwards compatibility (somewhat complicating a few of the newer features). Even so, developers are looking in many directions to replace Java today, but C# will still be alive and well years from now.

      --
      All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
    17. Re:Does it matter. by JAlexoi · · Score: 1

      Mono VM faster than Java VM? I'd like to see those benchmarks.

    18. Re:Does it matter. by EMN13 · · Score: 1

      Having used default parameters in a medium sized team on a large codebase for quite a while now (basically since day 1), I can assure you that the default argument argument feature is a wolf in sheeps clothing.

      They seem sort-of handy and thus get used when you just need to toggle this small thing. However, that encourages methods to do more than one thing; or to work subtly different in different scenarios. The reliability of your codebase suffers. Furthermore, they break programming 101: encapsulation. You can't encapsulate a function with a default parameter. If you wrap that call in something else and need to pass along the default parameter, you need to add the default argument to that second function now too. If the default changes... oh boy. In essence, they encourage misdesign by allowing API's with terrible method signatures and then making it cumbersome to abstract those APIs - so you're being hurt on both ends.

      Another small problem is that they're entirely static. I find the binary compatibility argument to be largely irrelevant (seriously, what tiny percentage of your API is outward facing anyhow, and how many people even have customers that buy libraries but don't recompile dependencies?). A much more serious problem is that they thus encourage placeholder values (null, -1, etc) that mean something entirely different. This makes reasoning about functions much harder (irregularities are bad), and can cause surprising bugs when you manage to accidentally pass one of those placeholders. Secondly, they somewhat undermine an actually useful part of C#, namely expression-tree lambdas, which don't support this feature (so APIs with default paramaters tend to be unworkable in expression trees).

      I wish they'd never released the feature, or at least made it very annoying to write APIs for so that its usage would be limited to there where absolutely necessary (e.g. interop with APIs designed with it in mind).

  6. Useless by funwithBSD · · Score: 0, Redundant

    What a useless test.

    Tells you nothing about what is suitable for your requirements.

    --
    Never answer an anonymous letter. - Yogi Berra
    1. Re:Useless by cdrudge · · Score: 1

      Can't that be said for ANY test that isn't suitable for your requirements? The test could be an otherwise perfectly modeled and execute experiment but if it doesn't meet your requirements, then what good is it.

  7. Question by Anonymous Coward · · Score: 1

    Why is it so hard to write a summary nowadays? The point of the summary is not to hide information, the purpose is to provide the information so readers don't have to search it.

    Here is the result, right at the end of TFA: "Java is the clear winner here."

    1. Re:Question by doti · · Score: 2

      It's a trap to try and make us look at TFA.

      --
      factor 966971: 966971
  8. A question? by Coisiche · · Score: 3, Insightful

    I have seen it often said that when a slashdot headline ends in a question mark then the answer is no.

    1. Re:A question? by Anonymous Coward · · Score: 2, Funny

      I have seen it often said that when a slashdot headline ends in a question mark then the answer is no.

      Maybe I should create a programming language, call it "no", and then submit a Slashdot story "What is the best programming language around?" :-)

    2. Re:A question? by Tridus · · Score: 3, Insightful

      Not just slashdot, but you're right: http://en.wikipedia.org/wiki/Betteridge's_law_of_headlines

      --
      -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    3. Re:A question? by Anonymous Coward · · Score: 0

      What does "No" mean to the question "Which performs better in the real world?"?

    4. Re:A question? by Anonymous Coward · · Score: 0

      Well if you were expecting a reasonable test to answer that question, there's a big fat no to that...

    5. Re:A question? by nitehawk214 · · Score: 1

      What does "No" mean to the question "Which performs better in the real world?"?

      In this case, "No" means that the question itself is wrong/invalid. Or perhaps in a generalization of Betteridge's Law of Headlines "Any headline that asks a question is wrong."

      --
      I'm a good cook. I'm a fantastic eater. - Steven Brust
    6. Re:A question? by Anonymous Coward · · Score: 3, Funny

      Next up: Is Betteridge's law always right?

  9. Useless? by Anonymous Coward · · Score: 0

    Both runtimes are very heavily optimized, if you need something to run fast, either will work very well for you assuming you code it well and use appropriate libraries/frameworks. As compared to (non-native) Ruby/Python for example which can run code far slower - the JVM and CLR are much more comparable to each other.

    I don't really see the value of this guy implementing low-level HTTP stuff in a very naive manner - he's not using modern approches that have been around for a decade (NIO and such) - so the value of any conclusions is essentially worthless.

    A much better site for comparing microbenchmarks (with all appropriate warnings attached) would be: http://benchmarksgame.alioth.debian.org/

  10. Errors on big sites by EmperorOfCanada · · Score: 1

    I used to see a fair number of errors(crashes) that were both java and .net on many huge sites. But now I primarily see errors from crashing java sites. That could be due to people dumping .net, .net cleaning itself up, or .net programmers getting better. Personally I don't use either (did years ago) but the huge number of errors that I would see on what should have been well developed sites is what kept me away going back to either.

    Now on smaller sites I see PHP crashes but I would expect to see more people using PHP on smaller sites and more people using it badly.

    What I would love is a survey from say google showing what technologies are used on sites getting 1,000,000+ hits per day and what their error rate is?

    1. Re:Errors on big sites by i+kan+reed · · Score: 1

      Let's be honest here. If you're a developer, you know the weakest link in every custom application is the custom part, not the language, because of overloaded engineers who don't worry about every use case they need to.

  11. source: experience by tehlinux · · Score: 2, Informative

    C# programmers get paid more.

    --
    Most linux users don't know this, but the man pages were named after Chuck Norris. Chuck Norris fsck'ing hates noobs!
    1. Re:source: experience by Anonymous Coward · · Score: 0

      C# programmers get paid more.

      Maybe at the low end. My job prospects have been severely hampered by the fact that I went with C# instead of Java. Most of the big players (google, amazon, facebook, etc.) won't even look at your resume if you specialized in C#. MS will see it as a plus, but they also won't look at you unless you have a decade of C++ experience.

    2. Re:source: experience by vilanye · · Score: 1

      Your job prospects are severly hampered because you are a programming language end-user, not a programmer. A programmer has the background necessary to easily move from language to language. I know next to no Haskell(or C# or D or Erlang, etc), but if I had a chance to work for a company using it, I have the background to pick up the language because I understand its concepts. Good programming shops hire programmers, not programming tools end-users.

  12. real world by Anonymous Coward · · Score: 0

    did anyone notice that this test uses a very carefully crafted test environment? isn't that the opposite of a real-world test?

    1. Re:real world by Anonymous Coward · · Score: 0

      On the other hand, you can't test something unless you know what you're testing.

  13. Android uses Java, at least Dalvik java by Anonymous Coward · · Score: 1, Interesting

    Windows 8 Metro doesn't use .NET.

    Cheap dig aside, you tested Java by using a C# client, so actually what you tested was C# to C# and C# to Java and concluded that C# to C# makes a lot faster connections.

    I can also save you the time and tell you Java on Windows machines is a complete dog, and on Ubuntu, it's a lot faster for the same hardware. So if you tested Java on Windows and concluded it was a dog, well yes it is, why is that?

    1. Re:Android uses Java, at least Dalvik java by Coisiche · · Score: 1

      The last line of the article I read was...

      Meanwhile, Java is the clear winner here.

      ...or did I miss a link?

    2. Re:Android uses Java, at least Dalvik java by squiggleslash · · Score: 4, Insightful

      * Dalvik is not Java. While the Java programming language is available for Dalvik, together with a subset of the J2SE library, the runtime itself is unrelated.
      * Windows 8 Metro "does not use .NET" is kinda meaningless, neither does Win32. However, you certainly can build Metro apps in .NET. http://blogs.msdn.com/b/dotnet/archive/2012/04/17/net-for-metro-style-apps.aspx
      * The comment about the author of the article testing Java "by using a C# client" is bizarre and misleading. A language had to be picked, with the choice having the same impact on both tests. Chosing to test a Java server with a Java client, and then a C# server with a C# client would cause the test to be different in both situations and render the test results invalid.
      * The author of the article concluded that Java was generally faster than C#, not that "it was a dog".
      * Other than that, your comment is completely 100% correct. Possibly. Or maybe I didn't check.

      --
      You are not alone. This is not normal. None of this is normal.
    3. Re:Android uses Java, at least Dalvik java by Bill_the_Engineer · · Score: 1

      Dalvik is not Java. While the Java programming language is available for Dalvik, together with a subset of the J2SE library, the runtime itself is unrelated.

      That's like saying JVM is not Java. I think the OP is still technically correct. Android does use Java albeit Java with a subset of libraries running on Dalvik instead of JVM.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    4. Re:Android uses Java, at least Dalvik java by BradleyUffner · · Score: 1

      Windows 8 Metro doesn't use .NET.

      Bullshit.
      http://www.youtube.com/watch?v=jEEgfSymSqI
      And that's the the first search result.

    5. Re:Android uses Java, at least Dalvik java by Anonymous Coward · · Score: 0

      The JVM is not Java, the CLR is not C#. They are both bytecode interpreters and JIT compiler which can run code compiled from several languages.

      AC because I can't be bothered to login.

    6. Re:Android uses Java, at least Dalvik java by shutdown+-p+now · · Score: 1

      Windows 8 Metro doesn't use .NET.

      Yes, it does. It's one of the three available options, the other two being C++ and HTML5/JS.

    7. Re:Android uses Java, at least Dalvik java by Bill_the_Engineer · · Score: 1

      The JVM is not Java, the CLR is not C#

      I didn't equate JVM to Java nor did anybody else..

      The parent said "Dalvik is not Java" and I said it was similar to saying "JVM is not Java" and at the end of the post I mention "Dalvik instead of JVM". The reason for the similarity was Dalvik and JVM both are not Java.

      The point was that when the grand parent mentioned "Dalvik java" the author meant Java running on Dalvik.

      --
      These comments are my own and do not necessarily reflect the views or opinions of my employer or colleagues...
    8. Re:Android uses Java, at least Dalvik java by vilanye · · Score: 0

      Dalvik is not a JVM.

      Want proof? Take any compiled Java program, doesn't matter how simple or complex it is. Now try to get Dalvik to run it.

      Dalvik is not a JVM.

      With your standards, Ruby, Python, Lisp are all Java as well, since there are java bytecode compilers for them.

  14. no real world usage for this article... by Anonymous Coward · · Score: 0

    ... if the author makes the stupid assumption that Java and .NET are useful to build web pages only.

  15. Just do it all in C++ by scorp1us · · Score: 5, Informative

    Before I get modded troll, I'd like to point out that there is a really awesome C++ toolkit for web development and it will blow your mind. It's called Wt and it makes your applications fully OOP and a joy to develop in. One really awesome feature is that it is Boosted and another awesome feature is smart with regard to data. It will use where apropriate (usually you use the AJAX version of a control or mark a function for export to javascript) AJAX rather than statically filling your page. The result are some really easy to code fast websites.

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    1. Re:Just do it all in C++ by Anonymous Coward · · Score: 0, Troll

      Sounds great, except it is in C++...

    2. Re:Just do it all in C++ by Anonymous Coward · · Score: 1

      I don't get why the criminally idiotic mods here actually marked your post a troll post. It's still much more useful than the original post to me at least. Unless there's just a joke I don't know enough to spot it yet, I'll check out Wt.

    3. Re:Just do it all in C++ by Anonymous Coward · · Score: 2, Funny

      In response to the trolling:

      C#/Java Fanboy Defense Force, assemble!!

    4. Re:Just do it all in C++ by Anonymous Coward · · Score: 0

      Apparently, you're also a troll for complaining about it.

    5. Re:Just do it all in C++ by Anonymous Coward · · Score: 2, Interesting

      With all respect, Wt is interesting platform, but it does NOT provide the same kind of web applications as tested.

      Wt basically is sort of equivalent of terminal access to machine where the whole application process runs as single process per user. Obviously, this approach has advantages, but you would not want to implement something like 'slashdot.org' in Wt.

      (But, speaking about C++ web frameworks: http://www.ultimatepp.org/srcdoc$Skylark$Tutorial$en-us.html)

    6. Re:Just do it all in C++ by ahabswhale · · Score: 0

      But then I'd have to use C++, which is pretty much the ultimate frankenstein language.

      --
      Are agnostics skeptical of unicorns too?
    7. Re:Just do it all in C++ by scorp1us · · Score: 1

      Only C works on more platforms. And if there's a platform that does not have a C++ compiler, I doubt it is relevant today.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    8. Re:Just do it all in C++ by dkf · · Score: 0

      Only C works on more platforms. And if there's a platform that does not have a C++ compiler, I doubt it is relevant today.

      I think you have failed to understand. C does what it does, and doesn't try to be all things to all men; not only does it have goals, but it also has non-goals, and thus it occupies its niche clearly. I've yet to comprehend what the non-goals of C++ are (unless you're into snarkiness).

      Practically though, C++ has had a history of ABI incompatibility (especially on platforms other than Windows) which has meant that rebuilding the world is a far more common occurrence there than with other languages. Given the tendency to slow compiles caused by the complexity of the template system, the need to be dragged through the swamp more often than is nice is highly frustrating. I hope newer C++ compilers have addressed these key technical issues.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    9. Re:Just do it all in C++ by scorp1us · · Score: 1

      The ABI incompatibility issue was solved using a technique where by a public-facing class and a private class. The public-facing class is the interface for the linkers and is known to the engineers to not change often. What you do in the private class no one cares about. And you can always add functions to the public-facing class, that won't break ABI, but you cannot delete or modify the function signatures of any existing function.

      So the compiler need not address it, the engineering practice does.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  16. Apples or Oranges which ones better? by Edzor · · Score: 1

    The scenarios you put forward as metrics are far too wide in scope to be any use. so Apples or Oranges which one is better?

    1. Re:Apples or Oranges which ones better? by Anonymous Coward · · Score: 0

      And you just totally blew off bananas, which would have performed totally better in all cases.

  17. These tests were also simple by ranton · · Score: 5, Insightful

    These tests were also just as simple as calculating Pi a thousand times. Based on the description, I was hoping for some tests where a website with a dozen or so complete views with significant bindings were created in both Java and C#. Instead it was just an HTTP request or a page that printed the date.

    Different frameworks and web servers are going to use varying amounts of overhead, so simple tests really only calculate that overhead. If you are going to provide benchmarks that actually have some meaning then they need to test complex enough behavior to mimic real world usage.

    These tests basically just show that Tomcat is faster than IIS for simple scenarios, or perhaps that ASP.NET MVC 4 adds more overhead to page requests than JSP does. Whether this overhead is meaningful when you are processing rich real world web pages is not covered by these tests.

    --
    -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    1. Re:These tests were also simple by Anonymous Coward · · Score: 0

      These tests were also just as simple as calculating Pi a thousand times. Based on the description, I was hoping for some tests where a website with a dozen or so complete views with significant bindings were created in both Java and C#. Instead it was just an HTTP request or a page that printed the date.

      So, get cracking. What's stopping you from doing the test yourself and publish the results?

      The sad thing about it is that if you actually did some work, some other idiot would complain that your test was dissapointing, and that he was expecting more.

    2. Re:These tests were also simple by cbhacking · · Score: 3, Insightful

      Frankly, the obvious problem (from somebody who has done a bit of both JSP and ASP.NET development) is the use of the MVC framework on IIS, and nothing even remotely equivalent on Java. If this were going to be as close to an apples-to-apples test as possible, you'd use bare ASP.NET (a single .ASPX page, possibly with a code-behind .cs file) and a single .JSP page.

      I don't even think it's a matter of the author of the article having any agenda or something... I think he just honestly doesn't understand how to use the frameworks. For a very roughly analogous example from another programming domain, if I want to display a line of text on the terminal, I print a line of text. I don't go pull up the ncurses library and use it to create a one-line-tall TUI into which I create a label containing my text and then immediately exit. That would be... well, about as smart as using a heavyweight MVC framework to produce a web page containing the current time.

      --
      There's no place I could be, since I've found Serenity...
    3. Re:These tests were also simple by ranton · · Score: 2

      These tests were also just as simple as calculating Pi a thousand times. Based on the description, I was hoping for some tests where a website with a dozen or so complete views with significant bindings were created in both Java and C#. Instead it was just an HTTP request or a page that printed the date.

      So, get cracking. What's stopping you from doing the test yourself and publish the results?

      My current area of research is in automated database design, and there are only so many hours in the day. My own tests have shown that C# using LINQ performs better for me than either Java or even my best attempts at C++, but these personal experiments are nowhere near publishable. They likely only show that I am more proficient at C#. But that was good enough for me since my objective was to see what language I should be doing my own experiments in right now, not in a fantasy world where I had enough time to become just as efficient in these other languages.

      The sad thing about it is that if you actually did some work, some other idiot would complain that your test was dissapointing, and that he was expecting more.

      There is a difference between nitpicking and pointing out that a research project did not even come close to meeting its own goals. These tests do hold some value in showing the maximum potential performance of these different frameworks and web servers. But that does not change the fact that these experiments did not test what the project summary said they were trying to test.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    4. Re:These tests were also simple by Anonymous Coward · · Score: 1

      The simplest "C#" (you could do it in VB, but why?) method of returning a string to a web request is via a custom IHttpHandler. IHttpHandlers run an initialization method, accepting the HttpContext as a parameter. This is essentially where IIS hands off control from its internal black-box code to your code. Everything before this point was internal to IIS itself or was handled at a basic level by the asp_net.dll. At this point, the DLL is running your code. (Before this, it may have had to call the JIT compiler, depending on cache age. But that's all over with at this point.) The HttpContext contains all of the request parameters, server settings, and other basic HTTP stuff, and is where the response object lives as well. It's the equivalent to PHP's handful of "superglobals", all wrapped up in a neat package.

      The ASP.Net .aspx file extension maps to an IHttpHandler called System.Web.UI.PageHandlerFactory. When a request hits a "bare" (ha!) non-MVC .aspx page, the PageHandlerFactory accepts the request and instantiates the calling class (the class in the .aspx file's @Page directive, which may be a partial class of the code-behind, or in older .Net 1.1 stuff, a derived subclass of the code-behind), and begins triggering events, both at its own factory level and within the page instance. Eventually, this gets around to executing your Page_Init() and Page_Load() methods (you do have automatic event wire-up on, right?) and all of your code "magically" comes to life.

      To display a basic string, cutting out the rather-large overhead of the PageHandlerFactory would be a fantastic idea. I can't speak to how the MVC stuff works, as I just haven't had a chance to dig into it that deeply, but I would imagine it suffers from a similar overhead, if not more. IHttpHandler does not. It's a raw request/response, and is as close to "bare-metal HTTP" as you can get with ASP.Net.

    5. Re:These tests were also simple by Anonymous Coward · · Score: 0

      Writing an .aspx page would mean that you replace the MVC framework with the Web Forms framework, I don't think that it would perform better.

    6. Re:These tests were also simple by JAlexoi · · Score: 1

      They likely only show that I am more proficient at C#.

      Yep. The kicker to the article is that a professional C# developer finds that Java is actually faster!

    7. Re:These tests were also simple by 14erCleaner · · Score: 1

      These tests were also just as simple as calculating Pi a thousand times.

      Which, if you calculated all the digits, wouldn't be particularly simple at all. In fact, doing it once would take as long as doing it a thousand times.

      --
      Have you read my blog lately?
  18. "Real world"... by Anonymous Coward · · Score: 0

    ...for web servers means including benchmarks for pages with back-end database interaction.

    Nobody is going to pay anyone for either Java or C# for pages which merely serve up static content.

  19. Summary of TFA by jez9999 · · Score: 1

    C#/CLR is much quicker when directly responding to HTTP requests; Java/JVM is a bit quicker when going through the popular web servers / stacks Tomcat and IIS.

  20. Which is better bad or worse? by silas_moeckel · · Score: 2

    The question is would you like to be hung or firing squad neither of them is very good.

    --
    No sir I dont like it.
    1. Re:Which is better bad or worse? by clark0r · · Score: 3, Informative

      it's "hanged".

    2. Re:Which is better bad or worse? by binarylarry · · Score: 1

      I'd totally like to be hung.

      --
      Mod me down, my New Earth Global Warmingist friends!
    3. Re:Which is better bad or worse? by Coisiche · · Score: 2

      I think that statement requires additional qualification.

      The colloquial extremes I have heard are "well hung" and "hung like a budgie".

    4. Re:Which is better bad or worse? by Anonymous Coward · · Score: 0

      The question is would you like to be hung or firing squad neither of them is very good.

      Speaking for all the ladies in my life, past, present and future, I would much rather be hung.

    5. Re:Which is better bad or worse? by Anonymous Coward · · Score: 0

      What man would not like to be hung?

    6. Re:Which is better bad or worse? by Anonymous Coward · · Score: 0

      I think the term for binarylarry is "auto-erotic asphyxiation". ;)

  21. If you want sheer performance.... by prasadsurve · · Score: 2

    C is the clear winner. Maybe that why its 1 number in TIOBE Programming Community Index

    However choice of programming language has a lot to do with what you want to do.
    If you want to create jobs to processing millions of records locally, C/C++ would be better.
    If you want to have secure web based jobs, Java would be better.
    If you want to create Windows GUI applications, C# would be better.

    Basically its horses for courses.

    1. Re:If you want sheer performance.... by Anonymous Coward · · Score: 0

      C is the clear winner. Maybe that why its 1 number in TIOBE Programming Community Index However choice of programming language has a lot to do with what you want to do. If you want to create jobs to processing millions of records locally, C/C++ would be better. If you want to have secure web based jobs, Java would be better. If you want to create Windows GUI applications, C# would be better. Basically its horses for courses.

      I took a comparative programming languages course in college. For the most part it was a waste, but one thing that did strike me as particularly amazing was when we were tasked with doing a bunch of calculations in several languages. FORTRAN77 was an order of magnitude faster, at least for that particular application (can't remember exactly what the calculation was).

    2. Re:If you want sheer performance.... by spiffmastercow · · Score: 1

      order of magnitude faster than C, that is. The difference between it and assembly was negligible.

    3. Re:If you want sheer performance.... by Anonymous Coward · · Score: 0

      > If you want to create Windows GUI applications, C# would be better.

      If you want to create Windows-only GUI applications, C# would be better. Unless you are going to benefit from the fact that your applications work only in Windows, you might want to pick something else.

    4. Re:If you want sheer performance.... by Anonymous Coward · · Score: 0

      Isn't that usually due to automatic parallelization of loops by the FORTRAN compiler? You would need to do this manually in other languages. I don't think any commonly used languages other than FORTRAN have automatic parallelization, because the benefits are limited, and it can reduce performance in some cases. But assembler definitely won't automatically parallelize anything, so it's hard to see how the FORTRAN and assembler performance could be identical.

    5. Re:If you want sheer performance.... by Anonymous Coward · · Score: 0

      Run windows on a virtual machine then. Problem solved. Course there is Mono which runs under Linux. And before someone whines that Mono isn't a fully compatible with C#/.net, Remember despite the coked up ramblings of Sun's departed marketing people, there is no free lunch with cross platform, you're going to pay for that somehow. Either a more limited set of features, or more programming effort.

    6. Re:If you want sheer performance.... by vilanye · · Score: 0

      Fortran is faster than C in mathematically intensive programs. Java can be faster in long running programs because it can compile dynamically, with information a static compiler never will. If you can't understand this, you don't belong in this discussion. Performance is relative. Sure Ruby is almost always a few orders of maginitude slower, but if that Ruby app is IO bound, the fact that you wrote it faster matters more. Even the much maligned ruby on rails can generate a complex page several orders of maginitudes faster than the database can retrieve it and even the time it takes to get a request in. Sure you could write that web app in C, but when it takes you 2 years to do it, and the RoR app took 2 months, what have you gained? Neither will return the page faster than the other.

  22. Nothing to see here by MojoRilla · · Score: 5, Insightful

    This article was obviously written by someone who has no idea what the state of the art is in performance web serving. If you know anything about high scale web technology, skip it.

    Where to start complaining? Don't roll your own http server. You probably don't understand what you are doing, and you will get weird results. Using Windows as a platform for a java web server is pretty silly. The author incorrectly assumes that because the .Net framework is fast, the ASP.net framework will be. That isn't the case. Running load testing on hello world test cases is silly. If you are interested in the real world, try testing with real world applications. The author also doesn't seem to understand that the JVM or .Net runtime will compile bytecode using JiT methods (Just in Time compiling). Finally, if you have skilled developers, it doesn't really matter what language you use. Architectural issues like data storage and caching are much more important than language.

    1. Re:Nothing to see here by Anonymous Coward · · Score: 0

      You failed to read the part where he specifically tested Java on Linux and it performed slower. The only thing the article points out that IIS is bloated & slow.

      And finally, yes it does matter, because there's no such thing as magic. If you force your team to use a bloated or buggy toolset, there's nothing they can do to optimize past it. If anything it shows you wasted company resources because you could have used (cheaper) junior level programmers and got similar performance.

    2. Re:Nothing to see here by Anonymous Coward · · Score: 0

      He tested it on a shared instance remotely vs a dedicated computer where he was running the tests. He should be dual booting to linux using the same hardware if he wants to do any sort of comparison.

    3. Re:Nothing to see here by Anonymous Coward · · Score: 0

      ...and application server memory management.

      Speaking as a performance engineer, the middleware is where capacity gains/losses are made, not necessarily the app layer. It takes a really crappy developer to impact the scalability of a system, if it is designed to be scalable at all. In 16 years, I have only seen JVM/.Net Runtime and DB architecture as bottlenecks, though I admit that most of my time was spent with J2EE.

    4. Re:Nothing to see here by Anonymous Coward · · Score: 0

      The only thing the article points out that IIS is bloated & slow.

      Does it? To me, the article says that IIS + ASP.NET MVC4 runs slower than TomCat+JSP for some really contrived code. If you wanted to say something about IIS performance, you'd need to run comparable code under IIS and whatever other webserver.

      The whole test is pretty silly anyway. The premise is OK, even if it's not "C# vs. Java" as much as it's "framework A vs. framework B" - but the implementation is severely lacking. If you want to say anything sensible about performance, you'd have to do a bit more than "hello world"... like, actually using the frameworks you've pulled in.

    5. Re:Nothing to see here by qu33ksilver · · Score: 1

      Very true indeed. True comparison of languages is really difficult because it depends on a whole lot of other factors which take higher priority while choosing a language. Just because you are choosing the latest stuff like ASP.NET MVC 4 and IIS8 won't make your code run faster.

    6. Re:Nothing to see here by Anonymous Coward · · Score: 0

      This article was obviously written by someone who has no idea what the state of the art is in performance web serving. If you know anything about high scale web technology, skip it.

      Where to start complaining? Don't roll your own http server. You probably don't understand what you are doing, and you will get weird results. Using Windows as a platform for a java web server is pretty silly. The author incorrectly assumes that because the .Net framework is fast, the ASP.net framework will be. That isn't the case. Running load testing on hello world test cases is silly. If you are interested in the real world, try testing with real world applications. The author also doesn't seem to understand that the JVM or .Net runtime will compile bytecode using JiT methods (Just in Time compiling). Finally, if you have skilled developers, it doesn't really matter what language you use. Architectural issues like data storage and caching are much more important than language.

      Thank You.

  23. Summary: by 140Mandak262Jamuna · · Score: 5, Informative
    Test 1: a low level function, usually done by the http server, is written by the user in java and c#. C# beats java handsdown.

    Test 2: A function to generate a "full web site", (actually a simple web page with all the elements and trivial content). Java beats C# hands down.

    Conclusion:

    1. The testing guy has absolutely no idea of how to write low level function efficiently.

    2. The testing guy's idea of a "full web site" is woe fully inadequate. He could have been the guy designing "full continental breakfast" in Roach Motel Inc.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    1. Re:Summary: by Anonymous Coward · · Score: 1

      It seems the 'Real World' is the MTV version.

    2. Re:Summary: by Anonymous Coward · · Score: 0

      So, where are your benchmark tests? Can I see them? Because I guarantee you that whatever test code you churn out, some other idiot will chime in accusing you of having absolutely no idea of how to write that stuff.

      You can be either constructive, and present a better test made by yourself, or you can be a whiner, and complain that others actually did something useful while you failed to do just the same.

    3. Re:Summary: by 140Mandak262Jamuna · · Score: 1

      Probably true. My benchmarks might by sucky, hell, my own coding skills could be sucky. But I am not publishing answers to deep, complex and highly subjective questions based on my simplistic benchmarks. "Real world" does not call a web page without a single hyper link "full web site" for example.

      --
      sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
    4. Re:Summary: by cbhacking · · Score: 1

      Oh, it's even better...
      Test 2: A function to generate a "full web site", (actually a simple web page with all the elements and trivial content). Java using a single JSP on bare Tomcat beats C# using the full MVC4 framework over IIS just to display an ASPX file hands down.
      Emphasis added, obviously. The guy had no idea what he was doing.

      --
      There's no place I could be, since I've found Serenity...
    5. Re:Summary: by snemarch · · Score: 1

      Test 1: a low level function, usually done by the http server, is written by the user in java and c#. C# beats java handsdown.

      ...and even when the Java version has a level of abstraction removed and returns a hardcoded header string, the C# version (keeping it's higher abstraction level) still beats it.

      Test 2: A function to generate a "full web site", (actually a simple web page with all the elements and trivial content). Java beats C# hands down.

      Yup, what he times here is overhead of two very different frameworks, without actually using any of the framework functionality. No reason for that test to be skewed in any way, right? :-)

      --
      Coffee-driven development.
    6. Re:Summary: by Twinbee · · Score: 1

      So do you think he was biased towards C# or Java?

      --
      Why OpalCalc is the best Windows calc
    7. Re:Summary: by shutdown+-p+now · · Score: 1

      Java using a single JSP on bare Tomcat

      Actually, if I read the test description right (it's horribly vague, unfortunately), it was a servlet, not a JSP page. Which means that it's skewed even more.

    8. Re:Summary: by bbn · · Score: 1

      ...and even when the Java version has a level of abstraction removed and returns a hardcoded header string, the C# version (keeping it's higher abstraction level) still beats it.

      The Java version is wrong. When you fix it, it is order of magnitudes better. I have no idea if the C# version was wrong too but it wouldn't surprise anyone. The test is rubbish.

      He admits to be java novice and he made a novice mistake: The Java IO framework is blocking and was constructed so you would have one thread per connection. He failed to do that. He made it single threaded - and that is just wrong. Apart from making the thing slow as a turtle, it would never work in a real application. One hung connection would make his whole server stuck.

    9. Re:Summary: by bbn · · Score: 1

      So, where are your benchmark tests?

      Here is a fixed version of the test: http://pastebin.com/CkJB6h2K

      It is at least 10 times faster and the only likely difference between mine and the original author is that I am using the Java IO framework correctly. I will hand of new connections to a connection pool while he incorrectly runs it all in one thread. His is just wrong.

    10. Re:Summary: by snemarch · · Score: 1

      The Java version is wrong. When you fix it, it is order of magnitudes better. I have no idea if the C# version was wrong too but it wouldn't surprise anyone. The test is rubbish.

      He admits to be java novice and he made a novice mistake: The Java IO framework is blocking and was constructed so you would have one thread per connection. He failed to do that. He made it single threaded - and that is just wrong. Apart from making the thing slow as a turtle, it would never work in a real application. One hung connection would make his whole server stuck.

      Well, sure, nobody in their right mind would make a blocking server that only supported a single client at a time (and I'd argue that nobody in their right mind would use non-async for high-performance work, thread-per-client is ouch). And apparently the class he derived from is known for bad performance.

      Still, comparing the time taken to process a single request is as valid a benchmark as measuring what performance is like under heavy concurrent load. I do agree that on a whole the test is rubbish, and doesn't in any way show what the author believes it does.

      --
      Coffee-driven development.
    11. Re:Summary: by Anonymous Coward · · Score: 0

      What the fuck does a hyperlink have to do with server-side performance?

  24. I don't like the premise. by Virtucon · · Score: 3, Insightful

    "Real World?" If we're all not in the real world then we must be living in imaginary space then. Seriously, I see the C#/Java thing coming down to a matter of enterprise choice vs. performance of the language. You'll find big shops running WebSphere/Weblogic and those running JBoss to deploy enterprise apps. There's still a lot of folks deploying with tomcat, which is a great tool. Microsoft has done well over the past few years in improving IIS / .NET scalability where it now can compete with Java EE deployments. 5 years ago you couldn't say that but now the differences are becoming more narrow. I like Java and use it. I like C# and use it as well. My biggest concerns with both is that largely, they're in the hands of two very large vendors. Java has at least more open push on it but again, Larry Ellison will dictate largely what happens to Java and IMO he'll milk it for every penny he can get. C#/.NET not only sells OS licenses for MSFT but it also gets used as a toy as well.
    It would be really nice I guess if both of these were truly in the public domain as to prohibit Oracle and MSFT from having direct control over how the languages evolve and are licensed.

    --
    Harrison's Postulate - "For every action there is an equal and opposite criticism"
  25. c# vs java by smillie · · Score: 1

    I thought the main reason to use java was to be OS independent. When your web page on Linux couldn't handle the load you could just move your code to a bigger Solaris or IBM box. Or when the PHB says he doesn't trust BSD to be secure he can move it all to Windows.

    I've not worked with c#. Is it multiplatform like java or are you stuck with running it on Windows?

    --

    Dyslexics Untie!

    1. Re:c# vs java by binarylarry · · Score: 0, Flamebait

      You're stuck using windows with C# and web development. ASP.net is not part of the .NET standard, there's been some attempts by the Mono people to clone it but it's not remotely production ready.

      Java is open source and cross platform. .NET is closed source and runs only on Microsoft platforms.

      --
      Mod me down, my New Earth Global Warmingist friends!
    2. Re:c# vs java by cbhacking · · Score: 1

      For simple ASP.NET, you can do fine on Mono (runs on Linux, *BSD, OS X, etc.) and there's an Apache module to use it.
      For pure C#, as long as you don't use the really fancy new features that haven't been implemented yet, the same is true.
      For Silverlight (which can be written using C# and other Common Language Runtime languages, and uses libraries from the .NET framework), there's an official OS X plugin, or a very incomplete and outdated Mono-based one (Moonlight).
      For the new and fancy stuff in .NET, yeah, you're limited to Windows (including, albeit with some restrictions, various flavors such as Windows Compact Embedded, Windows RT, and Windows Phone).

      --
      There's no place I could be, since I've found Serenity...
    3. Re:c# vs java by Anonymous Coward · · Score: 0

      > For simple ASP.NET, you can do fine on Mono (runs on Linux, *BSD, OS X, etc.) and there's an Apache module to use it

      Apparently this isn't a great idea, unless you like fixing bugs in your ASP.NET stack. You're wandering pretty far off into totally unsupported opensource weekend code territory.

  26. Useless benchmark by Anonymous Coward · · Score: 0

    There's no mention of how he did JVM warmup. These benchmarks probably just indicate speed that the JVM and C# runtimes can interpret byte code, which is a very bad measure of performance in production. Also, mention of tuning anything in the runtimes, etc.

    1. Re:Useless benchmark by godefroi · · Score: 2

      The C# runtime doesn't interpret bytecode. It's all JITted before execution. Always.

      --
      Karma: Poor (Mostly affected by lame karma-joke sigs)
  27. This is dumb. by Anonymous Coward · · Score: 0

    The smith makes the tools, the tools do not make the smith.

    1. Re:This is dumb. by Anonymous Coward · · Score: 0

      A skilled craftsman knows not to use substandard tools.

      If you think that the best furniture maker in the world can make top quality furniture with scap wood, a handsaw, glue and sandpaper you are kidding yourself.

      The tools used don't necessarily reflect the skills of the craftsman if and only if those tools are professional grade.

      A craftsman using low quality materials and tools from walmart is a crappy craftsman.

      Just like few skilled programmers use C#, some do though, and no skilled programmer uses PHP, not ever. If you do use PHP you are not skilled, by definition.

  28. Terrible story...wtf editors? by bobcat7677 · · Score: 1

    The tests the author does not even close to a "real world" scenario. The conclusions drawn are meaningless and the article poorly written. I want the time I spent reading it back!

  29. Not real-world performance, this by Anonymous Coward · · Score: 0

    I wouldn't consider timing a few thousand requests from one client during at most a few seconds to be representative for real-world performance.

    Also, the author attributes the speed-up he sees when he repeats the test in the Java setup to optimizations done by Tomcat. It may have been the hotspot compiler being done optimizing, and the word cache doesn't appear anywhere in the article.

    I've seen enough Java programmers looking down on .NET and vice versa based on nothing more than prejudice, and it's always nice to see someone who apparently is part of that divide recognise the other side may have merits. But as a benchmark it's not very useful. I've done enough similar small tests myself, but I've always recognized how limited they are and never felt it was important enough to publish an article about it.

  30. Java HttpServer class by mypalmike · · Score: 1

    I assume the Java HttpServer class used is the one that is bundled with the Sun version of the JVM. This class is not officially part of the JDK and is known to be slow. I am definitely curious about the insanely slow speeds he found. Anyhow, most Java developers who want to embed an http server would turn to Grizzly.

    --
    There are 0x40000000 types of people: those who understand 32-bit IEEE 754 floating point, and those who don't.
    1. Re:Java HttpServer class by VGPowerlord · · Score: 1

      Fun fact: Java has two JVM execution modes: Client and server. Server has more optimizations at the expense of a longer startup time.

      It defaults to the client JVM unless you specify -server on the command line (and you know that's exactly what Tomcat does).

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  31. Not on his connection test by Anonymous Coward · · Score: 0

    He gave appalling numbers on his connection test which hasn't been my experience. So I'm curious why his connection test is so out of wack. Tomcat config perhaps?

    However I take back his C# to Java test, he says he repeated it on Java to Java and got similar results, (but no numbers).

  32. Article missing configuration details by Anonymous Coward · · Score: 0

    As a developer who has been working on Java, J(2)EE apps for well over a decade, I know that the configuration of the JVM and of Tomcat (or other application servers) makes quite a bit of difference on an application's performance. C# and Java are both likely good choices, but the comparison in the article was FAR too simplistic to have any relevant meaning.

    For Tomcat, tuning the number of threads used for processing requests, accept counts, etc. is absolutely necessary. Also, the author did not specify how his database was configured, ie. the maximum number of connections, memory, and so on. If you configure a large number of concurrent requests in Tomcat, where each request fetches data from the database, you may have many threads blocking while waiting on a connection from the database pool. And we haven't even started in on the real-world tools like Hibernate and its caching capabilities.

    JVM parameters are also essential to get right. If you don't assign the JVM enough heap space, or if you don't select the right garbage collection settings, you're setting yourself up for trouble.

    Also the comparison of JSP v. servlet is total nonsense. JSP's are compiled first into a servlet, which is then compiled to a class file - the only difference versus a servlet is that the servlet is precompiled to a class file prior to deployment. So the first request to the JSP will obviously take a bit longer, but then the time to serve pages should stabilize.

  33. Another terrible SlashBI crap post by Bill,+Shooter+of+Bul · · Score: 1

    No graphics, no rigor in method, terrible writing. Dice needs to slap slashdot upside the head to kill these off. They're actually worse than the bitcoin stories.

    --
    Well.. maybe. Or Maybe not. But Definitely not sort of.
  34. Tests don't really tell us anything by Tridus · · Score: 1

    The actual test for a web platform is more along the lines of "how many simultaneous requests can this handle while still giving acceptable performance?" It doesn't matter if one of them can deliver one webpage 10ms faster than the other if it's going to fall apart at 50 requests.

    It's kind of interesting for academic curiousity that Java's HttpServer class is that awful, but these tests don't tell you anything about real world performance.

    --
    -- "So they told me that using the download page to download something was not something they anticipated." - Bill Gates
    1. Re:Tests don't really tell us anything by lattyware · · Score: 1

      You say that about speed, and while in general, I agree, in some cases it really matters - the StackOverflow guys have talked about how they have reduced load time, and how much it mattered to a site like SO - a few milliseconds can loose you a lot of viewers.

      --
      -- Lattyware (www.lattyware.co.uk)
    2. Re:Tests don't really tell us anything by Anonymous Coward · · Score: 0

      I was doing some research into the major web servers for scalability. What I found was Apache over-loaded, got slower and slower until it crashed the system, which was not too long once you load surpassed its max requests/sec. nginx had a very slight degradation in performance once it got past maximum load, the system could effectively continue running until it ran out of memory or hit a logical constraint, but the system remained stable. IIS was pretty much the same, but an even better performance characteristics past maximum load, but not enough to make it clearly superior.

      The one huge benefit nginx had over IIS was it was much easier to configure to get these characteristics, while IIS required fairly advanced knowledge of configuring IIS.

    3. Re:Tests don't really tell us anything by VGPowerlord · · Score: 1

      It's kind of interesting for academic curiousity that Java's HttpServer class is that awful, but these tests don't tell you anything about real world performance.

      Java's HttpServer class is in the "Sun's internal stuff" part of the Java API. In other words, it's not meant for public use and its documentation doesn't appear in the public API.

      Besides which, Java has a separate API for web servers.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
    4. Re:Tests don't really tell us anything by VGPowerlord · · Score: 1

      Whoops, somehow deleted a " right before I posted.

      Public API was supposed to be a link.

      --
      GLaDOS for President 2016! "Well here we are again. It's always such a pleasure." -- GLaDOS, 2011
  35. Batman by Anonymous Coward · · Score: 1

    It's like arguing over whether Batman is a Technologist or a Scientist.

    1. Re:Batman by Anonymous Coward · · Score: 0, Troll

      I've had that argument before. We agreed Batman is a Pedophile and left it at that.

  36. Real World? by ZeroSerenity · · Score: 1

    "But the reality is, almost nobody actually writes a low-level HTTP listener; instead, they tend to use existing HTTP servers."

    Which is the point where I stopped reading since it obviously wasn't real world by his own admission.

    --
    For those who seek perfection there can be no rest on this side of the grave.
  37. Microsoft: Make everything magic with reflection by earlzdotnet · · Score: 0

    This is definitely an apple to oranges comparison as far as the CLR vs JVM because you're not just comparing them. You're also comparing IIS/Apache and MVC/whatever java has performance.

    I suspect that one of the major reasons for C# being slower though is because Microsoft insists on making everything very magical and very fragily tied together with reflection. Why are views not compiled at compile time? No one knows. Why is reflection required to hook views to models to controllers? "because it's cool". Microsoft tries to make their statically typed language work with a pseudo-dynamically typed framework, and it ends up having crap performance(out of the box) as a result

    I actually made an alternative framework("BarelyMVC") because of this. In my framework, I use reflection magic only once, and only because doing it manually is difficult, has no benefit, and has a marginal performance impact. I have staticly compiled views that have nearly no performance impact(it's just string concatenation). My routing engine doesn't rely on transversing folders and searching for specially named classes with attributes, you pass in a lambda to get the model/controller you need. I don't rely on magical attributes and naming schemes for core functionality. Now, of course, my framework isn't as "pretty", but when debugging time comes, it's very clear how everything is connected.

  38. What a bunch of... words. by jbssm · · Score: 2

    Graphs and charts, that brilliant and extremely high demanding tech from the XV century, that still didn't manage to be available to author of the study.

  39. Java by Megane · · Score: 1

    Because when your operating system doesn't come from Microsoft, you can "See Pound Salt" when trying to run C# code.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  40. wall clock time is meaningless by Anonymous Coward · · Score: 0

    The issue with this article -- can't use wall clock time for performance testing. Author needs to monitor CPU time.

  41. About the same by Anonymous Coward · · Score: 0

    In terms of real world performance, C# may be the best (on windows). However, Java and C# are both managed hybrid languages (partly compiled partly interpreted). So in theory the two languages are probably about the same. If you really want to test them out then I'd try a profiler, and see how the code stacks up. I personally stray away from anything .net because it is not well supported on non-windows platforms. However, java has been found to have some serious security holes as of late as well. When planning for the future it's unlikely that you will be able to see how they will be performing a year from now. HTML5, with javascript, and PHP may still be the way to go.

  42. Choosing a Language by RedHackTea · · Score: 5, Insightful

    Today, most of (if not all) the reasons for choosing a language are subjective instead of objective (not objective-c). Languages are so similar (at least the fundamentals, not talking about Brainfuck-lang here) that you pick a language based on the platform it targets or just personal feelings.

    In short, the Microsoft fanboys avoid more Linux-favored languages (and don't even think about Apple languages); Apple fanboys avoid more Microsoft-favored languages; and Linux fanboys avoid more patent-encumbered, closed-source languages and ones requiring to purchase an IDE/etc. for development. All fanboys avoid what they perceive as "diseased languages" like the plague. However, they will still touch these diseased language every now and then because either they have to for a job or out of pure curiosity.

    Being a Linux fanboy, C# is my bubonic plague. This is also in part growing up using Microsoft Visual Studio 6 for C++. For the haters, I actually loved this IDE, but then I found out that none of my code would work on other platforms or even other compilers with Win32 such as Borland++, g++, etc. (we all remember how a variable in a for-loop wouldn't be contained to just that block... terrible). And then when exploring other languages/environments, I couldn't believe my eyes when I could actually see library-level source code -- you have no idea how useful this is. Even though I'll admit that Microsoft has gotten a little better about this (although they still tried to spread FUD using the DroidRage campaign), it's not worth it to me. They've already lost my faith in them as a customer, and I can't see myself ever returning.

    Now, a good study would be to remove all of this and determine what languages are either faster to code in, easier to debug/maintain/extend with enterprise-level code, or more readable. But would this study even be useful? The differences would be so minute. Scripting languages are going to be faster to code in, so what's the fastest scripting language to code in? Object-oriented languages will be the easiest to debug/maintain/extend. As for readability, who knows? It's so subjective. We'd have to get a large, random sample size of people that have never seen a programming language before.

    Having said all of this, I still appreciate this guy doing the study. Apache has always made top-quality code, and it's good to see that TomCat lives up to it.

    Finally, as for sheer speed (and needs to be at least easier than assembly), C will always win.

    --
    The G
    1. Re:Choosing a Language by Anonymous Coward · · Score: 0

      Fortran kicks C's ass!

    2. Re:Choosing a Language by jrmech · · Score: 1

      Finally, as for sheer speed (and needs to be at least easier than assembly), C will always win.

      FORTRAN?

    3. Re:Choosing a Language by rev0lt · · Score: 1

      as for sheer speed (and needs to be at least easier than assembly)

      Using assembly doesn't mean that the code will be faster. In fact, in the x86/amd64 world it would take a very skilled assembly programmer to generate better code than a modern C compiler.

    4. Re:Choosing a Language by Anonymous Coward · · Score: 0

      Pure ignorance.

      A language has no speed. Compilers produce executables that vary in speed when compared to various compilers and compile flags.
      What about C interpreters? Are they magically faster than compiled Haskell, Lisp, etc?
      Assuming you are not a total idiot and knew that you are still wrong.

      Can C see that the loop is going to be run 27 times instead of n times and unroll that loop 27 times?
      Can C tell if a branch will never be called so can eliminate it?
      Can C dynamically inline a function that will always be called?

      No?

      Then C is not always the fastest. Long running Jitted apps can outperform C. Of course C could be compiled to some bytecode and get Jitted as well.

      Can a C web app produce a dynamically generated page faster than a high level intrepreted language can to make a difference? Not on your life. C gains next to no speed advantage in IO bound apps.

      Fortran beats the crap out of C in mathematical applications, which means C can lose in cases of an app being CPU bound.

      Avoid sweeping statements to avoid sounding like an ignoramus.

    5. Re:Choosing a Language by Anonymous Coward · · Score: 0

      Your rant about MS is about 10 years old. MSVC is pretty standards compliant nowadays; it's easy to write advanced C++ that compiles with g++ and MSVC. I'm not sure what you mean about the libraries as I believe source has always been included for the vast majority of the VC stuff. And even if it's not, you can step through assembly code in the debugger with a couple clicks.

      They haven't gotten a little better, they are MUCH better. If you want to hate on MS, it shouldn't be for visual studio.

      PS Also C++ is faster than C. Template metaprogramming can inline stuff that C could not possibly do.

    6. Re:Choosing a Language by RedHackTea · · Score: 1

      A language has no speed. Compilers produce executables that vary in speed when compared to various compilers and compile flags.

      I concede that this is true. If every language used the exact same compiler and produced the exact same optimized output, then we would never need to ask "which is faster?" When I said this, I was referring to the general idea -- which includes the compiler and output -- and for general applications -- non-specific to the web, etc. Maybe unfortunately, language (English) has evolved into using terms to umbrella the things related to it. So for this, I am wrong.

      However, for the general purpose, is C faster than an object-oriented language? Polymorphism, decoupling, and cohesion generally produce slower output. For example, you have 8 classes for each separate, specific task and each class extends A, B, C, and so on. With today's compilers, this produces code that is slower than a straight procedural program. For every class, you must pass the "this" object and do a lookup of the functions/methods. These object-oriented ideas are good and are easier to read/maintain/etc., but with a cost. So for the average program in the wild, I think that C will be faster. As for templates, C has macros that would be the equivalent (which C++ can also do). There are other things too such as exceptions, etc., but I don't feel like writing all of this out.

      And as for scripting languages that are or can be procedural, they of course usually don't produce machine code, and their compilers usually aren't as mature.

      Lastly, for FORTRAN, it's faster for scientific/mathematical data that has a lot of arrays (for matrices), etc. However, for a GUI, it has shown to be slower.

      So again, I go back to the title of this article and how I should have phrased my statement. In the 'real world' with today's compilers and the average programs made, C is generally faster. This is my opinion.

      --
      The G
    7. Re:Choosing a Language by RedHackTea · · Score: 1

      For example, I could never view the C files in the Windows API. Maybe that's changed? I can view them at WINE now, but these are WINE's implementations for allowing Windows programs on Linux. Can I vew the Microsoft implementations for these methods as easily? In C#, can I vew the base library's code? (Not just the declarations.) I honestly don't know the answers here; that's why I'm asking. And yes, I can debug the assembly, but seeing the code at a library level in Java has really saved my ass at times (and one time I found a bug and reported it which actually got fixed somehow... that was back when Sun owned it though).

      I won't go into all of the arguments for why I don't use MS-based languages. I probably shouldn't have brought it up because I don't wish to start a flamewar haha. For the above, all I'm saying is that I got burned, and at one point, I even gave them a 2nd chance. But now, for me, it's over with them.

      --
      The G
    8. Re:Choosing a Language by vilanye · · Score: 0

      Your opinion falls flat in the face of facts. C is faster than most anything most of the time, C is slower than lots of things most of the time, speed is irrelevant most of the time.

      The vast majority of apps are IO bound, meaning the execution speed is meaningless, because even with a slow language implementation, it is going to be fast enough.

      Web apps are a prime example. The time to render a web page dynamically will be orders of magnitude faster than it takes to get the request, send a request to the database, wait for the database to return the data, and send the page to the user.

      We are talking about under 10 ms for rendering the page and several seconds for everything else.

      Desktop apps have similar usage patterns.

    9. Re:Choosing a Language by Anonymous Coward · · Score: 0

      Now, a good study would be to remove all of this and determine what languages are either faster to code in, easier to debug/maintain/extend with enterprise-level code, or more readable. But would this study even be useful? The differences would be so minute. Scripting languages are going to be faster to code in, so what's the fastest scripting language to code in? Object-oriented languages will be the easiest to debug/maintain/extend. As for readability, who knows? It's so subjective. We'd have to get a large, random sample size of people that have never seen a programming language before.

      Python would win this. It's toughest challenge would be in 'faster to code than others'- if you disqualify the ones few or no people use for general purpose uses. Xplatform GUI apps in Ruby for example, using Perl on any embedded device such as RaspberryPi, or Perl webapps. Python is one of the few if only truly general purpose scripting language, thus on another level (beyond single-use toy language).

      Finally, as for sheer speed (and needs to be at least easier than assembly), C will always win.

      This is why the Python+C combo is best.

  43. Java is open source... really? by JcMorin · · Score: 2

    Really? Why do Oracle claim ownership of the code and even the api to company like Google? Threatering everyone who implement their variant of Java? On the other hand most of the C# library have been release the source code and the language is itself fully approved by EMCA and ISO (check wikipedia for reference), something Java is not (Because Java lacks any formal standardization recognized by Ecma International, ISO/IEC, ANSI, or other third-party standards organization, the Oracle implementation is the de facto standard.). .NET doesn't run only on Windows, Mono is project that exist for a while and it's use in many context. You can developer even application for Andriod phone in C#, because the language is open, you are welcome to make a compiler and re-use it everywhere!

    1. Re:Java is open source... really? by binarylarry · · Score: 0

      Virtually all commercial open source projects require copyright assignment.

      Oracle sued Google because Google took over the mobile market with their Java variant.

      No one has been nearly as successful with Mono, so Microsoft hasn't sued yet. Since Microsoft is dropping .NET for future projects, chances are they'll never get a chance to assert their .NET patents against a successful platform competitor.

      --
      Mod me down, my New Earth Global Warmingist friends!
    2. Re:Java is open source... really? by Anonymous Coward · · Score: 0

      Java is GPL'ed.

      > Why do Oracle claim ownership of the code and even the api to company like Google

      Oracle can claim what they like, because they hope to make money ... but the court disagreed with respect to Google, and Oracle lost. So - irrelevant.

  44. Re:Server performance by Anonymous Coward · · Score: 0

    I should have previewed the comment, this sentence is borked:
    "out of 1031 requests for that chain in 8 working hours 2045 requests were processed. It's not a public website, so clearly magnitude is different."
    It should be just 2045 requests in 8 hours. 1031 is number of types of requests that can be processed.

  45. Who cares? by characterZer0 · · Score: 2, Interesting

    So what if there is a 25% different in performance? Hardware is cheap. Software maintenance, administration, and licensing is expensive. The most compelling reason to use Java is that I can run it on Linux. That means I can clone VMs for development and testing, copy OS installations, and ship VMs to customers and resellers without having to spend time and money on licensing and activation. It makes development, testing, and deployment easier to automate when possible and hack when necessary for the small guys that don't have volume license agreements. .NET isn't the problem. Windows is.

    --
    Go green: turn off your refrigerator.
    1. Re:Who cares? by gmuslera · · Score: 1

      This. If the OS they run is relevant then performance won't be as important as being able to run it fully in the OS of your choice because non language factors. Not sure about what real world they speak about, in mine seem to be a big percent of linux servers.

    2. Re:Who cares? by prefec2 · · Score: 1

      Performance is important, as it limits scalability. However, the test does not prove that C# or Java is better suited for anything, as they do not compare framework performances.

      In a side note: Most performance problems come from bad query code. The rest of performance problems result from software bottlenecks, because developers did not consider parallel access.

    3. Re:Who cares? by Anonymous Coward · · Score: 0

      Performance and scalability are orthogonal.

    4. Re:Who cares? by coofercat · · Score: 1

      Dare I be all MBA for a moment?

      Yes, hardware is cheap to buy, but it's expensive to run. Hence, less of it = less operating costs.

      My point is, if you could save 10% of your servers, you could be in line to make serious amounts of operating savings. The fact that those savings aren't in your cost centre mean that they seldom happen - but in enlightened companies where they join all the dots, they do. In those companies, you go back and fix up your code because it's a net cost saving to the company (not just a cost because of the "lost" developer time, as most companies seem to think). That said, if your company runs its entire operation on a half dozen servers, then you're unlikely to be able to decom anything, even if you make giant efficiency gains, so this only really holds true if the application in question runs on a few dozen servers.

  46. Re:are they serious right now? by jasmusic · · Score: 0

    I've run in-process game bots in C# and the effect on frame rate was negligible or zero. C# is industrial strength, you can use it for anything. In fact the next official MS C# compiler is written in C#, plus Exchange Server is written in C#.

  47. Re:are they serious right now? by 0123456 · · Score: 5, Insightful

    Open Office is slow as hell.

    Repeat after me: Open Office is not written in Java, though it uses Java for some optional features. Yon don't even need Java installed to run Open Office, and disabling Java does reduce Open Office startup time since it no longer needs to start the JVM.

    But it's a good meme to keep repeating, because when someone says 'Java sucks because Open Office is slow' and they're not talking about startup time, it's a very good indication that they have no clue.

  48. I'm confused by Anonymous Coward · · Score: 0

    Is it 2003 or 2013?

  49. Apples and oranges by Anonymous Coward · · Score: 0

    Java is crossplatform, .NET is Windows only. Unless you want to lock your business forever in arguably declining platform, you won't be using .NET. Given the rise of non-Intel hardware and Linux it's just not a good practical choice to lock development in Windows.

  50. we've been shipping java supercomputing apps by peter303 · · Score: 1

    for a decade to the oil/seismic industry. 17 years ago we thought we might need to delegate number-crunching loops to C++/C/FORTRAN. But that has proved unnecessary. Java integrates parameter control, graphic GUIs, and debugging. I cringe when I have to maintain some old C++ stuff. 64-bit JVMs have been a godsend, since we routinely create 100GB heaps. We've supported Java on IBM, Sun and Windows platforms. 64-bit Linux on workstations and clusters is the plaform de-jour.

  51. not sure about C#... by nerdyalien · · Score: 1

    but I've been working last year or so on a large Java based web development project for a news media company. This project had to be built around Spring framework due to the enterprise CMS we have bought from another company is using it.

    Not ranting, but giving my honest opinion, I am quite unsatisfied with the overall outcome. Mainly because, development takes quite a long time as every minor change needs maven compiling, which takes ages unless you have a server as your development machine. Even we opted for custom hardware, still servers hangs up quite frequently due to memory leaks and common solution is to allocate more memory. Finally, I find it pretty difficult to get things stable and functional in the staging/production servers, despite things works smoothly on a local machine/development server.

    I don't scapegoat Java language. Once discarded some of the idiosyncrasies (let's face it, all languages has it merits and ugly stuff), I think Java is a nice language to write code. But frameworks are bigger culprits in my opinion. Also some of the early architectural decisions made in this particular project were not sound, and now we are paying a massive price i.e. failed to deliver on time, lot of overtime + cheap pizza, no x-mas bonus, no holidays.

    How are things in the C# world? any better? any worse?

    On a side note:
    I think it is ridiculous to test OO languages for performance, as they never directly talks with the hardware.

    1. Re:not sure about C#... by LodCrappo · · Score: 1

      "I think it is ridiculous to test OO languages for performance, as they never directly talks with the hardware."

      I think this probably says a lot about why you are having such poor results. In this particular case I don't think you would find things any better with C# or any other platform, as the problem is clearly not the language.

      --
      -Lod
  52. The test is unfit to prove anything by prefec2 · · Score: 1

    Modern web-applications are written with frameworks. For Java you use Spring, J2EE, persistence is often handled by a JPA implementation. A relevant test should focus on a test application, e.g., PetStore implemented with the same limits and without hacked short hands (optimization which will not work for normal applications). The use combinations of the technologies, like REST with JSP or REST with JSF and J2EE and JSF etc. Also evaluate different JPA connection with different databases.

    However, the biggest problem in modern applications are badly written DB-queries, which fetch data too often or too large sets and do subsequently DB stuff in application's Java code (sorting, selection etc.).

    While I listed only Java technologies, the same applies for C# even though the zoo of technologies is smaller.

  53. Which back-end is best? by mveloso · · Score: 1

    The better question would be:

    Which back-end is best?

    It'd be complicated to test. Put everything on an SSD, so you've removed I/O latency. Put everything on the same/equivalent hardware with a lot of bandwidth between the parts. Then write different webapps using:

    * mysql
    * postgresql
    * oracle
    * cassandra
    * mongo
    * dynamo
    * etc

    Then you'd have to show the performance of each application at different levels of utilization...that is, after determining what "performance" actually means for a given application.

    That would be a pretty interesting benchmark. Ideally, you'd have multiple webapps, so you could have different usage patterns.

    For extra credit, you'd write the webapp in multiple languages and run them in multiple containers, just to see if the container made a difference.

  54. WebSphere by Anonymous Coward · · Score: 0

    If you want to scale, you use WebSphere. The language doesn't matter - nothing else comes close to the way this beast scales. Develop in Tomcat, deploy on WebSphere.

  55. Start your weighed down engines by Ukab+the+Great · · Score: 1

    Seeing arguments over which bytecode/interpreted language is faster is like see two drivers at a tractor pull arguing which of their machines pulling a multi-ton sled most resembles a ferrari.

    1. Re:Start your weighed down engines by cbhacking · · Score: 2

      Good thing neither of the languages being discussed is in any way interpreted, or has been for a decade or so (actually, never in the official C#/.NET distribution).

      But it's OK, I'm sure that somewhere under that mouth froth you actually know what you're talking about on some subject or other. Just keep searching, you'll find it eventually.

      --
      There's no place I could be, since I've found Serenity...
  56. Re:Microsoft: Make everything magic with reflectio by cbhacking · · Score: 2

    If you think Reflection usage is bad in ASP.NET MVC, you've obviously never seen Spring...

    Also, the "whatever Java has" above is "nothing" because the idiot tested a bare JSP running on Tomcat vs. a ASPX running on top of the entire MVC framework on top of IIS. Yeah, no wonder the perf is going to suck; that's a huge amount of completely wasted overhead. IIS can serve a dynamic ASPX page without any of that MVC garbage just fine, thank you... and with that, get rid of all the Reflection and so forth that, while actually useful in seriously enterprise-y organizations where you want to be able to do things like drop-in replacements of one class for another by changing a single line in a configuration file, are utterly wasted on a trivial benchmark like this.

    --
    There's no place I could be, since I've found Serenity...
  57. Re:are they serious right now? by Mathematiker · · Score: 2

    Dude. Open Office is written in C++. It has some plug-ins written in java, but the main bloat is C++.

  58. Real World benchmark by NecroMancer · · Score: 2

    I was really expecting a "real" real world test.

    I would like to see a head to head between, for example, WebLogic Server with Oracle DB vs. .NET IIS with SQL Server.

    The test as is, IMHO, is crap.

    1. Re:Real World benchmark by Shag · · Score: 1

      Oh, and if it's supposed to be 'Real World,' the servers shouldn't be running Windows. ;)

      --
      Village idiot in some extremely smart villages.
  59. Re:are they serious right now? by medv4380 · · Score: 1

    A lot of your opinion has been shaped by early java developers who insisted on Synchronizing everything, and that made a lot of it run very slow. Most of that has been addressed, and the speed difference between 6 and 7 is clear. I believe, C# doesn't have the escape analysis that is in Java7 that allows it to bypass the heap and allocate some things on the stack instead. That is probably the core of the speed difference, and his first test using HttpServer isn't testing java but rather JNI code that has been neglected for a long time. Its most likely a variant of C and not really Java. A lot of your Java Games are running in the browser as an applet and are severely limited by the Browser. They'd run a lot better out of the browser as a WebStart app or just a regular Application. Java also lacks access to Direct X or any Good OpenGL out of the box. There are some good addons that you can get like lwjgl, but no good ones with a standard JVM. However, I've had more issue with using product based on .NET in production environments. My company has a server that the first request after it's gone to la la land results in a very long wait for the first result because it's based on .net. There isn't a real fix other than making a cron job that hits the server once an hour to make sure that .NET never starts unloading itself from memory. I could always try to convince them that we could just build a better one in house, but that's time and money already spent on the neurotic server. Which one is best depends on the skill set of the developer.

  60. Microsoft makes Windows as weak as possible. by Anonymous Coward · · Score: 0

    Not kidding. Microsoft makes Microsoft Windows as weak as possible, apparently, to make more money selling new versions.

  61. Neither by borgasm · · Score: 2

    I ran a similar test like this when I was having performance troubles with one of my QA apps.

    I had written it in C# because I was bored and wanted to explore the language a little bit. I ran into issues with threading and performance when ramping up TCP connections and data processing.

    I did a line-by-line rewrite into C++ (seriously, I copied the source and translated each line)....and all my performance problems went away.

    In my experience, both Java and C# are easy to write, but abysmal when it comes to performance.

  62. Oracle evil Vs. MS evil by Tablizer · · Score: 1

    I don't trust Oracle any more than I trust Microsoft. I'll agree that C# started out more proprietary in flavor, but that doesn't mean it will end up that way.

    1. Re:Oracle evil Vs. MS evil by erice · · Score: 1

      I don't trust Oracle any more than I trust Microsoft. I'll agree that C# started out more proprietary in flavor, but that doesn't mean it will end up that way.

      Are you expecting C# to become less proprietary or Java to become more? And you are quite right to not trust Oracle. The worst thing to happen to Java was giving it to Oracle. Sun wasn't perfect but they meant well.

  63. I expect little difference by Captain_Chaos · · Score: 1

    Before reading the article, my prediction would be that there is little difference, but that Java edges slightly ahead. They are extremely similar languages, used for very similar purposes, both compiled to "interpreted" bytecode, and there are only so many ways you can optimise compiling and executing bytecode which surely by now are in use by both camps. But Java is older and has had more time to be optimised, and there is more competition between different VM's, which is why I would expect slightly higher performance from it. Let's see if I'm right...

  64. Re: emacs vs. vi by Anonymous Coward · · Score: 0

    Please plase please - bring back the vi vs. emacs fights. I need
    some thing to entertain me during my retirement.

    Thank you very much

  65. WTF? by Cyberax · · Score: 1

    Whiskey Tango Foxtrot? The author ineptly reimplemented a non-threaded HTTP server in Java and wonders why his "two classes" do not work well. Please, learn how real Java webapps work - install Tomcat or Jetty and create a simple servlet. Then use "ab" (Apache Benchmark) tool to measure its performance.

  66. The second test is pretty bunk. by Slime-dogg · · Score: 1

    This is a really strange article. MVC vs. JSP / static content is not apples to apples, like the first test was.

    When you return a view, it isn't static content. Making a call to a controller is also not the same as serving up an HTML page - the controller is instantiated, the action is invoked, and depending on the type of action, a model could be instantiated and bound. It isn't like creating a simple ASP.NET page that has "Response.Write" in the page load, since the ASP.NET page itself is much closer to what a JSP page is.

    There isn't really a circumstance for static HTML in ASP.NET, since it all gets rolled into a Response.Write method in the end. I imagine a JSP page does the same thing, and on both ends, the resulting HTML gets cached. This would be the "optimization" he's witnessing from Tomcat. ASP.NET does the same thing.

    You'd have to do some stuff in Java to get to the MVC level of complexity, and not just use Tomcat. Vanilla ASP.NET is a more appropriate tool for comparison. As noted in an above comment, you'd probably have to compare ASP.NET MVC to Spring.

    Hell, classic ASP performs better than ASP.NET MVC.

    --
    You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
  67. Judging a language by outcomes by WaffleMonster · · Score: 2

    While not very fair I've always tended to judge languages by their outcomes in terms of usability. From freeware utilities to products from large vendors, to websites using certain three letter extensions there have been certain recurring themes I have noticed throughout the years. Perhaps it is all expectation bias or a reflection of the culture of people who would use certain tools.. I won't pretend to know.

    Is it fair to blaim PHP for SQL injection vulnerabilities found in PHP apps?

    Is it fair to blame Java when an application outputs a stack trace and keeps on truckin as if nothing just happened?

    Is it fair to blame Java when an application is as slow as a drunk snail or consumes mind boggling amounts of memory?

    I think in the aggregate it might be possible to make the case for the quality of a programming language based on certain properties of a large sample of resulting programs.

    What is the most interesting to me is the disconnect in effort spent by language designers to produce these modern languages and actual resulting outcomes. Why is ancient C(++) still soo popular and what gets used to write all of the core software? Why do we still have operating systems, network stacks and web browsers built in C when we have all of these superior languages with all of their holier than thou ivory tower labled features?

    When is a _general purpose_ language going to come along that actually enables people to get amazing results which would not otherwise be feasible without the use of said language?

    Who wouldn't cringe if they found out the latest version of their favorite browser had been rewritten in Java or .NET? In my view all TFA is doing is comparing the realitive intelligence of two mentally challenged competitors. I actually like both languages...NET somewhat more than Java. I just tend to not like the resulting program that comes out the other end.

    1. Re:Judging a language by outcomes by Anonymous Coward · · Score: 0

      It is always fair to blame PHP as it is a shit language for shit amateurs.

  68. He should consult someone who can write Java-code by bbn · · Score: 1

    If the author will not publish his source code I will: http://pastebin.com/CkJB6h2K

    This is a 32 line Scala program. Yes Scala instead of Java but it is based on the exact same SocketServer that the author claims his program uses. It will sit there and listen for a connection, then do a simple imitation of HTTP. It even optionally supports HTTP Keep Alive.

    Now to the test. I use the Apache AB tool: http://httpd.apache.org/docs/2.2/programs/ab.html

    First without using -k (keep alive):

    baldur@neaira:~/tmp$ ab -c 4 -t 10 -n 1000000 http://localhost:5555/
    Time taken for tests: 10.000 seconds
    Complete requests: 136991
    Requests per second: 13698.99 [#/sec] (mean)

    So about 13,000 requests per second processed on my old laptop. The author did 2000 requests in 2687 ms = 1344 requests per second or about 10 times slower than my program.

    Lets try again with Keep Alive enabled:

    baldur@neaira:~/tmp$ ab -c 4 -t 10 -n 1000000 -k http://localhost:5555/
    Time taken for tests: 10.000 seconds
    Complete requests: 692424
    Requests per second: 69242.23 [#/sec] (mean)

    So now we are doing 69.000 requests per second or 50 times faster than the authors program.

    It might be that my old laptop is 10 or 50 times faster than the setup the author uses. But somehow I do really not think that is it. I think it is extremely likely that the author is a .NET programmer that has insufficient knowledge of Java to code this simple test correctly and that his program is simply wrong. More specifically I suspect that he did not know that you need to use a thread pool to process the connections, or if he did use one, that he used it wrong.

  69. Please stop splitting your sentences by Anonymous Coward · · Score: 0

    Into different page elements.

    It harms readability.

  70. c or c++ by Anonymous Coward · · Score: 0

    Now compare it against C and C++
    lets see the winner there...

  71. fast enough, for you, old man. by Anonymous Coward · · Score: 2, Insightful

    I can't speak to C#. But I've written code for a financial exchange in Java with p50 response times around 100 microseconds. p99's are tricker but were still sub millisecond (mostly due to the GC, however we were moving toward zero GC's). Having said that, most developers who write Java would have balked at the unsavory things we had to do to achieve that speed.

    I believe we undervalue the effect of the culture associated with languages. My experience is a lot of Java code is utter crap because the community is self reinforcing of bad ideas. I suspect that competent and motivated developers can take either Java or C# or C++ or whatever and make them fast.

    I think in the end the system should have written the critical path in C as it has the right level of abstraction needed for low latency. Java or any other relatively high level language is great for supporting systems.

  72. who are you and where is roman_mir? by Anonymous Coward · · Score: 0

    That message was not written by roman_mir, but rather by someone who has compromised his account. There is no way that he could possibly write a message that long on slashdot without religious docrine inside of it - even if a large part of it is just server response lines.

  73. The same language by Simon+Brooke · · Score: 0

    Java and C# are not different languages. They are the same language - much more similar than, for example Medley Common Lisp and Franz Allegro Common Lisp, and those are two implementations which both conform to the same published specification. Java and C# have very slightly different syntax, and slightly different core libraries. But if you can read (or write) one you can read (or write) the other. The compilers work in very much the same way, and even the object code and virtual machines are similar.

    Which isn't surprising. Microsoft based C# on its own implementation of Java, changing it (only) just enough to get around legal problems with Sun. It's a very sincere flattery. C# is slightly newer, so it has slightly less legacy cruft. Apart from that, you are comparing apples with apples here. If you want a more interesting comparison, compare Java/C# with Ruby, Python, Lua, JavaScript/EcmaScript or Clojure.

    --
    I'm old enough to remember when discussions on Slashdot were well informed.
    1. Re:The same language by shutdown+-p+now · · Score: 2

      They used to be mostly the same language, but that was somewhere circa 1.0. C# has developed much faster since then, and has a lot of things that have no direct equivalent in Java, like yield, lambdas, LINQ, dynamic or async/await.

  74. Caching by tlambert · · Score: 1

    I agree that for large sites language is not necessarily important. For most large media sites performance is mostly dependent on how well the caching structure is set up. You only hit the servers as often as you need to update the cache. The traffic is served from a combination of varnish/squid and some CDN (akami). If you are serving customized information (billing,user accounts,product catalog) then you may start to talk about load and language performance.

    Any ad-serving has to be done "Cache-Control: no-cache" or "Cache-Control: max-age: 10" (or similar small number of seconds), or you simply aren't going to be able to sell ad views. The GMail main pages, the FaceBook main pages, and basically anything where the revenue model is ad-driven (e.g. all newspapers online, etc.) don't cache their front page.

    What they do serve out of cache is the CSS, page templates, and a small amount of static content unrelated to their primary reason for living, which is the dynamic content.

    In addition, session content is typically not cached, which means that any content dependent upon cookies, hidden fields to get around people turning off cookies, flash super-cookies, and so on, are also not caches, unless you are running an L3/L4/L7 cache, and have session communication between your cache and the back end server on a per request basis. This does not happen a lot, since it ties a site to a particular cache vendor, such as RedBack, Cisco, F5, etc., and each of these vendors is unwilling to have a standard cross-vendor means of doing this because they specifically want the site to experience vendor lock-in, rather than commoditizing themselves.

    The session content is the content which is generated and regenerated each time. You can amortize this by having longer session TTL's, but for something like a news site, it's generally easier to re-gen the session from the cookie than it is to keep content alive, and keeping cached content alive. Generally these sites are high connection volume, low refresh rate (assuming people actually *read* your static content), so what gets refreshed are the frame contents for the ads, not the per session information.

    This leads to a "work-to do-engine model", where the server handling the session from one request to the next moves around (typically, this is done by using the load balancer in "one-armed" mode so that HTTPS sessions can be maintained, but the response can be fielded by any back end server in the pool). So the Connection: header and HTTP 1.1 persistent connections aren't enough to hang your session data cache on.

    So all this boils down to back end server performance being an issue.

    At which point, you have two choices: use a compiled language, or use an interpreted byte code language like Java or C#.

    The compiled language gives you the best performance, so that means as you scale, you need to throw less hardware at the problem of having enough back end servers (or if using a cloud provider like Amazon, you end up paying them less for virtual servers).

    The byte-code interpreted languages are generally easier to manage development on with relatively unskilled labor compared to the compiled languages (the languages are designed to try to preclude as much foot-shooting as possible), and have rather rapid turnaround compared to compiled languages, should you need to make changes. The trade off is that you are going to be throwing proportionally more hardware at the problem in order to scale up. At some point, it's going to start getting really costly, and you are going to be transcoding your byte code and/or rewriting your code to get it into native code instead of bytecode (FaceBook went through this transition by writing a compiler for PHP, in which they originally wrote the site, and it was an expensive, technically meticulous process, which mean that they had to hire top people to do it).

    As to picking Java vs. C#, if you aren't expecting to need to scale, and expect to remain a relatively smal

    1. Re:Caching by shutdown+-p+now · · Score: 3, Interesting

      At which point, you have two choices: use a compiled language, or use an interpreted byte code language like Java or C#.

      Neither Java nor C# are interpreted on heavy loads, they both JIT-compile, and they both have options (third-party) to compile to native code ahead of time.

      The difference in performance between C++ and Java/C# has nothing to do with bytecode, and everything with their semantics. Their object model requires a GC - that's extra overhead. Their arrays are always bounds-checked - overhead. Class instances are always allocated on the heap (except for C# structs, which are rather limited in what they can do) - overhead. And so on.

  75. McDonald's is hiring! by futhermocker · · Score: 1

    Word of advice to tester: please switch career.

    --
    KERNEL PANIC -SIGFAULT AT ADDRESS #51A54D07
  76. Java The Movie by devent · · Score: 1

    I just care for one benchmark: Who is making the better movies?
    http://www.youtube.com/watch?v=ALIkp1wkeDs

    --
    http://www.mueller-public.de - My site http://www.anr-institute.com/ - Advanced Natural Research Institute
  77. Hard to judge without the configuration by Anonymous Coward · · Score: 0

    My biggest question is: which modules is the ASP.Net app using? If it is serving up a single string but running with the default set of HttpModules, there's a lot of unnecessary processing going on. But it's not detailed, so it is hard to say if the test is a fair one or not.

  78. Re:are they serious right now? by Anonymous Coward · · Score: 0

    I do not believe that C# does the escape analysis like Java 7, but C# allows developers to directly place objects (anything declared as a struct) onto the stack.

    Just taking a poke in the dark, but you probably want to disable the recycling on your server, which should avoid the cron job needing to run. The server is trying to unload the application to cleanup, and when it gets reloaded by a future request, then it forces a recompilation. Relatedly, if the code can be compiled (into a DLL rather than dumped as files onto the server), then it should help ASP.NET from having to also compile the code upon first request as well before even being able to do the JIT.

    http://stackoverflow.com/questions/5889284/prevent-iis-from-unloading-asp-net-site

  79. Re: emacs vs. vi by shutdown+-p+now · · Score: 1

    nano

  80. Duh. by wcrowe · · Score: 3, Insightful

    Well gee, let's see. I can definitely say that C# programs do not perform as well on OSX, Linux, or IBM I.

    --
    Proverbs 21:19
  81. Re:are they serious right now? by Anonymous Coward · · Score: 0

    Java sucks because every client application which depends on it has a huge amount of latency. The JVM takes forever to start, it randomly garbage collects and until JIT kicks in, it behaves like a scripted language.

    Who knows how many millions of man-hours were spent by Sun on the JVM, and it still doesn't perform well because it's broken by design. Also, the language itself is ridiculously verbose. Java is the modern day equivalent of Cobol, which should never have gained traction in the first place.

  82. C / C++ by loufoque · · Score: 1

    C and C++ are the language that perform better.
    Why isn't it used more? It's because performance is not the most important thing in web development.

    The most important thing in web development is the ability to get cheap coders with no skills, that can re-use existing libraries to do the trivial things that are needed of them.

    1. Re:C / C++ by rev0lt · · Score: 1

      It's because performance is not the most important thing in web development.

      Usually, performance at language level isn't relevant at all, except in some key components. Flexibility and how well you can translate the business logic into obvious, compact and maintainable code without having to implement trivial stuff over and over again. A good example is multibyte string support, and I'm shure you can easily find others.

      that can re-use existing libraries

      You _do_ know that every available function in C or C++ is from an existing, external library, right?

      to do the trivial things that are needed of them

      Preferably without buffer overflows, strange crashes without any useful information whatsoever and without trashing the memory and/or stored data. And delivered on time.

    2. Re:C / C++ by loufoque · · Score: 0

      The set of disparate C/C++ libraries is completely incomparable to comprehensive frameworks as provided by Java or .NET.

    3. Re:C / C++ by Anonymous Coward · · Score: 0

      Show me something included in Java that isn't in Qt. And don't go pulling in some other library, since you just claimed it should be provided by Java.

  83. Which car starts faster? by alannon · · Score: 1

    While I favour Java somewhat over .NET/C# and this 'test' supports my favourite, I just want to point out that this test is entirely useless. To fall back on the well-worn car analogies, this is like testing which car starts up faster. Who cares, if you never go anywhere? So, the Java server takes a quarter millisecond to processes an empty request compared to one millisecond. Who cares, if you're not actually processing anything in the request? The difference would be lost in the noise of any real-world test.

  84. To be honest... by Anonymous Coward · · Score: 0

    Whales are everywhere! RUN! RUN FOR YOUR LIFE! If you don't heed my warning, you'll find a gerbil hanging out of your ass and a giraffe trying to gum your pecker.

  85. Don't forget developer performance by elabs · · Score: 1

    Working about half of the time in Java and half in C#, I find I am far more productive in C#. I can get the same job done in C# with a fraction of the effort and lines of code because of things like properties (and short-circuit properties), LINQ, async/await, TPL, true generics, structs (and user value types), ref/out and many more language improvements that C# has over Java.

  86. Real World? by Jo+Inge+Arnes · · Score: 1

    The experiment can hardly be called real world.

  87. Java vs C# by Anonymous Coward · · Score: 1

    Java applications runs on all Operating Systems and Hardware. Does C# run on smartphones, OS X, Linux, Android, tablets, etc?

  88. Sad winner JAVA by Anonymous Coward · · Score: 0

    With all the problems that Java has, about obscure security holes never to be patched because THEY do not really want to fix them

    If you disable JAVA ..... taadaaa......MICROSOFT SKYDRIVE ask you for java script!!!!

    common!!!!

    What is the next step at microsoft headquarters..... to suddenly steal java and javascript manuals?????

  89. Re:are they serious right now? by Anonymous Coward · · Score: 0

    "Open Office is slow as hell"

    Actually, if you pre-load the
    ooffice modules it runs just as fast as MS Office (Word, Excel..)

    Timed on a Win7 laptop: 7 seconds each

  90. The question is fast to write not fast to run by iceco2 · · Score: 1

    When I have something performance sensitive I can always work hard to optimize it, and even switch to a different platform
    for some small part of the project.
    The question therefor is not how fast can I write it, but how easy is it, this has a lot to do about libraries and tools but language makes a difference too.
    The JVM environment is an excellent environment to work in, with a plethora of excellent libraries and tools (including the Tomcat server).
    Yet the Java language is falling rapidly behind, and C# is rapidly gaining new bells and whistles while Java is stagnating,
    I find it mind buggling Java 7 doesn't have lambda expressions.
    That's why I have switched to Scala which gives all the good of the JVM in a modern functional yet object oriented language
    giving me all the protection of a strongly typed static language yet with minimal boilerplate reminding me of dynamic languages.

  91. Malicious vs Non-Malicious Use by CyberNigma · · Score: 1

    Well, obviously there are at least two directions one can approach this question.

    From the malicious user's standpoint, Java has been outperforming C# by a very large margin and will probably continue to do so.

    1. Re:Malicious vs Non-Malicious Use by CyberNigma · · Score: 1
  92. Detailed performance isolation in *nix by BoardHead007 · · Score: 1

    This benchmark doesn't isolate C# and the Java components and then measure them. This is relatively common place on Windows with VS and Perfmon. How would you do this level of detailed analysis on *nix. What are the best tools to measure and track the fine grained resource utilization, examine queues, and perform call profiling of code? IMHO the standard mechanisms for JMX are very resource intensive and significantly impact any code performance at load.

  93. The best language for web based apps by Anonymous Coward · · Score: 0

    is Forth. There I solved all your problems, now, my sad little ants, get on with your lives.