January 17, 2002 12:00 PM PST

Newsmaker: Why Microsoft's C# isn't

See all Newsmakers
Why Microsoft's C# isn't
Java inventor James Gosling says he isn't losing much sleep over Microsoft these days, despite the software giant's effort to stem Java's popularity with its own Java-like language.

The next battle in Web services software development pits Microsoft against Java creator Sun Microsystems, along with Java adherents IBM, Oracle and others. Crucial to Microsoft's effort is C#, a Java-like language that will soon be part of the company's new Visual Studio.Net package of software-development tools, which was released to developers Wednesday.

Gosling, a Sun vice president, is dismissive of C# but admits he and others at Sun initially "panicked" when they learned of the language.

"The trite answer is, 'Imitation is the sincerest form of flattery--thank you very much,'" he said this week. "But the other answer is, 'You guys (at Microsoft) still don't get it,' because it's sort of Java with reliability, productivity and security deleted."

In an interview with CNET News.com, Gosling dissects C#, discusses Java's popularity and explains what it's like to be a "superstar."

Q: Why do you say Microsoft's C# is Java without the reliability, productivity or security?
A: You find stuff in it that has essentially loopholes for everything. They had this problem in their design rules that they had to support C and C++, which means you have to have a memory model where you can access everything at all times. It's the existence of those loopholes that is the source of security, reliability and productivity problems for developers. So on the one hand, they copied Java, and on the other hand, they added gratuitous things and other things that are outright stupid. That's amusing.  It's flattering. Just before Christmas I signed a T-shirt while the person was wearing it. Someone had an ink marker and asked, 'Can you sign my laptop?' I signed the laptop cover.

