[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tomcat-user
Subject:    RE: From Java to C#, ASP.NET [Off Topic]
From:       "George Sexton" <gsexton () mhsoftware ! com>
Date:       2006-01-25 17:02:27
Message-ID: 20060125170227.DFB6F66D82 () mail ! mhsoftware ! com
[Download RAW message or body]

I've been developing with Microsoft Products for 15 year. At one point I was
an MVP, and I was on the original MVP program steering committee. Here's
what I can tell you about MS product development. A lot of my comments are
going to be about FoxPro, which I used most, but the same issues exist with
other tools.

Corporate strategy drives tool development, not developer desires. Several
years ago, with FoxPro, OLE forms was the big thing. So, the bulk of the
development effort went into creating the ability to run FoxPro forms as OLE
controls in a browser. None of the developers wanted it. They wanted an
improved report writer and menu system. No one that I know ever used this
capability.

There are ALWAYS a lot of unexpected problems when using MS tools. Take for
example, memo fields and ADO. You basically only get one shot to read a memo
field from an ADO result set. Once you access it, its consumed and you can't
get the value again. There's also a problem in ADO if you don't make sure
that memo fields are the last elements in a select list. In FoxPro, if you
assign a string longer than 200 characters to a caption, the caption isn't
displayed at all. Its not truncated, and it doesn't throw an error, it just
doesn't display. You're just sitting there, scratching your head wonder why
the heck it isn't working. If you create a view in FoxPro that is "select *
from table", and someone modifies the base table, you'll get an error
opening the remote view, and you have to drop the view and re-add it. Don't
even get me started on Windows Installer technology.

Bugs RARELY get fixed. There's a problem in the Excel ODBC driver. If the
first 6-8 rows are digits, the driver assumes the column type is numeric and
will throw an error if later rows have characters. There's supposed to be an
override feature to set the type, but it doesn't work either. Another
example is THEAD/TBODY tags. There is a KB article for IE 4.0 (Q190278)
saying that failure to support THEAD/TBODY tags for printing was a defect
(although the revised KB article now says this is by design). This was never
fixed in IE 4.0, 5.0, 5.5, or 6.0. I don't have IE 7.0 so I can't say if
they have added support for it or not. There's a real corporate culture that
says customers are fools, and these quirks don't have to be repaired. The
problem is that a small bug in a development tool can easily consume a day
of developer time.

Tool strategy churn is another problem. Their development tool focus changes
every two years. Did I mention tool strategy exists to sell servers (SQL,
Windows, etc)? Right when developers become comfortable with a technology,
the focus is changed. The end result is that companies end up with a series
of core applications, each developed using a different toolset, methodology,
or mindset. Developers never become proficient at a tool, and consequently
quality of applications just sucks.

These things make it almost impossible to accurately fix bid a project. You
just never know when some obscure bug reported 5 years ago is going to come
out and bite you. 

From my experience, I've had perhaps 1/10th of the development tool problems
with Java compared to using MS tools. I can accurately cost estimate Java
projects, and do them profitably. I know that I probably am not going to run
into any bugs (where a large project will hit at least 5-10 in the MS
world).

So, good luck. I hope you're really happy. But, I think that when you have
the experience and the career span that I do you'll start to see these
things as I do and look for a way out.



George Sexton
MH Software, Inc.
http://www.mhsoftware.com/
Voice: 303 438 9585
  

> -----Original Message-----
> From: Tony LaPaso [mailto:tlapaso@comcast.net] 
> Sent: Tuesday, January 24, 2006 8:28 PM
> To: users@tomcat.apache.org
> Subject: From Java to C#, ASP.NET [Off Topic]
> 
> Hi all,
> 
> I should mention that this post is a bit off topic. If you hate 
> Microsoft then stop reading now and I'm sorry for wasting 
> your time. I 
> don't own stock in Microsoft, I don't know Bill Gates and nobody paid 
> me or asked me to say the things I wrote below. These are just my 
> opinions based on my experiences with many years in Java and 
> two months 
> of learning .NET/C# 2.0.
> 
> I've been programming in Java/J2EE for the past 8+ years, 
> most of this 
> time as a contractor for several companies on many J2EE projects. I 
> even have a small (and now hopelessly out of date) Java web site that 
> I've maintained for the past 5+ years at www.absolutejava.com, which 
> will be removed in early May.
> 
> Until about 8 weeks ago, I never even considered looking at anything 
> Microsoft offered. Recently though, on a whim, I browsed over to the 
> Microsoft site because I'd heard about their new release of Visual 
> Studio. I'd been a Windows programmer back in the mid '90s and was 
> curious to see how Visual Studio (it was Visual C++ back then) had 
> evolved (or not).
> 
> I didn't download Visual Studio but instead I downloaded a 
> couple free 
> tutorial videos for Microsoft's "Web Developer Express" 
> product (which 
> is a free product, BTW). "Web Developer Express" has a subset of the 
> features in the full "Visual Studio" product and is used for building 
> server-side (or client side, for that matter) web apps. I couldn't 
> believe what I saw. "Web Developer Express" blows away 
> anything we have 
> in the Java world for developing server-side web apps. It was 
> kind of a 
> jaw-dropping experience to see what the tool can do and what ASP.NET 
> offers compared to servlets/JSP/Struts/JSTL/JSF.
> 
> I don't want to turn this post into a "feature by feature" comparison 
> of ASP.NET and equivalent Java technologies. My impression, though, 
> from watching these tutorial videos is that we in the J2EE world are 
> living like knuckle-dragging Barbarians, scratching out an existence 
> clothed in bear skins, using stone knives and sticks as our tools of 
> choice. Those using .NET are living in fine brick homes with hardwood 
> floors, fireplaces and regular visits from PeaPod.
> 
> After looking at ASP.NET I became interested in looking at the C# 
> language, proper. My impressions of C# vs. Java mirrored those of 
> ASP.NET vs. servlets/JSP/etc. Java has kludgey support for properties 
> and events (they're just regular methods with parameters) 
> while C# has 
> the constructs (delegates & events) built directly into the core 
> language. C# also supports co-routines, something we have to simulate 
> in Java as well as "out parameters" (which allow a method to 
> change the 
> caller's parameter's value) and operator overloading. C# also has 
> "nullable" types. Imagine Java's primitive types being able to hold 
> null values. This is highly useful when working with databases.
> 
> Finally, .NET provides an integrated and more comprehensive 
> approach to 
> setting security permissions and versioning of what are called, 
> "assemblies". Assemblies are very roughly equivalent to JARs. This 
> allows you to compile your code against a specific version of an 
> assembly and have that version information maintained in the 
> resulting 
> executable. It also allows several versions of the same assemblies 
> (again, think "JARs") to co-exist peacefully in a global, system-wide 
> cache of assemblies. Sun should have given us something like 
> this five 
> years ago.
> 
> Another advantage I saw with .NET is that it is more "cross language" 
> friendly than Java. First of all, .NET, like Java, executes a 
> "platform 
> neutral" representation of a program (analogous to Java bytecode). 
> Unlike Java, .NET programs can be written in many languages (C#, C++, 
> Perl, Python, J#, VB, and many others). Microsoft's J# is, from what 
> I've seen, a clone of Java (although I'm sure there are differences). 
> The point I want to make is that once compiled, .NET programs 
> can call 
> each other seamlessly, regardless of the language the programs were 
> originally written in. So for example, a J# class can extend 
> a C# class 
> which can extend a VB class. You're not tied to one language like you 
> are in Java.
> 
> I know that, theoretically, any language could potentially be 
> compiled 
> into Java bytecode (I guess Groovy is an example). Practically, 
> however, this is not commonly done.
> 
> Suffice it say, I am switching after 8+ years in Java. It was a tough 
> decision at first because I have so much time and effort invested in 
> Java. When I eventually get on a .NET project I will be starting over 
> as a junior person making a junior person's salary. That won't be 
> pleasant. I have close to $1,000 in Java books that I've accumulated 
> over the years that are now for sale on Amazon. Ultimately though, I 
> felt I'd be able to spend more time actually writing code on a single 
> consistent, and what seems to be superior platform (.NET) rather than 
> gluing together a half dozen open source tools with XML 
> files, which it 
> seems J2EE requires far too much of.
> 
> To me, J2EE has become too fat and burdensome in the past few years, 
> especially with the proliferation of so many competing open source 
> projects. I think too much choice can be as bad as not enough choice.
> 
> BTW, I realize .NET is not perceived as being as "cross platform" as 
> Java (although that's changing as the Mono Project 
> [http://www.mono-project.com] gains traction). Initially, 
> this lack of 
> "cross platformability" gave me cause for hesitation. But then I 
> started thinking of all the J2EE projects I'd been on in the past 8 
> years. How many of them do you think ever used the same Java 
> code base 
> on multiple platforms? How many of them ever ported Java code 
> from one 
> platform to another? Zero. Not a single one, at least not to my 
> knowledge.
> 
> In my experience companies do not port their back-end enterprise 
> systems between platforms. They usually know what platform they will 
> run on long before the first line of code is ever written and they 
> stick with that platform. So, "cross platformability" was, in my 
> experience anyway, more applicable to systems with 
> significant UIs and 
> Java has not done well in this area.
> 
> I think "Cross Platformability" sounded great when Java was young 
> because we all had these visions of cool Java programs running on all 
> these different platforms and within web browsers. It was a very 
> seductive thought. But this vision depended on Java being a 
> success on 
> the desktop. So much for that.
> 
> Again, this all is just my opinion and somewhat preliminary as I've 
> only been learning C#/.NET for about 2 months now. Many of you will 
> undoubtedly vehemently disagree with what I've said and probably 
> suspect I have ulterior motives for making this post. I posted this 
> because I just wanted to share what, for me, was something of a happy 
> and exciting revelation. At this point I feel a bit like I did when I 
> switched from C++ to Java back in 1997. I realize there is always 
> strong and emotional anti-Microsoft sentiment in these groups 
> for some 
> reason. All I can say is that when I looked at what each platform 
> offered, for me, .NET and C# were the winners, based on their 
> technical 
> merits. I never thought I would leave Java, especially for C#, but so 
> far I'm not regretting it.
> 
> Good luck to you all.
> 
> --
> Tony LaPaso 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic