The Source for Java Technology Collaboration
User: Password:



Philip Brittan

Philip Brittan's Blog

"I wonder when the Java developers will be as happy as the Mickeys"

Posted by pbrittan on September 03, 2003 at 06:03 AM | Comments (11)

What do you think about when you write Java?

I recently came across this blog entry, Java vs. .Net developers, in which the blogger, Steve Noel says:

"Mickeys [developers who use Microsoft technology] in general are very happy with the latest new tools thrown at them from Redmond, and very generalized also look slightly happier. Java developers on the other hand have a slightly more weary smile, and especially the open source-addicted ones like to make a lot of fuzz about Sun not doing justice to the great platform that Java is.

Technically, the differences in both software platforms are getting smaller every day. I wonder when the Java developers will be as happy as the Mickeys."
As someone who has used both Microsoft technology and Java extensively, this comment struck some kind of nerve with me. As you may have seen from my blog polemic, Java vs. .NET, I am these days rather overly preoccupied with the relative advantages of the platforms and with the plate tectonics our industry is facing because of the struggle between them.

I was talking about the quote above with a guru-class developer friend of mine whom I respect totally and who has extremely deep experience with Microsoft technologies and Java. His immediate reaction, and explanation, was that when he uses Java, he finds himself thinking mostly about the technology itself. And when he uses Microsoft tools, he finds himself thinking mostly about the problem he is trying to solve. Somehow, he believes, Java distracts the developer with a sense of itself and its character, whereas Microsoft technology seems to blend into the environment, almost disappearing, and thus allowing the developer to concentrate more fully on the task at hand.

If this is true, this is a very powerful statement for Microsoft tools. Microsoft hopes to drive developer adoption of .NET by offering a superlative set of tools to make it extremely easy to create Web Services and user applications. Microsoft also offers a rich set of tools to migrate existing Java code to the .NET framework, a perfect “out” for Java developers who become enchanted with .NET. If Java cannot match this, it has yet another hurdle in its fight with .NET.

