.NET vs. Oracle's Java PetShop Benchmark Round III

Discussions

News: .NET vs. Oracle's Java PetShop Benchmark Round III

  1. At JavaOne in March, Oracle and Sun announced new Java Pet Store benchmark numbers showing a revised J2EE-based Pet Store beating the .NET Pet Shop in performance. Last week VeriTest conducted an audit of the latest benchmark data, and re-tested the .NET Pet Shop using Oracle's load test scripts. The .NET Pet Shop was found to be faster.

    Check out http://www.gotdotnet.com/team/compare/veritest.aspx

    Microsoft's new VeriTest-conducted testing of the .NET Pet Shop using Orace's own published Mercury Interactive LoadRunner test scripts finds the .NET Pet Shop outperforming Oracle's latest published benchmark numbers by a factor of 10. Furthermore, VeriTest found the Oracle-published data itself to be invalid.

    Also, despite Oracle's revision to the Java Pet Store application to make it faster, the code count remains the same. The .NET Pet Shop is implemented in just 1/4 the code (75% less code) using .NET with C# in a fully factored, three-tier design pattern based on ASP.NET Web Forms.

    Threaded Messages (220)

  2. LOL @ Greg

    "just gotta try a little harder" nana na nana
  3. We all know that .NET is better than J2EE.
    It's newer. It adresses all problems J2EE had for years.
    It's native to OS (means faster by it's nature).
    It has better Dev.Tools (.NET Studio)
    Finally - it performs better (As we can see from this article)


  4. What would be really interesting in this thread is to see if it is possible to conduct a reasonable technical discussion - rather than a flaming competition.....

    To start things off on the right foot:

    Vagif, can you please expand on the following:

    "It adresses all problems J2EE had for years"
    What J2EE problems does .NET address specifically?

    "It's native to OS (means faster by it's nature)."
    Given that the CLR is very similar to the JVM (both execute native code - its just a difference as to when the JIT kicks in...), what features do you refer to specifically when you say "by is nature"?

    Regards,
    Nick
  5. Nick Minutello,
    I have worked in Java and now working on VB.NET, I have spend many times figuring out the problems like,
    VB does not force you to write return statement in Function and if you forget, it just return default value for the return type, many times I have spend hours debugging this.
    Also when you call a function like
    myVariable = MyFunction()
    If you write it like this
    myVariable = MyFunction
    code may compile(not consistent behavior) but the function will never be called.
    I can write lot of such things.
    Anil Patel

  6. A couple of things which people may find interesting (if they are reading up on this).

    This is the link to the Oracle paper documenting the testing results:

    http://otn.oracle.com/tech/java/oc4j/pdf/9ias_net_bench.pdf

    This is actually part of the OTN Java Center, which also has the test scripts, etc.:

    http://otn.oracle.com/tech/java/oc4j/content.html

    From reading both the Oracle and Microsoft/Veritest information, it does seem that Oracle is maybe playing a bit "loose" with their testing configuration (no checking for error conditions, reusing established connections, etc.) Whether the comparison between the .Net and J2EE PetStore versions is even valid is obviously another (very long, already done a couple of times) conversation, but Oracle doing stuff like this to bump up performance figures doesn't really set a good precedent.

    Mark



  7. >Vagif Hagverdi on May 28, 2002 in response to this >message.
    >We all know that .NET is better than J2EE.
    >It's newer. It adresses all problems J2EE had for years.
    >It's native to OS (means faster by it's nature).
    >It has better Dev.Tools (.NET Studio)
    >Finally - it performs better (As we can see from this >article)


    I don't know about your experiance in .NET, But I am working is last 9 months, As per me. In comparison to Java and J2EE, .NET has long way to go, Espacially stop shipping VB.NET The Toy.
  8. <quote>
    We all know that .NET is better than J2EE.
    </quote>

    Yes, and MSFT code quality is unparallelled:

    "A senior Microsoft Corp. executive told a federal court last week that sharing information with competitors could damage national security and even threaten the U.S. war effort in Afghanistan. He later acknowledged that some Microsoft code was so flawed it could not be safely disclosed."

    --
    Dimitri
  9. LOL !!! :))))
    unfortunately it reminds me DCMA. and then I don't want to laugh anymore :((

  10. <quote>
    He [a senior Microsoft Corp. executive] later acknowledged that some Microsoft code was so flawed it could not be safely disclosed.
    </quote>

    That's OK because Microsoft's 'solid' security record
    speaksfor itself :-) ... security holes are discovered almost daily.
  11. <quote>
    That's OK because Microsoft's 'solid' security record
    speaks for itself :-) ... security holes are discovered almost daily.
    </quote>

    Indeed. Here is another one. It looks like "Trustworthy Computing" is not quite here yet.

    --
    Dimitri
  12. r you sure it's OS native? what about that CLR buzz? I don't have any .net experience, but from what I heard, I'm pretty sure that c#, vb and others are compiled to the CLR and executed in a virtual machine. did I get it wrong?

    as for dev tools, what else does one need when s/he has IDEA and ant?

    Cheers,
    e.
  13. We all know that .NET is better than J2EE.

    Just curious who "We all"???
  14. We all know that J2EE is better than .NET.
    It addresses all problems Microsoft Windows had for years, since their beginning.
    It's NOT native to OS (means you keep the competition on the market, you don't produce money only for Microsoft ).
    It has better developers than the virtual-visual-programmers better named drag-and-droppers. There will exists in the same time something different than "Microsoft Certified Developer" p...
    It's a real server technology which runs on real server platforms and using real standard implementations layers.
    I think is time to finish with this Microsoft "religion" ... please remember the middle age what happened when the Catholic Church tried to show that they are the best and unique :
    they released "Inquisition" ... maybe Microsoft wants to be the Catholic Church of Computer Engineering ....
  15. If you're *that* concerned about performance, why not implement your application entirely in c? Maintainability first, performance second. For example, if I'm not mistaken, the .NET implementation utilizes stored procedures. This decision trades off maintainability and portability for performance.
  16. "If you're *that* concerned about performance, why not implement your application entirely in c? Maintainability first, performance second. For example, if I'm not mistaken, the .NET implementation utilizes stored procedures. This decision trades off maintainability and portability for performance. "

    Well, C# code is still very maintainable. There isn't anything you can't do in it that you can do in Java. In fact, things like properties make even more sense, taking the knowledge of R++. Of course C# and .Net are newer. I don't blame nor knock Java at all. But even without the stored procedures, ado.net is still the same as jdbc. In some cases it's better. I think it's important to note that there is a tool for the best job. Java I think still wins by far in the scalability and featureful application server race. It's just a matter of perspective. For small to medium applications, .net rules. For larger apps, I'm not so sure. Java also has a great, tried-and-true foundation in place - something .NET can't realize until it has matured for a few years. So this is why larger applications using code generators and round-trip tools will probably be used with j2ee on large applications until .net hits a market tornado of some kind. For java folks, we hope that day never comes and if it does, we have to be prepared for it =)
  17. "Well, C# code is still very maintainable. There isn't anything you can't do in it that you can do in Java." OK. How about run on a non-M$ platform?
  18. <quote>
    "Well, C# code is still very maintainable. There isn't anything you can't do in it that you can do in Java." OK. How about run on a non-M$ platform?
    </quotE>

    First of all, running code on a non-MS platform has nothing to do with maintainability. Second of all, there *is* a few open-source implementations underway on the CLR and the .net class libraries. Give it time - just as in the same way java was not available officially on freebsd, but now it will be.
  19. <quote> Second of all, there *is* a few open-source implementations underway on the CLR and the .net class libraries. Give it time - just as in the same way java was not available officially on freebsd, but now it will be.</qoute>

    If and when it is available it will be Linux.Net. And .Net (MS.Net and Linux.Net) will be the Unix(and probably not even that close) of programming platforms.
  20. not true
    check out the Mono project, it an open source, Linux-based version of the Microsoft.NET development platform. Incorporating key .NET compliant components, including a C# compiler, a Common Language Runtime just-in-time compiler, and a full suite of class libraries
    http://www.ximian.com/devzone/projects/mono.html
  21. Is it true that ASP.NET, ADO.NET dan Winforms are the IP of MS and no other company/org can implement these components/lib without the consent of MS? I read about this somewhere. If so, then, Mono MAY be able to implement them, but definately, not without some significant risk involved. MS could cut these components from any .net implementation such as Mono without any black and white. And what's a .net implementation without these core components?
  22. My understanding is that Microsoft hasn't even released the information about how the parts published by ECMA can be licensed from Microsoft, even though it's well past the period that they were required to do so. It would seem you can't even implement the Microsoft "specs" yet legally.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  23. <quote>
    check out the Mono project, it an open source, Linux-based version of the Microsoft.NET development platform.
    </quote>

    Steve Ballmer, Microsoft's CEO:
      "Linux Is Top Threat To Windows"
      "[Linux is] a cancer that attaches itself in an intellectual-property sense to everything it touches."

    Jim Allchin, Microsoft's Group VP (Windows OS chief)
      "Open source is an intellectual-property destroyer, I can't imagine something that could be worse than this for the software business and the intellectual-property business."

    Clearly, Microsoft is very interested in open source .Net on Linux ... ;-)
  24. The entire problem with .NET is that it is not cross platform. They make loads of money from customer tie in and forced upgrades.

    The entire joy of java is that it is cross platform - I can use ms op systems (and do for good reason), and I can deploy to Unix (and do, for historic reasons).

    PC power is increasing, I am very aware of this. Unix OS vendors must be wetting themselves. Currently Microsoft will be the default winner for consumer and server boxes, which means .Net will end up running on the only platform out there. This is maybe 5 years off, but I see NO ONE working to compete with MS on the 25GHz PC's that will be about.

    So 5 years from now, java will be 11 years old, and outdated. .Net will be everwhere (in its eventual form), and will be a winnder running on Windows WeOwnTheWorld OS.

    Anyone know what will stop this happening?

    Jonathan
  25. <quote>
    So 5 years from now, java will be 11 years old, and outdated. .Net will be everwhere (in its eventual form), and will be a winnder running on Windows WeOwnTheWorld OS.
    </quote>

    Jonathon -
    I think you assume that one part of the market will stagnate and the other will continue to improve. Remember that Unix/Linux is just an OS - and its an OS that can and does run on PCs quite well. I agree that in 5 years, java will be 11 years old - but hardly outdated. It's a platform that has a tremendous amount of room for growth and a wide variety of avenues for future development. In 5 years .Net will be 5-6 years old. In 5 years I still can't see a reason to run an all Microsoft stack.

    Cheers
    Ray
  26. "Anyone know what will stop this happening? "

    Yes. MS is stopping it themselves.

    How?
    1. By leaving Classic VBers and VBAers in the lurch.
    2. By their new licensing agreements.

    Day after day I see articles of companies and governments moving to Linux (from Windows and Linux) or at the least making them available. In the last 2 days there have been anouncements from Germany and Tiawan. There is a stiring within the US government also.

    Maybe Mono.Net will be working by then (working includes free of licensing issues), but that is fine with me.
  27. You fail to mention the fact that the code is 1/4 of the J2EE code. That means less code to maintain and yet better performance on top of that. I think what we see here is the inability of J2EE people to realize that .Net may have some virtues to be taken seriously. They are getting better performance with less code in a better development environment. And you don't have to pay $10,000/cpu for an app server!
  28. <quote>
    You fail to mention the fact that the code is 1/4 of the J2EE code. That means less code to maintain and yet better performance on top of that. I think what we see here is the inability of J2EE people to realize that .Net may have some virtues to be taken seriously. They are getting better performance with less code in a better development environment. And you don't have to pay $10,000/cpu for an app server!
    </quote>

    If someone were to write the pet store as an optimized application the code would likely be less and the performance would likely be better - but so what? I can't take .NET seriously because it doesn't work and won't work in any of the heterogeneous hardware and OS environments in which I develop. J2EE does -- right now. And since the J2EE market has something called competition, no one has to pay $10K per CPU! And if I get tired of a vendor, I can go to another if I choose. I can't speak for everyone, but these meaningless comparisons offer no compelling reasons, technical or otherwise, for me to move to or consider .NET.


    Cheers
    Ray
  29. Just wanted to make two points,

    One is that .NET is very maintainable, especially when compared to 'c'. Would I use Java over .NET in every situation? No, it would depend on the needs of the application.

    Two, stored procedures are a maintenance point that can be used to reduce maintenance cycles and improving portability.

    The stored proc option is preferred over having sql embedded in the application because it eliminates the need to introduce the compile/build/test cycle for data structure changes and dbms ports.

    As long as the Proc name and the input and output structures stay the same, and as long as you are not using vendor specific "features," you can manage database portablity through prop files for drvr mgr params. Reducing the need for modification of compiled code.
  30. "Two, stored procedures are a maintenance point that can be used to reduce maintenance cycles and improving portability."

    I would say this really doesn't reduce maintainability. So now I have my 'programs' and stored procs and property files and ... . If the SQL is placed in modules/classes that return Objects - this is much more maintainable esp for apps that use different databases - without recompiling. And if I have data structure changes - you are telling me that this in no way will affect the app?

    If you want to have your cake and eat it too use JDO or something like Hibernate. No embeded SQL and no Procs and easy database portability.

  31. It is a shame that Oracle did something
    to repond to Microsoft's moronic claim.
    Most of postings in the lastest hot debate
    say that it is not the matter of performance
    when ppl choose Java. Everybody knows
    Microsoft is faster. Because it is micro
    and soft. They run in their own bed.
    It would be strange if it is slower.
    See how many responses will be posted. People
    are tired of posting for this meaningless
    debate. Why am I posting? Because I am
    bored with my work.






  32. Why am I posting? Because I am

    >>bored with my work.


    :) !!! Ha!
  33. Hi Greg,

    Great to see you back. Does this mean that MS now has a J2EE-certified app server?

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  34. Cameron, you rule! :)

  35. I just don't get it ...

    TSS.com is a J2EE community, right? Why do we allow postings by this imbecile idiot from Microsoft touting .NET? Unless I'm missing something, .NET ain't J2EE (thank god for this!).

    Greg, nothing much to do in rainy Seattle, eh? Suggest you get a real job.
  36. <quote>
    TSS.com is a J2EE community, right? Why do we allow postings by this imbecile idiot from Microsoft touting .NET? Unless I'm missing something, .NET ain't J2EE (thank god for this!).
    </quote>

    i think this product-centric view of the world is problematic since both .net and j2ee comepete in the same market. what is the problem in having a discussion about the relative merits of the platforms?

    The entire "i like java, i don't like microsoft" tirade is getting old. If you have old systems running *nix/oracle etc. you probably want to go with j2ee, and if your whole shop and skillset is microsoft, then you probably want to go with .net.

    As for the rest of the market, none of them will be swayed with childish shouting contests, but with solid facts and wellinformed discussions (or politics ;-) but lets not go there).

    sincerely
    morten wilken
  37. Nice to see you back too. I wonder what your "motivations" are for your postings. Could it be that you are hostile to .Net because the company you represent is dependent on J2EE? Maybe you should take the time to appreciate other viewpoints rather than make petty posts with no substance. And before you thrash my post I work with both J2EE and .Net and have no "motivation" other than seeing that both have virtues and faults.
  38. <William Rohrbach>
    Nice to see you back too. I wonder what your "motivations" are for your postings. Could it be that you are hostile to .Net because the company you represent is dependent on J2EE? Maybe you should take the time to appreciate other viewpoints rather than make petty posts with no substance. And before you thrash my post I work with both J2EE and .Net and have no "motivation" other than seeing that both have virtues and faults.
    </William Rohrbach>

    So let me see if I get this right. You post an overtly sarcastic comment to a well natured post (with a friendly jibe at Greg), attacking it for providing no substance while providing none yourself.

    Errr, right.

    I agree that J2EE and .NET both have their good points and we should try not to be religious about either of them. As has been said a gasquillion times: best tools for the job. Remember, computers and technology are a means to an end and not an end in themselves.

    As for my 2 cents. Small to large already-MS shops will almost certainly go with .NET. Large shops and those wanting to move away from or avoid being locked into MS will most likely go J2EE. There will be exceptions to this, of course. Regardless of what you choose, you will be locking yourself into a _framework_. Which framework is better to be locked into? That's a choice you have to make.

    Remember too, that the key goal of each framework are essentially misnomers: J2EE is not platform independent (though it can be made close to) and .NET is not language independent (though it can be made to work with controlled versions of languages, e.g. C++ without the STL). These are both lofty and admirable goals which unfortunately will probably never be met. Except by marketing departments :)

    Regards,

    Ben

  39. Hi folks,

    wow, microsoft posting directly to java. Watch out they will take our words and make a glossy of them. OK, my perspective, and I believe pretty much everyones is 'I want to be employed in 3 years time'.

    This point is core to my use of technology. I came from C, C++ background, and software methodologies. The science of software. C++ was and is way too silly... cleverness for cleverness sake. Java came out and was simple, powerful and cross platform in a way that used to cost huge amounts of money.

    Then java changes, quality improves, but mainly the focus shifts to server side, Gui's devalue with html becoming defacto for almost all apps. So the java server side now adds in loads of complexity which is a huge learning curve for little gain. Some of the feautures are ace, but most are silly, cleverness for cleverness sake. But the J2EE brand is a nice one.

    Now we get .Net. Microsoft cannot tell you what it is.. everything from CLR to 'one degree of seperation', to web services, to god knows what. But they have 200 mill in marketing.

    Now, I want to be employed in 3 years.

    J2EE is now too complex. .NET has a huge marketing budget. Its a difficult choice at the moment. Mainly because I see .NET changing hugely in 9 to 24 months. They will rip out vast swathes of stuff and redo their entire OS base, beef up the server side, bundle OLAP/SQL/SOAP and got knows what with ORB like structures. And they will do this with no consultation or backwards compatability. AND it will still only work on msoft, and they recommend you reboot your servers every 90 days... I mean this is RIDICULOUS. computers are deterministic. I should be able to predict what they do.. yet msoft says reboot every 90 days just in case.

    Arrrggg. And J2EE will also change over the next year as folks try to make out that CMP is really cool and you should'nt use relational data stores anymore..madness.

    In summary: .NUT (I like that) - its too early to jump in order to get a job. J2EE is truly going to lose market share, but paradoxically, that means the J2EE jobs market may get better - ie you need good people for enterprise projects.

    As for performance, I really, really dont give a damn. I want a scalable architecture so I can solve performance through hardware and distribution. I don't ever want to compare millsec operation times. In 12 months hardware performance doubles (or more), so just bugger off with your purile performance comparisons. I hate the fact that I even had to write this paragraph, it is so irrelevant.
    Hmmm. Kicking and screaming.

    Jonathan
  40. "This point is core to my use of technology. I came from C, C++ background, and software methodologies. The science of software. C++ was and is way too silly... cleverness for cleverness sake. Java came out and was simple, powerful and cross platform in a way that used to cost huge amounts of money. "

    I love reading this Java is so elegant and clean and pure nonsense. Java leaves so much to be desired. You can't put a native type in any of the container classes. Nice. I have to cast every friggin thing I get out of a container. Nice. I can't create an Object on the stack. Nice. I can't delete an Object when I'm done. Nice. I could go on all day.

    Sun needs to realease Java to a standards body so additions can be made in a reasonable time frame.

    Incidentally, it looks like MS made the same mistakes with C#. Too many good features are missing.

    I find it unlikely that a truly good C++ developer prefers Java over C++ (from a language point-of-view).
  41. <You can't put a native type in any of the container classes.>

    Java's an *object* oriented language. containers contain *objects*. Use a wrapper class, if needed.

    <I have to cast every friggin thing I get out of a container>

    You're free to make type-safe containers. it's easy. Or, you can wait for Tiger (jdk1.5) to come out w/ support for Generics.

    <I can't create an Object on the stack. Nice. I can't delete an Object when I'm done. Nice.>

    You can't forget to delete an Object when you're done and have a memory leak that takes many person hours to debug. Nice. You can't free/delete something twice and have an intermittent bug that takes many person hours to debug. Nice. ;-)

    <I could go on all day. >

    So could I!

  42. "You can't forget to delete an Object when you're done and have a memory leak that takes many person hours to debug. Nice. You can't free/delete something twice and have an intermittent bug that takes many person hours to debug. Nice. ;-) "

    Let me delete it if I want. GC can still go about its business. Memory leaks are still possible with Java.
  43. Sartoris,

    Memory leaks are certainly still possible with Java. But you said yourself, _possible_. The point is to ease the development. It's certainly a lot easier to manage memory.
  44. Sartoris,

    Letting developer to delete explicitely an Object is a problematic feature. Osvaldo Doederlein sums it up pretty well in a JavaLobby thread
  45. <Ben Reid>
    Remember too, that the key goal of each framework are essentially misnomers: J2EE is not platform independent (though it can be made close to)
    </Ben Reid>

    I find it easy to move from app server to app server under J2EE. What I really don't like about it, is having to deal with a load of descriptor files, none of which seem compatible.
  46. Greg,
         Good to see you back posting questionable numbers.

         If anyone looks closely at the results, you would find that the factor of difference is more like 2 and not 10 as it is pointed out. I derive the factor of 2 by looking at per page response time when servers are not saturated (it is in the rage of 1-2). It appears that the factor of 2 (may be 3) will be factor of difference in number of users supported (the case when the server gets saturated, i.e., before the response time increases rapidly). The number of supported users seems to be 4000 for J2EE case and it is difficult to determine that number for the .NET. That piece of information is not reported and that it may be purposely hidden.

         The factor of 10 was probably derived by dividing response time for the case of 5000 users when the J2EE server is already saturated. It makes no sense and shouldn't be done once one of the server is saturated.

         Now, factor of 2 is much easier to understand. In the .NET case, the use of stored procedure and tight integration with OS could have yielded it.

         Please get the factors right before posting such numbers.

    -Mahesh
  47. .NET Stored Procedures[ Go to top ]

    Have any of you looked at the .NET version of the PetShop?
    It's NOT using stored procedures. It's not because Microsoft wanted to prove that stored procedures had nothing to do with the performance wipe-out. Although Microsoft specials states that if this was not a contest, Stored Procedures would be used, that's standard practice.
  48. Please stop it now !

    PetStore is not a benchmark application.

    Is it possible for the Microsoft guys to be honest and to implement ECPerf for .Net and to publish the results ?

    Thank you !
  49. "PetStore is not a benchmark application. "

    I couldn't agree more. The application's intent was to show how to build j2ee systems and modeled of several design patterns and techniques when building these applications. Usually when you make an educational program like this, the last thing you care about is performance. Microsoft knew this, that's why they attacked the performance issues to begin with. They aren't stupid. They tuned up theirs for performance, not for design patterns and .net design strategies.

    Since when people make programs, they must make tradeoffs. Usually competitors exploit the weaknesses in the tradeoff to make themselves look better. Sun and the Java Community is doing the same thing arguing that .net isn't an open standard, isn't compatible across OS's, etc - thus specifying the strengths of Java.

    To be honest, it's all marketing. The economic buyer probably realizes this too. He/She knows what the company needs and if java fits their application's needs, then they will pick java. If .net fits the application's needs, then they will pick .net. Marketing has a lot to do with which one is picked, but usually people making these decisions aren't stupid either.
  50. <quote>
    Marketing has a lot to do with which one is picked, but usually people making these decisions aren't stupid either.
    </quote>

    If usually people making these decisions aren't stupid, then why and how things like $95mil Oracle California contract happen?

    --
    Dimitri
  51. <quote>
    If usually people making these decisions aren't stupid, then why and how things like $95mil Oracle California contract happen?

    --
    Dimitri
    </quote>

    Well, I never paid attention to that, but there will always be stupid managers. I mean, when you tell your manager, "let's do this because it will only take 1/8th the time and it'll help build some more reusable assets for our department" and he says, "well, we never did it that way before so I don't know. Let's just do it the way we've been doing it." because he has no clue what you just told him and he's more concerned about his nice desk job than the success of the department and the organization as a whole. Oracle is known to have an excellent sales force, even if everyone hates them. They manage to always stear clients to their favour. I know they have the best in sales because they usually fire the ones that aren't producing and go through a lot to make "sales, sales, sales". I dunno, there are weak leaders in the world.
  52. Hmmm.... I wonder what we (I develop on Java too!) will be saying if Java PetStore actually performed better in the test. I am pretty sure we won't be saying "Petstore is NOT a benchmark application".

  53. <quote>
    Hmmm.... I wonder what we (I develop on Java too!) will be saying if Java PetStore actually performed better in the test. I am pretty sure we won't be saying "Petstore is NOT a benchmark application".
    </quote>

    I know I would be posting complaining that is it another b2c web-centric solution that serves my VLA (very large application) needs.

    dot-com is gone... It is time we all got back to some real work. :D

    Greg v2.0 Peres
  54. Correction to my post:

    <quote>
    I know I would be posting complaining that is it another b2c web-centric solution that serves my VLA (very large application) needs.
    </quote>

    Should read:

    I know I would be posting complaining that it is another b2c web-centric example that does not serve my VLA (very large appplication) needs.

    Sorry about that one,
    Greg Peres
  55. As usual, Twain said it best:
    "There's lies, damn lies and statistics."

    Maybe some of the J2EE results fit this description too.
    But MS takes the cake on some of these (maybe Oracle gets a bit outrageous sometimes too.

    When I first read about ECPerf, I thought wow, what a good idea. But now, I don't even remotely pay attention to ECPerf. It's all a marketing tool just like all the other garbage. And we all know what happens when you put Garbage In --- You get Garbage Out.

    ECerf is not just _not_ important to me anymore(yeah...grammar), it's no longer on my list of criteria for selecting app-servers at all at NACSE.

    When ECPerf becomes a truly independant benchmark, maybe i'll pay attention again.

    I don't care if MS said it was 4000x faster, it still wouldn't sway me. For me, if MS .NET is the right tool for the job, I'll use it. That hasn't happened yet, but maybe someday.


    -Newt



  56. As usual, Twain said it best:

    > "There's lies, damn lies and statistics."

    Sorry to be a pedant, Jason, but it was actually Benjamin Disraeli, 19th century British Prime minister. Twain was merely the one who reported the quote (although, and I didn't know this until just now, it never appeared in any of Disraeli's published writings or sayings, only Twain's).

    Full quote: "There are three kinds of lies: lies, damn lies, and statistics."

    And here I have to note Microsoft's exceptional skill in all three categories (faked demonstration to the trial judge, anyone?).

      /david
  57. There we go again:

    1) PetShop is a PROOF OF CONCEPT, not a *BENCHMARK*

    2) See my post at http://www.javalobby.org/thread.jsp?forum=61&thread=3524
    for an explanation on why .NET doesn't stand a chance in enterprise environment
  58. I think this point is understood by everyone in the TSS community.

    Why hasn't anyone suggested playing the same game? Microsoft duplicated the functionality of the PetStore application and optimized it for performance so it may use it as a benchmark.

    Why doesn't the J2EE community do the same thing? What is wrong with another version of the petstore which will emphasize performance rather that patterns? I think that we all could learn from an effort like this. Any volunteers?

  59. <quote>
    There we go again:

    1) PetShop is a PROOF OF CONCEPT, not a *BENCHMARK*
    </quote>

    I agree totally. No problems here.

    <quote>
    2) See my post at http://www.javalobby.org/thread.jsp?forum=61&thread=3524
    for an explanation on why .NET doesn't stand a chance in enterprise environment
    </quote>

    I read this just now and I was compelled to reply. I'm by no way a Microsoft advocator above Java. In fact, I use Java more than .Net still. But .Net isn't nearly as bad as you claim it to be and some of your claims are very wrong or misguided. I think if you spent a week going through the APIs and seeing what it had to offer, more than half your points would be nullified. Failing to even recognize that MS products are much more stable now than they've ever been also gives a clear indication that it doesn't crash every hour. It's been really good just as Windows 2000 or Office XP has been very stable (Windows XP has some problems though - 2000 is better)

    I agree with your points about performance, cost of ownership and confidence in vendor. I also beleive the J2ee is much more scalable because .NET doesn't even provide half the cool, managed stuff j2ee has, but .net does support reflection and various other facets that make their applications more scalable then before. It's not like Java, but it's better.

    The invalid things about your posts are your comments about maintainability - I can't see how .NET apps are less maintainable. They generally take less code to write from the get go, the GUI is managed by VS.NET, and all the APIs do use common design patterns and were designed extremely well (granted they copied from Java a lot, but making a claim that these APIs aren't as good is kind of saying Java's API's aren't good either.

    .NET also supports the sandbox model and applications can have a set of permissions associated with it and can be even controlled in different environments. Even code that is downloaded and run within an application can have different permissions and so on. It's quite effective allowing control of the developers and the network administrators.

    .NET has also been very stable for me anyway. I'm not saying it's ready for the enterprise, but it's much more stable than most technologies are when they come out of beta.
  60. On your Java Lobby post you state:

    >Ah, just 5 minutes ago I was reading YAPP.P (Yet Another >Post Praising .NET Performance)... Well, in a enterprise >environment, application don't need to be FAST, what they >need is to reach the minimum requirements for the task >that software needs to do. Off course they're not going to >complain if the software is faster, but they would not >compromise any of the other requirements ( of which some >are mentioned below ) just to gain some performance.

    I would caution that this is the same thing we said with Smalltalk but "fast" was always an issue, more of an issue of image than reality and acutally less of an issue than memory.

    I think the interesting idea is that yes, PetShop wasn't written as a benchmark (but benchmarks in general are dangerous things) but it is a Java "bluepint" isn't it supposed to be the "right way" to build? If this is a trade-off of maintenance vs. speed should there be another canonical example that gives the speed story?

    As for maintenance, isn't the general theory that that less code you write the fewer lines of code to maintain (same person, same practices) -> lower maintenance cost?

    tom
  61. Tom: "As for maintenance, isn't the general theory that that less code you write the fewer lines of code to maintain (same person, same practices) -> lower maintenance cost?"

    No. The theory of the cost of maintenance places a much higher cost multiplier on something called "coupling".

    The absence of coupling typically makes an application faster, but much harder to maintain.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Coherence: Easily share live data across a cluster!
  62. Oops: The absence of coupling typically makes an application slower, but much easier to maintain.
  63. IIRC the .net petshop is a two tier application
  64. But which company can mail me a puppy the quickest? That's what no-one ever discusses in these benchmarks.

  65.  Performance, what beautiful and stupid word today...

     We are in XXI century, performance is NOT today the FIRST issue:
      - Hardware is very cheap and doubles their capacity in a few months (we aren't in 70's).
      - Programs are VERY big and complex, good design issues and loose coupling are top priorities.
      - Internet is all around, we need communicate with others and speak easy using XML, the worst technology related to performace.
      - Standards, portability, reusing: people don't like reinvent the wheel, stay bound a only vendor, throw away their technology because a new vendor offers a top performance new propietary technology.

      Java (and C#), JDBC, J2EE/EJB, JDO, XML, HTML, Web services etc, are technologies with a *necessary impedance* but with very interesting features.

      If performance is your first issue: programming with C++, no no! is slow because virtual functions, classes etc, then use C, no no! a Fortran compiler is better using mathematical operations, oh no! the best compiler generating machine code is me, I'll code with assembler, GUI not of course! a very time consuming technology, I'll use console only. Oh no! I need use a database, data conversion and net transport are a impedance, I will use only a text terminal and a bunch of SQL and stored procedures, not ANSI SQL of course, there are very interesant legacy features...

      If performace is your top priority making decisions, you should not be a technology manager.


  66. I agree with everything that is being said about performance not being a very important benchmark anymore relative to other priorities in architecture / platform selection.

    However, these specific "benchmarks" do not measure performance in that they do not compare seconds per page request. They measure scalability in that they compare page requests per second. Subtle but important difference. Performance is not a huge selling point for architectures, but scalability _certainly_ is.

    It doesn't matter if your application can serve a page in .3 seconds vs. .1 seconds. It absolutely does matter if
    your application/site can host 100 concurrent users on a server and you find that you really have to support 5000.

    I also agree with the people who generally say use the tool that suits your needs. Both camps have strengths and weaknesses. Pick a tool and leverage the hell out of their strengths and you will be fine.

    On a different note, I've been working on .NET and J2EE for some time. I really, really like .NET's implementation of WebForms on ASP.NET. I think it makes programming dynamic web applications leaps and bounds easier than ASP or JSP. Is there anything like this on the J2EE side?
  67. While ASP forms are impressive, what I enjoy about Java development is the plethora of choices for the presentation layer and encompasing framework. For the template/macro people, there are velocity, webmacro, etc. For the MVC push people, there is XMLC and Berracuda and others. For document-centric people, there is cocoon, stxx (xslt addon for struts), maveric, etc. Of course there are JSP's, pure servlets, component-related like Tapestry, WebWork, Turbine, Struts, Expresso, and I could go on.

    The best part is most of what I have mentioned are open source so if it doesn't quite meet your needs, you can modify it. Perhaps with time .NET will grow an open source community, but from what I've seen in the past, Microsoft doesn't seem to attract that type. In my opinion, the community (commercial and non) makes the technology successful.

    The bottom line is as a contractor/consultant, it is my job to provide the appropriate solution within a reasonable time. The current state of the Java community gives me plenty choices so that my eventual solution will be a perfect match for the need.

    Don
  68. "WebForms - Is there anything like this on the J2EE side?"

    For one - Echo.
    For some thing slightly different - Tapestry.

    Oh, and they are both open source. Feel free to make them better! :)
  69. "WebForms - Is there anything like this on the J2EE side?"

    >
    >For one - Echo.
    >For some thing slightly different - Tapestry.

    see also Coldtags
    There are direct analogues of ASP.NET stuff we are using with also very small amount of code :)

  70. This is an interesting discussion. One thing many customers I speak to like about .NET and VStudio is that they do not have to go out and assemble all the pieces from many different sources to get a coherent development environment. While .NET and VStudio are extensible with ISV add-ins (such as Rational, Compuware, etc.)...the base framework and IDE really provide a very comprehensive base development environment vs. having to go out and piecemeal things together.

    An interesting example of this is Cafe Press (http://www.cafepress.com)..a company that found they were spending more time piecing together various libraries and frameworks on top of Java JDK and then versioning these than they were spending on actually developing new features/business code for their users. To quote from a recent case study on Cafe Press:


    "The [CafePress] service was originally built using Java. In time, the company came to realize that they were spending too much time patching components together and maintaining their development framework, and not enough time developing new features and solutions.

    “We were running into serious compatibility problems with the previous solution,” says Fred Durham, Chief Executive Officer, CafePress.com. “After an upgrade from the vendor, the issues still existed so we decided we could not wait any longer for the vendor to fix things and needed to find a new framework to develop around. Previously we had been using a combination of Java tools, runtimes, beans, and libraries. It became clear to us that a single framework would be far more productive. We wanted to get out of the cycle of maintenance and constant patching, and into new application development again.”

    “Along with the .NET Framework, we examined BEA WebLogic and Orion. The .NET Framework proved to have everything we wanted - the richest library, and the best price point,” says Durham. “We were able to do a 100% conversion of all our systems in less than four months from initial testing to complete roll out. For a time during the transition, we had Java and the .NET Framework running side by side without problems on our live Web servers.”

    The company is now using the ASP.NET features of the Microsoft .NET Framework to build their solutions. “A user simply uploads images and CafePress.com’s servers superimpose those images onto product shots of items like T-shirts and mugs,” explains Durham. “The user’s store is then filled with products for sale without having to produce any actual merchandise in advance. Customers purchase items though the user’s Web site and on the back end CafePress.com processes the payments.” CafePress.com also has a manufacturing facility that accesses a private Web site where work orders, images, and product specifications are automatically accessed as needed to manufacture and deliver the products.
    CafePress.com now uses the .NET Framework exclusively for every part of this service – utilizing ASP.NET pages, custom ASP.NET controls, and .NET console applications for various administrative tasks.

    Making the switch to the .NET Framework was easy and quick, and has resulted in significant advantages for CafePress.com. The most significant benefit involves development time. For CafePress.com, turning new ideas into features and services in a timely fashion is critical. Developing with the .NET Framework is allowing CafePress.com to quickly produce and add new features to their service, and to produce customized solutions to meet the needs of larger customers.

    The advantages go beyond the improved developing capabilities of the .NET Framework: the CafePress.com Web site has realized impressive performance increases.

    “Since moving to the .NET Framework, our development speed has increased dramatically,” says Durham. “Project cycle times have been reduced to approximately one quarter of the previous development cycle times. That means more features and services for our users. With the .NET Framework, we can much more easily develop custom code for larger clients. It also means we offer more services and features at large. Again, this is because development times are compressed and the lines of code needed have dropped significantly."

    Greg Leake
    Group Product Manager
    Microsoft Corporation
  71. <Greg Leake>
    An interesting example of this is Cafe Press (http://www.cafepress.com)..a company that found they were spending more time piecing together various libraries and frameworks on top of Java JDK and then versioning these than they were spending on actually developing new features/business code for their users.
    </Greg Leake>

    That sounds very strange. Obviously, any respectful software shop will version developed code. I hope Microsoft does it too, though sometimes I'm not so sure :-)

    Anyway, it appears that you are definitely misguided about the process of including some 3rd party Java library into a project. Take a look, for example, at Struts. It's a popular, free, open source, MVC-style Java webflow framework. Works great under Linix, but, hey, you can use it on Windows too.

    To add the services provided by Struts to your project, you would need to add Strut's JAR file to your environment and I suggest you version it too in CMS of your choice. That's easy if you ask me.

    I would also suggest that you download Struts and try it out for yourself!

  72. I don't think he was talking about versioning developed code, I think it was more dealing with versions of frameworks/tools/etc that are being used with the program you're writing.

    This is back to the question of best of breed or one stop shopping. You can assemble a best of breed solution by grabbing tools from all over the net, which is a very common approach in the Java community, or you can go with a solution that has a bunch of the same features already bundled in, but isn't necessarily the strongest in any of those features or may be missing some.

    Mark
  73. Greg,
    Your last post was realy cheap marketing...
  74. Greg, I feel sorry for the poor technical guys who's been imposed that decision to migrate from java to .NET, because whoever made those comments was definitly a cluless manager .. "converting everything in 4 month" .. hilarious .. or maybe their application is a small applet ?

    No good IT professional would make a recommendation to take such a major risk and expense, with such an unproven technology.

    If you said that in 1 year time, *maybe*... But now that .NET is fresh out of the oven ? ridiculous.
  75. <quote>
    “Along with the .NET Framework, we examined BEA WebLogic and Orion. The .NET Framework proved to have everything we wanted - the richest library, and the best price point,” says Durham. “We were able to do a 100% conversion of all our systems in less than four months from initial testing to complete roll out. For a time during the transition, we had Java and the .NET Framework running side by side without problems on our live Web servers.”
    </quote>

    Well, as much as I agree that .NET provides a lot of APIs and cool features in the development environment right out of the box, I find it extremely hard (very sincerely) that that company did not found enough rich APIs and frameworks with BEA Weblogic + accompaning software. They have a ton of stuff that .NET will probably never have.
  76. "I find it unlikely that a truly good C++ developer prefers Java over C++ (from a language point-of-view)." - nice flame.

    Anyway, Greg is spinning this debate nicely. The most reasonable comments I have read are:
    a) .Net is way too young to reasonably recommend as a mission critical solution.
    b) .Net creates vendor tie in
    c) .Nets integrated environment is good. But there are more open Java environments allowing developer choice.
    d) Everyone is ignoring the original question of performance because it is pure spin and irrelevant to the argument.e) This java community has honest worries about Microsofts release process, and their backwards compatability. Also how this will be reflected in the future and the risk it creates to enterprise systems.

    Then there is the entire robustness debate..

    Jonathan

  77. Jonathan,

    You are pretty much correct. Essentially no manager or officer really cares about performance as much as the application working reliably without babysitting it. Company's that have billions of dollars of capital to protect simply can't trust a new solution right now - it's not a very good business decision. Sure the technical enthusiats want to use the next greatest thing, but to a business officer, like myself, I can't justify the use of .NET in a serious enterprise application. It may or may not work - that's not the point - the fact is that everyone knows J2EE works and that it has produced some great results. In the case where j2ee is adopted entirely, the benefits are huge. It's very hard to change to .NET when companies are actually achieving some success with a given platform (in this case j2ee).

    That being said, .NET is a good tool for small-to-medium sized projects that aren't so critical, especially if these systems need to be developed fairly quickly. I personally think that if Java took more of standard approach to tools instead of piece-meal approach, .NET wouldn't have much of a chance because of j2ee's current market position. Right now, there is 'no' current tornado where everyone and their mother is changing to .NET, so MS still has a lot of work to do to get .NET in wide-adoption - they haven't really hit the chasm yet. Right now that's not the case. The big question is - will hit major adoption in the next 2 years? Will you be ready? The good thing is that j2ee systems already in place won't suffer. They can communicate with .net systems just fine so they themselves will not need to upgrade. Any sensible CTO will not even consider .NET even after a tornado, so leaves organizations with no application architecture platform to be the future customer's of Microsoft's .NET technology. Sure some might change, but I would strongly doubt it in the next few years. This is where j2ee has it's major advantage and will continue to do well in the next few years. Of course, this is just my words, and who am I?

    Ken Egervari
  78. LOL!!!
  79. Please people. You continue to play the marketing shill's game.

    If he can't honestly sway people, keeping them distracted is just as good. Focus on doing good libraries and software for others to reuse and let him parade out a set of bogus numbers periodically. If anybody "needs" to reply to it, let it be another paid shill from Oracle, Sun, BEA, IBM, etc.

    We have better things to do than waste time here.
  80. Haven't really been looking at how they've implemented the .NET version, but I seem to remeber someone stating that they didn't even use COM+ in the . If so, then this is even more of a strange comparison.

    /Jeppe
  81. You can do .NET coding without using COM+, so this probably isn't so strange. I think that, to do things like transactions, you still run things within the COM+ runtime, but you don't explicitly create a COM+ object to do this (the .NET runtime takes care of throwing it into COM+ for you).

    Mark
  82. I realize that, but IMO there's quite a difference in coding straight ASP.NET (a nice thing about .NET) and calling Stored Procedures using ADO.NET, compared to doing a real layered model where you have COM+ component (ServicedComponent) running under MTS. But still I find this an apples and oranges comparison, which is just a smart gimmick on MS's behalf.

    /Jeppe
  83. Ok, I guess I misunderstood the point. That definitely is a difference between the two if that's the case. I really haven't dug through the MS code, so I'm not sure how they have everything partitioned up.

    Mark
  84. Well, I figured this posting would stir up a bit of controversy, and it certainly has! Let me address several points up front, becuase these are important points:

    1. The .NET Pet Shop is a fully factored 3-tier design using middle tier C# components encapsulated as .NET assemblies. These components contain all the business logic of the application, and are activated via ASP.NET pages. The application is not a 2-tier application, as many have claimed. UI, business logic, and data access logic are all cleanly separated into distinct tiers.

    2. The .NET Pet Shop application, like the Java application, was created to be a useful design pattern for real customers to follow. It was not created merely to be a benchmark application tuned for performance with all other considerations like code maintainability tossed out the window. That I agree would not be very sporting, or very customer friendly. The idea behind .NET Pet Shop in serving as a comparison point between .NET and J2EE was to create a real design pattern for .NET using C#, ASP.NET Web Forms, XML, with a fully factored 3-tier design to illustrate real coding concepts and deployable design ideas to customers. Download the code and check it out.

    3. The application wraps SQL statements for SQL Server 2000 as stored procedures. It only wraps the SQL statements (as opposed to representing SQL as text in the middle tier), becuase that has traditionally been a recommended way of building SQL Server applications-hence its part of the design pattern of the application. There is no business logic or other application logic in stored procedures (this would be bad design). The use of stored procs does not contribute to any additional performance for the application. It should be a point of architectural debate as to to whether its better to design SQL queries as stored procs, or whether to represent them as text in the middle tier and pass to the database as pre-prepared statements. It should not be part of the performance debate, and I will be happy to post a version of .NET Pet Shop with NO stored procs (with corresponding perf data) becuase people seem to be confused that the use of the stored procs for simple SQL statements makes the app 2-tier (which it does not); or makes the comparison to Java version unfair (simply a matter of different promoted design patterns for the Java vs. .NET versions).

    4. People also seem to say that benchmarking the Java Pet Store is simply not fair, it was never designed to be a benchmark application. In fact, Oracle did the first benchmark of the application (not Microsoft) as part of their "Oracle 9i App Server Performance Challenge." Then they invited other vendors to try to beat their results. I would agree that just taking any old sample application from the Sun Web site and performing a benchmark would not necessarily constitute a "fair" benchmark. However, the Java Pet Store was clearly promoted by Sun as more than any old "sample application."

    In fact, quoting Sun, it was hevaily promoted as "An
    application which illustrates basic usage of J2EE technology, and demonstrates current best practices in system design." Sun created a Blueprint Series book on the app (still available in bookstores); a Blueprint Series Web site; and signed on IBM, Oracle, BEA and others to ship it as design pattern in many different app servers for customers to follow. Is it "fair" to benchmark the primary MVC-based design pattern for J2EE as promoted by SUN? I think any vendor promoting something as "best practice system design" ought to be able to have their code benchmarked for performance and scalability. After all, as a customer I would be very interested to know if the design pattern promoted by the vendor actually performed and scaled to my needs. In fact, I would be remiss in not benchmarking the design pattern before applying it in a major application project.

    5. We stand behind the .NET Petshop as a real-world design pattern for customers to follow when building enterprise applications based on the .NET platform. We also encourage customers to download the code, and perform their own analysis and benchmarks of the .NET version for themselves.


    Greg Leake
    Group Product Manager
    Microsoft Corporation



  85. Wonderful, Greg ... that took a day and a team of ten to write together these words for you to post, right?
  86. Bob,

    Huh?

    -Greg
  87. Greg,

    hah!

    -Bob
  88. Newt,

    Wow! I could never work for the company you describe! Luckily I don't. I doubt I can do anything on this newsgroup to convince you of this, so I will not try.

    I do, however, respect your desire for choice, and your ongoing quest to be objective in your evaluation of different technology alternatives. There are obviously those out there that will not even consider an evaluation of Microsoft technologies vs. those from Oracle, IBM or SUN, for purely religious reasons. Similarly, there are those that will not evaluate Oracle or SUN technologies for similar, religious reasons.

    A core tenant of the proposition with the .NET Pet Shop is that .NET is a technology that should be evaluated alongside various J2EE-based app servers as one of many app server choices. I ask that those interested in such an evaluation do a simple test:

    -Download Oracle's latest version of the Pet Store
    -Download the .NET version
    -Run your own load/performance test and compile your own data on performance, scalability, and availability/stability under load for each
    -Evaluate each platform and corresponding design pattern in terms of complexity, productivity, code maintainability, etc.

    Then decide, based on technical merits, if .NET deserves serious consideration rather than dismiss it out of hand.
    If you want to be truly open to choice, certainly undertaking such an evaluation (based on Pet Store or your own application prototype/spec) would give you a better understanding of the pros/cons of J2EE and .NET for specific projects. I think you will find some very real technical merits in .NET that would benfit you in terms of productivity, cost, manageability, etc.

    I think that anyone who downloads and evaluates Visual Studio.NET and the .NET Framework based on building a prototype application will see a core focus on XML, Web Services and open integration with other platforms. This is what the customer case studies and technical links in my previous post are meant to illustrate.

    I also agree that both environments will co-exist...and luckily with XML, SOAP and Web Services and other ongoing cooperative work among vendors this co-existence looks to be much smoother than it has been in the past, and that neither technology implies a homogeneous, one-vendor environment.

    -Greg
  89. Greg: You are really worth all the money you earn from writing all this propaganda! Never seen such ability to be blind for the obvious (.NET is a no-option for serious major-development teams) and skill to create (some) hype for a "kind of benchmark" that created by any other company would be laughed at as irrelevant. Many before me have written the following points that .NET need to handle:

    * No vendor/platform lock-in
    * Massive throughput
    * Great stability (five 9 are not enough for some solutions...)
    * Offer different pricing choices (from free to expensive).
    * A big backing opensource community that provides frameworks and "plugins"
    * A !clean! development plan with detailed descriptions (patterns) and standards on howto achive best results (that is, it should be: easy to maintain and develop, cheap, stabile, able to scale well, easy to move between different vendors solutions)
    * Less b*llshit, more code

    Good luck Greg :)
  90. Mahesh:

    Just getting to your post from yesterday. You observed in this post that .NET outperforms Oracle Java Pet Store only by a factor of 2-3 times except for the last datapoint, when .NET version outperforms Java version by 10 times once the app servers are stressed out (near 100% CPU utilization).

    This is a good observation. When we compare to the Oracle performance numbers, we are only allowed to compare to Oracle's published data, becuase we cannot benchmark and publish Oracle performance data based on license restrictions with Oracle app server. However, a key point of the VeriTest report is that the data Oracle published (which we must compare to since its all there is out there) is not very credible to begin with. First and foremost, the application they published (they will likely soon fix the issues and update their download) with their benchmark is missing key functionality that is excersized in their test scripts. The update cart does not work, no error is generated but the update does not happen (and it turns out this is a fairly slow operation); and they have removed the function call to display the favorites list on the cart page. I doubt they did this on purpose, likely just sloppy mistakes, but it still means their data is invalid.

    Also, they tested without any error checking, making it impossible to know if the server was returning valid data or http errors (also they used recycled TCP/IP connections across user sessions and did not disable browser cache on the clients).

    Basically, what I am saying is that you should download their app and test it (alongside .NET version) for yourself. You will likely see very different results than those published by Oracle). Also you will note that the Oracle version uses a special Oracle JDBC driver that works only with Oracle 9iAS, and this is how they get a huge perf boost in their app. They do some internal optimizations between Oracle 9iAS and Oracle databases in their driver. But the driver does not work with non-Oracle J2EE app servers like Websphere and BEA. You will find that if you test their new optimized Pet Store on these app servers (which must use the standard thin or thick Oracle JDBC drivers) that the performance is very different. Make sure when running the Oracle version with Oracle9iAS and their "special" JDBC driver you stress out the middle tier and monitor the app server for stability. Again I think you will see a marked difference in stability between the .NET version and the Oracle version as the systems are pushed to higher loads. That is truly the untold story.

    -Greg

  91. Anders,

    You make lots of claims about massive througput, stability etc. but do not back up these claims with code or tests; yet you accuse me of providing no code or evidence to back up my claims. I have not only provided code, but benchmark results and a way for customers to test for themselves both .NET and J2EE side by side by downloading Sun's recommended MVC-based blueprint for enterprise Web apps (Pet Store, as optimized for performance by Oracle) from Oracle's Web site, and benchmark it alongside of the functionally-equivalent .NET Pet Shop as downloaded from the MS Web site. Do the benchmark yourself, do not take my word from it. I know you will find a marked difference in the performance, scalability and *stability* of the .NET version as opposed to the Oracle version when tested under load.

    Also, if you do not think the Java Pet Shop as currently coded by Sun and optimized by Oracle is an appropriate comparison point/benchmark app, then I encourage you to propose a new, better benchmark application. I am open to suggestions.

    -Greg
  92. Whose the zealot here?

    The .NET people are praising the benchmark when no one cares about performance so long as the application isn't crashing the server.

    You're comparing the wrong thing.
  93. Jason,

    Test the Oracle verison posted on their Web site. Put its through its paces under stress running on either Linux or W2K. Then decide if stability is not an issue. I *totally* agree with you stability is a huge issue....performance and scalability are similarly important, and related, metrics.

    I simply ask you do the test yourself (or similar test) before the dismissing the data out of hand.

    -Greg
  94. Greg,
      The problem with comparing .Net to J2EE is that it can't be even close to scientifically done. There are just too many variables. First, the test would have to be done on a platform other than Windows. Why? Because it gives unfair advantage to MS.Net. And because MS.Net will never run on any other platform a fair comparison will never happen. Any comparison like this is then useless. It does nothing more than cloud the real issues.

      I have to agree that MS.Net is pretty cool. While it is a major shift for MS shops, I get [at least] the same functionality from Java and I get to chose who provides that functionality. We could argue points but it will pretty much come out even (except in the freedom area). So it looks like one has to resort to performance. It has been pointed out that this is a mute point with current technology.

      I'm not religiously tied to Java. If a true, viable, major paradigm shift solution comes along then I will probably use it. But MS.Net is not that. The bigger issue is that MS.Net ties me to Microsoft and their platform. (Please - no one bring up Mono, etc. It will be [some life] Linux.Net.) Because MS.Net really doesn't bring much more to the table, any 'advantage' with MS.Net is totally outweighed by this. I'm not saying Microsoft is a bad company, but it is a bad business decision for any company or person to be wholy dependent on another company. Look at all the people who had their retirement tied up in their own companies stock - Eron. It could even be the company who stocks your vending machines (I just had a conversation with the person who has to deal with this). Competition is vital to free enterprise. Unfortunately using MS.Net means a lack of competition. Who else provides MS.Net or will in the viable future? Why would I use any other OS or Database (etc.) because MS products work so well together?

    And as for .Net working with Java (or anything else) via web services, I've yet to see anyone get something like a Customer object back via Web Services.

    With MS.Net were are tools/technologies like JUnit and AspectJ and Hibernate and Jini and built in refactoring, and snap in of other vendor application servers and ... .


    Mark

  95. Just to make a quick point that J2EE vendors also play the lockin game. IBM and Oracle are both moving forward with lock-in platforms that basically require their whole platform. Oracle Apps only run on Oracle's application server. Oracle's portal is embedded in their database. IBM has an entire platform that is closed to third-party plugins. WebSphere Portal only runs on WebSphere App Server and the security features are limited to Tivoli Policy Director.

    I think it is unfair to accuse Microsoft of pushing vendor lock-in when many of the J2EE vendors do the same thing! In fact I had an Oracle guy at my company telling us that having just one phone number to call for support was the key to their success.
  96. <william rohrbach>
    Just to make a quick point that J2EE vendors also play the lockin game. IBM and Oracle are both moving forward with lock-in platforms that basically require their whole platform. Oracle Apps only run on Oracle's application server. Oracle's portal is embedded in their database. IBM has an entire platform that is closed to third-party plugins. WebSphere Portal only runs on WebSphere App Server and the security features are limited to Tivoli Policy Director.
    <william rohrbach>

    a) Nobody forces me to use any features that are not standardized
    b) Both companies will be (and have been) forced to move from proprietary to standards-based when the standard is created during the JCP.

    What's Microsoft's equivalent to the JCP?
  97. Excuse me for my unfamiliarity, but what is JCP?
  98. <quote>
    Excuse me for my unfamiliarity, but what is JCP?
    </quote>

    http://jcp.org

    --
    Dimitri
  99. So you're saying that I can make some frameworks and have them implemented in the java platform apis? I could code up a whole bunch of stuff since I'm bored most of the time =) What's the likely hood that the stuff you submit gets put in?
  100. Well, mostly depends on if you're doing anything that haven't been done before *or* make something *a lot* better than what currently is available. java.nio is a case of the former and javax.xml.tree.jdom (unsure of the package) one of the later.
  101. Well, its Monday and I have watched over the past few days many posts that are based on a circular argument. In the face of specific benchmark data showing .NET to be more performant and more scalable than J2EE for a canonical 3-tier Web application, instead of finding specific hard evidence to the contrary, many J2EE devotees are simply making statements like:

    -Unix is more scalable, reliable than Windows 2000 Server, so J2EE must be more scalable and reliable than .NET

    -Windows 2000 Server is not used in enterrpise apps becuase its not enterprise ready, so .NET cannot be enterprise ready

    and so on.

    I think its admirable that these developers are so devoted to J2EE, but I also think that blind devotion can be very dangerous. Following this logic, these developers would never look at a new technology, even if that technology offered huge advantages over the existing technology. I can imagine folks of this mindset might still be listening to their vinyl records, not even aware of CDs, DVDs, or digital music.

    I can understand where many of the long held perceptions come from, becuase certainly Unix systems (and IBM mainframes) have long dominated the Enterprise Data Center. But clearly Windows 2000 Server has matured and continues to mature as an enterprise computing environment. Besides running many of the *top-ten* highest user-traffic Internet sites in the world, Windows 2000 powers a substantial portion of the Fortune 500 corporate Web sites, an even bigger portion of overall ecommerce/SSL sites as tracked by NetCraft and Media Metrix; and clearly has a growing presence alongside Unix in large-scale enterprise systems. The fact SAP sells more licenses on Windows 2000 than Unix is a good example. Or the fact Oracle has been hugely successful selling its enterprise database and apps products on Windows 2000 is more evidence. But lets not stop there; the top TPC-C, TPC-W and even several of SAP's top benchmark results are achieved on Windows 2000 Server, not to mention the fact that DB/2's top transaction-oriented published benchmarks results are on Windows 2000. And I believe even BEA chooses Windows 2000, not UNix, for its ecPERF benchmark submissions.

    As for stability, several OEMs are offering five 9 availability gaurantees with Windows 2000 Data Center, including HP/Compaq. And the fact is, anyone operating a high-availability site knows that no matter how stable Unix or Windows 2000 (or how secure), without the correct processes in place for operating and maintaining the application, availability will be lacking.

    I am hopeful that those on this forum with open minds will take a serious look at .NET, and perform their own comparative tests using the Pet Store application or their own application prototype. I can tell you the .NET Pet Shop is not a fake application, or simply some half-baked marketing excersise. It's a legitimate blueprint for building highly stable, scalable 3-tier Web apps. I think it speaks volumes that Sun's own reference application for J2EE trails the performance and scalability of the .NET reference 3-tier Web application by such a wide margin, even after being optimized and re-released by Oracle.

    And for stability, please, before making statements about the supposed superior stability of J2EE over .NET, find some real evidence to back up these claims. And download the J2EE Pet Store and run it in Oracle9iAS under even moderate load using Oracle's published LoadRunner scripts. Then download and run the .NET version under high load using the same load test tool. I don't think you will be disappointed by the stability or performance of .NET in comparison.

    The truly open-minded will seek the truth through their own experimentation and look at the available hard evidence. I think in terms of gaining a competitive edge, the open minded have the advantage, becuase they will be willing to challenge long-held assumptions, and truly look at new technologies vs. just accepting what they have is "good enough."

    Greg Leake
    Group Product Manager
    Microsoft Corporation
  102. Along these lines, David Berlind of Ziff Davis, who few could label a "pro-Microsoft" journalist, just wrote and interesting article. Check out:

    http://zdnet.com.com/2100-1107-928365.html.

    Here is an excerpt:

    "Somewhere near the end of this year, Microsoft expects to ship Windows .Net Server. This successor to Windows 2000 server will hold two big attractions for data center managers. First, .Net will be more deeply woven into the fabric of Windows. Second, the server version of Windows has continually matured over the last decade. Not only has each successive version taken on more enterprise-like features to deal with issues such as security, fault-tolerance, and scalability, but also Microsoft has learned a great deal from supporting enterprise customers that have already been pushing Windows to its very limits. Finally, all of this comes at a time when Moore's Law continues drive the performance of low-cost Intel hardware into a range where data center managers will simply have to consider the option."

    -Greg

  103. Greg -
    I think folks make circular arguments because you do as well. You continue to try and make something real out of a comparison of .NET petstore and Oracle's attempts at the petstore. Despite Oracle's best efforts, it's still the J2EE petstore and it is still not an optimally designed application. To me, the comparison has been and always will be meaningless. Also, as I stated earlier in the thread - I for one can't test .NET and Oracle petstore because our app server machines are Unix-based - even if .NET were the fastest thing in the world, it does neither me nor my organization any good.

    Calling something "hard evidence to the contrary" or "specific benchmark data" most certainly does not make it so. And it is certainly no reason to jump on the Microsoft train. I would suggest Microsoft go back to the drawing board in their efforts to converse effectively with the J2EE community. Making faster Petstores (Oracle or .NET) doesn't do it (for me, anyway).

    Cheers
    Ray

  104. I recently went to a talk given by one of the top Forensic Computing/Computer Security firms in the world. They talked about how windows is a dream for forensice investigators. In fact, here is a quote from his companies web site.

    "From a computer investigator's standpoint, the Microsoft Windows operating system is a dream
    come true."

    This guy isn't pro or anti MS. In fact, the less work MS does to become secure, probably the happier he is. But he said that about Windows for a reason. Security is a joke. There just isn't much robustness there.



  105. Greg,
    I am pretty open-minded about technology but I come to THIS site for J2EE information,debate and discussion, NOT to have someone try to sell me on .NET .
    If I were to post "J2EE is better, faster, cheaper than .NET" propoganda on GOTDOTNET.COM, I imagine it would get the same treatment that your postings get on theserverside.com (Your J2EE Community)

    JH
  106. Greg: "Well, its Monday ..."

    So far, facts. I have a sneaking suspicion that is about to change.

    Greg: "... and I have watched over the past few days many posts that are based on a circular argument."

    And there we go! You couldn't even finish one sentence without resorting to that nonsense.

    Greg: "In the face of specific benchmark data showing .NET to be more performant and more scalable than J2EE for a canonical 3-tier Web application, instead of finding specific hard evidence to the contrary, many J2EE devotees ..."

    You must have been on the debating team, or you just stole that line out of a "Debating 101" book and swapped some words in. First of all, no benchmark data except from Microsoft or sponsored by Microsoft has shown this. It's no more believable than Oracle's data that showed just the opposite.

    More scalable? I didn't even see that in the numbers (your numbers).

    3-tier application? You can't be referring to the .NET one, can you? That's already been clearly shown to be a two-tier approach. (Speaking about debating tricks, don't you like the way that I added "clearly" ... so subtle, so small, but so unrefutable?)

    Greg: "Unix is more scalable, reliable than Windows 2000 Server, so J2EE must be more scalable and reliable than .NET."

    I don't know that I'd disagree with you here, but it's quite a leap. Unix is more scalable and reliable on Windows 2000, and J2EE is more scalable and reliable than .NET, but J2EE is more scalable and reliable running on Windows 2000 than .NET running on Windows 2000, so I'd stick with that line of reasoning instead of basing it on the OS itself!

    Greg: "Windows 2000 Server is not used in enterrpise apps becuase its not enterprise ready, so .NET cannot be enterprise ready"

    You heard it here first, folks ;-)

    Greg: "I think its admirable that these developers are so devoted to J2EE, but I also think that blind devotion can be very dangerous."

    To have selected J2EE for its obvious benefits does not in any way imply blind devotion. I understand your devotion to Microsoft -- they pay you, for example. See ... it's simple, clear, etc. If you were working for Sun, would you be saying the same thing? I didn't think so. You'd be harping about the blind devotion of Microsoft followers.

    Greg: "Following this logic, ..."

    Excuse me, you can't paint the argument (the straw man in debating terms) then burn it yourself. Talk about picking on the mentally weak!

    Greg: "... these developers would never look at a new technology, even if that technology offered huge advantages over the existing technology."

    Actually, they did. That's why they chose J2EE. If .NET were compelling, they'd switch to it. Some people have and some people will ... unfortunately for Microsoft that number will be relatively small for a lot of very logical reasons!

    Greg: "I can imagine folks of this mindset might still be listening to their vinyl records, not even aware of CDs, DVDs, or digital music."

    All invented by Microsoft, no doubt.

    Greg: "But clearly Windows 2000 Server has matured and continues to mature as an enterprise computing environment."

    Clearly. ;-)

    Greg: "Besides running many of the *top-ten* highest user-traffic Internet sites in the world ..."

    Besides msn.com, which Windows routes every user to when they install and if they ever mis-spell a site name? Even better, it redirects to itself a couple times to increase the hit count!

    All joking aside, Windows 2000 is a great _desktop_ OS -- the best ever from Microsoft (at that point in time), but no one wants to run it on a server ... at least no one responsible for managing the servers. Unix was the same way 15 years ago ... don't sweat it.

    Greg: "I am hopeful that those on this forum with open minds will take a serious look at .NET"

    That really is not surprising. After all, it's your job to get people to do that.

    Greg: "And for stability, please, before making statements about the supposed superior stability of J2EE over .NET, find some real evidence to back up these claims."

    Greg, honestly, many companies that have selected J2EE were burnt by Windows server reliability, security, stability, etc. problems. It isn't their obligation to prove that you've fixed them. Unfortunately for Microsoft, until the market that is J2EE completely drops the ball on these items, Microsoft products won't get a second look. Why would these companies abandon their infrastructure in order to prove that you have improved your products? One word: onus.

    Greg: "And download the J2EE Pet Store and run it in Oracle9iAS under even moderate load using Oracle's published LoadRunner scripts. Then download and run the .NET version under high load using the same load test tool. I don't think you will be disappointed by the stability or performance of .NET in comparison."

    If people are comparing it, they are probably comparing it among BEA Weblogic, IBM Websphere, JBoss, the reference implementation, HP/AS, Iona, Orace, Sun iPlanet, etc.

    Why would companies take a chance on a single-vendor lock-in dead-end solution when they have such great choice? Why would they go back to the 1980s software model? Why would companies bother to spend the time evaluating such a bad option as .NET? (I'm not speaking here about .NET as a technical implementation, but as a business option. It has its technical merits, but so does NextOS and Objective C! ;-)

    Greg: "The truly open-minded will seek the truth through their own experimentation and look at the available hard evidence. I think in terms of gaining a competitive edge, the open minded have the advantage, becuase they will be willing to challenge long-held assumptions, and truly look at new technologies vs. just accepting what they have is "good enough.""

    Kudos, Greg, you've won a spot on the debate team. If only Microsoft would have come out with .NET five years ago, you might have scored a point. You are trying to solve yesterday's problems; that's not very innovative, and it's not going to win many customers from an established, thriving and growing market.

    And now I shall leave you with a customer post from microsoft.public.dotnet.general:

    D. Cornelson: "I'm an independent consultant in the Chicago area and I'm starting to get pissed off. It's bad enough that the consulting market has dried up and there are barely any jobs to go around, but compounding this is Microsoft's seeming inability to sell .NET as a viable platform. I am hearing from staffing firms nearly everyday that companies big and small are moving to J2EE from asp/com. What are the MS Sales people doing? Are they sleeping? Are they not paying attention? What the heck is going on? I've been a devoted MS technologies guy since the company opened its doors and now I find myself nearly forced to switch to a set of tools I don't believe in simply because they _are_ selling. I've already got a linux box setup with Debian and I'm probably going to pick up Websphere and Visual Age and start hacking away ...."

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  107. Whamp! Cameron has just downed Greg with a left hook.

    And the ref is counting "1...2.."

    Will Greg recover? We'll see hehe :) (sorry, off topic)

  108. excellent points Cameron.

    <greg>
    The truly open-minded will seek the truth through their own experimentation and look at the available hard evidence. I think in terms of gaining a competitive edge, the open minded have the advantage, becuase they will be willing to challenge long-held assumptions, and truly look at new technologies vs. just accepting what they have is "good enough."</greg>

    I agree, let's ditch windows.
     


    <greg>
    And for stability, please, before making statements about the supposed superior stability of J2EE over .NET, find some real evidence to back up these claims</greg>

    Every other day .Net has another vulnerability. Just read the archives from zdnet, the register, etc.

    <greg>
    I am hopeful that those on this forum with open minds will take a serious look at .NET, and perform their own comparative tests using the Pet Store application or their own application prototype </greg>

    I tried but protected memory doesn't work. When Visual Studio Dot Net has one two many GPFs or whatever the new politically correct name is, the operating system finds it's way to the toilet bowl never to be seen again. It reminds me of a freshman in college.




  109. Q322289: Security Update (ASP.NET State Server Mode, English Edition)


    This update resolves the "Unchecked Buffer in ASP.NET Worker Process" security vulnerability in the ASP.NET component of the .NET Frameworks. Download now to prevent a malicious user from remotely causing an ASP.NET worker process, configured to use the ASP.NET state service, to stop responding.

    For more information about this update, read the associated Microsoft Security Bulletin. (This site is in English.)

    <grin>

  110. I'm sure you're aware of this already but this forum has many who wear java colored glasses. There are some true scientific thinking folks here as well. But many here (and at places like javahobby.com) can't be reasoned with.

    In a couple of years, java and j2ee will be on the downward slope and the Luddites here will go down with the ship.
    Oh well, they were warned.
  111. Sartoris,

    And MS.Net colored glasses are better?

    Hopefully there will be something to replace Java when that happens. Currently there isn't.

    BTW, I think he knows that.

    Mark
  112. Mark Nuttall writes:
    "And MS.Net colored glasses are better? "

    Actually, with MS technologies you don't just wear colored glasses. You have to wear an entire uniform - glasses, overalls, helmets, boots, socks, the whole nine yards.
  113. "And MS.Net colored glasses are better? "

    No. Clear glasses are better. If someone makes claims you think are false, then by all means provide counter-examples.
    Look at it objectivelly, that's all.
  114. "No. Clear glasses are better. If someone makes claims you think are false, then by all means provide counter-examples.
    Look at it objectivelly, that's all. "

    It would have been better had you said this the first time. I did understand what you said. But for as many Java 'bigots' there are just as many MS 'bigots'.

    BTW, Greg doesn't have clear glasses.
  115. <quote>
    It would have been better had you said this the first time. I did understand what you said. But for as many Java 'bigots' there are just as many MS 'bigots'.

    BTW, Greg doesn't have clear glasses.
    </quote>

    He can't have clear glasses - that's his job. Just as I am unbiased between .NET and Java, I am most certainly not biased in the work that I do. I, like every business, feel that the way we do business and develop products and services are better than our competitors. It's just the nature of business. But given that I do not sell or develop .NET or Java itself means that I can be unbiased in this issue. If you were to talk about what's better, my company or competitor XYZ, I'll say mine. So, he's just doing his job.
  116. I won't switch to .Net because of these three reasons:

    - freedom of choice:
    I beleive the IT sector knows what a bad thing vendor lockin is. They won't repeat the mistake again.

    - the knowledge is in the java community:
    Look at the various new and cool ideas: JUnit (unit testing your app), Ant (treating software development like a factory), refactoring and refactoring tools (like IDEA, which imho is kick ass even when you compare it to the slick VS.Net), XDoclet (utilize the power of attribute oriented programming and code generation), radical advances like AspectJ and so on. And after all java developers follow design patterns more than MS developers.

    - the free and democratic java community:
    We at java community can influence the direction of the platform. Whoever you are (individual or a company) you can join JCP's expert groups easily. And don't forget all those free and open source tools and cool ideas. It's silly to think that MS always offers the best thing developers need. And also the fact that its a tradition in this community to share ideas and tools with others. There's a huge repository of cool plugins/tools/ideas/... for all those community driven stuff.

    But, after all the big difference between MS camp and Java camp is ideologic imho. I can't think in MS way anymore. MS developers want a single/straightforward solution, while java developers want the above mentioned 3 items to be available for them. The philosophy is different. Apple also has a different philosophy. The are not interested in standards that much, they keep their marketshare their way. MS does the same thing, but it's much bigger. Java and linux/unix does it completely in a different way, in a democratic way.

    Gerg, you can't convince a java developer to switch. Only frustrated java developers will switch to the easier/single-vision MS camp, but clearly they are in minority in the skilled and educated java developers community.

    Cheers,
    Ara.
  117. Dear Greg Leake,

    I just want to say a number of things off of the top of my head. Some of them are off-topic, but relevant in some way.

    First, I applaud your efforts. One thing that Microsoft does well is address issues that people have with _other_ products. They/you have always done that well.

    Now to the meat. For the first few years of my techincal career, I was a developer working entirely with Microsoft tools, VB, ASP, SQL-Server. I even worked for Unisys, who we all know is pretty tight with Microsoft. In fact, I was one of the presenters at Comdex New York for the Microsoft/Unisys SQL-Server 7.0 release, and the release of Unysis' massive NT/SQL-Server cluster system which I believe at the time was the largest NT system in the world (Java/Unix people, please don't flame me for that). As one of the presenters, and an employee of Unisys, I saw exactly how the MS marketing machine works. I was certainly impressed, but I didn't like it. I am not under any illusions that every other big-firm marketing machine works the same way, but I do try to stay out of that somewaht.

    So you might imagine that I have some perspective on the MS development environments and tools. However, some time ago, I began using Java. Even then, when Java was at its early stage I began to see its value proposition as greater than anything that Microsoft offered. Then J2EE came along and I was having just too much fun.

    OK, now along comes .NET. I am quite sure that, in another year or so, .NET will be a viable competitor to J2EE. Microsoft certainly has some of the world's best developers, and I'm not going to sit around and think that their tools are worse than anyone elses. I do have some conclusions that lead me to resist using .NET for reasons that are both technical and non-technical. I will enumerate them here.

    1) (Non-techncial): Before I became a developer, I was a financial analyst working in antitrust areas. Specifically, I worked for the Maritime Industry, for whom there is no "anti-trust." Maritime companies are exempted from antitrust prosecution like the Sherman Act, and are allowed to collude and commit certain anticompetitive acts without fear from FTC, STB, ICC etc. I saw first hand how anti-competitive acts can damage the consumer and the micro-economy that a company operates in. As a convicted monopolist, I think Microsoft has done many things in this regard. Now as a developer and a has-been financial analyst, it is easy to note that a convicted monopolist uses these practices in both the technical and the market arenas. My inclination is to not support a company that I feel may do as much harm to consumers and economies as Microsoft. This is solely a moral and social/economic indignation, and has no technical ground whatsoever, save my economic knowledge of what damage that kind of market power can do.

    2) (Non-technical) Microsoft's seeming impunity towards all. Gotta say, the flap with the charity (Australian I think) giving away PC's to poor kids and Microsoft going after the licensing fees, when they have all that gooey loot in the bank really set me off. How much is enough for you people? Is there someone standing behind you guys with a whip saying, "Make money!"? Or is it just a corporate culture. I think I'll go kick my dog, or take candy away from a child or something.
    Microsoft just seems to act with a level of arrogance and impunity that offends me. I guess with 40 billion in cash and marketable securities, you can do that. Ensuring a high price-to-book ratio for your clients must have its limits.

    I feel this impunity continued to show up in the antitrust case, and the remedies today. I think that Microsoft continues to act as though they were never convicted of a crime. And boy did MS get away with that one (at least so far).

    3) (Non-technical) Playing nice with others. I think that MS doesn't really play nice with others. They want the goodies for themselves. Again, I have no illusions that most companies in the same position would take advantage of it. But we have antitrust laws for social and economic reasons. In the technical arena, I als feel also note that Microsoft has no intention of playing nice-nice with everyone else. Just look at this silly thing with SAMBA lately. You guys remind of the little kids in grade school who never let anyone else play with their toys. I see no sense of social awareness in Microsofts actions and goals.

    4) Now we're getting somewhat technical. And this one has been beaten to death so I'll keep it short. Choice! Choice! Choice! J2EE runs on pretty much any OS, any hardware, and I've got app-server vendors, add-on tools (commercial/open-source), frameworks.

    5) The choice leads me to my next point. Look at the industrial and developer mindshare that has come from J2EE. Wow. Has there been something like it before? Maybe Relational Databases. But companies like IBM, Sun, BEA, (and on ad nauseum) are all playing on the same field here. In both a technical _and_ and economic sense this is good for the consumer and the micro-economy. Again, I am not under the illusion that one of these firms would not "take" the market if they could, but look at JBoss. They're doing OK, and I don't see a billion in investment there.

    6) Final choice point: pricing. I can go from free (JBoss) to expensive (right up there with BEA/IBM etc).
    Hardware -- Sparc, Intel, whatever; all of the various Unixes. And to tell you the truth, I've seen windows in action on production environments. Solaris still smokes it. What choice do I have with MS .NET or other MS technologies? What pricing choices are there? Am I locked in to a draconian licensing upgrade scheme (which seems to further the need for antitrust sanctions, at least in the economic sense. I'm not a lawyer, so I won't speak to the legal sense for fear of getting myself in trouble)? Who do I switch to if I don't like your pricing?

    7) Tools: I have about 39.32 gazillion tools to choose from in the J2EE market. Also from cheap to expensive. How much developer tool choice do I see for MS .NET. Will there be any choice? Will there be any additional IDE's for .NET? (gotta pliug it: man I love Intellij).

    Some of Microsoft's products I really like. Visio is cool, I like SQL Server 2000 a lot etc. So...

    I always though of myself as someone who always chooses the right tool for the job, whether it's Microsoft or J2EE or Cold Fusion or Smalltalk! I even got offered a big promotion once because of my ability to _not_ be a zealot on these issues. But I have finally come to some personal conclusions on the matter. In fact I have a little creed.

    I will always do the best for my firm. It is my job to develop and protect the information architecture and infrastructure of the people for whom I work. That may mean doing things I personally don't like. I don't always have to like it I just have to do it.

    On the other hand, I need to find a balance for my technical, economic, social, and moral objections. All things being equal, I'd just as soon stay away from Microsoft. I have to be able to be somewhat content with the social impact of my decisions. Supporting a convicted monopolist who continues to act in the ways described above contradicts my desire to enhance the social environment around me.

    It is almost unfortunate that my desire to do a good job for my company sometimes outweighs my desire for positive social impact. But it is also important sometimes. I certainly won't do anything illegal. And I won't do anything I can't sleep on at the end of the day. More and more, as I watch Microsoft's public face and actions, I feel a need to reverse that condition and do more good for society. I certainly feel a greater need, as I watch these things, to resist using Microsoft products.

    Maybe I'm becoming righteous for the little-guy in my old age. Maybe I should just join the Peace Corps.

    I know I have gone offtopic, but the only other forum for this type of post is Slashdot, and I don't see Mr. Leake posting there so, sorry guys for the long, off-topic post.

    -Newt












  118. That's a good comment, Jason. Some interesting info and insights that I can share with my friends of various camps.

    A side note, I just wonder, how fast and maintainable in terms of code is a version of the pet store if it uses, say:
    - tomcat / jetty / orion / other servlet+jsp containers
    - tapestry / struts / webwork / other frameworks that handles stuff like asp.net
    - castor with caching on / other or mappers

    I expect that performance is faster and the loc is less. Just a hunch.
  119. BFD!
  120. Everyone,

    Again I see a narrow web-centric application as the showcase of an application server's abilities. Even worse it has become a benchmark platform. Someone previous in the conversation made a quote about who can ship the puppy the fastest. What company is shipping puppies and why are all these proof of concepts dot-com centric B2C applications?

    J2EE address application development features outside the realm of speed and web-centric systems. A good software architect once told me: “You could make anything run fast... Making it work is the real challenge.” He also said: “Talk is cheap… We need to get this friggen record out of a VTAM database!”

    Here is my real world situation that I am battling today:

    I work for a very large company. We have multiple LOBs which all deploy different legacy technologies. These technologies include IMS, CICS, MQ, TUX, and even a "WebService". (There are more but these are the core.) We are in the exploration stages of creating a Customer Information Facility (CIF) to manage customer records across all of our LOBs. (For those of you who have no idea what a CIF Google has your answers. :D )

    Account details, information, products, services, and customer behavior are maintained by the CIF (a.k.a. ECIF). This information needs to be propagated real time to the legacy LOB systems. (The LOBs still maintain and operate the core service.) Example: If someone changes their address within the CIF depending on rules all necessary account information needs to be propagated real-time to the appropriate legacy systems that are affected.

    I clearly see how I can do this easily in a J2EE environment with multiple products, packages and standards. (Toplink, JCA, Weblogic Workshop, etc…)

    The real question is: How do I do this with .NET? What services are available outside of the web-dominated features being showcased in this web-dominated proof of concept for my real-world application development needs? Are these features available in the .NET platform today?

    Although eBusiness and eCommerce are visible there are a lot of developers out there with solid development needs that .NET doesn't address clearly.

    If there is anyone out there that has a solid answer to my needs for multi-phase commits across multiple environments, technologies and TP monitors with .NET please feel free to let us all know.

    The J2EE community anxiously awaits ".NET's" answers on how you can archive less code, faster runtimes, better maintainability, legacy application integration without modification and lower TCO for these kinds of real-world problems with .NET.

    Have fun,
    Greg Peres, An insane Software Architect in a sane world.
  121. Thought this might add to the discussion.



    Posted by Yannick Menager on May 16, 2002 5:05 AM

     
    Comparing Java and .NET in an enterprise environment

    In the last few months, I've been hearing lots of arguments in comparing the benefits of Java vs .NET in corporate use, but what many people seem to miss is that certain arguments don't hold water in a enterprise environments. So here follows some of my opinion formed by my years of experience in that kind of environment:

    - Performance:

    Ah, just 5 minutes ago I was reading YAPP.P (Yet Another Post Praising .NET Performance)... Well, in a enterprise environment, application don't need to be FAST, what they need is to reach the minimum requirements for the task that software needs to do. Off course they're not going to complain if the software is faster, but they would not compromise any of the other requirements ( of which some are mentioned below ) just to gain some performance.

    So .NET *might* be faster than Java, but in that kind of environments it isn't a significant factor, because decently designed/coded Java applications are fast enough for most requirements. Even for almost real time requirements ( Deutsche Bank for example has some trading systems with requirements that come close to being to real time, and the whole architecture is totally Java based ).

    - Stability:

    That's one of the most important things in enterprise environment, as any problems with the application means loss of revenue at best, up to disastrous consequences at worse

    In that area, well, there's just no comparison between .NET and Java. Not only MS software is known for being for being utterly buggy, crashy, and unreliable, as .NET itself is a very recent technology that just came out of beta, and it will take a long time before most of the major bugs have been ironed out ( which is true of any software, but ESPECIALLY more so of MS software. Even Java in the beginning was very buggy, and crashed, and had major problems, and it took many years before it attained the rock solid stability it has now )

    - TOC ( Total Cost of Ownership )

    In an enterprise, how much it costs doesn't matter as much as how much it will cost per year, taking into account ALL expenses that might come directly or indirectly from it. Cost of purchasing, of maintenance, upgrades, etc, etc....

    Another area where I doubt anybody will dare arguing in favor of .NET, since the lack of stability greatly increases the TOC, and the fact the MS has a systematic habit of forcing people to upgrade and keep paying as much as possible, as often as possible.

    - Security

    Security is another important area for software, and another area where MS software has constantly proven be a total DISASTER.

    .NET does not include the low level functionalities of sandboxing that Java has ( one of the reasons why their software can achieve higher performance ), so it will never be able to able the level of security that Java can. And also security has been an ingrained concept in Java since day 1, while MS has always favored adding as many features as possible, and gaining performance, in the detriment of security.

    - Maintainability

    Ah... Most developer seem to forget that once the application is written, it's the end. In an enterprise environment, developers come and go, and it's important that new developers can get up to speed quickly, instead of spending weeks or months trying to figure out what does what, or re-writing things because they've given up on figuring it out by looking at the code.

    Well, in that area .NET seems to be *UTTERLY CLUELESS*. That argument that .NET is good because it can run multiple languages is just total idiocy in an enterprise business. What would be your reaction if you started a new job, and they told you: "Well, you're going to have to work on this application which is written in C#, VB.NET, Perl.NET, PHP.NET, FORTRAN.NET and List.NET" ... you'd be sending CVs after the a few mondays Also Java is a language that pushes the developers in writing maintainable code. For example all the Java APIs use the same patterns, which "trains" the developers in continuing to use those patterns on their code, making the applications more maintainable. Also Javadocs are a standard feature of Java that greatly helps application maintainability. Also VB.NET is not backward compatible with VB, which will force companies to train (or recruit) developers for that language. Also the amount of skilled Java developers/architects is *much* greater than of C# or VB.NET developers.

    - Confidence in Vendor

    Also companies wants to buy software from reliable vendors. And while there is no doubt that MS will still be there in 5 years time, MS has constantly proven that they wouldn't hesitate to screw their partners if they can gain some benefits from that. Like for example *FORCING* developers to use all the latest MS "Visions" no matter what they think about it, by using dirty tactics like terminating support for older technologies, putting "expiry dates" on certifications, changing products and APIs, etc.... Also all MS solutions leave you totally "locked in", and if for some reason the MS technologies fail in some aspect, your only option is to rewrite everything. While java is based on standards. For example, at one place I worked, we had a huge application based on an old version of weblogic, and the messaging component of the architecture (JMS Server) failed to sustains the data throughput we required. It took us *TWO* days to replace the whole messaging with a different product, without having to change almost any code. If that happened in a MS environment, well, I think most people can imagine the nightmare

    - Scalability

    Relating to server software, the needs of the enterprise can suddently change drastically in a short time. Java Enterprise technologies has been designed from the first day to allow to design scalable applications. And actually the JVM provides functionality that helps to create scalable software, in the form of reflection and related features. Most developers might not notice the difference, but it does make a titanic difference in the development of the application servers themselves. That is why Java has been for many years at the forefront of distributed computing.

    - Integration with IT environment

    One critical thing for a business, is for all the IT infrastructure to be totally integrated together. in that aspect .NET is only good in a totally MS based environment, and even then, you can only integrate the way MS wants you to. If you step one centimeter outside "MS Way of doing things", then the nightmare begins.

    - Industry adoption

    And to finish, they want to use products that are widely used, proven technologies, etc...

    For whoever didn't notice, .NET has been released in the LAST FEW MONTHS... there is very little (if any) real, large scale, production environments based on that technology. While Java is being used extensively all around the planet, in mission critical environments, from Banking Trading systems, to Aeronautics.

    Well, I think that'll be enough rambling for now I'll go to ZZZ before I'll fall asleep on the keyboard
     
  122. A whole lot of words for arguments with no foundation.

    You go throught a multitude of areas but no facts are offered just the same old complaints about Microsoft.

    .Net and J2EE will coexist and they'll be used successfully to implement a multitude of applications, including enterprise and mission-critical applications.

    Why can't J2EE bigots realize that Java and Sun aren't always the appropriate solution???
  123. <quote>
    Why can't J2EE bigots realize that Java and Sun aren't always the appropriate solution???
    </quote>

    Hi William -
    Even as a self-confessed J2EE bigot - I can say with certainty that Java and Sun aren't always the appropriate solution. However, when it comes to building high-end enterprise applications and all of the baggage that is associated with that effort, none of the reasons given by .NET afficianados to choose it OVER J2EE hold any water. Instead of telling me that the .NET version of the petstore has faster and less code and that I can use VB.net as my development environment, tell me how to use .NET to solve real-world enterprise problems in a typical, heterogeneous IT environment.

    Cheers
    Ray
  124. Ray,

    You might start with the following links, just a sample of articles illustrating .NET use in hetergeneous, enterprise environments. You also might check out the following enterprise customers who are using Microsoft technologies, including .NET , today to build large-scale systems that intergrate hetergeneous platforms:

    1) Enterprise case studies:

    http://www.microsoft.com/biztalk/evaluation/casestudies/default.asp

    2) More enterprise case studies:

    http://msdn.microsoft.com/vstudio/productinfo/casestudies/default.asp

    3) technical resource links for enterprise development with .NET in heterogenous environments:

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/Techmap_websvcs.asp

    http://msdn.microsoft.com/net/guide/

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/bts02kit/htm/bts_netsdk_understanding_dfsi.asp

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnhis/html/HIS_HIServer2000.asp


    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/entserv.asp

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbiz2k2/html/bts_wp_net.asp

    Greg Leake
    Group Product Manager
    Microsoft Corporation


  125. Oh and...

    Please don't respond telling me that I need to put a WebService in front of all my legacy applications. That is not lowering my TCO - just adding servers, technologies, and developers to my problem.

    Also on the technology side you still need adapters that can communicate with the legacy environments for the WebServices to use.

    :D

    Greg
  126. Greg,

    Perhaps this was already provided and I just overlooked it, but...

    Is the .Net code available for download? Also, is the Oracle implementation a revised (optimized) version of the original demo. If so, is this available for download, as well? I would like to see the 75% code savings first hand.

    Looking forward to digging into the code.

    Ryan
  127. <quote>
    Is the .Net code available for download?
    </quote>

    I'm sure that it is. Why do you think Microsoft is paying Greg Leake big bucks to spread .Nut propaganda here? :-)

    <quote>
    Looking forward to digging into the code.
    </quote>

    I think improving your Java skills would be much better use of your time. Take a look, for example, at:
    Java App servers, EJBs, Servlets, JSPs
    Java Rules engines,
    Java O/R mapping tools,
    Java Webflow frameworks
    Java WebServices
    Java Content Management
    Java XML
    ...

    Regretfully (or fortunately) the list is long. Good luck.
  128. My request for the source code was half serious. If there is a way to maintain an application's functionality while reducing the code base four-fold and keep the code flexible and clear, I would be interested in seeing this! Who wouldn't be! However, I doubt this claim.

    I probably am a Java bigot, but I am interested in what all of this .Net hype is all about. I am skeptical, but am willing to be proven wrong. I have never seen a bit of "real" .Net code (i.e. outside of "Hello World" examples), so I would like to see the code that is much smaller and much faster than its Java counterpart so I can make an informed opinion.

    I really have no intentions of "switching teams" any time soon. I am satisfied with what Java/J2EE has to offer and, BTW, I am always working on my Java skills [thanks for asking :)].
  129. Ryan,

    The .NET Pet Shop code is available at http://www.gotdotnet.com/team/compare/petshop.aspx.

    Take a look especially at the code-behind Web form model of development and .NET server-controls. A lot of the code savings are in these new technologies introduced with .NET, a lot cleaner than using JSP taglibs. Anyway, the code is there along with a whitepaper describing the app and architecture.

    -Greg

  130. I tried to download the source code, but it will not install unless I have IIS installed on my machine. Can't a zip of the source be made available? I don't want to run it, but I would like to look at it.

    Jim
  131. <quote>
    I probably am a Java bigot, but I am interested in what all of this .Net hype is all about.
    </quote>

    It's just hype distrubuted by Microsoft itself and honorable Greg Leak as its full time representative. Considering that Microsoft spends so much effort on convincing people just to take a look at .Net (or .Nut, whichever you prefer), it appears that they are having a real problem pushing this technology into the masses.

    Anyway, no point in wasting too much time on this as I'm sure there will be round 4, 5, 6, ... 3026, :-)
  132. Just to add to the list of good things to look at:

    - Java Connector Architecture

    Greg v2.0 Peres
  133. Greg, your old story again...

    But, my story isn't same...:-)
    I'm leaving ASP, ADO, COM, DCOM, .NET... ( and going to J2EE)
    I'm leaving SQL Server... (and going to Oracle)
    I'm leaving Windows... (and going to Linux) (ok...still using windows98 at my home for video games...:-)
    ...and I set http://www.theserverside.com for default page in my browser...
    It's a good feeling...
    (I think that's default page in your browser same...:-))

    Why? Because, I want to change my life!

    And you know what?
    I want to see articles about J2EE here, not Microsoft marketing campaign...

    Goodbye Greg...
    Goodbye Microsoft...
  134. Greg -
    Thanks for the links you provided earlier regarding .NET working in heterogeneous environments. However you have challenged us to download the .net petstore and the oracle petstore and run the comparisons ourselves and to look at .NET in more detail. While I wouldn't want to evaluate either of the petstores in particular, I would be unable to compare .NET to Oracle's for the simple reason that our app server hardware is SPARC/Solaris & INTEL/Linux based. We have a few NT servers floating around, but I can't use them and our development boxes are SPARC/Solaris as well.

    I can test the Oracle app on any of our platforms - but I can't test the .NET version - and this is one of the reasons I am a java bigot, as they say.

    Cheers
    Ray

  135. Hi,

    Wow, some people do get excited over this kind of debate. First of all let me say that most people will not manage to make Microsoft or Greg look bad in here simply because he is a trained professional at marketing and most of us here are developers or IT people.

    Anyway, just some context. I work for a company that develops software based on the J2EE platform. I really don't have a problem with going the .NET route in principal, except for one : cost. We are a small company, we have a major investment in the J2EE platform, and we *cannot* afford to offer the product on .NET because we would have to rewrite it all !

    I know Microsoft has JUMP and J#, but I doubt they will get the job down on an application that has over 600 classes, ties to databases, etc...

    Now let's say for a moment that we would like to take a big risk and move solely to .NET. Why would we do that ? We would *only* do that if there was a demand for it. Currently our customers don't care about the technology. They want a product that works for them, and all this debate over J2EE vs .NET amuses them at best. What they ARE looking at a *lot* now is avoiding situations like in the "internet bubble" times.

    As a small company (not a *startup* company, we have no big ambitions apart from doing software that satisfies our customers), we *always* get the question : what happens if you're not there in a few months ? What are the choices I'm implicitely making if I choose J2EE or .NET ?

    Unfortunately here Microsoft has a terrible track record with companies. Going from Windows 2000 to XP in a little more than a year has been viewed as terribly bad move in that it gives the impression that the Windows 2000 platform was not viable (I'm not talking from a developer or user perspective but more a marketing one). Microsoft knows this and has had that 99.999% compaign and all that going on. Another example would be the choice of Office software and then the near impossibility of moving data in and out of it smoothly (ever tried moving documents between Word and Framemaker ?). And what are the garantuees that although .NET seems quite open now it won't be closed in a few years (and yes the problem also exists with J2EE !). Submitting to ECMA doesn't mean that Microsoft cannot extend it's own platform and make the extensions purely proprietary (and actually only a subset of the .NET framework is submitted to ECMA).

    On the J2EE side, I view the JCP as being central to the success of the platform. If that can work, and currently it doesn't really (mainly because it's much too slow !!), it might help improve the platform. Who said that Java could not be extended to all the technicalities of C# ? Although it's far from finished, there is a JSR that's equivalent to Web Forms : Java Server Faces. Why isn't the community pushing on this one if it's so great for developers ? Competition is good, let's hope everybody on the J2EE side understands this. The Linux people seem to, and this is why Microsoft is so worried about them :)

    What I'm getting at is that what will decide in my opinion which platform will stand out is it's ability to *prove* that it isn't a dead end. Performance comes long after. Office has until now had a problem of tie-in that has been troublesome. Windows is terrible at remote administration problems (yeah I know there are tools like PC Anywhere but even over fast lines it's not as flexible as pure command line). Microsoft still has a lot of work here to make .NET a *real* server framework, regardless of all the interoperability and performance claims. To sum it up I would state that in the server-side world, the problem isn't that much .NET vs J2EE, but OS choice vs Windows.

    So what's the best of both worlds for me ? Well, quite simply : CLR runs Java 100% (not J#) and CLR is made available on Solaris, Linux, AIX, Windows... Will Microsoft help to go down that path ? I'm afraid even Microsoft doesn't know that, but just as a reminder I remember reading a quote in Business Week at the time .NET was first being talked about : (not exact quote sorry, but I'm sure somebody can find the reference) "Bill Gates was presented the project of .NET that would bring a virtual machine that could be ported to any OS, and be the Java everyone wanted. At that Bill Gates said that the Windows and Office developers would never accept such a platform to run on something else than Windows, and that those two groups are the current moneymakers for Microsoft and that their say is quite substantial !".

    Sorry for the long rant, and for going quite off-topic, but I think that the strategies behind .NET are as interesting as the platform itself. I didn't go into the Java side because I assume it is known, but I will join in on one mouvement : Sun, open source Java !
  136. Here is my problem:

    If the CLR is ported to other operating system that just gives me access to C# on that platform. What value-add is it really in application development without ADO.NET, ASP.NET, MTS, COM+ etc?

    There are no hard-core services avaliable to the new platforms (OS)... The tie in seems to be with the services that .NET offers not necessarily the interfacing language (C#) to those services.

    Portability isn't my issue though. Adaptability to other transaction processors and legacy systems is.

    I don't think BizTalk is my answer either... But this is a whole different discussion about EAI tools that I doubt anyone here would be interested.

    Have Fun,
    Greg Peres

  137. Predicting the Future[ Go to top ]


      I want to be a fortuneteller:

      Microsoft tools have ever been directed to low profile programmers: Visual Basic and ASP have been the tools wich Microsoft have put most of efforts and support. And Java people knows what kind of crap programming style you can do with them : plane code, no object oriented programming, no architecture, no patterns, no components etc.

      Impressive and beatiful tools have been oriented to low profile programmers, but when you need to control the low level you can´t (with Visual Basic) or you found a terrific and bad designed technology (do you remember OLE2?).

      Ok Visual C++ was cool generating a program prototipe, but when you need to code inside... it´s not so easy.

      Control with Visual Basic of Word or Excel was easy, but have you tried to control them using COM and Visual C++?: no documentation of interfaces, many IDispatch param pointers with no sense ...

      I remember see assembler code inside MFC!!

      Each version of Visual C++ was a rewrite of APIs, rework of bad design ... and there were no option (Visual C++ was a monopoly in Windows development).

      Innovation: Visual C++ customers have been abandoned during THREE YEARS until the new Visual C++ .NET, and people knows that they must to upgrade their code to .NET (C#), because Microsoft support of commercial C++ is to end (or will support but with no innovation).

      Future: Microsoft will follow promoting low profile programmers because they need impressive tools that think instead of programmer, but with obscure, closed, Windows centric and bad design below (but Microsoft make money). Ex. I´m sure that .Net WebForms generates HTML/JavaScript code no standard and IE specific as Office and FrontPage does, and there´s no way to change this (customizing).

      I have switched to Java from Visual C++ world: because there is skilled technology, innovation, standards, freedom, good design, support to patterns and best practices, qualified open source tools, transparency, support of the industry and the community...

      Java will stay ahead in the professional and skilled programmers world, making the best and sophisticated software.

      .Net will attract less skilled programmers very dependent with tools or programmers bound to Microsoft technology due to political/strategical reasons.

      Ah! Java is going to have templates like C++, at last!(Stroustrup and Stephanov will be happy).




  138. Predicting the Future[ Go to top ]

    <Jose María>
    Future: Microsoft will follow promoting low profile programmers because they need impressive tools that think instead of programmer, but with obscure, closed, Windows centric and bad design below (but Microsoft make money).
    </Jose María>

    This might seem true from past releases of anything MS, but .NET is not written like old MS stuff. Again, I posted a lot in this debate and I'm not a MS lacky - I use Java lots more. But let's be realistic. There APIs are well organization and they do take advantages of patterns. I see decorators, strategies, composities, singletons, factories, etc. all over the place. Second, using C# you can make use of patterns all you want. With the integration of Rational XDE, patterns in .NET are a breeze.

    Now all this is available in/for Java. But just the fact that you can take all this rich, professional software engineering knowledge and apply it to .NET says a lot. Sure some of the GUI code is generated and might make a method in the inherit Win Form of about 100-1000 lines. But there is almost zero reason why you'd ever look under the hood there anyway - use the IDE to edit the form. Beyond that generated code to initialize the form, it's all up to the programmer to design their program - and if you don't make a 5 tiered or whatever app it's your own damn fault too. No IDE is going to stop you from putting all your logic in the Win/WebForm. Just the same Java. But it does promote the use of patterns and the APIs lend themselves to be used with patterns in many cases (well, except for half the classes being sealed with really sucks and I can't understand their reasoning for this decisions). But refardless, it's not like like you are dealing with user32 and kernal32 anymore with a ad-hoc approach to definition their frameworks. .NET is a new product that doesn't even remotely resemble older products. I bet you never even installed it and are basing so much of your opinion on previous efforts. Even MS's reliability is much better in the last year or two than ever before. Ever since Windows 2000, MS has shown a fast improvement in the proper function and reliability of their products. .NET has also taken this step. It's not completely bug free (you hear lots of stuff on the web), but Java wasn't either if I recall. .NET lends itself to small to medium projects that are probably more thick-client than thin-client, but both models are extremely easy to work with and produce great results. There is even lots of stuff in .NET that Java doesn't have but any tools. It's really worth checking out.

    Again, long-live Java. But a Java-only centric view is not anybetter than a .Net-only view. I realize that most people are just so tied with Java and support it so much that anything MS is not proper and will not take this post seriously. But even if you cut up .NET, you are actually cutting up Java too - .NET is based off a lot of Java (And Greg, don't lie - it is). So there. Use both when they should be used, tried not to work so hard, get your work done and enjoy life.

    Thank you!
    Ken Egervari
  139. Predicting the Future[ Go to top ]

    <Ken>
    This might seem true from past releases of anything MS, but .NET is not written like old MS stuff.
    </Ken>

    Ok, ok, MS is not in the best position today, their monopoly is severely threaten by the Java industry, and they need to offer a compelling technology against.

    If Microsoft open their technology (free implementation of their standards) perhaps some day I will follow the .Net path. It depends if Sun, IBM or BEA break the Java industry or is suffocated with royalties (high cost J2EE licenses by example).




  140. Predicting the Future[ Go to top ]

    <quote>
    Ok, ok, MS is not in the best position today, their monopoly is severely threaten by the Java industry, and they need to offer a compelling technology against.
    </quote>

    This is true - hence they are forced to provide a new, innovative product that meets the needs of developers and enterprises. I mean, spending so much resources trying to get it 'right', I doubt they would lend themselves to fail.

    <quote>
    If Microsoft open their technology (free implementation of their standards) perhaps some day I will follow the .Net path. It depends if Sun, IBM or BEA break the Java industry or is suffocated with royalties (high cost J2EE licenses by example).
    </quote>

    All I am hoping for is healthy competition between j2ee and .net so they can co-exist. The last thing I want to see happen is all my frameworks and libraries written in java and the knowledge i've invested in java to be thrown away. I went through that with c++ and it's not fun. Although it does lend yourself to re-evaulate what you've done and to develop and integrate previous work, it's simply too much. Even the MS lackies must have been sort of pissed that many VB programs just don't work. A colleage of mine tried to port a VB program using MS's VB upgrade wizard and there was over 1000 errors in the generated code and the program wasn't that big either. Given this, using Java is a safe-guard.

    However, there are things that I would like to see in the Java language to make it catch up to .NET. As much as we like so many interesting tools for Java (both vendor-based and .NET), we need to start leveraging common assets and starting building standards on top of J2EE, similar to what the w3c does with protocols, we can do the same with APIs. I know that standard APIs aren't usually the best designed (take the DOM standard API which was not made for ease of use and productivity). But nonetheless, it's a standard and when I see code written by another author, I know exactly what to expect. Doing the same with all the tools that are already available will greatly simplify the learning and developing of enterprise applications with j2ee. The .NET platform is very inviting because MS has provided a very large set of APIs (probably larger than Java) - although this doesn't give you a lot of choice (although you could use an open-source implementation or build your own), it's nice that it's there and you can use it without hunting down and making a choice between 8 versions of the same tool. I think if we came to compromises and starting promoting tools as best practices and started building frameworks for all of this, we can achieve that familiarity that you get when using the Java Platform class library, but with a larger set of functionality. Perhaps, one day, I might write a book or start a project to initiate this movement. Right now I'm simply very busy but I would really like to.

    Anyway, I've rambled on enough and I'm sure half of you probably think I'm a Java-hater or something, so I'll sign off. Thanks for listening.
  141. Predicting the Future[ Go to top ]

    Change "As much as we like so many interesting tools for Java (both vendor-based and .NET), "

    to

    As much as we like so many interesting tools for Java (both vendor-based and open-source-based),
  142. Predicting the Future[ Go to top ]

    "However, there are things that I would like to see in the Java language to make it catch up to .NET .. "

    And they are?
  143. Predicting the Future[ Go to top ]

    <quote>
    "However, there are things that I would like to see in the Java language to make it catch up to .NET .. "

    And they are?
    </quote>

    One feature is creating code dynamically using the CodeDom and compiling an assembly within the language and actually use it in your code. Interesting stuff. You can later transfer this code to a server that is accepting assemblies and it can be executed and shared. Take the terrarium application for instance - that's a nice example that demonstrates how p2p apps can be built using .net. Keep in mind there isn't really any frameworks for p2p in .net, but give that time.

    Other key features discovering dlls on a server and downloading the most recent components from the web and automatically updating the thick-client application. This alliviates the deployment problems and costly update cycles of the application.

    There is lots of others. Delegates and properties are also unique to c# that would be very good additions to Java a long time ago. Now that we have beans that promote a consistent way for accessing mutating an object, it's not a large issue, but it's nice to work with member variables as fields rather than methods, creating a clear distinction between the two. Don't think it's necessary - look at all the research done with R++, which more than demonstrates improved maintainability and code reduction. They essentially adopted all those ideas and added them to c#.

    Look around and play with it for a week or two. You'd be surprised.
  144. Predicting the Future[ Go to top ]

    <quote>
    Look around and play with it for a week or two. You'd be surprised.
    </quote>

    I am already surprised at the amount of effort Microsoft feels it needs to apply to push .Nut out of the door ;-) IMO, these resources would be much better spent fixing existing security holes.

    Anyway, we do not deploy on Windows so .Net presents very little value to us, if any.
  145. Predicting the Future[ Go to top ]

    <quote>
    Anyway, we do not deploy on Windows so .Net presents very little value to us, if any.
    </quote>

    .NET doesn't lend itself to work as a development environment for company's already using j2ee and even older MS applications. .NET is simply new and should be treated as such. I think the main concerns with .Net are

    - doesn't run on non-windows platforms.
    - given the track record that they completely overhauled developing on the windows platform, who says they aren't going to do it again
    - MS lock-in
    - not mature
    - only viable for small to medium sized applications as it hasn't been shown that .net is viable for the enterprise

    Beyond those, MS is probably not as scalable as j2ee, but its still viable for stuff. The thing to note is that it's footing is very solid so far and it can only get better.
  146. Predicting the Future[ Go to top ]

    Hi Ken,

    I think .NET does have some nice ideas in it that Java can benefit from "hugging and inheriting from". However, to your points:

    Ken: "One feature is creating code dynamically using the CodeDom and compiling an assembly within the language and actually use it in your code."

    We've been doing this since JDK 1.0.2. For a free lib, see Apache's BCEL (Byte Code Engineering Library). For a powerful commercial lib, we license one ;-).

    Ken: "Other key features discovering dlls on a server and downloading the most recent components from the web and automatically updating the thick-client application. This alliviates the deployment problems and costly update cycles of the application."

    Have you had a chance to look at Java Web Start? That's exactly what it is for. It gets rave reviews from .NET users, too!

    Ken: "Delegates and properties are also unique to c# that would be very good additions to Java a long time ago. Now that we have beans that promote a consistent way for accessing mutating an object, it's not a large issue, but it's nice to work with member variables as fields rather than methods, creating a clear distinction between the two. Don't think it's necessary - look at all the research done with R++, which more than demonstrates improved maintainability and code reduction. They essentially adopted all those ideas and added them to c#."

    Delegates ... I think they introduce a lot of inconsistencies. See Petilon's clever FAQ on .NET at http://www.geocities.com/csharpfaq/.

    Properties ... those should be handled by the tool. Again, why screw up the language to add something that we all know is just a set of methods? (I would argue the same for the void methods that Java likes to differentiate as "constructors", by the way.)

    IMHO where .NET is significantly better is in its integration with Windows. Technically speaking, it is easier to use .NET to integrate with existing C++ code, for example. The Linux crowd (mono etc.) sees that ease of interacting from a Java-like runtime with a core of C/C++ code, and they (correctly) see that it's the modern equivalent of "dynamically loaded libraries".

    Another area where Java should improve is in higher level (e.g. VB-like) development tools. Sun and IBM need to grow up and merge AWT + SWT + Swing and come out the other side with a framework (and maybe a tools initiative too) for grabbing the next tier of component-based client-side developers. The MS VS.NET toolset is pretty damned good in this regard. Both JBuilder and Visual Cafe are atrocious in this regard. Java will lose potential client-side developers to VB.NET and also to C# if the tools don't advance significantly.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  147. Predicting the Future[ Go to top ]

    Hi Cameron Purdy,

    <quote>
    We've been doing this since JDK 1.0.2. For a free lib, see Apache's BCEL (Byte Code Engineering Library). For a powerful commercial lib, we license one ;-).
    </quote>

    That's neat. I never knew it existed. If there was problems with Java (as I mentioned earlier), it's because of the all this functionality being seperate from the platform itself. Something like that should be core. I hope they do that in the future. Too bad it's commercial, but that's probably a pretty complex lib though.

    <quote>
    Have you had a chance to look at Java Web Start? That's exactly what it is for. It gets rave reviews from .NET users, too!
    </quote>

    Actually I haven't. I only know you can do the following in .NET from MS's marketing. I also looked at the APIs and though that that downloading code to the thick-client application was amazing since again, that's not really part of the core java :( I will look at it though since that is a very important feature for me.

    <quote>
    Delegates ... I think they introduce a lot of inconsistencies. See Petilon's clever FAQ on .NET at http://www.geocities.com/csharpfaq/.
    </quote>

    Well, it's like goto - know when to use it. Lots of the MS API's use delegates in their code. Winform's is very dependant on them and it's fine. I will read that article - perhaps there is something I never realized.

    <quote>
    Properties ... those should be handled by the tool. Again, why screw up the language to add something that we all know is just a set of methods? (I would argue the same for the void methods that Java likes to differentiate as "constructors", by the way.)
    </quote>

    I totally agree that messing with Java to add this is not the best of ideas. I'm saying if they had thought about R++ (which I don't think was around yet) at the time they invented the language, this would have been a nice language feature. Beans is basically the after-though fix for it. It works, but it's not the most elegant solution but it's fine and the industry has approved.


    IMHO where .NET is significantly better is in its integration with Windows. Technically speaking, it is easier to use .NET to integrate with existing C++ code, for example. The Linux crowd (mono etc.) sees that ease of interacting from a Java-like runtime with a core of C/C++ code, and they (correctly) see that it's the modern equivalent of "dynamically loaded libraries".

    <quote>
    Another area where Java should improve is in higher level (e.g. VB-like) development tools. Sun and IBM need to grow up and merge AWT + SWT + Swing and come out the other side with a framework (and maybe a tools initiative too) for grabbing the next tier of component-based client-side developers. The MS VS.NET toolset is pretty damned good in this regard. Both JBuilder and Visual Cafe are atrocious in this regard. Java will lose potential client-side developers to VB.NET and also to C# if the tools don't advance significantly.
    </quote>

    Well Java development tools (like IntelliJ) are superior in many ways to VS.NET. However, the thing that makes VS.NET is its extensibility. I was very impressed with how J# and Rational's XDE worked with VS.NET. If you had say EJB generation tools in IntelliJ as well as extra GUI support, IntelliJ would be the best idea around. I haven't tried too many ide's for java, but I remember Forte wasn't all that great, crashed and ran slow. IntelliJ was far superior in my eyes.

    Thanks for your comments,
    Ken Egervari
  148. Predicting the Future[ Go to top ]

    hi ken,

    about ides and extensibility, check out eclipse www.eclipse.org, it is an open source ide framework that allows 3rd party plugins. both rational XDE and WSAD uses this as core.

    sincerely
    morten wilken
  149. Predicting the Future[ Go to top ]

    <quote>
    about ides and extensibility, check out eclipse www.eclipse.org, it is an open source ide framework that allows 3rd party plugins. both rational XDE and WSAD uses this as core.
    </quote>

    I need this too, I'm just saying that it's nice that it's available for .net
  150. Predicting the Future[ Go to top ]

    <Q> However, the thing that makes VS.NET is its extensibility. </Q>

    In addition to XDE being available to Eclipse (WSAD) JUnit now comes standard. Nothing in MS.Net like it. AspectJ is coming (probably available in betas). Nothing in MS.Net like it. Also there plugins for multiple application servers. Nothing in .Net like that - You get IIS.

    So basically all this feature (etc.) comparison is useless. It ALL comes down to - do you want all your tools (including Operating System) to come from and be supported by one vendor or have choices and support from everyone else. Nothing more - nothing less. EVERYTHING else is just smoke and mirrors.

    Mark
  151. Predicting the Future[ Go to top ]

    Like I just said to my co-workers.

    I'm sure when .NET comes out with a new feature/tool, the Java community will quickly come up with an equivalent.

    I'm sure when the Java Community comes out with a new feature/tool, Microsoft will offer something similar with .NET.

    Maybe it will take a bit longer for .NET, since it is so new, but in a year or two I'm sure these two will be running neck and neck.

    The good news is, the competition could bring big benefits to developers. Making Microsoft compete is a good thing, so long as they are competing and not up to their usual tricks.
  152. Predicting the Future[ Go to top ]

    <Cameron Purdy>
    Properties ... those should be handled by the tool. Again, why screw up the language to add something that we all know is just a set of methods? (I would argue the same for the void methods that Java likes to differentiate as "constructors", by the way.)
    </Cameron Purdy>

    While I haven't really touched C#, I've used properties for years with Borland's Delphi. (The architect of Delphi got hired away by MS to do C#). Having properties built into the language provides a great abstraction, and makes code pretty easy to read/write. It's not a big deal, but moving to Java (I do all Java at work now) I found the workaround to use the get/set/is naming convention not to be as clean.

    myobject.setMyString( "Hello" ):

    MyObject.MyString := "Hello";

    On a note that would require more change, for the camp that likes to make fields public (I don't get why, but some do), then properites can let you introduce processing (error checking, state changes, other side effects) without changing client code.

    myobject.myString = "Hello"; => myobject.setMyString( "Hello" );

    MyObject.MyString := "Hello"; (No change required)

    Like I said, not a big deal, but having the language make the abstraction rather than a naming convention provides a few small benefits. In my personal opinion it's better, but I wouldn't want Java to change at this point.
  153. Predicting the Future[ Go to top ]

    There was a bunch of studies that BellLabs (or some research company) for R++ that invented the whole rule-based concept for member variables in the first place. They were converting c++ to r++ and the results were astonishing. Now that has Java has come along, the benefits aren't so huge anymore, but it would be nice to have them though it wouldn't save you many lines of code but would help you keep some lines that just go above 80 charcaters a bit smaller =)
  154. Predicting the Future[ Go to top ]

    If C# has so many good features,why does it have such a cluttered inheritance mechanism? And yes, .net has a "rich api", for rpc you have to derive from 33 classes and implement 20something interfaces. Rich. Deep.
  155. Predicting the Future[ Go to top ]

    <Q>Other key features discovering dlls on a server and downloading the most recent components from the web and automatically updating the thick-client application. This alliviates the deployment problems and costly update cycles of the application. </Q>

    Java Web Start? (JNLP)



    <Q>Look around and play with it for a week or two. You'd be surprised.</Q>

    I have. I'm not.

    Granted there are neat new features in .Net. But very few. Try doing Jini with MS.Net.
  156. <quote>
      Innovation: Visual C++ customers have been abandoned during THREE YEARS until the new Visual C++ .NET, and people knows that they must to upgrade their code to .NET (C#), because Microsoft support of commercial C++ is to end (or will support but with no innovation).
    </quote>

    That's probably an innacurate statement. Visual C++ is definitely not at the end. I would say is at the beggining. Ever wondered why Stanley Lippman and Herb Sutter recently joined Microsoft?

    There are definitely new things coming in the future: much better support for ISO/ANSI C++ standard, better integration with .NET etc. Check out the following links:

    http://www.codeproject.com/interview/stanlippman14nov2001.asp

    http://www.codeproject.com/interview/herbsutter3032002.asp

    http://www.gotdotnet.com/team/cplusplus/

    About innovation: I would just note the attribute-based programming in C++. It makes ATL wizard-generated code so much simpler. For example try to generate a COM server in Visual C++ .NET (as opposed to Visual C++ 6.0).

    Anyway, being in Java territory I'll stop here :-)

    Adi


    P.S. These are my personal views that don't necesarily reflect Microsoft position.
  157. The *real* reason .NET will fail[ Go to top ]

    Performance is an interesting arena for a flame war, but from a practical perspective, I think that .NET will fail for the following reason: unless I'm mistaken, Microsoft's .NET will be supported only on Windows platforms. The problem with this is that mission-critical sites do not run on Microsoft platforms (yes, there are a few - very few - exceptions, but they require a ridiculous amount of hardware redundancy plus 'nanny scripts' to reboot machines when they fall over, etc., which is just not cost effective).

    Mission critical sites require an operating system that can remain up and running w/o frequent reboots/reinstalls. Microsoft's operating systems aren't yet up to this task, so the merits of .NET versus J2EE are really a moot discussion, if you ask me, unless and until Microsoft supports .NET on unix, which I don't see happening.

  158. Confession from a defactor...[ Go to top ]

    Hi Greg,

    I used to be a J2EE developer - junior by any standard, albeit a bit promising - and I worked with Java/J2EE all day long.
    I developed mainly on production-scale, clustered BEA platforms (any OS) and had a few stints with WebSphere.
    The company I worked for did the Webservices integration between J2EE (WebSphere) and .Net for Microsoft, and I personally presented the JUMP story at a major Microsoft convention in Belgium. I also co-delivered the closing key-note on the Belgian MSDN conference.

    So I lack most qualifications.

    I just wanted to tell you that I'm currently working as an academic researcher. I've decided to go for a PhD in biotechnology, rather than to stick around designing and coding enterprise applications.

    Now to the nitty gritty: WHY?

    Well, in part I just got tired of this idiocy that spreads like a disease amongst IT people. And the simple fact that the marketing machines (of which you are but a part, of course) on both sides (trust me, I don't care who wins the war any more) are relying on this stupidity of people to crush their opponents.

    Having the ability to state things nicely - being part author and part professional sycophant - does not give you the moral right to use it on the ignorant!

    I guess I have gone bitter... At age 23.

    Thanks.
  159. Confession from a defactor...[ Go to top ]

    Unfortunately, in this times, when you expect to see big named IT Engineering leaders selling “engineering solution” you see them selling nothing else than “nice packed lies” making a basis on the sad reality that the “decision makers” are very poor specialists. I think I will start to dream again about what I dreamed with 10 years before when I saw a totally different evolution of the IT engineering than the current one. I’m sure that the biggest problem is the fact that too many people use to name themselves as IT Specialists or Computer Engineers without having at least a decent diploma in Computer Engineering. Hey people, stop to name someone “Programmer” only because he paid a lot of money for a 3-day-course because he estimated that after he will gain X times more as programmer than before. Unfortunately we all know very well who transformed real programming engineering in the “Programming for dummies : Drag-and-drop-it choose in menu option build and after run … ” I think, in this times if you spent/loose 5 years or more for becoming a real Computer engineer the others will tell you : “You are a stupid, not a business man, you will obtain the same salary like a dummy who paid a 3-days-transform-your-brain-course” Sorry …
  160. Confession from a defactor...[ Go to top ]

    Well, as much as I agree what software engineers should be extremely talented (because software is still a craft I'm afraid) and knowledgable about design tradeoffs and architectural details (yes the monkies should be too), there is still a certain level of merit to RAD development because of the time-saving factors. I'm sorry, but if I have to program an application that uses a GUI, I can't think of any platform better than .NET because the visual ide is by far the best i've seen and is the easier thing in the world to use.

    If I need to build complex software or even complex frameworks that need to be very maintainable, I resort to java and build those systems using ejbs/servlets/jsps/swing because it makes practical sense to do so. Not that .NET isn't a good solution for that, just that java + java tools make it better.

    Again it all leads to the best tool for the job, but in many environments, going to .NET with an already j2ee architecture put in place will not really make this possible. Not because of interop issues, but because of the investment in class libraries and frameworks and other software assets that can't be transfered over to .net, it still makes Java the best solution - essentially tying you to it. So I can definately see where Java folks don't want to look at .net. It's just not efficient to move everything over and possibly maintain 2 versions of the same thing.

    And Web Services? Give me a break =)
  161. That's about the sharpest thing I've heard on theServerSide as of yet. You may be a "child" in the industry at only 23 years of age, but as the saying goes.. The smartest things are said out of the mouths of babes.
    Many of us are tiring of the same things.

    Basil
  162. Illustrating the problem[ Go to top ]

    Greg,

    You're doing a fine job of reinforcing why people don't like Microsoft.

    We ask you for source code. You can't simply give us a ZIP file and the application won't run on Apache. I know Windows 2000 was more widely accepted than NT, but that doesn't mean there is no UNIX servers running out there. All the places I've worked have used UNIX for their mission critical applications. The reasons are simple, the server doesn't want you to reboot everytime you look at it funny. Yes, I am exaggerating somewhat, but I've been in charge of server administration and security before for FreeBSD, Linux, NT, and W2K servers. All set up by professionals who were quite knowledgable. I think most people here can guess which ones were more stable. As for security? I used to browse several hacker newsgroups and websites as a sort of "preventative maintenance" and I remember seeing Windows servers being a frequent target because they were considered easy marks. You cannot dismiss Microsoft's extremely poor track record on security.

    Hell, a good friend of mine makes a living off problems with Microsoft's products. He was a beta tester for XP and was aghast at it's security issues right up until release.

    And for real performance, I am supposed to be surprised that .NET is faster on a Windows server? Geez, you guys have done everything you can to kill Java support, then you wonder why many of us find your claims suspect.

    I don't really care about Java insofar as its what we've built our application on. I'd run to C# and .NET in a heartbeat if the money was good and the training was available. However, if I go and spend my time and/or money learning things the MS way, is it going to get me a better paying job? I see .NET job listings out there, but not near as many and usually not very well paying for someone with my experience. On an individual level, you're telling me to make a large personal investment for something that will not pay off in the short-run, and the longe-range return is shaky at best.

    I also have a hard time believing it will save money. Those of us who have been involved in financial decisions are quite aware that Microsoft is very good at charging people money. To go with an MS solution would mean we'd have to buy Windows for all of our servers. Is there a free IDE? If not, we have to buy that as well for our developers. What about a development environment? Forget about anything free or cheap, you HAVE to use Windows for your workstations. What about upgrades? What happens when Microsoft drops support for the next product we're using? It goes on and on.

    We currently use IBM, which I admit is expensive. I seriously doubt MS is going to be that much cheaper. Despite IBM's attempts to lock us in, we can easily move our application over to anything we want. We don't use their proprietary API's. Maybe we're not taking full advantage of WebSphere, but we're also not stuck with them should we ever change.

    Our entire application could be moved over to a FreeBSD or Linux server with the only cost being the hardware itself. We currently develop using Eclipse while running our local tests on Tomcat. If we needed an HTTP Server then we can use Apache. All of this is free. The beauty is, I develop on an NT Workstation (which I like just fine as a Workstation) but everything I do ports over to our AIX servers with no muss and no fuss. Our application doesn't care where it runs. I suspect .NET does.

    Your claims of performance are highly suspect. Microsoft as a very poor track record with stability and security. You are not likely to save us any money, both short term or long term. Scalability? I'd like to assume .NET is plenty scalable, but I don't really know for certain so I'll leave that be. Maintainability? Once we accepted localized coding standards, our application performed much better with a superior architechture than what we had previously, and code maintenance has been no problem.

    If I was in a Microsoft shop, I think .NET would be the greatest thing since sliced bread. I'm not knocking .NET, I think some people will find great use for it. However, presenting it as some all-purpose solution that everyone should use is ludicrious and shows a severe lack of reality on your part. We don't have performance problems and we're not locked into any particular platform. Anytime we need a tool, it takes a quick stop over at apache.org to see what's out there. We have yet to want for anything. If we absolutely must, we can always write it ourselves.

    Would I switch to .NET is the future? Well that depends. Am I ever going to work for a Microsoft shop or a place that will migrate to the MS way? Certainly I would be willing to learn any technology that my company wants me to, I'm never going to pass up training. However, as I said at the very top, I am not going to make a large personal investment when I could be building my current skillset to leverage against better jobs or at the very least better assignments where I am at. When .NET offers me some potential return on any time or money I spend on it, I will consider it. Currently, it would be a monumental waste of time. Java bigot or MS bigot has nothing to do with it. I am a mercenary and the bottom line means far more to me than any loyalty to a platform or standard. At the end of the day, I have to put food on the table for my family, and J2EE promises to do that for quite some time.
  163. Illustrating the problem[ Go to top ]

    I also have a hard time believing it will save money. Those of us who have been involved in financial decisions are quite aware that Microsoft is very good at charging people money. To go with an MS solution would mean we'd have to buy Windows for all of our servers. Is there a free IDE? If not, we have to buy that as well for our developers. What about a development environment? Forget about anything free or cheap, you HAVE to use Windows for your workstations. What about upgrades? What happens when Microsoft drops support for the next product we're using? It goes on and on.


    Just read this from a new article from ZDNET Tech Update (link
    here)

    Another reader from a major Wall Street financial institution concurred on the cost issue. He wrote, "We run BEA's WebLogic on Windows 2000 server in our data center and have had great success in clustering and removing the one-for-one dependencies generally associated with big iron. The maintenance expense for [our] HP K series and IBM AS400 and mainframes cost more per year than the entire capital outlay for all [of our] W2K servers (over 200)." The same reader pointed out that going with the more effective Windows-route enabled the company to recover quickly from the attacks of September 11: "With the advent of disparate sites (due to fears of terrorism), big iron is just not a cost-effective solution. I was in [World Trade Center Building 2] and we were able to do business the next day because of the flexibility of Windows, not just W2K but NT 4.0."

    Adi

    P.S. These are my personal views and not necesarily Microsoft official position.
  164. Illustrating the problem[ Go to top ]

    Sorry, the correct link is here...

  165. Illustrating the problem[ Go to top ]

    <quote>
    Sorry, the correct link is here...
    </quote>

    Here's a couple more ... ;-)

    German government adopts Linux

    Linux gets boost from Dell, Oracle

  166. Illustrating the problem[ Go to top ]

    Adi -

    Nice try, but people have been doing this with Linux for years with a few nice benefits that don't come with Windows:

    1) Stability
    2) Reliability
    3) Security
    4) Standards

    Also, the price of Linux doesn't keep going up when you come back for upgrades ;-)

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  167. Illustrating the problem[ Go to top ]

    Well it wouldn't surprise me if MS is cheaper than IBM. However, my point on the financial issue was that we don't have to use IBM and we could be doing it cheaper if we ever decided to go with a different flavor of UNIX.

    To be perfectly honest, this particular company seems hellbent on doing everything with the greatest cost possible. Someday we'll realize that the most expensive hardware and tech support does not necessarily mean it's the best.

    It will be much cheaper to keep our J2EE environment and port it over to just about anything we want. Whereas moving to a Microsoft "Solution" will just be an additional cost and certainly not the cheapest nor the best either.
  168. Illustrating the problem[ Go to top ]

    Capital outlay? That doesn't include other expenses like electricity, space, personnel which can add up.

    Yes, having one server is not good but 2 large servers may be more appropriate and cost effective (factoring in ALL costs) than many small servers. With Windows/MS.Net you have NO choice. And that is the crux of the matter.

    If this article is true, why are companies dumping server farms and moving back to big Iron?
  169. Illustrating the problem[ Go to top ]

    "With the advent of disparate sites (due to fears of terrorism), big iron is just not a cost-effective solution. I was in [World Trade Center Building 2] and we were able to do business the next day because of the flexibility of Windows, not just W2K but NT 4.0."

    This has nothing to do with Windows. Companies with comprehensive, well-tested disaster recovery processes are able to resume operations quickly. Those who don't have processes in place, or do not rehearse them, are not able to resume operations quickly(or perhaps ever). This is true whether you are on big-iron, Windows or something in between. For most large companies, the establishment of a comprehensive disaster recovery plan is easier, and cheaper to accomplish on mainframe or Unix environments than on Windows. One disaster will take out a whole location and it doesn't matter if you have (had) 1 mainframe, 10 unix boxes or 100 NT servers. The replication of data/function in multiple locations will allow a company to continue processing work (usually at a reduced service level)in the face of disaster, and a well-rehearsed DR recovery process will provide for complete recovery in what ever period of time it was designed to support. Personally, I'd rather do that with a small number of mainframes than a farm of NT machines.
  170. Illustrating the problem[ Go to top ]


    >>> This has nothing to do with Windows. Companies with comprehensive, well-tested disaster recovery processes are able to resume operations quickly. Those who don't have processes in place, or do not rehearse them, are not able to resume operations quickly(or perhaps ever).

    I would disagree here. The OS does matter, simply because an clustering architecture designed with extensibility in mind has better chances to allow integration with third party solutions than an non-extensible, proprietary approach. For example in Windows 2000 it is possible to integrate a "geo-cluster" approach with the Microsoft Cluster Server (so that if one facility goes down, then another one in another town is picking up).

    Check out the following link: http://www.networkbuyersguide.com/search/105587.htm

    You will see that most vendors are targeting Windows, and there are big names there, like NSI, Veritas, HP/Compaq, NCR and many others.

    >>> For most large companies, the establishment of a comprehensive disaster recovery plan is easier, and cheaper to accomplish on mainframe or Unix environments than on Windows.

    I would be interested to see some technical data proving this difference in cost.

    Thanks, Adi
  171. Illustrating the problem[ Go to top ]

    We tried to use MS Cluster but it shares resourses which is no good. We can't do rolling upgrades. Also the delay in switch over was too long. Using something like Jini to discover services at runtime is much bette because it provides a self-healing network. It is also dependant on MS's network technologies. Don't get me started.

    Also, check out what IBM and Globus are doing with grid computing.
    http://www.e-promag.com/eparchive/index.cfm?fuseaction=viewarticle&ContentID=2184&websiteid=

    http://www.infoworld.com/articles/hn/xml/02/05/29/020529hngrid.xml

    http://www.e-promag.com/eparchive/index.cfm?fuseaction=viewarticle&ContentID=2184&websiteid=

    You are right. The OS matters. But Windows is the worst choice. Linux is a much better choice. And most large Vendors are targeting it. Look at the links provided in other responses.

    Windows = Licensing fees and more machine.
    Linux = Free and less system requirements.

    Mark
  172. Illustrating the problem[ Go to top ]

    I believe you are mixing some things here. Jini and MSCS serve very different purposes. MSCS is designed to allow high-availability that allows groups of resources to failover/failback to a different node. And, yes, sometimes rolling upgrades cannot be used but this really depends of what resources do you want to manage. Some resources support them, some not. The same consideration apply to the failover/failback time interval - it really depends on how do you choose, implement and configure your resources.

    Yeah, Linux may be free – but you may pay dozens or hundreds of dollars for setting up a hardware cluster configuration starting with a true storage array, all the fiber, FC switches, and HBA card for all nodes in the cluster. After this, the OS cost is really minimal and it is not really that important if the OS is free or not.

    Now, Jini is really different from MSCS and it has nothing to do with the concepts of failover/failback, redundancy, and single point of administration that are promoted by MSCS. Probably WLBS would be a better choice since you mentioned a self-healing network?

    Yes, MSCS is overkill in some scenarios, and it appears that this was your case. This doesn’t mean of course that "Windows is the worst choice". And, BTW, "Also, check out what IBM and Globus are doing with grid computing." – this has very little to with the basic goals of MSCS, even if both talk about clusters. There are very different species of clusters out there...

  173. Illustrating the problem[ Go to top ]

    I believe you don't understand the power and use of Jini. Or Grids for that matter. Grids are being used to serve the same purpose as MSCS and they do a better job. And MSCS was underkill not overkill. It didn't do the job.

    Yes there are different species of clusters and MSCS is not the best.

    I wasn't saying setup a cluster with Linux. I was saying use it as part of the mix.

    Mark
  174. Illustrating the problem[ Go to top ]

    Grids are being used to serve the same purpose as MSCS and they do a better job.


    Really?? Grid computing (as promoted by the Globus project for example) and high-availability computing (as promoted by MSCS) are not at all the same thing. Even more, I would say these are complementary technologies.

    Grid computing has to do with sharing resources in a coordinated manner, across a very large number of nodes. A classical example of grid computing is a cluster of thousands of computers that are used to solve a very hard computational problem. Each node dynamically gets as an input a separate "chunk" of data to be processed. In this case the shared resource is CPU. There are other examples for example where storage is the shared resource. A common characteristic in grid computing is that you make the system better by adding more resources (more computers, more storage, etc).

    But there are many problems that cannot be solved with grid computing. For example high-availability (the five nines problem). In this case the natural solution is to have redundant configurations. And this is THE problem that MSCS was designed to solve. Note that it doesn't matter how many nodes you add into the system, you just won't get an increase in the quantity of resources. You won't have an additive behavior as in grid computing.

    Does this clear things a little bit?


    Thanks, Adi


    P.S. BTW, I am curious how many database servers, SAP products, or any other serious commerical applications are using Jini to ensure continuous availability? (specifically implementing the failover/failback mechanism of migrating resources across nodes).
  175. Illustrating the problem[ Go to top ]

    This is just one of the things Grid computing does and seems to be the main push (which explains why you are confused). But if you look at the Game Grid link (http://www-916.ibm.com/press/prnews.nsf/jan/C059214DBC2D016185256BB4004632D9) you will see it is used the same way as MSCS. One just connects and doesn't worry about the server being down.

    The problem with MSCS is that it shares resources. So it doesn't solve the five nines problem. Plus the switch over is quick enough. It is also dependant on MS technologies which have a horrible track record for security, availability and robustness. If you haven't had problems, count yourself lucky.

     
    For Jini, Check out Sun's pages. Also check out Jini.org. For a commercial implementation of Jini check out Gigaspaces.
  176. Illustrating the problem[ Go to top ]

    Maybe I wasn't clear. I my last three messages or so, I was talking specifically about FAILOVER. This is a very crisp and clear concept when one talks about clusters, and its definition is widely accepted. And this is what MSCS is all about.

    Can you give me exact links, concrete implementations of the FAILOVER/FAILBACK protocol, on the sites that you've just mentioned:
    - Globus project
    - butterfly.net
    - Sun JINI
    - Gigaspaces
    It shouldn't be very hard.

    And please, just code: no draft PDF papers, begginer tutorials on Jini, or Java, etc. I cannot run specifications on my machine :-)

    Thanks, Adi
  177. Illustrating the problem[ Go to top ]

    Adi,

    Trying to bottle people into some category limited by Microsoft's toy clustering implementation is insane. Until recently (and maybe still) you could only cluster two machines together, and it was either master/slave (i.e. live and backup) -or- sometimes they could be both live for up to 2x the throughput but then there would be _no_ failover!

    Were these choices based on IDE RAID 0 and 1? GMAFB. Microsoft is _so_ far behind in this area that I'm surprised you had the b*lls to post here.

    I also like the way that you would like us to do your research for you.

    http://www.gigaspaces.com/download/GSClusterWhitePaper.pdf

    On the other hand, we can evaluate Microsoft Windows 2002 Server in a web "cluster", which means you "cluster" by storing HTTP session information in a SQL Server!!! (With ASP.NET you can also use a dedicated "HTTP Session server", which is worse because (a) it is running the not-so-stable nor secure .NET and (b) it is a single point of failure!)

    And BTW if there are any IBM guys (Billy?) reading this, you guys aren't any better here, since you _only_ have the database session persistence option when using "clones"!

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  178. Illustrating the problem[ Go to top ]

    Cameron,

    Your information on MS technologies really is out of date. You can cluster SQL Server in active/passive or active/active configurations.

    Also, with .NET on Windows 2000 (not Windows 2002), you can store session state in a state server (which, despite your claims, is very stable and secure); as well you can store in a transacted database. This is accomplised with the session object, without any code required. You simply cnfigiure where you want web server farm state to live in the configuration file.

    OK---now go ahead and post how Linux is so much better and Windows 2000 sucks and is soooooo very unstable and will never be used in a real production environments and Microsoft wants to control the world and on and on and on.

    -Greg
  179. Illustrating the problem[ Go to top ]

    Cameron,

    One other note, after reading your posts from a week ago (I was on vacation last week).

    You seem to be so sure that the only reason .NET wins on a head-to-head benchmark with Pet Store is becuase the Sun Pet Store code is crappy to begin with. In fact, Oracle optimized the Pet Store in their latest release, and based on their published results .NET still significantly outperforms their new Java implementation.

    Since you have such strong beliefs, I would like to invite you to create your own optimized Pet Store application from scratch, and have it serve as a generic "3-tier Web app" benchmark for Java app servers. Post your code here, and show you are willing to back up your claims with code and a real benchmark in a real lab. We will implement the same application in .NET, and have a third party perform performance, scalability and reliability-under-stress tests for both implementations. You can be present for all testing.

    As far as Pet Store goes, lots of folks on this forum have said, why doesn't someone simply throw away Sun's implementation, and build from scratch an optimized Java Pet Store version and do a real performance test/scale/reliability test vs. .NET? Well, here is your chance...and it does not have to be based on Pet Store as a functional specification, although I think Pet Store could be used becuase as a functional spec it excersises the core functionality app servers are used for:

    -Server side scripting (JSP/ASPx pages)
    -Middle tier components (EJBs, .NET assemblies)
    -Middle tier session state (shopping cart)
    -Exception/error handling
    -Ad-hoc database searching with data pagination for result sets
    -Database transactions
    -etc.

    I guess I am asking, do you object to Pet Store as a functional specification for a benchmark, or do you object to the specific Sun Java implementation of Pet Store (and also Oracle's revised optimized version) as the basis for a benchmark/comparison to .NET?

    I would also ask why do you think Sun invented ECperf, which bars all but Sun-certified J2EE app server products from competing, when they could have simply used the TPC-W specification? Again, you seem to be more than willing to badmouth the perf, scalability and reliability of .NET, the question is are you willing to code a new version of Pet Store (or other 3-tier web app) and have it benchmarked side by side with .NET for perf/scale/reliability? Sun has not been willing to do this, they continue to promote the "closed" ECperf despite the fact all the ECPerf 1.0 submissions to date are completely meaningless becuase they data stomp (no data integrity in the 1.0 spec, as has been pointed out on this forum by several Java developers).

    Greg Leake
    Group Product Manager
    Microsoft Corp.


  180. Illustrating the problem[ Go to top ]

    Cameron,

    One other item I forgot to include in response to your post from last week. please stop saying the .NET Pet Shop is a "2-tier" application. It is not, as has been thoroughly discussed in this forum and is obvious if you download the .NET Pet
  181. Illustrating the problem[ Go to top ]

    Cameron,

    One other item I forgot to include in response to your post from last week. Please stop saying the .NET Pet Shop is a "2-tier" application. It is not, as has been thoroughly discussed in this forum and is obvious if you download the .NET Pet Shop code. It's a 3-tier application, just like the Java version. If you are not willing to look at the .NET code becuase you hate everything Microsoft, at least be willing to look at the code to make sure what you are saying is accurate.

    -Greg
  182. Illustrating the problem[ Go to top ]

    Hi Greg:

    "Since you have such strong beliefs, I would like to invite you to create your own optimized Pet Store application from scratch, and have it serve as a generic "3-tier Web app" benchmark for Java app servers. Post your code here, and show you are willing to back up your claims with code and a real benchmark in a real lab. We will implement the same application in .NET, and have a third party perform performance, scalability and reliability-under-stress tests for both implementations. You can be present for all testing."

    Excellent idea (seriously)! I'll expect to receive the open-ended PO from you to fund the project.

    Why? Well, it doesn't help me any to prove the J2EE is better (or worse) than .NET for scalability or performance, since companies already trust in and are making significant and long term investments in J2EE.

    On the other hand, it helps .NET greatly, since .NET is not current FBO (First, Best or Only). Since .NET was about four years late (and still isn't fully functional vis a vis J2EE) and has basically zero percent market share in the enterprise applications arena, you can probably take this out of the marketing budget. If you can prove that it's faster, scales better and (maybe somehow as a side-effect) show that it's more stable and secure, heck, it can't hurt you. Perhaps you can even use Mono or Rotor or .GNU to show how it is cross-platform!

    I'll even offer to provide both the J2EE and .NET implementations.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  183. Illustrating the problem[ Go to top ]

    Excellent idea (seriously)!


    I definitely agree (and I believe that many readers here are on the same frequency).

    Except that for some reason, nobody from the Java world was able to come up with a refined Pet Store. Is really that hard to optimize that Java blueprint application so it won't run 10-20 times as slow than equivalent .NET code? Apparently yes. I wonder why... and I don't think that funding the project is the problem.

    Nobody can loose from a fair competition. So everybody wins something in the end. If there is a problem with the current "good" design patterns from PetStore, people will realize that anyway, sooner or later.

    Thanks, Adi
  184. Illustrating the problem[ Go to top ]

    Hi Greg,

    Greg: "OK---now go ahead and post how Linux is so much better and Windows 2000 sucks and is soooooo very unstable and will never be used in a real production environments and Microsoft wants to control the world and on and on and on."

    Don't have a cow dude.

    I _love_ Windows 2000 as a desktop OS. I just would not choose to run a production site or enterprise application on it because of the multitude of security and reliability issues that it has had AND CONTINUES TO HAVE. Fix those, then we'll talk.

    IIS has pretty good performance, but how many serious security issues has it had AND DOES IT CONTINUE TO HAVE? (Please, don't answer; that's a rhetorical question.)

    Greg: "Your information on MS technologies really is out of date. You can cluster SQL Server in active/passive or active/active configurations."

    Nice try. It may be out of date, but it isn't "really" out of date, because I just recently (several months ago) listened at length to one of the top experts who writes books and training courses on the subject for Microsoft. He explained the whole MS cluster thing to me and how it works with SQL Server, and he explained the coming improvements (some of which may have already come).

    Greg: "Also, with .NET on Windows 2000 (not Windows 2002), you can store session state in a state server (which, despite your claims, is very stable and secure); as well you can store in a transacted database. This is accomplised with the session object, without any code required. You simply cnfigiure where you want web server farm state to live in the configuration file."

    I already know these options. I'm getting to be quite the .NET expert. ;-)

    A "state server" is a good start, but it's still a single point of failure and a potential bottleneck to scale.

    Worse, using a transactional database for non-transactional data is still a hack and it performs and scales badly (relative to other options). It's also a single point of failure.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  185. Illustrating the problem[ Go to top ]

    Cameron,

    Get a clue: today Windows support up to four nodes in a cluster. And it will support up to eight nodes when Windows .NET Server will ship. See the following link for more goodies that will come in Windows .NET:
    http://www.microsoft.com/windows.netserver/evaluation/overview/technologies/clustering.asp

    Concerning the HTTP state server: the obvious solution, that you are apparently missing, is to have SQL Server in its own clustered configuration. There are several ways (based on a scale-out approach for example) so that you can reduce to minimum the need for a single point of failure.

    BTW, thanks for the link - actually it Mark's credit that pointed me the gigaspaces technology :-) I love to learn about different approaches and this looks an interesting technology (integration of failvoer, load balancing and replication) except that it has a number of obvious drawbacks:
    1) It simulates a "shared-nothing" approach by doing replication between various cluster groups. The replication is performed directly thorugh the network, and not by using a shared physical disk (as used by Microsoft Cluster Server, Tandem NonStop or Informix OnLine XPS etc). So this network-based approach will alyways leave a small window that is very innoportune for a failover, when the data is not completely replicated. Oops!
    2) Not to mention that using network for replication is a VERY non-scalable solution. Let's take your previuous example: say that you have to maintain a HTTP Session state server. You essentially have to replicate all the data through the network. No wonder that no serious commerical application is planning gigaspaces technology for clustering (or probably I am wrong: which next Oracle database will use gigaspaces instead of their DLM?).
    3) Failover is triggered by the gigaspaces cluster proxy whenever a failure occurs. This is differs from the standard proactive method of detecting failures, for example the IsAlive/LooksAlive protocol from MSCS.
    4) The cluster configuration options are very limited. There are no ways to control switch timeouts or to get a guarantee that a switch will be done under a certain amount of time, etc.

    All these are my personal (and probably incomplete) opinions based on a quick read. Please correct me where I was wrong; same request for Mark.

    OK, now let's watch the percentage of hype vs. technical information in your response :-)

    Thanks, Adi
  186. Illustrating the problem[ Go to top ]

    Adi,
      Shared resources are a bad thing and at least one reason MSCS is not a viable solution where this is a concern. And if isn't, why are you clustering? Just failover? Also, the failover in a MSCS is not immediate. In our tests there was at least 30 second delay before we could even ping the server.

    And as for reliability - we are constantly having issues with MS network/server/server product technologies.

    Using a network for replication and not having shared resources is important to solve what I believe was the original reason for this rabbit trail - 9/11. If it isn't scalable (it isn't) then other technologies (i.e Grid) may be needed to solve this issue. Network replication is/can be reliable, but it has to be done right. Will it be perfect? Probably not. But neither is anything else.

    Because of the time delay any client will have to reconnect or at least retry. In my scenario, the client requests a service and is given the current service WITHOUT needing to wait for failover. So there is no need for failover. This can be done with basic Jini. Gigaspaces is just one commercial application and is not right for all scenarios. IBM is also working on their own version of this technology.

    Mark

  187. Illustrating the problem[ Go to top ]

    Hi Adi,

    Adi: "OK, now let's watch the percentage of hype vs. technical information in your response :-)"

    WTF ... you finally give a great response and you want me to give you a hard time? ;-)

    Adi: "Get a clue: today Windows support up to four nodes in a cluster. And it will support up to eight nodes when Windows .NET Server will ship."

    I like that "Get a clue" line; I'm going to have to remember that. I was aware of the support that you describe only as "coming soon"; I didn't realize the 4-node support (for example) was already available.

    Adi: "thanks for the link"

    Thank my new best friend Google.

    Adi: "Concerning the HTTP state server: the obvious solution, that you are apparently missing, is to have SQL Server in its own clustered configuration."

    So I can run Tomcat on Linux with clustered session state for almost nothing, or I can use a transactional database with an expensive cluster option that's slower and 100x the cost? (Rhetorical ... not meant to belittle your answer, but to put it into a real context of existing solutions.)

    Adi: "So this network-based approach will alyways leave a small window that is very innoportune for a failover, when the data is not completely replicated. Oops!"

    Regarding Gigaspaces, I can't speak for them (they appear quite intelligent and capable of speaking for themselves), but your assumption is incorrect. The ability for such a problem to occur is a result of the protocol itself. True, a simple protocol would provide such a window, but there is no rule that says that other cluster members have to be passive participants of failover.

    I think part of the problem (with your statement as well as the approach of the Microsoft cluster implementation as I understand it) is that it based largely on a client/server architecture, instead of a federated model. As an analogy, it's the difference between a centrally controlled economy and an economy of self-interested agents (capitalism). Not that I would be comparing Microsoft products to a centrally controlled economy or anything ;-)

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  188. Illustrating the problem[ Go to top ]

    Hi Cameron,

    I see that you work for a company that provides clustering software and cluster cache for J2EE based apps...Just out of curiosity, what is the pricing for your Tangisol product line?

    As for "MS has everything to prove and J2EE has nothing to prove" I still have to disagree. Clearly MS does have a lot to prove, and we hope to do so by listening to customers, looking at the competition, and constantly improving our product lines. I do believe that .NET, VS.NET, the Windows 2000 server line and the upcoming Windows.NET server line are ready for the enterprise, have already been used in many large-scale enterprise apps, and are huge improvements over our previous product lines.

    But as for J2EE having nothing to prove in the enterprise space, I respectfully disagree. EJBs are still unproven, you will find large scale systems done with JSPs, but most of these use JSP/servlets for the front end HTML generatation only, and avoid the use of J2EE features like stateful EJBs, CMP, etc. J2EE is still very much in evaluation stage in most large scale applications, and customers I talk to have found many issues in their early imlpementations. That is not to say these issues will never be addressed, but just look at the technical discussions on ServerSide about the pitfalls of using stateful EJBs, CMP, etc. and its evident all of the issues have not been worked out, and that in many cases following a J2EE design pattern results in an application that simply does not scale and is not easy to create or manage.

    MS does have a very significant value proposition with .NET. We believe you can build the same application in .NET vs J2EE but do so:

    -In a fraction of the amount of time becuase of a simplified development model, state of the art visual tools.

    -The resulting application will run faster and scale better than the J2EE/EJB equivalent. Not just a little better, but a lot better. Lot of this has to do with a "stateless middle tier" design philosophy vs. J2EE statefull middle tier philosophy.

    -As a result the .NET application can be run on many fewer servers than the J2EE/EJB equivalent, driving down operational costs and hardware costs.

    -The resulting application can be run on inexpensive Intel servers and scale better than the EJB/J2EE equivalent running on Sun and IBM proprietary servers such as E10K and IBM Z series mainframes that costs millions of dollars. And yes, I am confident we will also be a lot faster/scalable than the same EJB app running on the same Intel hardware under Linux.

    -The resulting application will be more reliable, stable and *just as secure* as the J2EE/EJB equivalent.

    -The resulting application will be easier to manage becuase it has many fewer lines of code, streamlined architecture, easier deployment (XCOPY deploy), easier tuning (.NET tuning is very easy...you do not have to test a zillion different JVMs, JDBC drivers, thread pool/heap memory settings, test different number of "clones", etc.); you do not have to change tuning parameters every time you scale up with more processors; etc.

    The last customer I talked to, yesterday, was running a stateful EJB application, and to get it to scale they were running it on 2 Sun 10K servers, acquired at a huge cost from SUN. Their app was complex and hard to manage, and that was the reason they were talking to me. The reason they were using J2EE was not becuase they were sold on its capabilities, but becuase they are a SUN shop through and through, and use the development tools and methodologies SUN tells them to. Today that happens to be J2EE. They are interested in hearing about .NET becuase they want to:

    -Reduce their hardware costs

    -Reduce their software costs (they are spending huge sums of money on their J2EE app server)

    -Reduce their development times and increase their ability to change and create apps quickly

    -Improve system scalability/reliability

    Will .NET do this for them? I can't say yet, but to them its worth the investigation time, a simple prototype project done in 4-6 weeks in both J2EE and .NET; with load/stress/management abilities testing to follow.

    Bottom line I am not saying that .NET is right for everyone or that Java sucks. But what I am saying is that the .NET value proposition is a big value proposition (have not even mentioned Web services, integration capabilities, etc.). And it does not take an unreasonable amount of effort for customers to do their own comparisons. I encourage customers to build their own prototype application in each technology, and compare productivity, perf, scalability, etc. They can do this in a 4-6 week project with 2-3 developers architects. If the customer is using a data-driven, transacted Web app as their prototype, I encourage them to use the .NEt Pet Shop as a design pattern for their .NET test application.

    I want to continue our conversation about you testing/tuning the Java Pet Store to come up with your own implementation. You are right I am eager to "prove our technology." And I am willing to pay you a reasonable fee, if you are willing to talk publicly about what you learned and what the test results were. Including what features of J2EE you did not use becuase they could not scale (like stateful entity beans, CMP). Contact me at gregleak at Microsoft dot com. Let's talk.

    Greg Leake
    Group Product Manager
    Microsoft Corporation


    PS: If you take this project on, realize I am not just some marketing wonk that sits at MS and spews. I operate a large scale testing lab (over 100 client machines capable of generating huge levels of stress), have been load and scale testing COM+, .NET, and many, many J2EE based app servers for over 3 years, and the data I publish is not BS, or made up. I do know just a bit (although there are many Java devs and .NET devs that are much more knowledgable than I) about application architecture, the principle of keeping things simple, and how to get great performance, scalability and reliability out of a system. I also know a lot about J2EE app servers, and how well they perform. That is why I am eager to talk with you about a project where you take your "best shot" with J2EE and the Pet Shop as a functional spec.

  189. Illustrating the problem[ Go to top ]

    <Greg Leake>
    They are interested in hearing about .NET becuase they want to:

    -Reduce their hardware costs

    -Reduce their software costs (they are spending huge sums of money on their J2EE app server)

    -Reduce their development times and increase their ability to change and create apps quickly

    -Improve system scalability/reliability
    </Greg Leake>

    "-Reduce their hardware costs"
    I don't see how that proves your point. Java runs great on Linux. Linux runs great on commodity hardware. Combine two together and you'll get the price advantage of commodity hardware and save thousands just in cost of MS licenses alone.

    "-Reduce their software costs"
    Really? Why pretend that you've never heard of Linux Advanced Server, Jboss App Server or Netbeans IDE and hundreds of other low cost solutions? Java offers a great variety of tools, platforms and pricing options to build highly cost-effective systems.

    On the other hand, with MS license fees going up, it really makes very little business sense committing to an unproven, single company solution, such as MS .Net.

    "-Reduce their development times and increase their ability to change and create apps quickly"
    MS marketing at its best ... ;-) This claim has the same credibility as your previous statement.

    "-Improve system scalability/reliability "
    MS is known for a lot of things but reliability is not one of them. I'm glad though you did not mention security :-)

    I understand you are interested in telling about .Net simply because MS pays you to. However, .Net is clearly a wrong choice even for your hypothetical customer.

  190. Illustrating the problem[ Go to top ]

    Hi Greg,

    That's quite a response. Between the two of us, we should write a book.

    Greg: "I see that you work for a company that provides clustering software and cluster cache for J2EE based apps...Just out of curiosity, what is the pricing for your Tangisol product line?"

    I hope you don't mind that I correct your spleling, but that's Tangosol. You can find us at http://www.tangosol.com/ on the world wide web. Among other things, our direct model pricing for Coherence is published on the web site. We also provide the software to ISVs and OEMs under tailored contracts, and we have a partner program with a volume purchase schedule.

    Greg: "As for "MS has everything to prove and J2EE has nothing to prove""

    Is that a quote from me? I don't remember using those words. Are you attempting to put words in my mouth (again)? That's a bit dangerous since my quote are right above.

    I do believe that Microsoft (as the new kid on the block (no musical insult intended)) with .NET has the onus of proving its technology, its commitment to standards, its support for existing customer investments, etc.

    Greg: "But as for J2EE having nothing to prove in the enterprise space, I respectfully disagree."

    Whoa, big boy! I don't remember saying that. However, it is clear that J2EE has spent years working to prove its mettle, and has been widely adopted and deployed (IIRC already 75% of the Fortune 500 according to Gartner).

    Greg: "EJBs are still unproven, you will find large scale systems done with JSPs, but most of these use JSP/servlets for the front end HTML generatation only, and avoid the use of J2EE features like stateful EJBs, CMP, etc."

    This is simply FUD or ignorance, choose one.

    EJBs aren't some magic bullet. They are just functional, transactional components. They work, they are used widely in production J2EE systems, and they perform and scale well.

    I would suggest that you are repeating someone else's words here. Remember, people will largely tell you what you want to hear, and when they tell you something that you don't want to hear, you will either hear it as you would like to hear it, or you will ignore it.

    Greg: "... In a fraction of the amount of time becuase of a simplified development model, state of the art visual tools."

    I do think that the Microsoft .NET tools are nice. There is no doubt that they are an excellent upgrade for Visual Studio or whatever it was called. However, the tools for Cold Fusion and PowerBuilder are nice too, and I don't see J2EE developers flocking to them. Tools are part of a good strategy, but since I can't see companies strategically choosing .NET, I don't see how they can "make" the strategy for you.

    Furthermore, the .NET tools are competing at the same level as older established tools. While they are good, they are not revolutionary and arguably far behind the state of the art in visual Java development tools. (I personally think that they are ahead in some important areas, but that is another topic entirely.)

    Greg: "The last customer I talked to, yesterday, was running a stateful EJB application, and to get it to scale they were running it on 2 Sun 10K servers, acquired at a huge cost from SUN. Their app was complex and hard to manage, and that was the reason they were talking to me. The reason they were using J2EE was not becuase they were sold on its capabilities, but becuase they are a SUN shop through and through, and use the development tools and methodologies SUN tells them to. Today that happens to be J2EE."

    I deal with companies going in all directions -- screwed by Microsoft, screwed by IBM, screwed by Sun, etc. I have also personally worked with a 2x e10k application built in J2EE that should have been able to run just as well on about a 4-CPU Lintel box (or Windows .NET for that matter, if you're just looking at throughput). Does it make J2EE look bad? Duh ... of course it does! Maybe if people had this kind of app built in .NET then we'd see the same thing ... we may never know ;-).

    Simply put, if I give you a detailed spec for an application, you can build it in C for Linux or in Java or in .NET for Windows or for that matter you could probably build it in COBOL for the mainframe. And it would probably work well enough. So why are people choosing J2EE so widely for business applications? Frankly, it's a smart choice. A very smart choice. It runs on all sorts of hardware, allowing a company to defer certain choices or change platforms later without rewriting the application. It is very portable among middleware vendors. It avoids vendor lock-in. It supports all the relevant standards ... so many TLAs that I can't remember them all. It integrates well (securely and transactionally) with EIS resources and other middleware. It's relatively mature (compared to .NET, not COBOL ;-). It's widely supported by just about all the vendors out there (even Microsoft occasionally). There are tools and libraries and software solutions available for basically every corner of the industry and every conceivable problem. It's a vibrant market of competing companies (who competes against the CLR in the .NET market?).

    If you want to compete with J2EE, I have some advice for you: Give your customers what they want. A couple of hints: They don't want to go back to having no choice but to swallow what you give them (Microchannel, PS/2, etc. ... oops, that was IBM, but you get the idea). Innovation (e.g. SWT) is good, but purposefully incompatible (e.g. Microsoft JVM) is not. It's a really easy concept.

    Why not leverage the momentum of the J2EE industry to your company's benefit? You're not going to win in the enterprise with .NET ... and you've already lost a huge percentage of your core market to a combination of Linux, Java, etc. It's time for a little vision, and the current .NET approach is not vision, it's just more of the same old "screw-the-customer" mentality, recycled behind a new marketing slogan.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
    Tangosol Coherence: Clustered Coherent Caching for Java and J2EE
  191. Illustrating the problem[ Go to top ]

    Why does everyone assume that if you do J2EE you have to be doing EJBs? J2EE includes the use of them but I can use other persistance methods. EJBs attempt to solve issues in a way that is not available in MS.Net. So comparing the two other than to say they are different is a waste of time. BTW, one doesn't have to do JSP's either to do J2EE.

    As for this "customer' of Greg's, unfortunately they didn't get it (They think J2EE is the problem) and still don't (They think Greg might have the answer). J2EE has more than one tool for the job. EJBs are not always the right persistance tool.

    How fast you can whip out an application only appeals to Manager types (and other uniformed) and how many nano-seconds faster a function runs only appeals to hard core engineers (and other uniformed). Why? Because these seem to be tangable and measurable and are easily manipulated. What really is more important? Things like does it run fast enough, is it maintainable, is it really cheaper (ALL things considered), what will it cost over the life time of the application, and am I stuck with one vendor?

    So to keep going back to "it's runs faster" (I'm so glad I saved that millisecond - here's a $100) and it's faster to develop with and deploy (Obviously one hasn't tried the latest crop of Java tools) is pure smoke and mirrors.

    Mark
  192. Dear Cameron,

    In another place I you said that no serious company is going to deploy the mono version of the .NET.

    If that is true I would reply that it seems that there are no a big adoption of open source software likes JBoss either by big companies.

    They seem to prefer an application server backed by a company, like WebSphere, Weblogic.

    If we assume for a moment that 1) this is true (no large adoption of open source software), then we are down to a choice between .NET or some professional Java application server.

    The price of .NET Framework SDK is zero (0). (If there is one thing I learned to like during my Java period it was to work with only a good text editor and ant and I do similar in C#.NET).

    The price for a good Java Application Server usually starts with something around $50.000.¨
    And the every customer has to pay this price too.

    Considering that an ordinary C#.NET application easily can handle up to 5000 simultaneous users, it has to be a very big project to justify the cost of Java.

    On the other hand if 2) open source software is going to be successful, then the cost of the Mono implementation of the .NET including ado.NET asp.NET is to be zero (0) too.

    In either way you don't need these dinosaur application servers.

    The number one reason that I am against Java is that you need an expensive and application server to do something.

    Regards
    Rolf Tollerud
  193. Mark,

    Clearly EJBs are central to J2EE. To say otherwise seems to fly in the face of IBM, Sun, Oracle, Bea, etc. What good are enterprise features like EJBs and CMP if they do not scale and perform well? Your last post seems to indicate that you have abandoned EJBs and are using JSPs/servlets almost exclusively (or perhaps stateless session beans ala IBM's recommended development approach for scalable J2EE systems, in which case you are still likely writing custom database access code).

    It's fine for Sun et al to tout EJBs, stateful middle tiers, CMP, etc. as some killer technology that solves the world's problems and has no equivalent, but if they cannot stand up to stress in real world systems, what's the benefit?

    For example, I keep looking at the ecPERF 1.0 submissions and wonder how many people understand that these performance numbers are meaningless becuase they do not force synchronization and hence do not preserve data integrity?

    IBM has had lots of experience building large-scale systems on mainframes, and it seems to me they have promoted a stateless middle tier model in these cases. I think a big difference between .NET and J2EE is that .NET promotes a stateless middle tier model at the core not becuase it lacks features, but becuase this is the way to build fast, scalable and reliable systems. As for J2EE, customers have lots of options, and I think these options often get them in trouble, as you seem to have concluded when you say you do not need EJBs to build a J2EE app.

    And if I can port a Java application across many different (mostly very expensive) hardware/OS platforms, but my application does not provide great integration with other applications on other platforms created with different development tools, and I cannot optimize the application with native platform features, then I wonder where the technology "lock-in" is actually ocurring. Are most customers really after "write once run anywhere" or are they after "write once and integrate everywhere?"

    If customers follow the J2EE design philosophy, I think they end up with something like Java Pet Store, which at one time was touted as (and I quote from Sun's site) "illustrating best practice J2EE programming for the enterprise" but now is simply referred to as a "bloated, poorly architected solution that should never have been stress tested."

    So the real test is to build an application using CMP, stateful EJBs and full-fledged J2EE, and compare its performance, cost to develop, maintainabilty to the same application built in .NET and for that matter based on simpler Java constructs. And this is exactly what I am encouraging customers to do, to see if .NET won't indeed reduce their development times, create more maintainable applications, and provide better performance/scale, and cost significantly less to deploy vs. all those expensive Java app servers.

    It's not that hard an evaluation to do, and it is very valid to compare an application built using .NET vs. the same application built using J2EE to see how they compare across the board. I think customers that have been sold on J2EE will be very surprised to see how much better the .NET application scales, how much faster they can develop it, and how overall they can reduce their time to market and their total solution costs, including management costs. Imagine not having to fool with Java thread pools every time you add CPUs to a system or deploy to a machine with a different config...imagine not having to worry about "cloning" JVMs and testing dozens of different configs/JVMs just to get full utlization out of the middle tier machines...imagine not having to restart your app server everytime you tweak a config setting, for example.

    So I think customers embarking on such an evaluation will find it well worth their time, even if they continue to use J2EE at least they will have some understanding of what parts of J2EE hurt vs. help in building large-scale systems; and they will be more educated on some of the advantages of .NET vs. dismissing it out of hand. Most of the Fortune 500 customers I talk to are doing or planning such evaluations. They have nothing to lose and everthing to gain.

    -Greg
  194. Greg,
      I haven't abandoned EJBs. I try to use the best tool/techinque for the job. And yes sometimes that means MS. Obviously, you know little outside your world. I've done Mainframe and PC development and MS and other technologies. There are other things beside custom database access code and EJBs. And just because one is doing EJBs doesn't mean they are not doing custom data access.

      I guess you would say Web Services are central to .Net. Honestly, I would say they aren't but if one believes hype, like it seems you do. ... . EJBs are one thing that sets Java apart from MS technologies. Java has what .Net does in the way of persistance (and more) but EJBs seem to be the cool thing and are powerful in the RIGHT circumstance.

    Too bad you think options get people into trouble. I think it is not knowing what one is doing and believing hype. Way too many people are in this industry who never should have been. As for stateless systems - most MS type systems aren't - they are C/S and databound control type. Check out MTS and MSMQ discussion (COM+) groups - little activity. I've seen alot of apps, alot of places and they are pretty much the same - stateful. Maybe yours aren't but you seem to be in the minority.


    As for an evaluation - Most companies don't have the money MS and Oracle have. We cannot do it. Plus, AGAIN, the advantages you keep pointing out are not the main issues and are not why most choose Java over .Net. How do we compare the important things. Sure, there are uninformed who don't really understand or see all the issues.


    Mark
  195. Dear Rolf,

    Rolf: "In another place I you said that no serious company is going to deploy the mono version of the .NET."

    I see two big problems with Mono:
    1) It doesn't exist yet (it's at release 0.12 and has quite a ways to go to "catch up" with the existing MS .NET libs).
    2) More importantly, Microsoft can sue any company that uses Mono because it infringes on Microsoft copyrights, licenses and patents. What responsible CTO would use a technology that has no published license (i.e. Microsoft's ECMA "standards") even though it was REQUIRED to be made available months ago. Until Mono gets a guarantee from MS that they won't sue, I can't suggest to anyone that they should use it for commercial purposes, even if I like it.

    Rolf: "If that is true I would reply that it seems that there are no a big adoption of open source software likes JBoss either by big companies."

    You've been taking logic and debating lessons from Greg again, haven't you? The proof is in the pudding ... according to the stats that I've seen (which admittedly are two different studies) there are more developers using JBoss than .NET for enterprise app development, and JBoss only represents a small portion of the market.

    Rolf: "They seem to prefer an application server backed by a company, like WebSphere, Weblogic."

    Some companies do.

    Rolf: "If we assume for a moment that 1) this is true (no large adoption of open source software), then we are down to a choice between .NET or some professional Java application server."

    There's only so far you can carry an invalid assumption and derive a point from it. You are building a house of cards on a pyramid of marbles. Please try again.

    Rolf: "The price of .NET Framework SDK is zero (0)."

    The price of J2EE SDK is zero.

    The price of development licenses for most app servers is zero too.

    Rolf: "The price for a good Java Application Server usually starts with something around $50.000. And the every customer has to pay this price too."

    The cost of running a .NET application is that you have to run Windows. That chops at least 75% of the potential customers right away. And Windows isn't free ... when you look at hardware, software, maintenance, etc., Windows costs significantly more than Sun (Sparc/Solaris), IBM (several platforms), and HP (PA/UX). And that's with current commodity hardware (32-bit limited), not the Itanium line (which is still ridiculously expensive) for which there is no commercial Windows OS release.

    As for software price, it totally depends. I've seen as much as $80k per CPU for certain specialized types of servers, and I've heard of ones much more expensive than that. (And those prices are for running on Windows too.)

    Java high-end app servers are very rarely over $20K/CPU, and usually less than $10K/CPU.

    Rolf: "Considering that an ordinary C#.NET application easily can handle up to 5000 simultaneous users"

    Hee hee! Maybe on a huge-azz farm serving static pages.

    Obviously you haven't seen what those ex-VBers are writing. Trust me, I've seen what they've done in Java, and the .NET stuff (with COM+ and MTS etc.) is an abortion waiting to happen.

    Rolf: "... it has to be a very big project to justify the cost of Java."

    ROFL.

    Rolf: "On the other hand if 2) open source software is going to be successful, then the cost of the Mono implementation of the .NET including ado.NET asp.NET is to be zero (0) too."

    .NET is not zero. We spend more money each year on Microsoft software than with any other software vendor. We don't even run anything fancy (no Exchange or Back Office or SQL Server). Windows is expensive ... very expensive. Office and Windows times every PC in the world is the cost of .NET.

    Rolf: "In either way you don't need these dinosaur application servers."

    Oh, cripes. Dinosaur. Rolf, you have me ROFL. Have you seen the mess that .NET is pinned on? I finally got away from that Windows API disaster, why would I (or any sane person) want to go back to that 1980s approach to software development. Yes, .NET is a beautiful wrapper around Windows hacks ... it's too bad that the wrapper isn't thick enough to insulate you from all of the ugliness. Of course, then it could be fully portable and it would be called Java. ;-)

    Rolf: "The number one reason that I am against Java is that you need an expensive and application server to do something."

    What are you talking about? That doesn't make sense. You are "against" Java? Even though you can choose to work with open source products or low-cost products or high-end products?

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  196. Cameron,


    "More importantly, Microsoft can sue any company.."

    It is sad to se a person that I respect degrade a debate to such low level.

    First, to stop reverse engineer has several times been to court without results. Second, how to you think MS with in the current situation could sue anybody. Third, why should they? Mono is in Microsoft best interest and they have bent over backwards to make it happens.

    Nothing could cause Microsoft happier more than if Mono turns out to be a big success. Why, because it is a weapon against Java of course.

    "As for software price, it totally depends. I've seen as much as $80k per CPU for certain specialized types of servers, and I've heard of ones much more expensive than that. (And those prices are for running on Windows too.)

    Java high-end app servers are very rarely over $20K/CPU, and usually less than $10K/CPU."

    And if you have an application made in one of these app servers and 20 customers you have to pay $10-$20K-$80 * 20.


    ".NET is not zero. We spend more money each year on Microsoft software than with any other software vendor. We don't even run anything fancy (no Exchange or Back Office or SQL Server). Windows is expensive ... very expensive. Office and Windows times every PC in the world is the cost of .NET."

    I thought we were talking servers here?


    "I finally got away from that Windows API disaster.."


    I finally got away from that Java SDK disaster..


    Miguel Icaza: ".NET is the programmers dreams come true"

    I could not agree more.


    Regards
    Rolf Tollerud
  197. Rolf,

    First, before I point out the obvious errors in your response, I'd like to be clear that there are some nice things about .NET technically. I just can't in good faith say to someone "use .NET because it has a few specific features that are incrementally nicer than their equivalent in Java." There are excellent business reasons for using Java and being comfortable making a long term investment in it. I can't find the same or similar compelling reasons in .NET.

    Cameron: "More importantly, Microsoft can sue any company.. [that uses Mono]"

    Rolf: "It is sad to se a person that I respect degrade a debate to such low level."

    I agree 100%. It's too bad that the threats to sue came from Microsoft executives.

    Rolf: "Nothing could cause Microsoft happier more than if Mono turns out to be a big success. Why, because it is a weapon against Java of course."

    Such a hypothetical partnership would be a partnership of convenience, and if used as you describe, would only be short-lived. I can't ask customers to make strategic decisions based on what party Microsoft may be temporarily using to screw its competition.

    Cameron: "Java high-end app servers are very rarely over $20K/CPU, and usually less than $10K/CPU."

    Rolf: "And if you have an application made in one of these app servers and 20 customers you have to pay $10-$20K-$80 * 20."

    Only if those customers want the high-end app server. Perhaps you don't understand what "standard" means. It means that I can run my J2EE app on any J2EE compliant server as long as I develop to the standard.

    Please note that this availability of selection is a huge business advantage for Java, and a woeful shortcoming for .NET.

    Cameron: "I finally got away from that Windows API disaster.."

    Rolf: "I finally got away from that Java SDK disaster.."

    Give me a break. If you like the .NET libs, then you like the Java libs that they were copied from. The only major difference is capitalization of method names.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  198. "Please note that this availability of selection is a huge business advantage for Java, and a woeful shortcoming for .NET."

    That applications are portable between different Java app servers is completely untrue. We had a lot of code in ATG Dynamo that was absolutely useless in another app server. Perhaps if you only utilities 6-7% of the app server functionality but why did you need to by this expensive software then, if you not going to use it fully.

    The J2EE market is completely Balkanized. Therefore the competition is not really between .NET and J2EE but .NET - Webshere, .NET - Weblogic, .NET - ATG Dynamo and so on.

    I can only be sorry for this folks who put a lot of effort and money into something that disappears, like for instance ATG Dynamo, Orion, Blustone and others.

    In fact if you want to do something in Java I would recommend using Tomcat, Velocity and Poolman.

    But, I course, without platform compatibility .NET will not succeed, no matter how good it is. Therefore the Mono project is so important. Every day I follow their work and read their mailin list. If they succeed, there will be a healthy competition between Open Source and Microsoft that can only be beneficial to all, not like the JCP, IMHO a committee of impractical theoreticians, with Sun holding a death grip of control.
  199. Hi Rolf,

    Well, I think you're a bit jaded about this all, but you do make some good points.

    Rolf: "That applications are portable between different Java app servers is completely untrue."

    From experience (our customers and my own personal experience) I know it to be true, but with exceptions.

    Rolf: "We had a lot of code in ATG Dynamo that was absolutely useless in another app server."

    ATG Dynamo? J2EE?

    Rolf: "The J2EE market is completely Balkanized. Therefore the competition is not really between .NET and J2EE but .NET - Webshere, .NET - Weblogic, .NET - ATG Dynamo and so on."

    Hee hee. No, it's between Websphere and Weblogic and so on. .NET doesn't enter the picture (yet?).

    Rolf: "I can only be sorry for this folks who put a lot of effort and money into something that disappears, like for instance ATG Dynamo, Orion, Blustone and others."

    Agreed, but if they built a J2EE application (not a Dynamo application) then it is portable.

    Rolf: "In fact if you want to do something in Java I would recommend using Tomcat, Velocity and Poolman."

    Tomcat maybe just to verify that it ports there, but there are much better servers (Resin) for not much money.

    Rolf: "But, I course, without platform compatibility .NET will not succeed, no matter how good it is."

    It depends how you define success. If it stops the bleeding (the exodus of VB developers) then it is successful from Microsoft's point of view.

    Rolf: "Therefore the Mono project is so important. Every day I follow their work and read their mailin list. If they succeed, there will be a healthy competition between Open Source and Microsoft that can only be beneficial to all"

    Time will tell. I cannot tell the future, but like I said before I cannot suggest to anyone that they would invest strategically in .NET.

    Rolf: "... not like the JCP, IMHO a committee of impractical theoreticians, with Sun holding a death grip of control."

    That's a lot of whining, but I do think Sun should continue to give Java its own legs.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  200. Cameron,

    "I said before I cannot suggest to anyone that they would invest strategically in .NET"

    That not especially surprising considering that you are a Weblogic man yourself.

    Others may be considering that a .NET solution with two Compaq ProLiant BL10e Server Blade á $2358 can handle up to 5000 simultaneously users and no need of any app server or any overpriced Unix system administrator. A development cost of probably 25% compared to a Weblogic solution. Backed by Microsoft with some of the words best programmers.

    Regards
    Rolf Tollerud
  201. Hi Rolf,

    Rolf: "That not especially surprising considering that you are a Weblogic man yourself."

    I do like Weblogic. Most of it anyway. So sue me.

    And I've used WebSphere (including the "custom" versions for some of IBM's less colorful platforms), Orion, Caucho Resin, IIS, Netscape (AS and ES and Sun iPlanet), Oracle (OAS=JServ and iAS=Orion and one in between that slips my mind) and Bluestone and Dynamo and ColdFusion and Apache and Tomcat and JBoss and ....

    I've liked and learned from most and the ones I didn't like I still found some specific things to like about them.

    And at the end of the day, I still can't in good faith suggest that people should invest in a Microsoft .NET strategy. And I've been open and clear and honest about why.

    Rolf: "Others may be considering that a .NET solution with two Compaq ProLiant BL10e Server Blade á $2358 can handle up to 5000 simultaneously users and no need of any app server or any overpriced Unix system administrator. A development cost of probably 25% compared to a Weblogic solution. Backed by Microsoft with some of the words best programmers."

    First of all, Microsoft has been losing a lot of those "best programmers" to BEA.

    Second of all, what significant company minds paying a Unix administrator? According to the studies I've read, a Unix admin manages between 2x and 4x the number of servers as a Windows admin, and the Unix servers are typically bigger, so you're talking a human cost savings of probably 8-10x. I don't know where you get the idea of "over priced", but it could just be p3n15 envy.

    As far as your hardware quotes go, I'm happy for you. I'd just like to point out again that there's no conceivable reason to think that you'll get more effect with .NET + IIS + Windows + etc. than you would with a Java-based application server running on the same hardware. See http://www.caucho.com/articles/benchmark.xtp.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  202. Hi Cameron,


    "And I've used WebSphere (including the "custom" versions for some of IBM's less colorful platforms), Orion, Caucho Resin, IIS, Netscape (AS and ES and Sun iPlanet), Oracle (OAS=JServ and iAS=Orion and one in between that slips my mind) and Bluestone and Dynamo and ColdFusion and Apache and Tomcat and JBoss and ...."


    A fast and informal search in mailing list archives comes up with,

    "cameron purdy" weblogic 3150

    "cameron purdy" websphere 182

    "cameron purdy" orion 18

    "cameron purdy" resin 18

    "cameron purdy" iis 168

    "cameron purdy" iplanet 20

    "cameron purdy" bluestone 0

    "cameron purdy" dynamo 1

    "cameron purdy" coldfusion 3

    "cameron purdy" tomcat 83

    "cameron purdy" jboss 34



    I have also downloaded and "played around" with most of the app servers you mention, but that does not make me an expert in any of them. You obviously are expert on Weblogic though. So I think it is think it is correct to say that you are a "Weblogic man". At least that is what seems to be your daily bread and butter..

    Make no mistake about it, I really do appreciate your expertise, I also know that you have been a Microsoft MVP before you "went over to the dark side" and you don’t consort to name-calling and invectives that is all too common in these discussions.


    However, when somebody changes sides, they are often a little too eager to justify their action.


    "I'd just like to point out again that there's no conceivable reason to think that you'll get more effect with .NET + IIS + Windows + etc. than you would with a Java-based application server running on the same hardware. See http://www.caucho.com/articles/benchmark.xtp."

    The whole point of this thread is that an independent tester found the .NET solution 10 times faster than a similar Oracle solution and that is also similar to the tests I have been doing on my own. For instance I could not even get 50 simultaneously users out of JBoss. And then you have the 25% code base. 75% less code to maintain. 4 times as cheaper to develop. The link you give me is very old and do not even mention C#.NET.

    For us, the speed is very important, it is the single most important selling point.

    And in addition we would have to pay the cost of a Java app server to every one of our customers, taking away from the profit on our own product.

    Regards
    Rolf Tollerud
  203. Rolf: "I also know that you have been a Microsoft MVP before you "went over to the dark side" and you don’t consort to name-calling and invectives that is all too common in these discussions. However, when somebody changes sides, they are often a little too eager to justify their action."

    I first used Java in '96. It took less than 2 days for me to realize that I'd never again have to deal with the innards of Windows, and I've never looked back. Really, you've got to admit that if you were doing C++/MFC and you skipped the whole "Java thing" because your job was all Windows/C++ and then you tried .NET when Microsoft shipped it to you as part of MSDN, you'd have the same thought -- "I'm never going back, I hate pointers, I hate memory leaks, I hate error codes when I could use exceptions, I hate DLL hell, I hate C-based handle-based APIs" etc. And you'd be right.

    Of course, you could have found the "same thing" about five or six years earlier, and not have the downsides of the Windows-only Microsoft-lock-in.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  204. Cameron,
    Sorry for this rant..

    I first used Java when Microsoft released J++ and was immediately enthusiastic. Especially how easy it was and so perfect to make com objects with. So we started to convert our product.
    Everything was destroyed when Sun sued MS and our company lost a lot of money. In my opinion Sun not only shot themselves in the foot but destroyed values for billions for companies over the world.

    Sun sued for:


    1) Building a bridge to COM and ADO, already done by Sun now.
    2) A Java thin Framework over win API, done by IBM now
    3) Refusing to convert some classes. Was MS supposed to convert the whole bloating, partly
    overlapping SDK?


    If it was not for Sun, everybody today would use Java including Microsoft. The thing they accused Microsoft of doing was ridiculous bagatelles. For this reason I have a grudge against Sun - I will never again use anything that is controlled by Sun. We also have a party every time their stock goes down another dollar.

    Sun does not make their own hardware. They have not made their own software (operating system), only build upon BSD and so badly that Apache have to have made a special version for Solaris to handle all memory leaks. If fact they have made not one single "killing application". The original idea of Java was to use it in embedded systems. The success of Java is due to the hacker community and not Sun. (J2EE actually considered harmful to Java by Jakarta community). And this pathetic company does not stop a single day without bashing Microsoft, one of the most successful companies in USA's history.

    Back when PC's were still in relative infancy, no one cared that Microsoft and others (Apple) were investing in the future of computing. Now when they seek to reap the fruit of their labours,

    they're bad guys. I think what has happened is that Microsoft has put power computing into the hands of the average person, and the "snake-oil" computer programmers no longer have "mysticism" to sell to an unwary public. It the same as web page designers who put down people who use WYSIWYG HTML editors. It takes away from there revenue streams so they attack it.

    It seems that Sun is so scared from the rising success of .NET that instead of improving Java, they have adopted this way of putting obstacles in front of MS. Sun never expected that .NET could be far better framework than Java. Sun---- Wake up. You are never going to get better. You will always be a looser, a company that will only survive from the previous law suit money.

    Look at other companies like BEA. They are improving their products to compete with Microsoft unlike Sun.

    Sun is the bad guys. They would like nothing more than to centralize everything with expensive hardware and software,preferable both, making it impossible for the "two guys in the garage". Then they could keep to their impractical theorism and bureaucracy and canonly live on welfare money provided by Microsoft.

    Regards
    Rolf Tollerud
  205. Cameron,

    An interesting study in SD Times this week. Here is a snapshot:


    -----------------------------
    ".NET Advancing Quickly on J2EE
    But research shows Java maintains strong position

    .NET has achieved considerable market penetration, and is on pace to increase its adoption considerably over the next 12 months, according to the results of a BZ Research developer survey. Sun's Java platform, however, is also making gains, and neither platform is projected to take a dominant position in the near term.

    In the survey, completed by 633 development managers, 78 percent of respondents indicated that they are currently developing for a Microsoft platform, with 28.6 percent stating that they are actively developing specifically for .NET or ASP.NET, Microsoft's application server for the .NET platform. When asked about their plans for new applications being developed over the next 12 months, 72.5 percent said they would be developing for a Microsoft platform, only a small increase [sic], while the .NET/ASP.NET planned usage for the next year nearly doubled, to 52.6 percent.

    By comparison, 48.8 percent of respondents indicated they are currently developing apps for either Java 2 Standard Edition or Java 2 Enterprise Edition, and 51.8 percent said that they expect to be building new apps for J2SE or J2EE within the next year.

    Many in the industry have wondered whether the rise of XML or Web services will encourage heterogeneity or homogeneity in target development platforms. The results are split, with fewer than half believing that Web services will drive them toward a specific platform standard. The largest share, 27.5 percent, believes that these technologies will actually encourage a mixture of Windows/.NET, Java/J2EE and other platforms in their organization.

    The bottom line: Despite the best efforts of Microsoft and Sun, the platform battles remain deadlocked, with both .NET and Java expected to perform strongly over the next year."

    -Greg
  206. Greg,

    I have no doubt that a large number of VB developers (and similar) will move to .NET for graphical Windows-only applications. As I've pointed out before, .NET stems the flood of defections from Microsoft software.

    If you look at the amount of J2EE development being displaced by .NET, I think the numbers would be disappointingly lop-sided from your point of view.

    BTW - I've mentioned before that I've never encountered Windows in a production enterprise application. I now have to update my previous statement and tell you that I have finally encountered an application with a component running on Windows, which is providing an "enterprise service" (SOAP-based). Unlike Rolf's stellar results with Windows technologies, this one was running on a lot more than 2 blades yet had a minimum latency well over 3 seconds.

    If I took this one data point as a trend, I'd have to conclude that software running on Windows is very slow and expensive. Of course, I know that's pretty silly (don't you?) since I can write a .NET app that is almost as fast as one done in Java.

    I will give you this, though, that a major architectural and implementation disaster in a large-scale application will cost more in hardware for a deployment on (for example) Sun hardware than on Intel hardware. So if you plan to really screw up an enterprise application (whether Java or .NET), make sure you target Windows so that your mistakes will cost you less. However, given the choice between deploying a well-built enterprise app on Intel/Windows or Unix, from my own experience I am certain that Unix offers the least costly solutions, whether at the low end (Linux on blades) or the high end (IBM, Sun, HP, etc.)

    I think that there is usually an obvious "best tool for the job", and that is usually Windows on the desktop, and rarely Windows on the server. Perhaps that will change some day, just as it did for Unix, which even 15 years ago was not trustworthy on the back end.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  207. Was this the link? "Microsoft .Net software's hidden cost"?

    http://news.com.com/2100-1001-938394.html?tag=fd_top

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  208. Of course it will not be easy to convert 100 000 VB applications to .NET. This is the same problem as when COBOL was deprecated, there still COBOL apps left.

    But at least it will be by a power of degree cheaper than if they should be converted to Java.

    Let me digress a little.

    In 1901 president William McKinley was shot while attending an exposition in the city of Buffalo. It is believed today that he could have survived if not twelve persons had tried to pick out the bullet with their fingers. And naturarally so, he died of gangrene. The point is that in 100 year, people will be as horrified about -today’s practise of medicine- as we are about the practise 100 year ago. Don't you find that a little comical? I do.


    If you transcribe this to computer languages it means as when we laugh and bash old technique like COBOL and Visual Basic, in 10-20 years people will laugh at our teqniques of today.

    In fact, regarding Java, I am already smiling a little.

    Regards
    Rolf Tollerud
  209. But at least it will be by a power of degree cheaper than >if they should be converted to Java


    Not if you have the right tool. And I have found one. Works pretty good too.

    >when COBOL was deprecated
    It was? By who? How?

    There are plenty of COBOL apps still being built. Also RPG ones too. Wish they weren't but since they can build them so quickly (a quote from a manager) ... .
  210. There is an interesting story at serverside today,

    http://www.theserverside.com/home/thread.jsp?thread_id=14190

    Some quotes from the article by Jonathan Gibbons, Tall Software Limited

    The autor has for last seven years specialised inJava, and more recently J2EE:

    "And here is the problem. To tackle the simple aspects of the project with J2EE I have already mentioned nine or ten acronyms, implied J2EE patterns, implied an app server and a development team skilled in most of these things.On top of this you should know an IDE or two, ANT for build, Windows OS for development and Unix for production. It isn’t simple, and I believe the productivity is slipping because it isn’t simple."


    "ADDED COMPLEXITY FOR NO GAIN
    or
    TOO MUCH EFFORT TO DO A SIMPLE
    JOB"


    "again we are losing
    simplicity simply because we bought into J2EE"


    "Then there is the alternative, and the alternative I
    see gaining ground very rapidly is .NET."


    Another interesting story at Javalobby today

    http://www.nwfusion.com/news/2002/0625javaweb.html

    Some quotes from the article by Stacy Cowley, IDG News Service


    "In a recent survey Borland conducted of "C-level executives," i.e., top corporate officers, the predominant response from those surveyed was 'Java is over.'"


    "Respondents perceived that Java had been pitched to them as a panacea for everything, and once it failed to deliver on that promise, they became disenchanted with the platform and receptive to the promises of Microsoft's .Net."

    email response:

    "Sun's stupidly tries to be everything to everyone. They whip out an API or extension, sometimes drop it, maybe replace it, perhaps grab something from somewhere else, deprecate a few things, ignore important bugs, and build up high hopes with promises they don't meet. In the end, we as developers suffer because a good concept is lost in the glare of Sun's ineptitude."


    from serverside:

    "Inheritance and EJBs This article shows how entity EJBs can be used effectively to represent business objects with inheritance and polymorphic behavior. It shows you how to implement entity bean inheritance with three sample CMP EJBs, demonstrating a polymorphic finder query and a couple of polymorphic method calls."


    Really, are you not seasoned soldiers from more that 10-15 year of building systems interacting with management and project-leaders, delivering on time (or at least nearly on time), speaking from the trenches? How can you buy this crap from those impractical theorists?
     
    Regards
    Rolf Tollerud
  211. <Rolf Tollerud>
    But, I course, without platform compatibility .NET will not succeed, no matter how good it is. Therefore the Mono project is so important [...] If they succeed, there will be a healthy competition between Open Source and Microsoft ...
    </Rolf Tollerud>

    Well, since MS so clearly expressed support for Linux and Open Source (see below), I'm sure that Open Source .Net on Linux will be a great success ;-)

    Steve Ballmer, Microsoft's CEO:
      "Linux Is Top Threat To Windows"
      "[Linux is] a cancer that attaches itself in an intellectual-property sense to everything it touches."

    Jim Allchin, Microsoft's Group VP (Windows OS chief)
      "Open source is an intellectual-property destroyer, I can't imagine something that could be worse than this for the software business and the intellectual-property business."
  212. Cameron,

    You never did respond on how much the Tangosol product line costs. I am curious the pricing, and also curious how you would describe the profile of the Java application/customer type that would use it...

    Just curious,

    Greg
  213. Illustrating the problem[ Go to top ]

    Hi Cameron,

    >>> Greg: "EJBs are still unproven, you will find large scale systems done with JSPs, but most of these use JSP/servlets for the front end HTML generatation only, and avoid the use of J2EE features like stateful EJBs, CMP, etc." This is simply FUD or ignorance, choose one. EJBs aren't some magic bullet. They are just functional, transactional components. They work, they are used widely in production J2EE systems, and they perform and scale well.

    I wouldn’t be so enthusiastic about EJBs. No, they don't scale well compared with other J2EE solutions (like session beans) and they don't scale well compared with non-J2EE solutions. Please prove me that I'm wrong - show me one single benchmark where a EJB-based solution scales better than a non-J2EE one (acording to a measurable way to determine scalability, for example performance variation in rapport with the number of users/TCP connections).

    >>> If you want to compete with J2EE, I have some advice for you: Give your customers what they want.

    That's a good point. I would add another one: customers don’t necessarily want J2EE. You wonder why? Read below:

    http://www4.gartner.com/5_about/press_releases/2001/pr20010820b.html

    "STAMFORD, CONN., August 21, 2001 —Gartner, Inc. (NYSE: IT and ITB) has released a report indicating that companies have overspent about $1 billion on application server technology solutions since 1998. Moreover, an additional $2 billion may be wasted between now and 2003.

    Gartner makes the following recommendations for companies when they purchase and implement application server technology:
    - Application server is a function, not a product. Check your technology inventory to see if you already have the capability in an existing product or a free product.
    - Application server is not the same as Java 2 Enterprise Edition (J2EE). For example, the Microsoft Product line lacks J2EE and Java, but has application server functionality.
    - As components of application server technology, J2EE and Enterprise JavaBeans (EJB) are not the same thing. Most Java projects use Java Server Pages (JSP)/servlet capabilities and not EJB. Higher-priced application servers are designed to run EJB, yet they are using JSP/servlet capabilities instead.
    - Don't let confusion or hype push you to spend more than necessary.

    Gartner estimates that, by 2003, at least 70 percent of new applications will be deployed using high-end application servers and 60 percent of all new J2EE application code will remain JSP/servlet-only.

    "The application server vendors are encouraging customers to purchase higher-end technology that they just don't need," said Gartner vice president and research director David Smith. "It's like buying gourmet food to feed kids at summer camp. It's just not necessary." "

    P.S. My posts are only my personal views and may not represent Microsoft position.
  214. Illustrating the problem[ Go to top ]

    Actually, to be technically 100% accurate, session beans are part of EJB. My request for a public benchmark still holds.

    Another interesting document about EJBs in real world: http://www.bad-managers.com/Features/ejb/EJB_101Damnations.pdf

    Thanks, Adi
  215. Illustrating the problem[ Go to top ]

    Adi: "I wouldn’t be so enthusiastic about EJBs. No, they don't scale well compared with other J2EE solutions (like session beans) and they don't scale well compared with non-J2EE solutions. Please prove me that I'm wrong - show me one single benchmark where a EJB-based solution scales better than a non-J2EE one (acording to a measurable way to determine scalability, for example performance variation in rapport with the number of users/TCP connections)."

    As you have already noted, session beans are EJBs.

    I'm going to have to guess what you are talking about, since you don't know much about the technology that you are attempting to disparage. I would guess that you don't like entity beans, and want to see how they scale vis-a-vis just regular JDBC (or JDO or whatever) usage. Since EJBs use such access mechanisms underneath, they will only scale better than a simple test if there is additional support in the container for re-use, caching, and data access optimizations.

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  216. Illustrating the problem[ Go to top ]

    Yes, Cameron, I don't pretend to know more about you with respect to J2EE. However I do understand what are the optimizations that are usually done at EJB container level, for various enterprise bean types. So, yes, in some respects an well-designed EJB-based solution, based on stateless session beans for example, may scale better than a JDBC-based one (or whatever it is used to implement that container). At least in theory.

    But let's go back in the real world (and to my question). Giving your extensive J2EE experience, can you point me to any practical evidence (benchmarks or any other measurable experiments) that proves that a EJB-based solution performs and scales better compared with a non-J2EE solution? On the same hardware of course. Note that I am not even mentioned other thinkgs like development costs, maintenance costs, price, etc.


    Thanks, Adi
  217. Illustrating the problem[ Go to top ]

    Hi Adi,

    Actually you quite misunderstood me.
     
    Adi: "However I do understand what are the optimizations that are usually done at EJB container level, for various enterprise bean types. So, yes, in some respects an well-designed EJB-based solution, based on stateless session beans for example, may scale better than a JDBC-based one (or whatever it is used to implement that container). At least in theory."

    I was actually referring to entity beans in this case. e.g. a Toplink-based entity bean implementation can be faster than JDBC access, even though Toplink uses JDBC to access the data (because of built-in caching, partial retrieval, concurrency options, etc.)

    Adi: "can you point me to any practical evidence (benchmarks or any other measurable experiments) that proves that a EJB-based solution performs and scales better compared with a non-J2EE solution? On the same hardware of course."

    Scales better on the same hardware? Well, that's an interesting question, depending on your definition of scaling. Some people like the fact that they can run the same software on a single-CPU box running Linux or an 8-way Windows server or a 72-way Sun server or a 512-way IBM server. (Note: In the "real world", I've never personally seen the last one mentioned running Java app servers.)

    Scaling can also mean utilizing additional processors effectively. For a study of such a topic, see http://www.aceshardware.com/read.jsp?id=45000347. Ace's is an interesting site; they switched to a Java platform some time ago and wrote a detailed article on it. The site runs on a $1000 Sun box (we actually have one that's the same model for testing) and it handles an amazing amount of load; see the stats and the article. Pretty interesting, don't you think?

    However, I assume that you're actually looking for a study showing an app running on a given Windows configuration comparing Java to .NET (or the legacy COM-related stuff that is now rebadged as .NET). I've read studies including those at http://www.caucho.com/articles/benchmark.xtp comparing IIS/ASP with Java solutions, with the result either neck-and-neck or Java coming out ahead, and the results getting better for Java as the hardware was scaled up. However, I can't put much stock in a report from a vendor (similar to the reports that Microsoft paid to have written).

    Adi: "Note that I am not even mentioned other thinkgs like development costs, maintenance costs, price, etc."

    Of course not, since Microsoft loses that one every time. Linux + Java + open source app server uses less hardware, the software comes at no cost, the systems require less maintenance, etc. Not to mention liability costs....

    Peace,

    Cameron Purdy
    Tangosol, Inc.
  218. Confession from a defactor...[ Go to top ]

    Ah, finally, literature ... somewhere in this 123kb love&hate ... Lennart, I envy you - you are a free man. Nice escape, congrats!
  219. It doesn't matter how fast .NET is comparing to Oracle's Java PetShop.

    The first thing to note is that this comparison is not a .NET to J2EE comparison, but .NET vs. Oracle implementation.

    I will never do an implementation on .NET, because you lock your client into a Microsoft platform (Operating system and Application server). As you all know that if you do a J2EE implementation then you are not locked into a platform or vendor, but rather into specifications, which is by far a better deal.

    .NET is not a standard but a product. J2EE is not a product but a standard. An implementation in .NET might be faster than an implementation in Oracle, so the only people that must care is Oracle, which still haven&#8217;t submitted their ECPerf results, why?
  220. <quote>
    The .NET Pet Shop is implemented in just 1/4 the code (75% less code) using .NET with C# in a fully factored, three-tier design pattern based on ASP.NET Web Forms.
    <quote>

    Greg, how mach less code you think it would take to port the Pet Store application supplied by Sun to any other J2EE App. Server? I suspect is would be somewhere between 0% and 0.001% (0.001% probably would be used to reconfigure deployment descriptors).

    As far as overall IT costs are concerned which solution is cheaper these days: Adding new memory/cpu or spending money on the development time, even for &#8220;25%&#8221; of the code?

    When .NET will allow me to deploy my EAR file or any third party application (embedded inside an EAR) without hassle may be I will take performance benchmarks from MS seriously.

    Mikhail.
  221. Don't compare apples and oranges[ Go to top ]

    As a performance consultant and specialist - I am currently developing and testing .NET and Java applications. The first thing you have to realize is the strength (beauty and benefit) of .NET is to render HTML 3.2 applications using code-behind techniques.

    The Java equivalent is to use Barracuda or Struts frameworks. .NET clearly beats Java from that perspective.

    However, .NET does not work very well in the middleware space. That is, if I want to write non-visual code to execute back-end transactions, business rules, etc. - there is no way for me to do this (at least I have not found a way) strictly in the .NET Framework. So, to this point, Java clearly has an advantage.

    In addition, what is the equivalent in the .NET world for Java applets? Is it (or will it) supposed to be Winforms.

    Personally, I have made a commitment to .NET for any new HTML based applications. Lots more freedom - easier to do.

    I don't have a choice for downloadable GUI applications - so it's Java there.