John,
not sure I'd limit it to Java or C#. What about Python and the like? The original question was Java or C#. I have no production experience with Python. It (and the like) may be great tools - I won't comment on products I haven't used in production.
But in 2005 I don't agree that SP is the most satisfactory way to handle the biz rules unless you have selected a clumsy data manipulation mechanism for your tiers. When I say "clumsy" I mean compared to the persistent disk-spanning indexable local cursors offered by certain tools ;-) SP's are a great way of implementing data-retrieval and data grouping without touching any of the application. Example - I wrote a stored procedure that returns 5 result sets for detailed financial statements. I defined a strongly-typed schema for the report - and at that point, I can test interactively in Query Analyzer, I can make changes, all without touching the app. This is a very effective methodology for reporting. If (hypothetically) I were to do the same in Fox tomorrow, I'd still write a stored proc to return the result sets.
Needless to say, I don't agree that ADO.NET is sufficiently capable on the data manipulation front. Moving from VFP and loving ADO.NET would require a massive dose of kool-aid IMHO. But millions of developers fall into the "what you don't know can't hurt you" category. I'm (sincerely) curious to see how you reply to Rod's question.
Finally: could you please advise all of us here what parts of dotNET / C# you found most difficult in your voyage of the last 3 years? The language constructs themselves aren't so hard so was it different ways of doing things(SP and ADO.NET VS REQUERY() and local manipulation) ... this is a serious question! There were several areas where I had to spend time. I didn't immediately grasp the full power of interfaces. I know for a fact that other developers also initially wondered about their power. Reflection took me a little while. Remoting also took me some time. Visual inheritance took me some time, because it's different in .NET. In these cases, it was a matter of research, write some prototypes, more research, refactoring, etc. I'll also state that I wish I had heeded the advice of others (to learn VB 6 before VS.NET came out). But keep in mind, everyone's learning curve can be different.
Kevin