Conflicting mindsets of C# vs. Java: Part II

You all read the the ‘Conflicting mindsets of C# vs. Java‘ weblog post right? And you all noticed that the guys running the Lucene.NET project on sourceforge closed up shop, took all their toys and went on home right? I’m gonna go out on a limb and say that they’re related.

The way I see it, *in general* the .NET community conversation is dominated by talk about the latest and greatest that microsoft is putting out; there’s talk about MapPoint Location Server, SQL Server, Longhorn, ASP.NET 2.0 and Visual Studio; all products of Redmond. The same group of Java developers are talking about JBoss, Hibernate, Struts and Eclipse: none of which came out of the Silicon Valley.

Malcolm’s mindset #1 says that .NET developers accept the tools and services that are provided them by Microsoft and I think for the most part this is true. You don’t see .NET developers spending their cycles on persistence layers, web application frameworks or caching solutions probably because Microsoft has provided Microsoft solutions for all these problems. But if it’s just providing tools, then why aren’t JSF, JDO and NetBeans dominating the javablogs conversations? Seriously, take a look at ASP.NET and JSF. They aren’t that different and yet ASP.NET is widely used in conjunction with Visual Studio while JSF is rarely lauded and more often derided. I think he’s right, it’s really a mindset.

Which brings me back to the Lucene.NET guys. Why would they close up shop? Why not continue to donate their time and energy to an excellent cause? Maybe the Microsoft mindset has something to do with it. How about this: a search on google for ‘lucene’ within the weblogs.asp.net domain yields exactly 17 results. The same search on jroller.com yields 2570 results. Admittedly, Lucene has been around longer, but maybe one of the reasons that the Lucene.NET guys packed it up (and are now trying to sell their work) is that no one paid any attention to them because they were all too busy working with SQL Server full-text indexing, a tool given them by Microsoft (but one that costs thousands of dollars per processor). Another reason that a project like Lucene or Struts or Tomcat flourishes is because there is a certain amount of prestige working on a big open source project. If you work on open source projects for the prestige and you’re not getting the attention you think you deserve, you find another motivation. In their case money was a motivation, so they closed up project on sourceforge and they’re selling a personal edition and a business edition. They might make a couple bucks, but I bet in 1 year there won’t be many people writing about searchblackbox.com.

So what’s my point? That all .NET developers are greedy and don’t care about the community? Not really. I think it’s that the two communities have different bus drivers: .NET developers look to Microsoft to provide the tools they need to do their jobs… and if they look elsewhere or copy something else, Microsoft will eventually come in and make a product of their own that does the job, thereby negating any work the developers do in the meantime. Microsoft drives the bus. Java developers look at the products and specs that Sun puts out and then go and build their own tools or frameworks or applications to do the job. Sun will eventually put out something through the JCP that does the job…. but the developers in the Java community will only use it if they want too, witness the continued popularity of Struts and the lack of interest in JSF. In the Java camp, the developers drive the bus.

