Choice is Good!



I would like to blog today about the difference of two worlds: Java and .NET. Let's start with .NET.

In the .NET world you have one main provider of technology - Microsoft. This brings some advantages - less choices means less confusion, and also it means possibility of better alignment of all available technologies. However everything you get from Microsoft is closed source, so there's no real possibility of creating of open communities which exist in the java world. Sure, there are developer communities around Microsoft's technologies and Microsoft spends lots of $$$ to make sure they exist. The thing which is really missing in the .NET world is choice - there is one platform you have to use and although you can choose providers of different components, for the basic platform you have no choice and you have one major tool everyone is using - Visual Studio. If you don't like it or it doesn't work for you, you're basicly screwed.

Now let's look at the java world. It's all about choice. You can choose a company from which you'll download the JDK, you can choose GUI toolkit. You can choose web frameworks, there are many IDE's, you can choose application servers. You can choose operating system this all will run on top of. You can choose which community you'll join. You can participate, you can influence the future of many opensource projects, contribute code, etc. You can choose services from many companies which exist in the Java ecosystem.

I claim that choice is good and you realize that especially if your vendor does things you don't like. Not everything in world is black or white, and choice has it's drawbacks, too. The first one is that you have to make the choice - you need to think about which technology is better for you, consider it's future development, etc. If you make choices, some things might not work together - because you make the choice, you are also limiting yourself to specific products or libraries (e.g. when choosing an IDE or a GUI toolkit).

I personally am really happy to make such choices, because they provide a lot of freedom. If you want less freedom and you just want things to work together, you can choose one vendor (e.g. Sun, IBM, Oracle) and if you stick to supported technologies you'll end up with a nice solution. But the difference with the .NET world is that in .NET world you don't have the possibility to go away if things go wrong. In the Java world, you have many choices.

One of the things you need to think of when choosing an application server, an IDE, a library, operating system, etc. is how easy or hard it will be for you to go away. Technologies evolve and sometimes you can make a bad choice, using a technology which moves in the direction you don't like or doesn't move much forward. Companies use IT as a competitive weapon and if you can't move on from your old technology, you might loose that advantage (e.g. when you use an application server which is very slow in supporting new standards).

Finally, there's the "Java IDE war" as some people call it. NetBeans competes with Eclipse and these two camps sometimes go over the border with their fights. Is that a good thing or a bad thing? As a developer, you should be really happy. Look how long it took Microsoft to provide refactoring features? They've been available in the Java world for a very long time. The product I work on - NetBeans - was relative late to support them, but you could choose any other IDE at that time. In the .NET world you had no real choice.

The competition in the Java world is creating a lot of innovation. Look at NetBeans' feature like Matisse, for sure it would take longer to create such gems, if there was no competition. Swing today is a great GUI toolkit - compare it with the older versions. Look at what Romain Guy can do with Swing today. Would Swing be the same if there was no push from SWT? I don't think so. Would NetBeans be so good if there was no Eclipse? I don't think so.

Choice and competition pushes every vendor in the Java world to do the best they can. Sometimes the conflicts between the IDE camps make it look like the java space is fragmented, but if you watch the developers, no matter if they develop NetBeans or Eclipse, at the end they can meet in a pub and discuss their projects with a glass of beer. They don't hate each other or something like that, we are all just members of the java community and it's a lot of fun. Sure, not everything works together and it would be nice if it would (especially the IDE plug-ins) - but the most important thing is that you can make a choice. I think we sometimes forget about this freedom, because it's given to us, so we don't realize it doesn't have to be like that.

Technologies evolve, products evolve. Will NetBeans be around in next 5 years? You bet! Will Eclipse be around in next five years? You bet! Will [my favorite closed source IDE] be around in next five years? I don't know... Opensource creates products that last really long and I'm happy to work on an opensource IDE. The community won't go away, but users of a closed source product can (and in fact, we see that happening).

