Slashdot Mirror


C# From a Java Developer's Perspective

Microsoft's C# has raised eyebrows, interest and debate since its official announcement last year. The prolific Carnage4Life (Dare Obasanjo) has completed a detailed comparison of C# and Java, outlining the things that are identical, similar, nearly the same, or completely different between the two languages. If you're considering learning or applying either one, you might benefit by reading this paper first. There are some other excellent comparisons to be found linked from the Open Directory Project as well. Update: 11/20 03:35 GMT by T : Note: here's a mirror; interested readers who mirror the mirror get good seats in heaven.

9 of 507 comments (clear)

  1. The lesser of two evils by Walter+Bell · · Score: 5, Insightful

    Disregarding the fact that Java and C# are both "closed" languages controlled by large corporate entities with their own self-interests in mind, they both do an admirable job of bridging the gap between general purpose scripting languages and C++. Having used C# and Java on Win32 extensively in the past year, I have become accustomed to the automatic garbage collection, quick execution speed, and logically consistent design of both languages. The Windows compilers / runtime engines for both languages are quite amazing, and something for the fledgling gcj to aspire to.

    Although C# does deliver superior integration with Windows and .net (which is good for MS-only developers and bad for multiplatform programmers like myself), I'd have to pick Java if it was up to me just because of its sheer elegance. It seems like Sun did a better job designing a general-purpose language (applet "security" extensions aside), and Microsoft just tried to copy Java but add in proprietary extensions to hook C# into Windows. Thus, some of the C# features seem to be "bolted on", whereas most of Java came across as being very natural to me.

    Just my 2c...

    ~wally

    1. Re:The lesser of two evils by Steveftoth · · Score: 5, Insightful

      If c# takes off for windows programming I think it will be because people will be able to build responsive GUI programs with it. The largest problem with Java is people's conception that it is SLOW. Java coders know that is not true in general. However, AWT and Swing are slower then they need to be because of their cross-platform compatability. If you can build a responsive GUI program in less time using C# then I think it will be the language of choice for many coders. C++ takes more time to get all your bugs out, Java gets rid of the possiability for many bugs, (while introducing others, but there are less overall) and reduces time of coding.

      Also, you'll be able to use all the newest 'must have features' that MS tries to shove on the consumer in C#.

      For now, I'll stick with Java because it's libraries are much better. Not just the ones that Sun wrote, but more importantly, the ones that other people have written.

  2. Come on now: Have you ever really used C#? by ergo98 · · Score: 5, Insightful

    Seriously though, have you? From your vague, unsubstantiated, no example posting it sounds like you use and know Java, therefore you can proclaim yourself knowledgable about C#. Your claims about the "bolted on" aspects of C# are particularly suspicious given the "hooks" into Windows are simply objects instantiatable from the .Net Framework (they're not "bolted on": Just like Java you include the unit and create objects from it). If anything C# takes some of the goofy aspects of Java, such as the interoperation with properties via methods, and cleans them up to make an abstract behind the scenes property handling system (ripped straight from Delphi's object pascal I would guess).

  3. Power of Java, Functionality of Windows by ClubStew · · Score: 5, Insightful

    I admit that Microsoft is once again trying to dup Java, but, if you like Java and wish to work with platform-dependant API's that do more with Windows than Java, C# is your answer!

    As the article mentions, C# has almost the exact same syntax and keywords that Java has (plus PERL's foreach operator...kudos). There is almost no learning curve. You can leverage the functionality of Windows with C# however, and it has great XML support; so, if you've worked with the MSXML parser, you'll have no problems working with XML in C#.

    C# deserves a little more credit than many give, at least if you're working in a strict Windows environment. It's worth a look.

    That's all I have to say, but I'll pile on the on wood for the flames that will arise!

  4. Java != Sun by RichiP · · Score: 5, Informative

    Although Sun engineers are handling the boards, the direction of Java is mostly influenced by the general public through the Java Community Process (See http://www.jcp.org/). Sun simply acts as an arbiter and caretaker.

    If there are any good ideas in C#, there's really no reason it couldn't be adopted by Java. Someone just has to submit a request

  5. I'm impressed by C# -- the language by GCP · · Score: 5, Insightful

    I've been a fan of Java since it was still in alpha, in early '95. I even wrote a piece of the Swing API. I'm still a Java fan (and developer), but sadly not for GUI apps. MS ("we own the client") and Sun ("we're not going to let this become just a better way to write Windows apps") collaborated to kill Java as a viable way to produce commercial-grade consumer GUI apps.

    We need a modern, productive system for producing new high-performance GUI apps: apps that look and feel as if they'd been written in C++ -- without the crashes and slow dev cycle. I'd give up some of the flexibility of C++ (you can write drivers, create an OS, build a browser, it's a dessert topping AND a floor wax) for something truly optimized for what matters most in creating superb GUI apps quickly and well.

    I've had high hopes for Eiffel and some others to evolve into the successor to C++ for GUI apps, but it never happens. The inertia of programming languages is immense.

    The next to step up to bat is C#. I like the language a lot and think it lends itself to great dev systems. I'm suspicious of the bytecode aspect, though. ("Faster than compiled!", "It actually is compiled!", etc. Yeah, so why isn't Solaris written in Java?) I'm afraid that aspect will still require that "serious" apps be written in C/C++.

    I like even less that it may remain Windows-only. If it does remain Windows only (for all practical purposes), I suspect the blame will belong just as much to MS haters dismissing it primarily out of bigotry as to MS for optimizing it for their own platforms.

    I'd like to see the open source community look at it with the same eyes as if it had come out of some smelly hacker's basement.

    --
    "Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."
  6. my $0.02 by vscjoe · · Score: 5, Insightful
    I think from the level of people who make decisions about what programming languages to use on commercial projects (this includes me), the technical distinctions between Java and C# are of little concern: the languages are so similar that they are basically interchangeable. What matters is who supports it, what libraries are available, how mature are the implementations, whether it's a single-vendor or mult-vendor solution, how well it integrates with the platform, and how many programmers are available.

    For pure Windows programmers, C# wins there and will probably be picked up by lots of VB and VisualC++ programmers. But people who live in that world are already not using Java. For everybody else, Java seems to win hands down. I think C# will neither be a complete failure nor will it do much harm to Java.

  7. My take by nebby · · Score: 5, Interesting

    I've been a Java programmer since JDK 1.0 came out, though I've really done most of my Java coding with server side servlet stuff since the GUI library has, and probably always will, suck the wanker.

    I just recently picked up C# about a month ago. The learning curve from Java was pretty damn low, only with a few different naming conventions and new language constructs. Things such as indexers, delegates, and the like (all of which I feel are positive additons to the language.) The event model, to my surprise, is better than Java.

    Then after learning the language itself I started looking into Windows Forms and nearly spooged my pants. Finally Windows progammers get a clean framework of GUI controls with a powerful modern language behind it (ie, not C++ or VB.)

    Usually if you wanted to make a powerful Windows app you were forced to use C++ since VB didn't really cut it. Now you can use C#. Complex Windows apps are going to be a whole lot easier to write now, nevermind the fact that they'll be able to do remote method calls via SOAP, and be deployed effortlessly (ie, create a Windows Installer in like 3 clicks or something.)

    I have to say, for the stuff I'm writing that I don't need cross-platform compatibility (which I did surprisingly find to work in the case of servlets) .. C# and the .NET framework wins hands down.

    --
    --
  8. C# is what Java developers really want... by javabandit · · Score: 5, Interesting

    C# being better designed than Java is no big surprise. Why? Because Sun has done very little to further the actual language itself.

    Java really hasn't changed much since its inception. All we have are a few more libraries, a GUI framework that blows ass, and a server-side framework that we didn't really need to begin with. But we have no real additional language FEATURES.

    Like a lot of people, I've been using Java since the beginning. I look at the C# language and I see everything I want in Java. The great majority of differences between C# and Java are purely syntactical sugar -- compiler candy. AND THAT IS WHAT WE WANT.

    We've been asking for support for generics and parametric types since JDK1.1. And they still aren't in (they were removed from 1.4 at the last minute). We've been asking for A REAL CONST. We've been asking for assertions -- and finally got them.

    But all in all... most SEASONED Java developers aren't happy with the progress. Java has been plainly behind the curve when it comes to evolving new and different features. Instead, Sun poured all of their effort into their bullshit J2EE framework which is a complete shambles, IMHO.

    Its obvious. Microsoft simply went to Usenet... read a bunch of Java posts... and saw that Java was stagnant. They took advantage of it. They created a new language... based upon Java... adding everything that Java developers were complaining about. Voila! C#!

    I wonder if this would have happened if Java were open source. Probably not.

    But one thing for sure... Microsoft is an EXPERT at catching a company while it is asleep at the wheel... ripping of its product... making it better... and seizing an entire market.

    They just might be doing it again...