13 thoughts on “Conflicting mindsets of C# vs. Java: Part II”

  1. From my brief stint in this realm, I have to say that i think .NET developers rely too heavily on others to carry the burden, while the JAVA peeps tend to take pride in rolling their own.

    You have to admit that the whole .NET “controls” seem to be a flourishing trade, with people buying the addons and so forth. Where as JAVA it tends to be less vocal in “addon” purchasing and more “bah, i’d rather write it myself”.

  2. As someone who’s been in both camps at one time or another, I agree that there is a differing mindset between the Microsoft .NET and Java developmers.

    I would hazard a guess that this is because .NET developers are for the most part Microsoft-centric developers – developing on Windows systems for Windows systems and users – and so to them it makes sense to adopt the latest offerings from Redmond.

    However, I think that Mono is changing all that. We now have an open source, cross platform .NET framework being driven by the community, and this is bringing a whole new set of developers on board who for various reasons wouldn’t have touched Microsoft’s offering with someone else’s barge pole.

    People who develop with Mono are readily adopting NAnt, NUnit and log4net, all of which are community effots. It may take a while for these tools to mature and gain as widespread adoption as their Java counterparts, but they’re getting there, and I find that very encouraging indeed.

  3. Ah ha! that’s it. that explains everything. I’ve been trying to work out why I feel like a fish out of water. I’ve come from a VB6/ASP background. now-a-days it’s “roll your own” ColdFusion/Java…

    I mean, how do you drive a car: do you a) religiously check tire pressure, indicator lights and horn every time you drive a car? warm the engine? check the brakes?
    or b) stick the key in turn the ignition and expect it to go?

    “You have to admit that the whole .NET “controls” seem to be a flourishing trade”

    sure it is Scott – I want action NOW and if that means buying a third party control and writing 3 lines of code to make it work – that’s just fine with me. I’ll spend more time on developing the solution to the problem not wasting brain cells on how to make the mechanics work. I want answers, not detail.

    There’s a great car ad playing at the moment where pieces of car (springs, wipers, etc) “domino” onto the next with the last lowering a completed car down a ramp. The film shoot was done in one complete take (lots of goes but no editing).
    the message at the end sums up both the filming and my Microsoft-type viewpoint:

    “Isn’t it nice when things just work?”

    – yeah. that’s what I want.

    cheers
    barry.b

  4. I should add that Apple people would be having a wry chuckle at this whole thread – they’ve had this “it just works” attitude spot-on for ages: real “plug ‘n’ go”.

    I mean, aren’t computers (and software) just tools – advanced hammers and screwdrivers – to do stuff (like solve problems or build products)?

  5. It’s my observation that .NET/Windows developers tend to view technology as tools to get a job done or to advance business goals.

    Java developers tend to love technology for its own sake and will prefer an “elegant” (but over-engineered and excessively complex) solution over a cost-effective (but in their minds, “ugly”) solution every time.

    Since almost all software is developed by commercial enterprises to meet some business goal, I think the .NET/Windows camp has got it right.

    The Java world is increasingly being take over by people who confuse software technology with religion and art, and who are primarily interested in the beauty or morality of what they’re doing and couldn’t care less about the profit motives of their employers (which is one of the reasons Sun has never made any money off of Java, and probably never will).

    Of course, these are generalizations that don’t hold true in all cases.

  6. Decentralization has always hurt Java; too many overlapping implementations of the *exact* same things.

    On the flip side, it’s nice to have to implement something on one’s own and get a deeper understanding of how things work. Redundant? Maybe.

    I remember when I was doing a lot of Java development I’d always ask people how they managed their classpaths – a question which always brought a *long* winding answer. Different IDEs do different things, different web application servers doing their own things and so on ad nauseum.

    Back to this whole Microsoft driving the bus thing: I disagree with the statement that MS devs don’t create their own libraries; indeed most frameworks are done by professional developers whose sole goal is add-ons; Desaware, Infragistics and others create things to augment what Microsoft produces.

    Instead, what I see is a lack of effort and strategy on Sun’s part to shore up what Java is capable of… If Microsoft, instead of releasing a library for regular expressions, wrote a specification and published it, you’d see the same overlapping implementations of identically functional libraries. Then, if after that they came out with a half-hearted effort of their own, I’m sure the interest would be diluted by people who already had to make other implementations work.

    Just my $0.02.

  7. Couple of comments anove just confirm my suspicion that it’s not “Java developers always reinvent their own wheels” vs “.net developers are smart yet men that do what everyone should be doing”… but rather, Java community is much more Open Source – oriented than .net is. Not a big surprise, except that both are led by a big corporation whose goals are not that different. But communities are.
    It’s interesting to see if Mono might change this. I for one think that .Net would greatly benefit from such opening of their world… we’ll see.

    Now, I really never understood (nor understand) why there are people who are so mortally scared of multiple implementations — I’d much rather have couple of early implementations, and eventually one or at most few develop into flourishing components, than take chance at the driver (Microsoft) getting it right the first time.
    To me, choice between, say, Struts, JSF and Tapestry is richness, an asset. Or JDO vs. Hibernate. Only weak-minded developers need divine guidance of “One Right Way”; experienced ones can evaluate ones that seem promising, choose one right for the job and use it.
    And in reality, there is always convergence to one or at most few “de facto” implementations, depending on whether it is realistic to have only one solution, or if there’s need for implementations with slightly different goals.
    For example, anyone who thinks that there could and should just be one solution to ORM persistence problem is either ignorant or delusional.

    And finally, the only right way to standardize anything is to first have _at least two_ working implementations of the thing, and THEN standardize the system, but NOT any of implementations.
    With regexps this would be easy — Perl did it well enough years ago.
    But you can not really do that for things that are not well established, and as such, regexp example is a lame attempt to deride work Sun has done. Sun did provide first-class regexp package — it’s not an example of a vague spec left for others to implement (there are other valid examples however).
    Microsoft still has “not invented here” complex, however; something Sun is finally getting rid of (after log4j and other fiascos). Lately Sun has started considering possibility of actually choosing the best-of-breed Open Source implementation… I just hope the day comes when Microsoft realizes the opportunity of doing this, instead of always having to roll out their own sanctioned way.

  8. cowtowncoder,

    So should I look for a new solution every time I need database access for a given project? If I don’t, am I a weak-minded developer?

    I find it interesting that you think MS has a “not invented here” approach, when it’s been Sun that has been ignoring the JCP for far too long and frustated Java developers to no end as a result.

    As well, there is a large open source community in .NET, contrary to the impression that the comments here give.

    It’s unfortunate about Lucene, however.

  9. I had to move from Java to .NET for work. We were using WebSphere Studio, and WebSphere App server, and just started to get into Java Open Source. When I switched to .NET, I was shocked that there wasn’t an application architecture delivered by Microsoft. Read my article:

    ASP.NET Enterprise Architecture Application Development
    http://tom.gilki.org/programming/net/010605/

    After doing some research, I came across the Open Source .NET – http://tom.gilki.org/programming/net/120404/

    I’ve got log4net running in ASP.NET applications, and I’m working on UIPAB and Auth / Profile now…

    http://tom.gilki.org/programming/net/120604/

    It just takes a little time to learn Open Source software, but I’m expecting it to pay off in the end! If you learn something that helps you out, pass it on.

  10. I have worked on both .NET and Java development projects as a developer. I believe there is a serious difference in the mindset of these two types of developers.

    I feel like your typical .NET developer is more focused on the business application itself. They will use the tools provided by Microsoft and work from there. The tools are excellent and you can be very productive with them.

    To me, the typical Java developer is far less interested in actually ever developing a business application. They are more interested in creating a framework, a library…some system, tool, or utility. But NOT the business application. As an example, I saw a book about Eclipse in my computer store about 1.5 years ago. I was excited to see it and picked it up to take a look. I was using Eclipse on a java project at the time. When I looked at the book, which I am going to guess was 900+ pages, only about the first 30% was about USING Eclipse. The majority of the book was about developing and extending Eclipse.

    This I think is the curse of the Java community. No one can make up their mind to use a particular toolset, everyone wants to write their own. A couple years ago, I needed to implement some web services in Java. It probably took me 3 weeks to select the servlet engine, the soap stack, etc. for the Java environment because there are so many choices. I ended up using Tomcat and Axis. But still, 3 weeks just testing and choosing tools. Contrast this with the web service I needed to create a few months later in a .NET environment. I KNEW I was doing it in Visual Studio.NET and it was going to run in IIS. I had the web service running and implemented in about an hour. I know the Java community likes to have choices, but can you imagine how much more advanced the tools would be if all the effort was put into one servlet engine instead of a handfull? That’s what you get in the .NET environment.

    Just my take having worked in both environments.

  11. Eclipse already has thorough *user* documentation available in the form of built-in help as well as HTML/PDF documentation at http://www.eclipse.org. Remember that Eclipse is, at its core, a tool development platform and IDE framework.

    If I was going to write a book about Eclipse I, too, would assume that my target audience was interested in extending Eclipse, writing plugins, etc. given the fact that user documentation is already available for free.

    That there may exist more interest in the type of complex topic covered by the book to which you refer among Java developers than .NET developers would not be out of line with the fact that far more truly mission critical systems are implemented in Java than in .NET, the fact that these systems require highly skilled programmers, and the fact that Java developers are, on average, paid considerably more than their .NET counterparts.

  12. Java VS .NET. I like you guys and I love the way the arguements are going, one thing that is missing here however is that Java can be called open source while .NET is not. This alone spurns developers of both platforms in different directions. Its like a M$ Windows user and a Linux user, open source is all about contribution, imagine I have an IDE like Netbeans for free(they even sent me a CD for free too), I am not under any force but I think if there’s a way I can help develop Netbeans I should (by writing plugins and developing the platform), the same goes for Eclipse users too.

    But in contrast, I am paying a lot for VStudio, and If I try to do anything with it that might bring money for me, we know M$ stands, they have the money, they have the market, in less time than you could, M$ will roll out their own version that will do what yours is doing and even more, so why disturb myself? Lucene guys learnt their lesson didn’t they?

    I swear Sun can kill Eclipse if they want to, but no they allowed it why? Eclipse is the major competitor that Netbeans have, but yet they allowed it to strive, and some people are making a living from it, .NET guys try to build an IDE that competes with VS, (I laughed) ask the guys that did SharpDeveloper.

    So the mindset is not the only thing, the company behind it too counts, M$ developers are like invalids(sorry for using that word), they can’t do anything without their benefactor, whereas Java developers are given a freehand to do whatever they wish with the language, and with such a freedom, why wont I take the chance?

    All in All, this is my submission : “There are no Super Programming languages, there are only Super Programmers”

    my 2cents

Leave a Reply to Scott Barnes Cancel reply

Your email address will not be published. Required fields are marked *