Summary of the Recent J2EE / .NET Smackdown Event


News: Summary of the Recent J2EE / .NET Smackdown Event

  1. Summary of the Recent J2EE / .NET Smackdown Event (30 messages)

    Recently, a J2EE/.NET Smackdown event was organized by the Software Development Forum. Three panelists from Sun and Microsoft answered ten questions with rebuttals. Questions addressed scalability, web service support, security, total cost of ownership, the petstore benchmark, and more. Cedric Beust attended the event and summarized their responses.

    Here are the notes on the smackdown.

    Threaded Messages (30)

  2. Last night Sun and Microsoft took aim at each other to prove to Silicon Valley software developers that theirs was the better platform. The ".NET Versus J2EE Smackdown!" event was hosted by the Software Development Forum ( – the California Bay Area’s largest users group of software engineers and entrepreneurs – in front of approximately 500 engineers. While both camps got in their licks, both also missed some very important points, and once or twice some brused feelings from recent skirmishes came to the surface.

    I have about four pages of notes, impressions and opinions which I will post here.

    Frank Cohen
    Principal Maintainer of TestMaker
  3. The Big Picture Argument Came First[ Go to top ]

    The Big Picture First

    Sun spares no venom towards Microsoft’s market dominance. Sun boldly says Microsoft can’t be trusted, that they are selling a product rather than an API and that their technology is riskier because it has not run the gauntlet of public inspection by developers. Microsoft fires back that it is proud of its market dominance and that its adoption of .NET is helping developers create interoperable systems. And that was in the first 10 minutes!

    If this was a wrestling event spectators would see Sun take an early lead over Microsoft. Several early Microsoft statements fall into the "Well, Duh!" category. For example, Alay Desai of Microsoft’s observation that "We’re all here because we are all interested in Web Services!" That actually turned out to not be the case. Pleanty of developers at the event said they are working on J2EE applications that have simple Web browser interfaces with no plans for SOAP enabled APIs. Visual Basic developers too were there wanting to learn about the platform choices but had little interest in Web Services.

    Sun ended the first segment of the event by making the point that Java technology is already mature and stable as compared to .NET, portions of which are still in "beta" testing. Microsoft countered that 5,500 customers asked for a license to use the prerelease .NET platform code in production as a sign of strength and quality in their 1.0 .NET code.

    -Frank Cohen
  4. We'll Do The Driving For You[ Go to top ]

    Sun did a much better job at framing the arguments. Their first effort was to frame the debate around open source processes. They succeeded at making the point that Sun is an open platform and Microsoft is a closed one – even if this is not always the case as in the example where the Java Management Extensions (JMX) is open but the crucial SNMP agent technology is closed. Sun noted that the JSR process is designed to be open. They claim 55% of the JSRs are being led by non-Sun companies. They also said Apache, JCP and Sun insure that the JSR APIs are implementable and not just API-ware.

    Sun and Microsoft engaged in a banter about the meaning of open-source. Microsoft put CLI and C# into the ECMA standards body ( Sun fired back that Active Directory, Winforms, Passport and other pieces of .NET are closed, commercial, proprietary products.

    This part of the debate gave rise to a fundimental difference between Microsoft and Sun's approach to software development. Microsoft believes it serves developers best by being the sole supplier of a complete solution. Sun believes that developers should have a choice of tools that the developer assembles into a solution. This top-down versus bottom-up debate permeated most of the arguments.

    For example, Sun and Microsoft were asked to explain why developers would choose SOAP RPC encoding over SOAP Document-style encoding. Microsoft gave a somewhat technical answer but conceeded that they thought the issue was moot since developers should relie on their development tools to make decisions of encoding styles. As proven here on The Server Side in the Web Services Performance Kit two weeks ago ( developers have many choices of Web Services architectures and each choice has a scalability, reliability and performance impact. For example, using SOAP RPC to move payloads of 100,000 bytes or more results in terrible scalability problems. This is a case where letting the tool make the decision for you is a bad idea.

    -Frank Cohen
  5. We'll Do The Driving For You[ Go to top ]

    One VERY IMPORTANT NOTE ABOUT THE BUGS/Security holes <br> SOLARIS AND WIN 2000 both have - 24 .. And Red Hat Linux-28

      And I agree to some extent that since Win is used a lot for daily use, bugs are quite often found and reported than any solaris box. If people start using solaris box as much we all use a win box , Solaris may surpass Win in terms of bugs :). But i doubt people using Solaris for anything other than hosting web sites and stuff.. Daily use machine with Sun solaris - Forget abt it !!!
  6. We'll Do The Driving For You[ Go to top ]

    More important thing is 28 bug or security probs could be
    fixed by myself. But 24 of Win couldn't be fixed before
    they work on them. Until then, I have to turn off my
    computer. This is 28 readable question which I know the
    answers and 24 unreadable hidden questions which I cannot
    solve legally.
  7. We'll Do The Driving For You[ Go to top ]

    While the Windows family deserves its buggy and insecure reputation, that may be on the verge of change. The billion-ton gorilla has landed squarely on this issue. They've spent millions on secure programming training for their developers and stopped development for several months to code review all their source. The results are evident in the .NET Server prerelease. How many development shops do you know that can afford to shut the doors and reexamine every single line of code?

    If you happen to be running Windows NT or Windows 2000 on a web server, shut it down now and upgrade to .NET Server even if you have to use the pre-release version. Yes, the pre-release of .NET Server is more secure than the patched release of Windows 2000 by about a million times.

    I'm a little fuzzy on whether XP is on the .NET code base or not. Judging by the number of times I've been interrupted by Auto-patches, I suspect it's from the 2000 base. Frankly, I find the Auto-patch thing really creepy. One day MS will download a patch that will disable everybody’s machines around the globe. Then we'll all be scrambling to install Linux.
  8. IDE is for wimps[ Go to top ]

    Why is IDE such a big deal ?

    Ok I may be an old fossil but how about VI + Xdoclet + Cruise Control ?

    Just my $.02

  9. IDE is for wimps[ Go to top ]

    OK I want $.02 too
    Vi is the oldest programming environment in computer industry history since when programming meant really something what newbie are not able to understand at all today ... maybe we are riders of ancient times but still I ask, can someone show another competitive commercial product
    with so long life ;-) ? I want to mention that I'm not older than 30 but I was lucky and I started to learn programming and editing in Vi and this makes me very happy because I didn't started to understand computer science via the view of Visual Basic and M$ or Java and JBuilder
    Believe me people are making software and not the tools or technologies so professional is that when you need, because of the project/infrastructure requirements, to choose NET choose NET and do' it after professionally ... if you decide for JEE use JEE but professionally ... if really the problem is and you have the power to recognize that you are not professional enough for deciding what to choose or recommend than better give to your boss your resignation and go out of computer science and IT industry or if your boss accepts you than try to convince him that is better for his business to pay for the services of someone which is really specialist and can help you to understand what's really needed for your typical situation ... that's reality and that's it, no need to run for our tail ... be professional and honest is enough always in engineering ... and don't try to sell crap ... sooner or later will stink ...
  10. Strengths and Weaknesses[ Go to top ]

    Midway through the debate Microsoft and Sun scored several key points against one another. Sun pummelled Microsoft on security and Microsoft whipped Sun on price/performance.

    In the argument over which is the more secure platform Sun gave some huge body blows with the assistance of quotes from Microsoft executives. "We haven't just began thinking about security, we starting thinking about this three years ago," was attributed to Craig Mundie, Sr. VP Microsoft. Sun says Microsoft is 24 years too late.

    Microsoft fired back that security is an industry wide problem. They showed a graph indicating the average number of attacks per platform was mostly uniform, with Linux getting slightly more. When the audience demanded the source of the statistics Microsoft replied "the source is not Microsoft, I’ll get you the source." This got a lot of boos. In an attempt to salvage the issue Microsoft pointed to large customer deployments at uBid, Telenor, and I-Deal as proof points that .NET is secure.

    Later in the event Microsoft slammed Sun over price/performance. Microsoft pointed to their installed base of Windows users and the low cost of a Windows solution as proof of .NET's ability to succeed. Microsoft made the case that a Windows .NET solution is much less expensive than a J2EE on Sun solution. They looked at hardware and application server costs. Sun appeared to have no way to counter this argument. Instead they tried to get the debate back to a "don't trust Microsoft" theme but that attempt fell flat.

    Sun and Microsoft trotted out a lot of customer success stories. Microsoft is especially proud of the throughput on high volune services such as Merrill Lynch at 75 million transactions per day at 25 million users (that’s 21,000 transactions per second!) Sun countered by noting that EBay is run on Java. These are incredible performance statistics for the success of microcomputers. This reminded me of a time in the 1980s when I was helping a team rollout a nationwide network of entertainment advertising display panels and we couldn’t get IBM to return our phone calls to quote a price on a mainframe. Java and .NET performance enable me - as a small business owner – to take inexpensive, commonly available systems and deploy a complex interoperating information system.

    -Frank Cohen
  11. Strengths and Weaknesses[ Go to top ]

    Thanks Frank for the notes, I am sure I speak for thousands.
  12. A Certain Graciousness[ Go to top ]

    The air of the event was actually very gracious. I've watched Scott McNealy presentations that started with the circle around and a line striking through the Microsoft logo. While that is entertaining is smacks a bit too much of bitterness and contempt for a business competitor. At this event Sun and Microsoft seemed to be gracious in their attempts to attract developers, they avoided alienate developers with too strong attacks. For example, at one point in the event a raffle was taken to award a very nice jacket. When 2 people arrived to retrieve the same raffle drawing – they both had the same name – a Sun marketing manager took off her own leather Sun-logoed jacket and gave it to the person that did not win. She even had to take a minute to remove her thinks from the pockets.

    -Frank Cohen
  13. Personally speaking, I think a lot of good can come about from these sorts of confrontations.

    As a consultant, I've worked with both platforms.

    Both have their pluses and minuses. One might do well while the other might not.

    The trouble with some discussions that we've had on The ServerSide (for example), is that there is sometimes this assumption of "one size fits all".

    Technology needs are driven by business, market and customer requirements more than anything else.

    It's more a question of "what tools, processes and resources do I need to get my job done" so that my customers (could be internal, could be external) derive maximum value from what I give them.

    In a business context, there is really very little place for little programmer egos. (That's not flame-bait! I've my own ego stowed away someplace, which pops out ever so often. :-).)

    That's what I am told every time I make technology suggestions that seem strange.

    Anyway, both camps need to realize that there is so much to learn from each other. Java really needs to become easier to wield. .NET needs to start looking like a real "fits well together" technology that has lots of real meat behind the hype.

    Technocratic triumphalism hardly benefits anybody.


    PS: There is a whole "technological coolness" dimension that my post does not address. That's a totally different matter. <really-smug>Java and J2EE are just a lot (a lot) cooler than .NET.</really-smug> Got MY shades on. Yeah!
  14. Congratulations Sir!
    I can say that your post is the most full of content from all the posts till couple of weeks on this subject, not because of very high level of technical expertise but because of high content of human daily reality… myself I’m working as consultant, and I can say that you are totally right … I think that the only place where technical details and debates have a sense is in your office, when you analyze the requirements and you should decide on this requirements and typical situation what platform you chose for implementation, because, as it seems to me, unfortunately no current technology offers solutions, they are offering choices, so then because we need to wait ( who knows how many years ? ) till we will be able to use a technology as a solution the only real usable approach is to decide always based on concrete situation and not reading magazines and newsgroups … this practice unfortunately is typical for bad managers …
  15. It would be interesting to come up with a list of features from .NET that you'd like to see in Java. And vice-versa. Wonder if this one's been done before on TSS?

    Well, my #1 wish for J2EE and Java: Make things easier to use for the average developer.

    For example, I've observed developers on teams I've worked with become very productive on Microsoft Visual Studio (.NET and previous versions) within 2-3 days, without prior exposure to VB or ASP. (Trust me - I've seen it SEVERAL times). I'd like to see J2EE become as easy to use for the average developer.

    The recent .NET vs Java benchmark has now been argued to death (with TMC getting a lok of flak - some deserved, some not).

    But really, the biggest problems with Java and J2EE in most business scenarios (especially for process automation within companies) is NOT performance. It's often tool usability.

    That's where and why Microsoft leads the market. It's really easy to use their products. Java IDEs (esp. IDEA) are getting much better, but there's still room for improvement.

    (Personally speaking, I think that IDEA is sufficiently easy to use for even complex software projects, but I know some people next door who..)

    But we've discussed that one to death as well, I guess...

    Remember, in a team, you need tools that even the not-so-cool can work with. Skill levels in teams average out sometimes. It's a factor that just cannot be ignored.

    As far as .NET goes well, I could think of several ways to make things much better there. :-| Though a lot has been cleaned up already.... .NET is not just about web services, as Gates might say. In my opinion, its "the biggest cleanup of a development platform" in the history of software development.

    But if you ask me what I thought would be nice? Well, the introduction of some decent O/R mapping constructs (and inbuilt IDE capabilities for the same) that would avoid re-inventing the SQL wheel everytime you develop a new application would be kind of nice.

    But, as I said before.
    1) Simplify J2EE Development.
    2) Take over the world.

    Yup. That about sums up my current fantasies.

  16. What do you mean very productive? In VB6, you can make a record brower just by drag and drop but what is the actual productivity you can from VB when developing REAL application? This is somewhat the same strategy in .Net to make people believe that it is productive.

    I have used .Net for quite a few weeks and I still think it is not as good as Java and it is definitely not as productive as Java. But I have to say .Net has learnt lot of good things from java and is a big improvement from VS6.

  17. J2EE Project in 3/4 Hours[ Go to top ]

    Hi Sandeep,
    I agree to your comment that its difficult to develope J2EE application fast by a developer who doesnt have good knowledge of Java or dont know <BOLD>provided<BOLD> he/she doent use proper tool or IDE...
    I have seen a tool(IDE) couple of months back "OptimalJ" from Compuware belive me I managed to Develope small size J2EE Application with 4 entity beans and 3 Session Beans within 4 hrs. I have got 5 yrs Expr so that is acceptable, but a friend of mine who has worked Only in Oracle Tecnology through out his carrier and he doesnt even know Java at all managed to developd the same Application in 8/9 hours.
    The moral of the Story is:
    We need nice tools and IDEs for development and then it will be easier for any developer to develope J2EE Application much faster.

  18. J2EE Project in 3/4 Hours[ Go to top ]

    small size J2EE Application with 4 entity beans and 3 Session Beans
    you missed to add how "heavy" where the beans and design in sense of :

    - number of persistent attributes for each entity bean and CMP or BMP ?
    - number of relationship attributes if CMP and CMR ?
    - how complicated was the level of logic needed to be implemented by entity beans

    - number of attributes for each session bean and type ( stateless/statefull )?
    - number of relationship attributes if CMR ?
    - how complicated was the level of logic needed to be implemented by session beans

    - how complicated was the level of logic needed to be implemented as interface facade by session beans for PL
    - how many specific/general deployment descriptors attributes you used ?


    and, by the way, I never saw such a situation where I needed to wrap 4 entity beans with 3 session beans
    can you be more specific for this "strange" for me typical situation ?

    I'm doing software development for more than 7 years and JEE plus EJB for more than 2, I have a BEA Weblogic
    certification and I can say that in my projects almost always I needed to implement entity beans with more than
    20 persistent fields and with very heavy weight requirements for relations with other beans, even from
    EJB spec 1.1 ;-) and it was a nightmare , and basically always I succeeded to wrap with 3 session beans more than
    30 entity beans, and another think is that based on typical situation only one entity bean can take you a whole
    day doesn't matter how experienced you are ...
    my regards,
  19. J2EE Project in 3/4 Hours[ Go to top ]


    You ever tried Pramati's Development tool? Its pretty cool too! Though been an IDEA user, but would recommend Pramati as well!

    My $.002

  20. A side note on easy-to-use IDEs.

    IDEA is very smart, but the performance of IDEA degrades fast as the project becomes bigger. The program seems to be doing too much backgroud 'thinking', as a result I would not recommend IDEA for a fairly large project.

    I strongly believe Eclipse is the candidate to defeat MS IDEs. Try it and you won't regret it.

  21. <quote>
    For example, I've observed developers on teams I've worked with become very productive on Microsoft Visual Studio (.NET and previous versions) within 2-3 days, without prior exposure to VB or ASP. (Trust me - I've seen it SEVERAL times). I'd like to see J2EE become as easy to use for the average developer.
    Being a VB developer in another life, I agree That Visual studio is very easy to use. All the wizards look very good when you have to do the simplest of things. The trouble starts when you scratch the surface and try to do something different or something out of the ordinary. It gets messy and complicated very fast. Gaining expertise in searching the MSDN archives and support central was one of the major highlights of my VB career.
    From what I hear, .Net is much of the same. Yet another pretty wrapper on the OLE/COM/DCOM/COM+/Activex DLL hell and the mess called the registry.
    Also, true that I missed Visual Studio when I moved to Java and it was frustrating to work with the IDE's. For the past 6 months though, I have given eclipse a try and I think it rocks. It integrates well with external tools, has a native look and feel and is very responsive.
    The only problem I have had is getting it to behave with projects not created within eclipse(It's being addressed in the 2.1 version).
  22. As far as productivity goes, remember - I am NOT talking about individuals. I am talking about teams. I am talking about training requirements. I am talking about the time taken to come to consensus on the way tools will be used within a project. I am talking about the time a team takes to deliver software using a particular platform.

    In short, I am talking about "averages". That's where you measure productivity differences and relate those numbers to cost efficiencies.

    Individual productivity measures are of little value, unless you have some other reference point (like the person's skill set and competency levels). Things tend to average out in the teams you find in most general IT departments of large companies., as well as most large IT firms.

    On another note,...

    Code manageability is a specific place where Java is really ahead of Microsoft.

    Simple things like classpaths, packages (and package structures), JARs, WARs and EARs (sounds like something out of an Egyptian tomb..) that we take for granted and make life so smooth in the Java world are only now being discovered within the Microsoft world.

    The Microsoft concepts of assemblies, the GAC, manifests etc have slightly improved the situation, but I've seen teams still have problems with just managing large volumes of code.

  23. Another point I must mention.

    I've noticed that short term productivity is higher with the MS platform, but not necessarily long term productivity.

    Reasons for that: well some of them are simple - code manageability, as I mentioned earlier, is definitely a factor.

    But I think a more important aspect is that the J2EE community commits itself to higher standards of software design and architecture that the MS community.

    The MS reference architectures for enterprise application development focus on standard n-tiered architectures (the whole notion of service-oriented systems is newer). But as far as business object/component frameworks, or persistence layers go, what standards does MS have?

    How often do MS technology based applicatons use an MVC architecture? The Java community does that so often.

    How often do MS technology based applications use strict separation of business logic and UI (.Net Web forms aside). The Java community does that all the time.

    And as far as cross-database operability goes, MS doesn't seem to care too much (orchestrated by design really, so as to protect investments in SQL Server). AFAIK, the use of stored procedures (something MS recommends strongly) lock you into a database faster that anything other single database feature.

    So I guess, since the J2EE communities try to set higher standards for development, we start off with a higher baseline in terms of what is acceptable code and what is not.

    For large projects (and that's really the realm I work in), you just cannot do without frameworks and patterns. They reduce the amount of repetitive code you need to write, and increase maintability.

    But that's also what we saw with the TMC benchmark as well I guess...

    But that's probably why the MS platform is easier to work with. Peer standards are just not that high.


  24. The comments about ease of use of Visual Studio here are really good... not often that I read clever comments about this.
    Somehow I always wonder what people _do_ with VS... VS is really easy to use for basic things, and as someone pointed out, you can write some simploe applications in VB with just some clicks... but who _needs_ these applications, there are hundreds of them... and whenever I tried doing something more complicated with VS it got _really_ complicated... I remember writing hundreds of lines of VC++ code to work around bugs in MFC... or doing COM calls wondering who designed this API... it really cannot get any more complicated; My conclusion always was that VS is really a nice tool, but in reality, it is not that productive.
    Someone already mentioned this, the MSDN docs are really complete... too complete, it is such a giant archive you never find what you need (but a thousand other things ;-). When I began using Java I was amazed how easy it was finding what you need in the documentation... without a search function! And how it can be that in MSDN it is so difficult to find something even with an elaborate search function.
    I won't say this is the one and only point, but in my experience the "documentation" factor was a big one, impacting productivity a lot!
    I also don't understand what people find so great about MS IDEs(???) When I started using JBuilder I was amazed how easy it was doing what I wanted, even more when I tried IDEA (this is really a cool peace of software); I think both IDEs have to offer so much more than VS (most of my colleagues thought so too), which offers a great deal of completely useless wizards (I never understood why they couldn't build MFC so that a simple application could be done with a few lines of code (like in Swing)... no, you need a wizard which spits out several hundred lines of completely unnecessary code).

    Hmm, I admit this was really just an opinion comment with not much value, still, I think this is ok every few months ;-)


  25. <quote>I've observed developers on teams I've worked with become very productive on Microsoft Visual Studio (.NET and previous versions) within 2-3 days, without prior exposure to VB or ASP. (Trust me - I've seen it SEVERAL times). I'd like to see J2EE become as easy to use for the average developer.</quote>

    Ask yourself, do you want a mission-critical application developed by average developers with only 2 -3 days worth of experience?
  26. <quote>
    Ask yourself, do you want a mission-critical application developed by average developers with only 2 -3 days worth of experience?

    You'd be surprised about the kinds of things that happen in this world!

    I've seen people with just about that much of experience working on all kinds o projects - in finance, banking. Sometimes these are multi-million dollar projects.

    Well, to be fair to those people, I must say that they've had prior programming and design experience in other technologies and platforms.

  27. I know that was a little extreem to suggest that people with 2-3 days of experience will be developing enterprise systems, but it illustrates my point. It is very easy to implement an application in MS Access, and then somehow think that it will be really easy to apply that knowledge to something larger. That is exactly what the sexy MS tools do. They hide so much from the developer that you almost have to trick the tool to do anything low level. Building enterprise applications take time, and experience. You just can't pick up a book and expect to start going at it, and from my experience sexy tools can get you in to trouble if you don't know what you are doing.
  28. TCO ...[ Go to top ]

    I just read the notes from Dion and want to add some things.

    Q6) What is the cost of deployment and maintenance on your platform?

    MS replyed that all you need is MSDN Universal for $2499 for deployment. Nothing could be more untrue.. MSDN Universal is the development tool and only a development tool. It includes development versions of the server applications such as SQL server etc.

    MS SQL Server Enterprise Ed. costs roughly $15000/cpu (supposably Intel cpu)without upgrade possibilities.. just to make an example... Since MS mentioned the costs for SUNS app server for example.. which btw can run on other cpu´s than Intel.

    Just a thought..
  29. TCO ...[ Go to top ]

    Just a quick note.
    The summary that I linked to is by Cedric Beust not myself.
    Thanks Ced!
  30. Solution to the Smackdown:

    Learn both, just tools anyway. If a client is MS centric use .Net, if not use Java.

  31. That s right:
    Use both ! ; Learn C# and the magical ASP.NET (really magical!)

    When the client says .Net ! Say : "Lets Go!"
    If your client says Java say : "So I do"
    This is what a call a Consultant , not a biased partisan in only one technology.