Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Java Programming Microsoft

Java vs .NET 686

CHaN_316 writes "Yahoo is running a story called 'Is Java Finished?' It provides a brief overview of the strengths and weaknesses of J2EE and contrasts them with .NET. Classic arguments are brought up like Java being great for portability while .NET ties you down to Microsoft products, etc. It's interesting that they bring up the Java Community Process, and how it is a rather slow moving procedure that is causing Java to become stagnant."
This discussion has been archived. No new comments can be posted.

Java vs .NET

Comments Filter:
  • by Mr. Darl McBride ( 704524 ) on Friday September 05, 2003 @03:32PM (#6882652)
    The Software Development Times ran an article [sdtimes.com] which mentioned many of the perceived advantages of .NET, and Kuro5hin ran a story which did just the opposite [kuro5hin.org]. :)

    Dot Net doesn't look like a developer panacea just yet. If Sun keeps the enhancements coming and works to bring the development environment up to Visual Studio's standards (Yes, VS has its problems, but it has a lot of unique tools, like compile-and-continue, which save hours!), Java may well survive.

    Dot Net is also anything but small. It's possible to create ROMmable Java applications in just a couple megs of flash memory. On the other hand, there's no such thing as embedded dot Net just yet. And if they continue with the execution model they've currently got, any piece of code is going to net a ROM many times larger than what's possible with Java. Either way, I'll want $699 for my fp, beeyotch.

    • by podperson ( 592944 ) on Friday September 05, 2003 @03:59PM (#6882937) Homepage
      ...the best comment from Kuro5hin was that the only thing he likes about .NET is that VB's backwards compatibility is broken so maybe folks will learn a real language...
    • It would be "pining for the fjords" - considering the Dead Parrot was in fact a Norwegian Blue (remarkable bird, beautiful plumage). Except the shop owner was implying the bird was still alive when he said " 'es pining for the fjords". So your title should be one of:
      • "Java's not exactly deceased."
      • "Java's not exactly no more."
      • "Java's not exactly ceased to be."
      • "Java's not exactly expired and gone to meet its maker."
      • "Java's not exactly a stiff."
      • "Java's not exactly bereft of life."
      • "Java's doesn't exact
    • by throbbingbrain.com ( 443482 ) on Friday September 05, 2003 @04:05PM (#6882991)
      Dot Net doesn't look like a developer panacea just yet.

      It's not up to developers. Regardless of developer preferences or platform capabilities, when the right sales people talk to the right managers, the .NET decision rolls downhill.
      • by AstroDrabb ( 534369 ) on Friday September 05, 2003 @08:00PM (#6884711)
        This isn't always true. I am a developer for a fortune 500 company and we just finished a huge Java vs .Net comparison. The company brought in a lot of outside opinions and had us devlopers give opinions as well. Of course an MS rep was there telling the tall tales to all the PHB's of how .Net would make us 10x more productive and save us millions (just like the commercials), though the figures did not include all upgrade costs for Win2003 Server and WinXP cost. When it was all said and done, just about everyone picked Java, except for the MS rep and a few VB/ASP only type guys who don't have the technical ability to program much more then a few asp pages. It all came down to Java is proven to be stable and secure. MS and their technologies have not and especially .Net. We also have many mission critical apps that just cannot be trusted on an MS platform so they run mostly on Solaris and now some Linux boxen are popping up. Java gives us the ability to choose the right tool for the right job. .Net would have locked us in to just MS and severly limited choices. Once we as developers got that point across to the PHB's, they were able to see the light.
    • On the other hand, there's no such thing as embedded dot Net just yet.
      That is patently untrue [microsoft.com]. Do your homework before you spout off.
    • It's possible to create ROMmable Java applications in just a couple megs of flash memory...

      Um, excuse me, but it's very possible to create full-featured applications in assembly in just a couple of kB of flash memory. And in case you hate assembly, you can do the same thing in C++ for around 500 kB, and it will run faster than Java. Remember, embedded devices don't have the screaming fast processors that are needed to make Java appear fast. And they're not likely to have the few hundred megs of RAM that

    • by KyleCordes ( 10679 ) on Friday September 05, 2003 @04:51PM (#6883431) Homepage
      By coincidence, I gave a talk on how Java and .NET compare, just a few days ago:

      http://kylecordes.com/story-260-java-net-talk.ht ml

      One thing with the SD Times identified as a source of trouble (the size of the included libraries), I identified as a strength: .NET has a lot of things "in the box" that a developer / team needs to go find, select, download, install, etc. for Java. I personally like the best-of-breed approach that can result from that (choose from the many SOAP implementation, choose the best one for our needs), but for many developers, having a good-enough solution "in the box" is more palatable.

      This is particularly exacerbated in some development shops where extensive format decision and permission processes are needed to make any third party tool purchase (or free software adoption).
    • If Sun keeps the enhancements coming and works to bring the development environment up to Visual Studio's standards (Yes, VS has its problems, but it has a lot of unique tools, like compile-and-continue, which save hours!), Java may well survive.

      Check out Eclipse [eclipse.org] for Java development. The workspace/perspective paradigm will take a day or two to get used to (plus the different key bindings), but this is a really nice IDE. I'll wager that MSFT will be copying the "lightbulb" feature of Eclipse that shows
    • Dot Net is also anything but small. It's possible to create ROMmable Java applications in just a couple megs of flash memory. On the other hand, there's no such thing as embedded dot Net just yet.

      The comparison must be between .Net and J2EE, while J2ME and even J2SE are seriously lacking in component architecture and other features comparing to both .Net and J2EE.

      So, once we make a comparison correctly (J2EE vs .Net) we can state: there is no such thing as embeddable J2EE just yet, while there is somet

  • Java vs. .Net (Score:5, Insightful)

    by Anonymous Coward on Friday September 05, 2003 @03:34PM (#6882667)
    The ".Net only works on Microsoft" is more than just a classic arguement. In fact, I think it's the most important factor to take into account.

    If I want to make some simple embedded device, if I have to option to use Java instead of having to license Windows CE for my product, why would I ever choose MS over Java? .Net will never take off. After all, it hasn't during the 3 years its been out.
    • Re:Java vs. .Net (Score:5, Interesting)

      by bladernr ( 683269 ) on Friday September 05, 2003 @03:41PM (#6882741)
      I wouldn't say that .Net will never take off. Microsoft has access to senior executives in large corporations; I know that shouldn't make a difference, but it does. I am consulting at a major communications company now, and I just got a call from a VP an hour ago saying "Take a look at Microsoft for the stuff you are doing." It seems MS paid him a visit, and they are pitching lots of .Net/XP stuff against our existing HP SuperDome environments.

      Think of this another way: What if .Net was designed by a single person in their garage, would it get the attention it does? Of course not. Dot Net is a real threat to Java simply because it comes from Microsoft (a mega-corp with plenty of access).

      You may not like it (I know I don't), but that is the nature of things.

      • 'I just got a call from a VP an hour ago saying "Take a look at Microsoft for the stuff you are doing."'

        Give him "Neo's Response":

        "How about I give you the finger [display "the finger"] and you give me my phone call?"

    • Saying .NET will never take off, just because it hasn't yet isn't entirely fair.

      I'm certainly a Java proponent, but I know full well .NET has the entire Microsoft Machine behind it, and considering they usually do a good job of getting product acceptance regardless of whether or not its the 'better' product, I wouldn't count it out.

      Between the friendliness and name-value that Visual Studio has, and the fact that when a manager is making a choice about a product platorm for project, they don't always facto
    • Re:Java vs. .Net (Score:3, Informative)

      by Anonymous Coward
      >>>".Net only works on Microsoft"

      Somewhat incorrect. The MS.NET runtime is Microsoft's implementation of the CLR/CLI specification which is owned by ECMA. The Mono project is an example of a development effort to put together another implementation of the CLR specifically targeted at *nix OS's.

      Now that doesn't mean that ANYONE at all (other than MS) is going to actually build and deploy an implementation of the spec.
      • by alext ( 29323 ) on Friday September 05, 2003 @04:42PM (#6883341)
        You've got your runtimes mixed up.

        The Dotnet runtime consists of approximately 1200 classes, including Windows Forms, ASP.NET etc.

        The CLR/CLI standard only covers core language-related classes - approx 120 in all.

        Dotnet is therefore mostly proprietary and there is no spec. to implement. Mono is having to reverse-engineer, with dubious consequences.
    • Re:Java vs. .Net (Score:5, Interesting)

      by jimfrost ( 58153 ) * <jimf@frostbytes.com> on Friday September 05, 2003 @04:07PM (#6883010) Homepage
      After all, it hasn't during the 3 years its been out.

      Technically .NET wasn't released until a year ago last spring. It's only been out about 18 months. Last fall it was clear that people using .NET were very early adopters, but uptake seems very strong.

      To be honest, Java on embedded devices doesn't seem like that big a win to me at the moment, no matter how many cellphones they're trying to ship with it. Most Java in use is on the server side. And that is a big differentiator between Java and .NET: Java runs on pretty much any hardware you care to throw at it, which means you can scale your server from that itty-bitty Pentium box up to the biggest stuff Sun sells. With Windows you've got midrange Intel boxes and ... midrange Intel boxes. Little per-box scalability, and that means that large systems are going to be a pain to manage - particularly given how hard it is to manage Windows servers in bulk.

      I can see .NET being useful for small servers that need to be put together quickly and cheaply; VS.NET is great for that. But it's not really there yet for big systems, both in terms of framework maturity and OS scalability and stability.

      Mostly I think we'll see .NET be used in building GUI applications in the near term. Let there be no mistake, it is phenomenal at that.

    • Mono? (Score:3, Insightful)

      by *weasel ( 174362 )
      lest we forget that microsoft did -not- shut down the open source .Net compatible project, i'll even grant a link.
      Mono [go-mono.com]

      As for a claim that .net hasn't taken off, I most strongly disagree. Any company whose business requirements have them developing more than a single application for windows have nearly all converted to .Net in my experience.

      with finalization on install, there is absolutely no performance loss between straight-C and C#. in fact, depending on your straight-C compiler, the C# code can run
      • Re:Mono? (Score:5, Insightful)

        by DunbarTheInept ( 764 ) on Friday September 05, 2003 @04:24PM (#6883173) Homepage
        ...those who are dealing with business realities and not philosophical preferences.

        I'm sick of that oft-repeated lie. BOTH the alleged "realists" and the "idealists" are actually realists. The difference is how far ahead they are looking. If you only care about the next year or so, you don't mind supporting only Microsoft. If you care about 10 years down the road, you do. BOTH camps are being realists, but they don't have the same goals in mind. One just wants to finish his current project, while the other will sacrifice current comfort to help ensure that there's still more than one computer company 10 years down the road.

    • Re:Java vs. .Net (Score:5, Insightful)

      by JustAnotherReader ( 470464 ) on Friday September 05, 2003 @05:06PM (#6883572)
      The cross platform ability of Java is more than just marketing hype. I work for a large California Bank and our on-line banking software is written using Java servlets, Java Server Pages, and Enterprise Java Beans. We connect to an Oracle database via JDBC. As you can see we're very Java-centric

      The thing that really helps us is that we can develop code using WSAD (WebSphere Studio) on our Windows 2000 boxes on our desktop. We then deploy to a development sandbox made up of several Linux boxes (Same code, no recompile). Once we test it there we port it to our Development Test box which runs on IBM's AIX operating system (as do the test, stress test, and production servers).

      Could we pass our code around to multiple machines with 3 different operating systems using .NET? No way. Could we toss a WebSphere server on a cheap Linux box and have a test bed up and running in an afternoon? Absolutly, Could we do the same thing with a Windows 2000 server? Not if we want to expect the same level of performance (both speed and stability) out of the same hardware. And that doesn't begin to worry about the licensing cost of building that quick and dirty test bed with Linux and Java as opposed to Windows 2000 and .NET

      Nope, it's a bit too early to start reporting that Java is dead and .NET is the murderer. I think that in 5 more years I'll still be writing Java code and .NET will be sitting in a cardboard box of formerly used software in the closet along side COM, DCOM, and Active X.

  • by carpe_noctem ( 457178 ) on Friday September 05, 2003 @03:34PM (#6882669) Homepage Journal
    Java vs .NET

    Hrm, reminds me of when two fat ugly chicks in my high school started a cat fight in the hallway.
  • by Sanity ( 1431 ) * on Friday September 05, 2003 @03:35PM (#6882678) Homepage Journal
    This John Rymer guy, around whom this entire article is based, is talking out of his arse. When will journalists learn that if you want to know something about software engineering, ask a software engineer? Only PHBs, clueless journalists, and other analysts listen to analysts.
    Java and .NET take vastly different approaches to development, said John Rymer, a vice president with Forrester Research. Java's philosophy of development is to expose low-level system interfaces to give developers greater control. Microsoft simplifies the development process; the developer has less control -- but the tools are easier to use.
    If anything, the opposite is true - the Java API is certainly higher-level when it comes to GUI stuff, and everything else is pretty analogous between the Java and .NET APIs.
    "Before, Microsoft was basically shut out of these projects," Rymer said. .NETs ease of use and lower licensing costs also will be a draw.
    Lower licensing costs than free [jboss.org]? I would love to see that.

    Having worked with both Java and .NET, I would say that things like C#'s foreach statement make for easier and cleaner code, but Java 1.5 will leapfrog C# when it introduces generics along with its own version of foreach, and other timesaving features. Java's big failing, IMHO, is Swing. It is too big and too clunky, Java is crying out for a stripped down GUI library that is part of the API spec that will be as easy to work wit

    • by eap ( 91469 ) on Friday September 05, 2003 @03:46PM (#6882793) Journal
      Analysts are nothing more than journalists whom other journalists call for information. It is somehow believed that if one reads enough of the complimentary trade magazines that every IT profesional gets, one somehow becomes an expert.

      I have noticed Slashdot seems to be posting a lot of these clueless journalist articles lately. I don't seek advice about my car from English majors, so why should I listen to them about computers? Let's have more articles from sources qualified to speak on their subjects.
    • Check out SWT for a better Java GUI option.
      SWT [eclipse.org]

      Fast, easy to understand if you already understand AWT or Swing. Not perfect, but what is?
    • by throbbingbrain.com ( 443482 ) on Friday September 05, 2003 @04:01PM (#6882954)
      Java's big failing, IMHO, is Swing. It is too big and too clunky
      I used to think that as well, before I was forced into a large .NET project. Swing clunky? Perhaps, but it's VERY powerful. Example: Building a custom text UI component with the Swing Text Package may be insanely complex, but trying to accomplish anything similar in .NET is not possible. User wants more than textboxes and buttons? Forget it.

      Java is crying out for a stripped down GUI library that is part of the API spec that will be as easy to work wit
      AWT.
  • by El ( 94934 ) on Friday September 05, 2003 @03:35PM (#6882680)
    One of them is controlled by an evil monopoly that refuses to turn control over to an international standards organization, while the other is a Microsoft product!
    • Re:It's obvious (Score:5, Interesting)

      by molarmass192 ( 608071 ) on Friday September 05, 2003 @03:59PM (#6882929) Homepage Journal
      Sun's not a monopoly and don't make it sound like MS gave the entire .NET framework to the ECMA. Nope, just the C# langauge and the CLI, this would be like Sun turning over javac and java to the ECMA but keeping a grip on anything beyond Java primitives, it's a bullshit token PR jesture. The JCP is a far more public process for directing Java than anything we'll ever see from MS for .NET.
  • Red Queen race (Score:5, Interesting)

    by iangoldby ( 552781 ) on Friday September 05, 2003 @03:36PM (#6882694) Homepage
    causing Java to become stagnant

    Why would we not want a language to be stagnant? I wonder how much time is wasted just trying to keep up with changes to languages and development environments?
    • Re:Red Queen race (Score:3, Insightful)

      by bladernr ( 683269 )
      There is a difference between stable and stagnant. C is stable. It has all the features most people need, so there is no need to change.

      People that argue that Java is stagnant mean that there are things the language needs, but it is taking too long to get them.

  • by Nick of NSTime ( 597712 ) on Friday September 05, 2003 @03:36PM (#6882697)
    Begun, the Clone() war has.
  • by cygnus ( 17101 ) on Friday September 05, 2003 @03:37PM (#6882702) Homepage
    Java != J2EE. there are lots of great ways to write a Web application without using EJBs, for example, or writing a single line of JSP. check out the variety of projects at The Apache Jakarta Project [apache.org] for some examples.

    .NET vs. J2EE might be a more valid comparison than .NET vs. Java.

    • That's right, there are lots of great ways to write webapps in Java without using EJB.

      But there are no great ways to write them without using J2EE. At least not unless you absolutely love client-side code.

      Servlets are part of J2EE. Among the most useful parts, IMNSHO.

      I don't think it's such a problem to remember that Java!=J2EE.

      The problem is most people don't remember J2EE!=EJB, that an enterprise application doesn't always NEED EJBs, and that a lot of of the perceived complexity of J2EE disappear
  • by Hayzeus ( 596826 ) on Friday September 05, 2003 @03:37PM (#6882703) Homepage
    Whilst Java and .NET struggle for supremacy, APL shall return from the tomb of history triumphant once more. And there shall be much wailing and gnashing of teeth among the Javites and the unwashed .NET.ITES, but they will all perish as the light of a new Golden Age dawns, and the thousand year reign of APL begins anew.
  • Come on ... (Score:5, Insightful)

    by OMG ( 669971 ) on Friday September 05, 2003 @03:39PM (#6882721)
    .NET ? Blowing J2EE out of the water ?
    Are you serious ? Then:

    Where is the appserver that runs .NET ?

    Can you cluster that appserver like J2EE-appservers ?
  • by greg_barton ( 5551 ) * <greg_barton&yahoo,com> on Friday September 05, 2003 @03:39PM (#6882730) Homepage Journal
    From the article:
    The slowness of the JCP holds up the creation of additional standards and services, he pointed out. In addition, standards proposals aimed at portability -- Java's strong suit -- are also stagnant.... "In the meantime, people want faster, easier development."

    Golly, I like slow, careful, and secure development of my enterprise backbone software. People may want faster inclusion of features, but they need stability and security.

    The latest flashy feature doesn't do shit if your enterprise backbone is crashing or being hacked into oblivion.
  • Industry Newspeak (Score:5, Insightful)

    by Stiletto ( 12066 ) on Friday September 05, 2003 @03:40PM (#6882731)

    You would think that a language or API that doesn't change every day would be praised with words such as "standardized" "stable" and "established".

    But in Bizarro World (where we all are apparently living), we criticize it as "stagnant" and "slow moving".

    Compare with the OpenGL/Direct3D discussions.

    Carpenters don't buy from hammer companies that change their hammers every "release".
    • Re:Industry Newspeak (Score:5, Interesting)

      by stratjakt ( 596332 ) on Friday September 05, 2003 @03:49PM (#6882829) Journal
      Carpenters don't buy from hammer companies that change their hammers every "release".

      Sure they do, there's been a lot of innovation going into hammers lately. They release new versions of hammers constantly, and other woodworking tools - to many oldtimers dismay, who will swear up and down the hand plane they used in 1952 was an order of magnitude better than todays.

      Stanleys Anti-vibe series of hammers, for instance, they have whats basically a tuning fork built into the handle. The fork vibrates and takes the energy away from your hand. Spend a day ramming nails in with a wooden handled hammer, then a day with one of the newer models, and you definately feel the difference.

      They're also constantly adjusting the weights and balances, tweaking the shape and makeup of the heads/claws.

      Go look at the tool section at home depot and get an idea about hammers.
  • by cubicledrone ( 681598 ) on Friday September 05, 2003 @03:40PM (#6882735)
    Any article that asks that question is automatically crap. Period. End of discussion.
  • Direction for Java (Score:3, Insightful)

    by herwin ( 169154 ) <herwin&theworld,com> on Friday September 05, 2003 @03:43PM (#6882768) Homepage Journal
    I'm very interested in seeing how Java implements generic programming (template programming). That's an area where it currently falls down.
  • by penguin7of9 ( 697383 ) on Friday September 05, 2003 @03:43PM (#6882769)
    Java originally promised to become a small, universal client-side platform for the delivery of applications to clients over the web. Java has almost completely failed in that mission: Flash is far more widely used, no browsers ship with the latest version of Java, and even if you stick to Java 1.1, there are numerous compatibility problems.

    What Java has become instead is a semi-open server-side platform. It's quite successful at that, but it is only one of many platforms in that space. PHP, Perl, Python, and .NET will continue to exist in that space as well and probably take away market share. And because Sun's restrictive licenses on both the implementation and the specification of Java, I suspect Java has seen its best days in the open source world.

    Now, about .NET, .NET is simply more of what Microsoft has always given us: a proprietary platform completely controlled by Microsoft. It's not primarily an alternative to Java, it's simply what Microsoft programmers will move to from MFC and Win32. Thankfully, it's at least a lot cleaner than Microsoft's previous APIs and systems.

    So, Java has failed to become what it originally promised to become, but it is a fairly successful platform that won't disappear overnight. But Sun's dreams of industry domination are pipe dreams. Java could have become much bigger and more important than it has become, but Sun screwed up (and is continuing to screw up).
  • by FeloniousPunk ( 591389 ) on Friday September 05, 2003 @03:48PM (#6882820)
    Sounds like more MS FUD to me. So how many times has Java been declared dead/ dying now?
    Where I work (for a DoD agency) we are developing J2EE solutions with open source tools in part to get away from vendor lock in, something that MS is particularly bad with. Once MS ratchets up the lock in with the introduction of DRM in Office file formats, I think MS solutions as a whole are going to become less attractive, and this will be a strong disincentive to adopt .NET.
  • Answer (Score:5, Funny)

    by r_j_prahad ( 309298 ) <r_j_prahadNO@SPAMhotmail.com> on Friday September 05, 2003 @03:52PM (#6882856)
    Is Java finished?

    Of course it is... and this late in the day it's time to switch over to beer anyway.
  • by smd4985 ( 203677 ) on Friday September 05, 2003 @03:53PM (#6882872) Homepage
    such as cell phones (J2ME) and Linux? From what I understand MS has no presence on cell phones (and there are a lot more cell phones than desktops) and they'll do their best to avoid needing to have a presence on Linux (i.e. bribe a down-and-out company to try and take out Linux in the courts).

    I think Sun has done a great job promoting Java on a variety of platforms, so I think McNealy isn't concerned about .NOT.
  • Make up your mind. (Score:3, Insightful)

    by Dr. Bent ( 533421 ) <ben.int@com> on Friday September 05, 2003 @03:55PM (#6882886) Homepage
    From the article,
    .NET's ease-of-use characteristics are forcing Sun to try to simplify Java development.

    and later,
    Sun needs to make the Java Community Process (JCP) more efficient and simple, because its unwieldiness is slowing the adoption of Java standards

    Huh? So first this article complains that Java is too complicated and needs to be simpler. Then it complains that Sun makes it hard to add new features (i.e. complexity) to the platform.

    I'll say it again...Huh?!?

    I think the JCP moves at just the right speed. If you change a language too quickly, make it harder for everyone to keep up. If you move to slowly, the language/platform won't be able to keep up with current technology. It should be hard to add things to the Java platform. A lot of people have a lot of different ideas about what Java should be. Sun tries to make sure only the best of the best gets integrated into the core platform. Anything else can be left as a 3rd party library (like AspectJ for example).

    A great man once said, "The Law should be stable but never stand still". Programming languages and platforms are the same way. Turning the JCP into a rubber stamp for new, unproven ideas isn't going to do anyone any good.
  • by penguin7of9 ( 697383 ) on Friday September 05, 2003 @04:05PM (#6882988)
    I don't believe Java (by which I mean the entire Java 2 platform, not just the language) is "finished" as a commercial platform, but I think it is finished as an open source platform unless Sun makes some radical changes. Why?
    • Maintaining WORA and interoperability among implementations is the stated goal of Java, and Sun has put teeth into their licenses to try and enforce that. That is, even the Java specification is covered by a license that prohibits you from releasing your own non-conforming version. While that may or may not be a laudable goal, it is in conflict with the fundamental principles of open source that you can take stuff, improve it, and release the improved version. And I think it actually is harming the technical development of Java.

      Another way of looking at it is that Java is too encumbered by intellectual property--copyrights, patents, and licenses--held in part by Sun and in part by an industry consortium (JCP). Anybody that builds applications on top of Java becomes as dependent on Sun as people who write Windows software become dependent on Microsoft. While there are plenty of open source projects for both Java and Windows, ultimately, that is not a good state of affairs for open source developers.

    • WORA brings with it a lot of costs but few benefits for Linux developers. When I write a Linux desktop application, I want it to work well on Linux, I don't care about whether it runs on Windows. But if I use Java, there are all sorts of Linux desktop and Linux kernel features I can't access. And the entire design of Swing and Java2D is based on a Windows/Mac-like local display model, something that simply does not work well with X11.

      WORA made sense for Java's original purpose in life, that of a thin, universal client platform. WORA makes no sense for Linux developers trying to develop high-quality Linux applications. (And, frankly, I think Windows programmers are saying the same about Java on Windows, which is why .NET will probably be more popular with Windows developers).

    • Java is just not a very convenient language to program in. For most needs, something like Python, Perl, PHP, or Ruby is simpler. And when those are not powerful enough, people just drop into C/C++ anyway.

    Java held a lot of promise for open source development at one point, but I think that's over now. The Java platform will continue to be used widely in many commercial (and some free) server-side applications. Subsets of Java will be used in teaching and research. And you will see more and more partial clones of Java appearaing. Open source will probably continue with a mix of languages. gcj+SWT, which implements the Java language but not the Sun APIs, may achieve modest popularity. Mono+Gtk# may become fairly popular (but the .NET clone that is part of Mono probably won't--both for legal and technical reasons).

    • by Abcd1234 ( 188840 ) on Friday September 05, 2003 @05:01PM (#6883526) Homepage
      Yeah, except that some people actually just, *gasp*, *like* to program in Java. It provides a nice, strongly typed, compiled, object oriented language (a niche none of those scripting languages fill) that's available almost anywhere while being FAR nicer to develop in than either C (too low-level and error-prone) or C++ (to damned friggin' ugly).

      Moreover, Java provides a massive class library which makes it easy to write new applications without having to reinvent the wheel every time (and yes, I know about the STL, but it's still not entirely standard, it creates bloody HUGE application binaries, it takes FOREVER to compile, it's *impossible* to debug compile errors, and it isn't even as extensive as the Java APIs!)

      Now, I would agree that Java is pretty well toast on the desktop, barring a toolkit revolution. I certainly wouldn't write an app using Swing. However, for other types of applications (like, say, Freenet), it can do an excellent job. And if you go with SWT, you can write some pretty damn nice GUI apps (just look at Eclipse, which is written entirely in Java).

      But to dismiss Java out of hand because it doesn't mesh with your and some other zealots ideals is pretty narrow minded. Personally, I don't care if my app is somehow "tied" to Sun. As long as I can release my source code, who gives a damn if it runs on a proprietary substrate. That certainly didn't bother the KDE guys (or their users) back when Qt was non-free. Sure, there were people who complained, but there were also plenty of people who didn't give a damn (myself included).
  • by Billly Gates ( 198444 ) on Friday September 05, 2003 @04:08PM (#6883023) Journal
    First off I hate Microsoft for political reasons and I writing on a pure technical view. I am not trolling. Second I only played around with C# for a few weeks and I am not a professional developer by any means. If any developers who use both care to comment please do because I do not want to missinform.

    With that out of the way I looked up the Sun's pet shop program example in Java and then the MS version in C#.

    Look at the lines of code in the MS version? The gui portition has an 8th of the code that the java version has. Also version 2 of Microsoft's .net version is cross platform compliant as long as the database uses ADO. So its not slimmer because of MS specific code.

    You can do alot of things with .net with only a 3rd of the code!

    I heard the libraries cover more areas then Java but they are thinner then the ones Java already covers. Also C# supports enumators, pointers ( yes they are evil), and cross language support and integration. Java 1.5 is playing catchup.

    • It was originally intended to illustrate various Java technologies and the application of those technologies. It was intended to be a *teaching* tool.

      To take such an illustrative example, rearchitect it, then make any claims about efficiency, is/was ludicrous. Like taking sample code out of a book on Java, and then showing how an expert .Net programmer can do it so much more efficiently.

      Do some more research and you'll find that the Petshop project has been completely discredited as a comparison of Java
  • Simpler? (Score:4, Insightful)

    by Dr. Bent ( 533421 ) <ben.int@com> on Friday September 05, 2003 @04:10PM (#6883039) Homepage
    Java's philosophy of development is to expose low-level system interfaces to give developers greater control. Microsoft simplifies the development process; the developer has less control -- but the tools are easier to use.

    Says who?

    I've developed applications in both .NET and Java and I've found Java's toolset to be much easier to use. This is simply due to the fact that there are many more vendors (open-source and commercial) that provide Java products. I can pick and choose which tools fit the particular project that I'm working on, and those tools will also run on any platform that Java runs on, so I'm not locked into a particular operating system while I'm doing development. I can decide to work in Linux one day and Windows the next, and use the exact same toolset for both.

    So I guess if your definition of simple is "you will use this tool and like it", then yeah, .NET is simpler. But in that case I'll take complicated over simple any day of the week.
  • by hackrobat ( 467625 ) <`moc.liamg' `ta' `inahtej.hsinam'> on Friday September 05, 2003 @04:22PM (#6883159) Homepage
    Earlier this week, artima.com [artima.com] published an interview with Anders Hejlsberg [artima.com], lead architect of the C# [wikipedia.org] programming language. Hejlsberg, interviewed by Bruce Eckel [mindview.net] and Bill Venners [artima.com], talks about the C# design process [artima.com], the trouble with checked exceptions [artima.com], and his idea of simplexity [artima.com].

    C# is one programming language I've stayed away from--and for no particular reason. I had picked up the C# specification [ftp.ecma.ch] [PDF] in 2000, but never really got down to the canonical "hello world" program. Today in 2003, as I look back, I guess I haven't missed much.

    Let's go back to August 2000 and revisit Hejlsberg's famous O'Reilly interview [oreilly.com] by Josh Osborn [oreilly.com].

    Why are there no enums in Java, for example? I mean, what's the rationale for cutting those?

    And Java has enums [sun.com] now, just like they come in C#.

    one of our key design goals was to make the C# language component-oriented

    I think this was really nice, and fitted in well with Microsoft's COM framework. I remember COM enthusiasts mentioning how every C# object would automatically be a COM object, thereby eliminating all that old school drudgery.

    C# is the first language to incorporate XML comment tags that can be used by the compiler to generate readable documentation directly from source code.

    Python and Java have docstrings (or javadoc) as part of the language.

    Developers are building software components these days. They're not building monolithic applications or monolithic class libraries.

    Developers are building all sorts of stuff, and not just "components". I think that statement is overrated.

    Boxing allows the value of any value type to be converted to an object, while unboxing allows the value of an object to be converted to a simple value type.

    Thanks, now Java has it too [sun.com]!

    Unsafe code allows you to write inline C code with pointers, to do unsafe casts, and to pin down memory so it won't accidentally be garbage-collected. [...] The real difference is that it's still running within the managed space. The methods you write still have descriptive tables that tell you which objects are live, so you don't have to go across a marshalling boundary whenever you go into this code. Otherwise, when you go out to undescriptive, unmanaged code (like through the Java Native Interface, for example), you have to set a watermark or erect a barrier on the stack.

    Honestly, I didn't understand the stuff about "unsafe code", the implementation of IL, and the implementation of generics. Just for comparison sake, Python also has a scheme for inlining C and C++ code [scipy.org].

    Let's face it, some people like to program in COBOL, some people like to program in Basic, some like C++, and some will like C#, I hope. But we're not trying to tell you to forget everything you ever did.

    I've raised this point to Java bigots on several occasions. It's just too difficult (and sometimes impossible) to interface Java with other languages. (In this context,

  • by Greyfox ( 87712 ) on Friday September 05, 2003 @04:27PM (#6883191) Homepage Journal
    There. I said it. Web applications suck. Having to kludge all your state tracking and code around toolkits to deal with all the quirky browsers that are available sucks. Having to use poorly written VB crapplets sucks. They're piling all this crap on top of a protocol that was never intended for applications to try to make it all work, and it all just sucks. It sucks in the Microsoft world and it sucks in the Sun/Java world.

    The question shouldn't be "Should I be develping this on .net or J2EE?" It should be "Should I be developing this on the web at all?"

  • by blueforce ( 192332 ) <clannagael@@@gmail...com> on Friday September 05, 2003 @04:46PM (#6883386) Homepage Journal

    Java versus .NET is becoming a ubiquitous topic. It's been the subject of debate since .NET beta 1. Microsoft and Sun both have "independent" studies conducted to prove that their platform (J2EE/.NET) is better and both have convincing arguments. There is no perfect language or platform to solve every programming problem - sometimes it's C++, sometimes it's Python, sometimes it's something else - it really depends on the problem.


    It's no secret that one reason Microsoft created C# is to compete directly with Java. It's pure ignorance to say that C# is proprietary and that you're locked-in to Windows. C# and the CLI (.NET) is an approved ECMA standard [ecma-international.org]. This is something SUN was unwilling to do with Java. For this reason, in a sense, Java remains far more proprietary than C#. It's too early in C#'s life to say that it won't be ported to other platforms - look at Mono [go-mono.com]. There is a lot of FUD being disseminated about "Microsof is going to sue Ximian, et al. for Mono" blah,blah,blah. That's not going to happen. Microsoft has already released the source code to the CLI [microsoft.com] with one intention of "People developing their own CLI implementations will find the Shared Source CLI an indispensable guide and adjunct to the ECMA standards.". So, for the argument that C# and the CLI are proprietary and one is bound to Windows is just plain ridiculous.

    Syntactically, C# and Java are extremely similar. They both derive from C++. Structurally, they are very similar as well. They are both OO languages, everything is a class, etc. Side-by-side they look very similar. There are numerous small details which make C# "friendlier" than Java, ie. C# has no requirement that the file be named after the class. However, C# has a lot of other advantages over Java. C# can make use of pointers. Java has no option on parameter passing - Objects are passed by reference, value types are passed by value. While C# has the same limit on objects, you are able to use pointers and it also supports boxing. C# supports operator overloading as well. On the merits of the languages alone, C# is stronger than Java. It should be expected since it was developed from scratch nearly 7 years after Java arrived.

    As far as performance, Java leaves a lot to be desired. I won't belabor this issue. If you'd like a demonstration of the difference between the run-time execution of .NET vs Java, pick your favorite VM and run Forte, then run Visual Studio .NET (it's written in C#) and decide for yourself. Java run-time performance alone is enough to dissuade some developers.

    Java does come as close to a RAD language as can be. Java applications can be developed quickly with far fewer bugs and errors as a comparable C/C++ application with the benefit of garbage collection as well. For this Java gets an "A". It greatly simplifies the process of rapidly developing database and other applications.

    Is Java going away? Hardly. But like it or not, C# and the CLI are here to stay as well. It's only a matter of time before the CLI is ported to other platforms and environments just like the JVM.



    • by roca ( 43122 ) on Friday September 05, 2003 @06:47PM (#6884323) Homepage
      > If you'd like a demonstration of the difference
      > between the run-time execution of .NET vs Java,
      > pick your favorite VM and run Forte, then run
      > Visual Studio .NET (it's written in C#)

      That is a lie. VS.NET is not written in C#.

      > There is a lot of FUD being disseminated about
      > "Microsof is going to sue Ximian, et al. for
      > Mono" blah,blah,blah. That's not going to
      > happen.

      Your omniscience is impressive.

      Microsoft has gotten EMCA's stamp on C#, the CLR, and the basic Framework, but they still control them with an iron grip. When .NET's behaviour differs from the ECMA spec, who's right, ECMA or Microsoft? Who gets to decide how things will evolve --- ECMA, or Microsoft? And of course .NET is much more than what ECMA has blessed. I doubt we'll see ADO, ASP.NET, System.Windows.Forms or a bazillion other APIs that you need to write actually useful applications in ECMA anytime soon.

      Even if you're willing to go beyond ECMA and port the Microsoft proprietary APIs to other platforms, the fact is that System.Windows.Forms is absolutely NOT a cross-platform GUI toolkit. The Mono guys are implementing it by sucking in WINE! There is simply no Microsoft-blessed cross platform GUI toolkit for .NET.
    • by Cederic ( 9623 ) on Friday September 05, 2003 @07:51PM (#6884667) Journal

      >> However, C# has a lot of other advantages over Java. C# can make use of pointers. Java has no option on parameter passing - Objects are passed by reference, value types are passed by value. While C# has the same limit on objects, you are able to use pointers and it also supports boxing. C# supports operator overloading as well

      You mention three advantages there:
      - pointer support
      - boxing
      - operator overloading

      I'm sorry, but in the average commercial environment, churning out business logic to meet changing business requirements under tight deadlines, two of those three are very very bad.

      Boxing is good. That's probably why it's in Java 1.5. I'd have liked to see it in 1.1, but that's another discussion.

      Pointer handling: I've written code doing direct memory access via pointers. I've also written code in Java (and thus not had access to pointers). The Java code has been at least as easy to write, had far fewer bugs (invalid pointers? memory leaks? not in my code), and (most importantly) been immeasurably easier to maintain. You might have been programming for 20 years and never have a problem with pointers; most developers have been programming for 2-3 years, don't have a sodding clue about pointers, and will and do screw it up. Quite frankly, pointers are evil and unnecessary and if I do use C# in the future (as is likely) I'll be insisting on coding guidelines that preclude their use.

      As for operator overloading: It's one of those things that makes C++ code so bloody impossible to maintain. Bit of code read x += y. Except it's doing a binary concatenation, or advancing the pointer reference, or updating Z instead. Because some idiot has overridden +=.

      I appreciate that there are situations where operator overloading is useful, even some where it's sensible. Unfortunately, going back to the average developer: They don't know when to use these things, and even if they do, they often don't know how.

      I love Java not because I'm a crap programmer (although I wont deny that) but because it makes my life much much easier. I can write code quicker, more efficiently, and more robustly. I can maintain code extremely easily, as the 'gotchas' that exist in many languages just aren't there in Java. And my boss loves the fact that he's getting new functionality so much quicker, because the whole team isn't spending their lives debugging a complex overloaded operator that's invalidated a pointer.

      I'm not saying C# is a bad language. I am saying that operator overloading and direct memory access (through pointers) is unnecessary and evil in the average corporate development environment. And that's the target environment for .Net.

      ~Cederic
  • Java vs. .NET (Score:5, Informative)

    by dist_morph ( 692571 ) on Friday September 05, 2003 @04:47PM (#6883396)
    I would like to point out that there are now several solutions that allow the integration of Java into .NET, so it does not have to be an either/or decision. I have run into many shops that love using Java on the server side and also love using truly native GUIs on the Windows desktops. Using the right tools, you can easily do that.

    My favorite tool for the integration is JuggerNET [codemesh.com], which transparently starts up a JVM in the CLR process and the developer simply codes against generated .NET classes. I am affiliated with Codemesh, so I'm somewhat biased (take a look at Stu Halloway's great website [develop.com] for alternatives) but working with both platforms for a living, I just can't get excited about controversial this or that is dying statements. Both platforms have their strong and their weak points.

    I love the platform portability of Java, but I think Java is too closed in terns of language integration. Doing JNI by hand is an abomination, and most people at Sun admit it.

    I love the language portability of .NET (it's not perfect, but then, neither is Java's platform portability) but I hate the exception model.

    So, there you have it. Neither will kill each other, they will just coexist uncomfortably until they both get replaced with something new.

  • by rshimizu12 ( 668412 ) on Friday September 05, 2003 @05:30PM (#6883791)
    This Yahoo article is just more typical Microsoft propoganda....... Java today is way ahead of .NET. Java has more than 250 million users, There is more Java chips sold then x86 chips last year. Most of the big .NET claims are MS shops switching over VB .NET. On the otherhand there is some ease of development issues. But these problems are being solved by Eclipse and Sun's recent involvement.
  • by Enthrash ( 545820 ) on Friday September 05, 2003 @05:33PM (#6883828)
    I fear nobody has mentioned the simple yet profound fact that will drive many towards .NET & Java/J2EE. It's Linux! It's free, it's stable, it's secure (relative to MS OS's). Put it together with Apache Open Source products such as Tomcat & Apache httpd, or JBoss if you are into EJBs and you can't go wrong.

    I feel that the technical debate between .NET and Java/J2EE more irrelevant than most will admit. They are both very well designed development languages, and can accomplish most projects in a similar amount of time, with similar numbers of developers.

    Just one problem, most businesses wish to make $$$, and if you haven't noticed the tech sector barely able to keep it's head above water right now. Thus, all things equal I'd bet most businesses will probably opt for a Java (or J2EE)/Linux solution as the overall price can't be beat, and you don't have to waste you development time creating valueless libraries that others must have had to create already. Not to say .NET add-in dev libraries aren't available, they just aren't provided in an FREE manner as frequently as they are in the Java world.

    Anyhow, my 2 cents.

Genius is ten percent inspiration and fifty percent capital gains.

Working...