Despite being primarily a .NET guy, I find myself working on a Java web project using JSP and servlets for a customer because the dictated operational environment is Solaris/Oracle.
I’m completely comfortable building web apps with ASP.NET and ASP, and have done enough Java dev in the past to be confidently dangerous. At first I was completely intimidated by the prospect of helping design and build a web app on a mostly foreign landscape.
However, as I have been diving into the web development scene for Java, I’m finding things not so foreign at all. Servlets feel an awful lot like ASP.NET HTTP Handlers (Servlets came first), and JSP obviously resembles ASP to a high degree (ASP came first). Then you get into frameworks like Struts and suddenly I’m saying, hey this is a lot like the User Interface Process Application Block(Struts came first).
Some of these things the Java world beat the Microsoft world to, others the timeline is reverse and the innovative approaches were started by Microsoft and copied in the other direction.
It is just interesting to rediscover yet again that despite the constant press and religion painting Java and .NET as completely different and orthogonal worlds, there is just a huge amount of overlap, and the skills are largely transferable. Especially since the syntax of C# is so much like Java, knowing Java made learning C# that much easier, and now knowing C# is making using Java that much easier as well.
Of course in the JSP/Servlet world I quickly find myself yearning hungrily for my ASP.NET server controls and user controls to have a little more productivity and choice of third party controls to choose from for common page constructs…
Given full choice of platform, I’ll still take .NET any day, but I do think the margin of choice there is far narrower than some people try to make you believe.