I have to give Java its due credit. When I used to code in C++, I had to think about memory management all the time. Now, thanks to Java, I don’t think about it any more. What a relief! Java has taken care of that issue for me, so that I can concentrate on my task at hand. Java needs to do much more of this type of complexity-hiding. I presume that this is the goal of Sun’s Project Rave.


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • Expressing the domain problem as Java I see that I already have one answer in the comments from Meeraj Kunnumpurath's entry today. "It can be very hard to express the domain problem as Java. The transition from idea to application is interrupted by swathes of plumbing code relating to the technology being used. Which one would expect in a general purpose language."

    Posted by: pbrittan on September 03, 2003 at 07:30 AM

  • Tools and Tradeoffs Even as a devout, longtime Java guy who wouldn't touch Microsoft's stuff, I can easily admit that the empire has produced better quality tools for many years. Even though the Java offerings are finally closing the quality gap, it's been a long, messy road. So, yes, a less-than-reliable tool distracts you from the problem you're trying to solve. And yes, I have spent many man-months over the past several years fighting with poor-quality tools and immature libraries. And the Microsoft guys have had none of that. But with Java, we almost at the promised land. Even now, I can do more than the Visual Studio guys in the peripheral areas of application development. I have a much richer set of third-party tools and libraries than the Microsoft guys have. With some additional effort, I can produce stuff for many platforms. And my desires for future development capabilities don't have to be filtered through the business plan of a single company. (Many friends of mine really loved the old Visual J++ tool, but, alas, Microsoft had business reasons for discontinuing its support - apart from the lawsuit over the JVM and language) Do I think that Microsoft's developers lead happier lives? Probably. I also happen to know lots of people who belong to simpler, easier religions than mine and they often seem a whole lot happier than I am. But happiness isn't everything. Like with development, what you get in the end is what matters most.

    Posted by: edfactor on September 03, 2003 at 09:30 AM

  • .NET vs. Java I think your blog has simply restated a long-held truth in development communities. Microsoft tools are widely known to be unparalleled in their ability to create applications quickly. The problem is when these applications need to be maintained. Hence, your friend's observation about his thoughts while coding in Java. Frankly, designing for re-use and architecting for ease of maintenance does indeed require careful thought. By using an object-oriented language, we're all supposed to have bought off on the concept that a little extra thought in design and development will result in a lot of savings in maintenance. Thus, Microsofties will probably always code faster and code happier -- they can naively slap together code all day long; the more, the messier, the merrier. They by and large don't worry about architecture, they don't worry about the annoying details, and quite often, they're excited just to get their app to do what they want it to do, much less obsess over the finer nuances of the language (excepting of course the few quite craftsmen amongst the VB hordes). Those that build on the Java platform should understand that they have not chosen the fastest tool for the job, nor have the chosen the most productive development environment -- but they have chosen the best platform for reuse, ease of maintenance, quality of architecture, and of course, freedom (of implementations, of operating systems, etc.). Those looking for quick one-off applications that in successive iterations become as unwieldy and unholy as the Windows API itself should always find themselves using Microsoft tools; for they are designed for just such developers.

    Posted by: javaben on September 03, 2003 at 07:28 PM

  • Happier java guy Some Win32 tools are indeed, easier to use than our Java counterparts, at least on the surface. Java tools ease development through transparency (ant's build.xml files) while some windows tools attempt to ease development through concealment (a COM Variant datatype is a convoluted C++ union). I have been burnt by the concealment method too many times, usually ending in a KnowledgeBase article that says 'this behavior is by design' or ' fixed in the next version of x' (and the upgrade breaks other stuff). Usually concealment doesn't let you peak under the hood and fix things, unless you have time and are willing to use some awful hacks. By making it easier to not 'think' about effects of our decisions, we discourage responsibility (my code is great, but the vendor component doesn't work right) and encourage sloppiness and bad design. Not long ago, I sent a developer several java classes to translate into C# for his project. Simple, refactored and well commented code. When he called to ask for help, he emailed the code. All the code had been crammed into one on_click button method. I know what tool he used to use based on this code. I know he says oop C# .net project, but I know what it really is. The notion that programmers spend too much time thinking about technical issues is hogwash. That's what we do. A bridge between business needs and technical possibility. If programs were written only by business analysts, we'd end up with a bunch of excel spreadsheets with formulas... All I can say, is that since I've shifted to mainly Java, I've been much happier coding. And I have more tools to write good code faster.

    Posted by: d_bleyl on September 04, 2003 at 10:42 AM

  • MickeyMouse Tools! So the "tools" are the big deal? I think the language and ease of use is the real key. I'm very happy developing java in VI or TextPad, or J (armedbear.org). Of course Sun could build some tools like M$ and they too could have big security holes. I think I'll take my better language over "tools" anyday. I would rather understand how to make my code better than hope that someone (especially in redmond) knew the best way of doing secure, scalable, high-performance coding. (IMHO, not their strong suit). :) -Shawn Fitzgerald SCJP

    Posted by: sfitzjava on September 04, 2003 at 10:49 AM

  • Develop with pleasure I've always loved coding in Java. However, since I've started using IntelliJ Idea, coding has become an absolute joy! Anyone who complains about Java tools has never used Idea.

    Posted by: nevster on September 05, 2003 at 11:40 PM

  • The API is also to blame.. As a happy vim user for years and years there are very little tasks that require me to use an IDE. There is a big annoying thing I dislike about Java (and Swing in particular) is that it feels very unfinished when coding to the API. When people (like some other commenters did) complain about code-generators creating loads of code that becomes unmaintainable, I always think that maybe the framework (or MVC implementation) is the one that requires to much code to do the job in the first place. I find it annoying that a good looking JTable requires me to write some 15 lines of code that I write for each and every JTable. Besides the obvious 'subclass!' opinions; I feel that somewhere the JTable is simply lacking in good defaults and other such stuff. How good are the Windows APIs really? Do they make it easy to enforce the styleguide? Or is Java not the worst at all?

    Posted by: zander on September 06, 2003 at 09:41 AM

  • The API is also to blame.. IntelliJ makes hand coding Swing stuff heaps easier and not because of some sucky GUI wizard but because of the way it understands Java code. The refactoring and code navigation tech also helps me to think on a higher conceptual level.

    Posted by: nevster on September 07, 2003 at 05:10 AM

  • The API is also to blame.. If this isn't a rhetorical question, and we're talking win32 native api's, cruise over to 'The Code Project' web site , and checkout the code to create a grid out of the native list control (yikes!). Win32 API is inconsistent across versions, is (some say purposefully) archiac and very idiomatic. When you get into the C-style api meets C++ templates plus COM idiosynracies...forget about it. Although there's a sense of accomplishment getting things done, and a coolness to native code. Anyway, vi still rocks.

    Posted by: d_bleyl on September 08, 2003 at 07:03 PM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds