Hola,
Como he comentado en otras ocasiones el comparar .net con java es algo muy complicado, incluso rayando en lo subjetivo. Una analogía podría ser, ¿Qué equipo es mejor?, ¿El Madrid o el Barcelona?, ¿El Inter o el Milán?, ¿Las Chivas o el América?.
Yo he trabajado con ambas plataformas (eso de llamarles lenguajes es un tanto relativo). En términos de arquitectura, en efecto hay muchas similitudes (ambos utilizan principios de reflexión, compilación JIT, genéricos, código intermedio, etc). Esa afirmación de "es una copia" es algo muy debatible. Todos los lenguajes de la actualidad han implementado ideas de la competencia.
El tema de las licencias y plataformas:
El .net framework esta clasificado por microsoft como un redistribuible libre de aranceles. En español simple: gratuito para su descarga y uso. En efecto el soporte especializado (via technet), las versiones mas robustas del IDE de Visual Studio así como el IIS tienen un costo asociado. En términos prácticos, el desarrollo Web solo puede ejecutarse en un IIS y combinado con el hecho de que Windows Forms y WPF solo se ejecutan sobre plataforma Windows, te restringe en términos de OS (con la salvedad de esfuerzos interesantes como MONO y compañía).
Java y sus diferentes extensiones (Java EE, JME, etc) igualmente son gratuitos. Existen infinidad de IDEs de desarrollo, entre las mas populares destacan las basadas en Eclipse (muchas de ellas que requieren pequeñas cuotas delicenciamiento), NetBeans (de Sun, gratuita) y las "robustas" (JBuilder, Weblogic Workshop, etc). Java se ejecuta virtualmente en cualquier plataforma. Los application servers pueden desde licencias costosisimas (mucho mas que el IIS) con un Websphere o Weblogic, un Sun application server (antes glassfish) que ya es más robusto hasta algo tan simple como un contenedor web como tomcat (gratuito). Obvio depende de lo que quieras hacer pero jamás verás en los sistemas que llaman "criticos" que usen algo que no lleve de por medio una licencia. Ah y mucho del negocio del software libre reside en cobrar el soporte.
Facilidad:
En ambos casos dependerá de tu habilidad y el gusto que tomes por cada plataforma. Mientras que en java tienes versatilidad el precio que pagas es que puedes parir chayotes en el deployment. Cada application server tiene clausulas especiales para sus descriptores, los drivers de JDBC para las bases te pueden dar dolores de cabeza, etc. En .Net el mundo es más simple en esos términos pero estas atado a un application server y a un OS en particular, sin embargo te ofrece una mayor variedad de lenguajes y, de ser necesario, una interacción más directa con el OS.
El veredicto:
Sin necesidad de analizar punto por punto en este post, te puedo decir que la elección dependerá de las necesidades que identifiques. Yo te sugiero que en lugar de elegir una especialidad en lenguaje, aprendas a diseñar aplicaciones con el paradigma orientado a objetos, complejidades ciclomáticas, optimización de algoritmos, patrones de diseño. Eso te permitirá entender como se debe construir una aplicación, el aprender los building blocks de los lenguajes será lo de menos. Si en definitiva necesitas que de te un camino, la respuesta sería: Aprende los dos. Realiza los ejercicios en ambos lenguajes y descubre en cual tienes mayor facilidad, entonces con bases sólidas especializate en ese.
Espero mis locuras te sean de utilidad.
Saludos
Ah y para aquellos que opinan sin conocimiento de causa, aqui algunas fuentes para que se cultiven
http://www.odinjobs.com/Odin/marketstatcompare?id=134&q=java+vs+.net
http://www.indicthreads.com/1758/microsoft-436-vs-java-122/