You can definitely expect me to be sharp, using every opportunity to promote the NetBeans project and explaining why it's better than the other IDE's. The same for the NetBeans platform. At the end it's all about choice - it's up to you if NetBeans or Eclipse or anything else is the best tool to get your job done. And we'll make sure to increase the probability that you'll like NetBeans - we're working hard to make it the best IDE out there. Again, as a developer, you really really should be happy, because we make your life easier. And even if you don't like NetBeans, we still make your life easier, because once we create great innovative features our competition will work on them, too, to have a better product than we have.

One day we'll all look back and think... well this opensource IDE war was really funny. But we'll also see how much innovation happened and how it made our lifes better. Gee, I remember 5 years ago developing in Java - if I had the tools I have today, my life would be so much easier. So, let's be happy about the choice we have and about the (mostly friendly) competition. And let's kick some .NET ass\*s. Thank you for reading so far.
Comments:

If choice is so good we don't need Java because Java (TM) technology is all about reducing choice say fragmentation of technologies. And talking about Microsoft: according to a MSFT-weblog Microsoft has 764 (!!) developers working for VS.NET. How many Sun-developers are working on Netbeans? 30 developers? I guess Sun has only a very small fraction of Microsoft's workforce.

Your post seems like a lame excuse for Sun's refusal to cooperate with the Eclipse-project. Developers and companies want a common plugin-system. We want a standard for IDE-technology. We do not want one only IDE or only GUI-builder. But we want an IDE-standard!!!!!!!!!!!! You can have as many GUI-builders or Java-IDE's as you want. Borland will start its Eclipse-based Peloton-IDE later this year. The Eclipse-project has choice in reporting-tools with BIRT and Crystal. So the Eclipse-platform itself creats competition and choice but based on a standardized platform.

Sun is the evil guy here because they refuse any cooperation with the Eclipse-project whereas almost any Java-using company has already standarized on Eclipse. Look what Nokia, Sony Ericcson and Motorola are doing. They are strategic Eclipse-board-members and they shun Sun's Netbeans-project. Redhat/JBoss just kicked Sun's ass because a bundled JBoss/Netbeans-download has nothing to do collaboration of those projects. It is the lowest-common-denominator of collaboration.

> Again, as a developer, you really really should be happy, because we make your life easier

That's a lie. The incompatibility between Netbeans-platform, Eclipse (and Jetbrains!) forces plugin-developers to do the same work at least 3 times if ever. Incompatibility doesn't make your life easier!! That kind of fragmentation is is against the spirit of Java (TM).

> there are many IDE's, you can choose application servers.
Application servers are standardized whereas IDE's are not standardized. An Eclipse-plugin doesn't run on the Netbeans-platform and vice-versa. That's a very bad thing (TM)

Posted by Momo on říjen 01, 2006 at 02:03 dop. CEST #

> If choice is so good we don't need Java because Java (TM) technology is all about reducing choice say fragmentation of technologies.

Ugh? No, the choice is bigger because you can choose the application server, operating system, IDE, framework, ... sure, fragmentation is caused by this large choice. And fragmentation is better than if there was no choice!

Btw, Sun has more developers working on NetBeans than 30. Just check the bugtracking system and you'll see that the number is \*a lot\* larger. Plus there are contribution from the opensource community.

If you read my post properly, you'll notice that I wrote "Sure, not everything works together and it would be nice if it would (especially the IDE plug-ins)".

Posted by Roumen on říjen 01, 2006 at 02:16 dop. CEST #

There are also some other incorrections in your post. Sony Ericcson doesn't shun NetBeans - see e.g. very recent article from Sony Ericcson. Nokia has an application built on top of NetBeans platform. Look at NetBeans partner directory.

Posted by Roumen on říjen 01, 2006 at 02:25 dop. CEST #

More about Sony Ericsson.

Posted by Roumen on říjen 01, 2006 at 04:13 dop. CEST #

>> Again, as a developer, you really really should be happy, because we make your life easier

>That's a lie. The incompatibility between Netbeans-platform, Eclipse (and Jetbrains!) forces plugin-developers to do the same work at least 3 times if ever. Incompatibility doesn't make your life easier!! That kind of fragmentation is is against the spirit of Java (TM).

>> there are many IDE's, you can choose application servers.