We were panicked (about C#) a while ago. And we've gotten somewhat more relaxed about it. It's certainly something to be concerned about, given the amount of resources Microsoft can bring to bear. But I've had conversations with developers. It has not been that big an issue with developers. It's actually been much more a public relations issue than a reality issue.

Where is the growth in Java development? Is it still mostly on the server side? What about the desktop?
It's both. You can't actually separate them because these networks that we're building are a bunch of things that communicate and are interdependent. Anytime someone builds a little application that runs on a cell phone, there's something that goes on the server. It's kind of like saying, "Is the blood pumping in your left arm or your right arm?" It's both.

Wireless has been very active because it's been particularly sexy. But desktop stuff has huge activity too. I suspect the amount of activity on the desktop is much huger than what's going on in wireless. You see people doing Java-based internal applications all over the place, regular desktop applications that are sort of front-ends to the things in the back, or standalone things.

 I enjoy evangelizing Java. In my heart of hearts, I'm an engineer, and what makes me happy is building something that works and having someone use it. That's cool. The level of activity is just amazing; it's like every year I think it's going to slow down. The Java world has just been accelerating, and it's amazing how essentially anywhere there is a digital system, there's someone building something in it with Java. It's become this development environment and tool that gives you the unifying framework that colors everything, from supercomputers to smart cards.

What projects are you working on now for Sun?
For me, (inventing) Java is 10 years ago, so I decided a couple of years ago, it's time to get on with my life. So I went back to the research lab at Sun, and lately I've been on a developer-tool project. There aren't a lot of people building IDEs (integrated development environments). And IDEs are generally targeted at low-end developers--people who are not experts at writing code. And if you look for tools that are oriented toward (those) people, you basically find nothing. The No. 1 tool (in that area) is Emacs, and I was kind of the guy responsible for the original Emacs, 23 years ago. One of the things I find frightening is it's still around, and in many ways it hasn't really changed. Is that the best you can do for a (low-end) developer? I don't think so.

We have a development (tool) called NetBeans that Sun bought. It was architected from the beginning to be a framework. It's a flexible system we open sourced a year and a half ago. And so I'm building a plug-in for NetBeans.

IBM created its own open-source project called Eclipse, which aims to integrate Java development tools so a software developer can choose tools from different software makers, plug them together, and have them work together. While nearly every toolmaker has joined the Eclipse project, Sun hasn't--and IBM executives have complained about that. What's going on?
NetBeans is very much like Eclipse. They said we were being bad because we didn't join Eclipse. But they didn't even ask us. We didn't find out about it until they announced it. It's been a little weird. To us, Eclipse feels like something very "me too" and derivative, backed up by a really strange marketing campaign.

We were panicked (about C#) a while ago. And we've gotten somewhat more relaxed about it. It's certainly something to be concerned about, given the amount of resources Microsoft can bring to bear. Do you see the two open-source projects coming together?
They may. I mean, I'm sure there're people looking at what it will take. It's hard to tell how these things go. The important thing is to come up with a common set of APIs (application programming interfaces). We've been working on APIs for the last year and a half. It would have been nice if IBM had actually joined into our open-source effort that's been going on for a very long time.

Microsoft is making aggressive moves on the Web services front. There's some talk that Java is trailing in the Web services game, since the Java supporters, through the Java Community Process, won't come up with a Web services standards until later this year. Your thoughts?
We get asked about slowness a lot. I've made the comment that democracies work slower than dictatorships. That's a true thing. One of the key aspects of Web services is that it's all about cooperation. So if you are building a standard airline reservation system you have to get Travelocity, Orbitz and Expedia into a room, and they have to agree on a common schema in the Extensible Markup Language (XML) world for describing what is a flight and what is a request for a flight. One could try to dictate to the airline industry what all their reservation systems should look like, but they would not be real happy about that. I don't think that would be successful, because Web services is inherently about cooperating, so there has to be some kind of democratic process.

When you try to get Visa, MasterCard, Citibank and American Express, and the list of people in the Liberty Alliance (to create a standard for an authentication service over the Web), getting them to agree is going to be hard. But they are actually committed to agreeing. They understand they have their own agendas, but to further their own personal agendas they have to cooperate. So they are actually doing some good work.

The last time we interviewed you, about four years ago, you mentioned that when you made public appearances at conferences, Java developers always asked you for your autograph. Are you still treated like a superstar, and if so, how does it feel to still evangelize Java?
It's flattering. Just before Christmas, I signed a T-shirt while the person was wearing it. Someone had an ink marker and asked, "Can you sign my laptop?" I signed the laptop cover. It's mostly (signing) pieces of paper.

I enjoy evangelizing Java. In my heart of hearts, I'm an engineer, and what makes me happy is building something that works and having someone use it. That's cool. But when evangelism takes over my life, which it did, life becomes unpleasant. For a while, I was (focusing on the evangelism) for medical reasons, because I had really bad carpal tunnel and RSI problems (and couldn't use a keyboard). And a couple of years ago, I went through a bunch of surgeries and it was like magic. I could work again. I've had a lot of fun since then. 

More Newsmakers


Join the conversation!
Add your comment
This was a hilarious find, six years later. C# is "low productivity" compared to Java huh? Lol

It would be a great world if Java (and its support systems like Eclipse) could compete in a serious way with .Net and C# in particular, but that's not the reality today. It's pretty clear that C# is creaming Java in business software.
Posted by (1 comment )
Reply Link Flag
C# is creaming Java? Hey, I want you to look at this http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html. See? And I also want you to check-out the Android platform by Google.
Posted by JAVAMAN_2004 (2 comments )
Link Flag
TIOBE quote: "Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written."

1st w/ Generics vs Java
Lambda expressions
Anonymous types
Anonymous methods
Co and Contra variance
LinFu (Mixins, duck typing)
Pointers (for when you really need/want it)
Camel Casing lol
Posted by bbqchickenrobot (1 comment )
Link Flag
Wow, yes, 6 years later, I look back at this and think: thank god i didn't get a job at IBM and haven't become a Java developer. I reckon where they blew it is with a lack of a killer IDE... IntelliJ is close, but c'mon - Visual Studio just kills every IDE out there. Also, Java 2's UI frameworks just confuse the hell out of programmers, whereas WinForms was straightforward, it ran quickly, and continues to run to this day. It's everything we wanted. So I've got to agree with the other poster here that C# has creamed Java for productivity and not just productivity, but basic developer happiness. I for one can't see myself leaving .NET for another framework anytime soon. Unless Microsoft comes along with something better, that is :)
Posted by drowling (1 comment )
Reply Link Flag
Visual Studio kills every IDE out-there? I DON'T THINK SO. Is there an Open-Source Visual Studio for Linux.. Solaris, etc? Can you enumerate some of it? Did you heard about NetBeans IDE? Its written in Java... Is there an IDE out-there that is written in C#?
Posted by JAVAMAN_2004 (2 comments )
Link Flag

There is an IDE written in C#. It is called SharpDevelop (http://www.sharpdevelop.com/OpenSource/SD/Default.aspx). SharpDevelop is specific to Windows. The Mono Project (http://www.mono-project.com/Main_Page), has developed a cross-platform port, MonoDevelop (http://monodevelop.com/).

In addition, mutliple Eclipse plug-ins exist for C#. Some of the most used include the Emonic (http://sourceforge.net/projects/emonic) and Improve (http://www.improve-technologies.com/alpha/esharp/) plug-ins. There is a good article on IBM Developer Works (http://www.ibm.com/developerworks/library/os-eclipse-migratenetvs/index.html) on Emonic and NANT.
Posted by finleyd (21 comments )
Link Flag
I can code c, c++, java, python, html, php with netbeans IDE. It is free & opensource! One of the greatest features about Netbeans is that i dont have to bother if i switch to different Operating systems. And C# plugin for netbeans is under development. So I'm not using Visual Studio.
Posted by Ahmad_Musaffa (1 comment )
Link Flag
Both of you must be on crack. C# sucks for anything other than developing on MS platforms. No one with at least a fragment of a brain thinks C# is even as half as mature as Java w/r to APIs and development tools.

"It would be a great world if Java (and its support systems like Eclipse) could compete in a serious way with .Net and C# in particular, but that's not the reality today. It's pretty clear that C# is creaming Java in business software." .....Dude, you cant possibly be serious.

Funny how you NEVER encounter apps written in C# on a daily basis yet ever cell phone or web app that isnt written in PHP/Perl is running Java. Put down the pipe.
Posted by popasmuerf (1 comment )
Reply Link Flag
Another hilarious post in hind-sight. I've done a little Java work, but the majority of my work has been with C#. Yes, on Microsoft platforms. But then I've never run into the need to support any other platform in 30 years. That itself says something, eh?
Posted by CoderGuy2 (1 comment )
Link Flag
You must be joking about never encountering apps that run on C# or you must visit only Java sites, there are tons of sites that use C#, ASP.net, the reason is, it's so easy. And what difference does it make it is MS platform if your making a web app, its accessible via anyone's browser.

Notice how you said they are written in PHP/Perl and NOT in Java, for a good reason! I'd rather use PHP than Java and for the other comment above, don't get me started on JavaBeans IDE! Puke! Put down the needle and kaleidoscope glasses man!
Posted by paullyv (1 comment )
Reply Link Flag
I've never seen any real apps written in C#, and also you can go through the web and see a lot of web apps written in java.
If you wanna compare the two languages by popularity you can see the statistics sites.
almost all the universities teach java(not c#) or c++.
Take a look at cellphones and see how java technology has dominated mobile apps.
Moreover, C# is platform-dependent which means it limits the developers to Microsoft Windows, but with java you can freely develop any application for almost all platforms.
do you still want some more?
Posted by nevermind70m (1 comment )
Reply Link Flag
i've used both java and c#, and i think the author didn't really test them , perhaps instead repeating something sun marketed? I raced c++ and c# in d3d as per the riemers.net code samples approximately, along with an instanced x-wing from squidsomething, c# was much faster, at least on my x64 6-core system with current , maybe juneish dx sdk and visual c# express,,....that was 2008 i think lol usin 2010 now, but gonna grab that 4.8gb win8 + vs 2011 dev demo when i sleep if i remember :)

java is buggy and breaky, c# is a slick clean language, mixed in with the good windows program makin tools, and if you alredy know win32 style forms designer and events, lol just click the lightnight bolt and link events like 'clicked ' or 'load' to a named function on the code page in the nice free express visual studios, plus same forms to make web pages, only diff bein forgetting variables not stored in special built-in arraylist type (a very nice compiler specific optimized array, linked list, and hashtree too, can index by #, functions like 'add' all dynamic no overflow possible, fast new loop to iterate thru and also replace the replacement for void* (object) with your named type, remember an object pointer in one arraylist can opint to any object, maybe with an int to track what they are inside

also the web sql is good thru the ado.net functions, i was thinkin of doing networking instead of c# sockets (also very nice, can use sync ez mode with threads for powerful clean bug free code, and can call C++ functions too and it also supports x86 and x64 asm blocks for superspeed, i was lookin at madwizard's code snippets, and lol it's hard to do much with those ****** asm functions, but your exe is small and faster too....although you miss teh high levels that are more obvious in c#, like distance sorting your 3d model arraylist and not rendering far ones with a poor size:distance ratio,approximatly, and then you can put the asm in spots if you wanna or just use the ms d3d sdk
Posted by aersixb9 (1 comment )
Reply Link Flag
I find it amuzing the Java considers C# Java-like. They are both C++ like. At least over the years Microsoft has done a lot to make C# so much better. There is a good team at Microsoft working of C# and Visual Studio, which is good for everyone. Both languages are "Standing on the shoulders of giants" that came before them. That is not bad. Learn from the lessons of the past, particularly the successes
Posted by qck1 (1 comment )
Reply Link Flag

Join the conversation

Add your comment

The posting of advertisements, profanity, or personal attacks is prohibited. Click here to review our Terms of Use.

What's Hot



RSS Feeds

Add headlines from CNET News to your homepage or feedreader.