John asks a question that gets me thinking about it.
John Pusatera wrote to me with this question, "I am not a professional programmer, but I always wondered how the professional community viewed Visual Basic compared to Java."
A “professional developer” has one rule that overrides all the others: “Do what the boss wants done.” If the boss needs Java development, that’s what you do. If the boss needs VB, do that instead. The most significant project I ever managed used a technology that I knew, in advance, was going nowhere. (At the time, it was branded PacBase. It’s been absorbed by IBM now and doesn’t really exist anymore.) We used PacBase because people who were in authority before I got the project responsibility had committed the company. I didn’t have any real choice. I hated it. I almost went insane. But we finished the project. That’s what “professionalism” is all about.
Update!! A Java "true believer" posted a comment after this blog was written. Like a sports fan who is willing to paint his body and stand almost naked in freezing weather to demonstrate devotion, the technology bigot is a "type" that has to be experienced to be believed. If you've never run into one before, don't miss the comments to this blog.
But getting back to my original blog .....
If you’re talking about just having fun, it’s VB all the way for me. I think the syntax is much easier to understand and you can “get on with the show” and think about the programming problem instead of the language. .NET has made the “power” of all the .NET languages equal now so it's mainly a choice about what you like.
The comparison of .NET to Java, however, is more one of guessing about what the future may bring. Microsoft charges a lot of money for .NET technology and Java is less expensive to acquire. Microsoft pretty much just runs on Windows and Java runs on everything. (Although the Mono project is bringing .NET to the non-Windows environments right now. That's an interesting trend that bears watching.)
So why use .NET?
I like to think in terms of analogies. It helps me to contemplate how is this decision is like something more familiar. An analogy that comes to mind is a decision about investing in real estate. It may sound like it doesn’t fit but hear me out on this.
One way to classify real estate investments is to decide whether you’re going to go for a relatively cheap piece of property and hope it turns into something grand; or buy something that is already pretty grand and expect it to get even better. Say, a house in a middle class neighborhood where there are few zoning restrictions or a house in a gated community where you pay taxes and community assessments but the streets are kept in perfect condition. In the gated community, you can be sure that nobody will ever open a liquor store next door. But if you put a plastic flamingo on your lawn, they'll probably fine you. Either one might turn into the better investment, but I’d rather live in the second place – if I can afford it. I can see good arguments for both.
To me, Java is like the cheap, but affordable property and .NET is like the … ahem … “Gated” community.
Java has been around a bit longer – long enough to be tied into the architecture that was current when it was invented. .NET is much newer and the architecture was guided by the best software geniuses that money could buy including Anders Hejlsberg, creator of Delphi at Borland.
Although Java “belongs” to Sun Microsystems, they have essentially given up control over the language to the developer community. That can be a good thing or a bad thing and will probably be both at different times. Sun doesn’t disclose how much (if any) profit they make on Java, but it’s pretty clear that they believe their future is in hardware and operating systems, not Java. Companies like IBM may invest more in Java than Sun does. Microsoft, on the other hand, is still a software company and they know their future depends on .NET. You can bet that they will do everything in their power to keep it as good as they can make it.
And (Mono nothwithstanding) .NET is tied into Windows and Java isn’t. If you believe in Windows, .NET is a better pick. If you don’t, pick Java. Since Vista seems to be stumbling a bit right now, that concerns me. But the “Vista” cycle is still young. It was easy to find experts who predicted that IBM’s OS/2 would crush Windows 3.1 when it was first introduced.
For my part, I have a comfortable view lot in the .NET Gated community and I’m enjoying life.
What's your opinion?