>Application servers are standardized whereas IDE's are not standardized. An Eclipse-plugin doesn't run on the Netbeans-platform and vice-versa. That's a very bad thing (TM)

The root cause of why NetBeans & Sun have to compete with Eclipse is the SWT vs. Swing issue. And I think its a good reason enough for Sun not to contribute to Eclipse. JSR-198,A Standard Extension API for IDEs, has reached its final state. I bet the first will be Oracle and the last one will be Eclipse who adopt it.

Posted by Ben on říjen 01, 2006 at 02:35 odp. CEST #

Ben, yes, and as for Sun being the bad guy as mentioned by Momo, well we didn't start fragmenting the community by creating a new GUI toolkit ;) But it doesn't have sense to talk about who started it, let's rather talk about areas where we can cooperate. As for JSR-198, I am sure Oracle will be the first one, because this JSR was created according to the JDeveloper API's, so they support it almost automatically.

Posted by Roumen on říjen 01, 2006 at 02:47 odp. CEST #

> I bet the first will be Oracle and the last one will be Eclipse who adopt it.

That's a pathetic statement. JSR 198 will be the most useless JSR off all times. Nobody will care about that JSR and I guess you know that.

> The root cause of why NetBeans & Sun have to compete with Eclipse is the SWT vs. Swing issue
Not at all. The root cause is Sun Microsystems not accepting any technological input from other companies like i.e. from IBM. Sun considers IBM as ennemy. Sun's new best friend is another company. Btw there is a Swing-implementation for SWT.
http://www.javalobby.org/java/forums/t78501.html

> well we didn't start fragmenting the community by creating a new GUI toolkit

Maybe you tell that to the Google guys who invented GWT, another new excellent GUI toolkit. But I guess according to Roumen GWT is not evil because it is from Google and only contributions from IBM or eclipse.org are evil.

Sun Microsystems is fragmenting the community. That's called NIBS (not invented by Sun). Sun Microsystems doesn't accept any contribution brought by other companies then Sun to Java (TM)!!! In fact Sun is not very different from Microsoft.

Why don't you accept good technologies developed by other companies or entities? The Eclipse-plugin-system is excellent but Sun Microsystems will never accept that because of NIBS - not invented by Sun. I never hated Sun Microsystems but I started to hate them since they behave like Microsoft. Sun wants to control all of Java (TM) and doesn't accept (much) input of other companies.

You are like Microsoft. You are not open at all. Being open means collaboration and cooperation and not domination. And that's exactly the reason why the Eclipse-project is so incredibly successfull, why everybody joins the Eclipse-project and why almost no company is interested to cooperate with Sun-controlled Netbeans-project. Btw the Nokia- and Sony-Ericsson-links posted are ridicolous.

I guess Sun Microsystems will have to learn a lot before that company can be considered to be „open“. You are not open!

Posted by Momo on říjen 02, 2006 at 03:24 dop. CEST #

I don't agree with most of what you've said, but you have the right to have your own opinion. As for the openess, the JCP process is being redesigned now, so you can add your input. If we were doing things incorrectly as you suggest, we wouldn't see 4x growth of NetBeans community in last 2 years and wouldn't have 120+ partners now. As for the platform, NetBeans platform existed many years before Eclipse platform, only few people knew about it. So I guess you could say that Eclipse was evil at that time when they introduced a new platform and didn't join our platform. It's really a matter of point of view. I don't think Sun should abandon our communities building on top of the platform and adopt a new platform. Ask our community about it.

Posted by Roumen on říjen 02, 2006 at 03:33 dop. CEST #

One more comment... nothing is black or white. I'm not saying Sun is perfect, but we're trying to be as open as possible. As for Eclipse being the example of openess and independence, why is it that at first Eclipsecon visitors got CDs loaded just with IBM (mainly Websphere-related) software? I don't say it's still the same today, but people should understand that this case is not black or white.

Posted by Roumen on říjen 02, 2006 at 03:45 dop. CEST #

Some side questions : - how is Sun doing money from Netbeans ? For IBM, it's quite obvious : they build their own IDE on top of Eclipse. I don't see the same behaviour from Sun regarding Netbeans. Neither do I see how does Sun to get a profit in this story... What's the clue ? - would Sun accept SWT based plugins in Netbeans ? If a plugin JSR became wildely accepted, I guess it wouldn't specify "Swing plugin only"... - about Open Source, Netbeans and Eclipse : these 2 projects are open source, but could it be possible for the Netbeans team to copy/paste some code of Eclipse and the other way around ? I particularly think at the Java Editor of Eclipse and the Matisse GUI editor from Netbeans. If each one could be easily ported to the other platform it would be great !

Posted by guest on říjen 02, 2006 at 05:13 dop. CEST #

Sun is making money from NetBeans on the developer assistence service (= from service contracts & consultations). Sun also makes money on Java-related trainings.

For Sun NetBeans is mainly an adoption vehicle - Sun attracts through NetBeans developers and companies to other Sun technologies. NetBeans is the entry point to Sun software stack.

For Sun it is important to foster the opensource communities and drive adoption of NetBeans, Java and other technologies. Without large developer communities, companies wouldn't care so much about Sun's products, because they would be irrelevant if nobody would be writing applications for these platforms or using these technologies. At the end Sun is actually making money on NetBeans, but in a very indirect way from other products and services. NetBeans also helps to grow Sun's market opportunities.

You can turn this question around - what would happen if there was no developer community around NetBeans? The interest into Sun Application Server would decrease, thus interest into Java Enterprise System would decrease, thus interest into the whol e Sun software stack would decrease, thus interest into Sun's hardware would decrease as well. Can you see the connection?

As for reusing plug-ins, it is not easy to copy & paste code from different IDE's, because these are very complex products built with different infrastructure. It would be good if there was a common way to create the plug-ins on top of common APIs - but JSR-198 might not be the answer. The Swing vs. SWT issue makes it also quite painful. Companies like Genuitec are able to make Matisse work on top of Eclipse, but it is very difficult and the drawback is that the GUI is not uniform.

Posted by Roumen on říjen 02, 2006 at 05:44 dop. CEST #

good post man! That is the behaviour of good (IDE) developer to adopt, instead of looking backward, on which one has implemented first the nicest coolest feature, and the most nicely wrapped up, and blablabla, it is better to look toward the future: Now what can we do to be the best? Go ahead!

Posted by gershwinou on říjen 02, 2006 at 06:08 dop. CEST #

Roumen - this is one of the best pieces you have ever written - personally I've installed Eclipse and various modules repeatedly and Eclipse just doesn't work for me - I'm sure that's due to my failings as a developer. Netbeans just suits me - especially with Matisse....Give me freedom of choice every time Thanks Jim Yorkshire England

Posted by Jim Fergusson on říjen 03, 2006 at 04:38 dop. CEST #

Roumen, I agree choice and diversity is the main benefit of the Java world vs. .NET. However, it's also the main drawback. It adds lots of chaos and complexity. Getting different software from different vendors to work together can be a major pain. Look at how confusing and fragmented and convoluted and slow moving JSF development is: Microsoft does a way better job with ASP. ASP may not be the best framework or the most elegant, but it works, all the major problems have been ironed out (unlike JSF), there is a huge user base and support base and library of code and controls. Mono, calm down. IBM and Eclipse aren't evil and I don't think anyone here feels that way. IMO, Eclipse is much better for non-GUI programming. Roumen has even agreed that the core Java features and editor within Eclipse are better. However, I've had \*major\* problems with Eclipse WTP (from 0.7 to 1.5) for web development and prefer NetBeans for web projects. GWT might change this, as it uses much different technology and seems better integrated with Eclipse, but I haven't had the opportunity to play with that much.

Posted by javadev on říjen 05, 2006 at 11:24 dop. CEST #

Yes I agree.. there are drawbacks (but I see it so much better than no choice!). As for the editor... stay tuned... :) Eclipse won't have a better editor forever...

Posted by Roumen on říjen 05, 2006 at 11:33 dop. CEST #

Post a Comment:
Comments are closed for this entry.
About

Roman Strobl

Search

Archives
« duben 2014
PoÚtStČtSoNe
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today