2010-08-19 20 views
18

Duplicar posibles:
Tips for moving from C# to Java?Pasar de .NET a Java

Como desarrollador .NET bastante experiencia (desde 1,0), he visto un buen número de puestos de trabajo interesantes en el área local que se centra principalmente en Java EE, ESB, WebSphere, JSP, etc. Ahora, estoy bastante familiarizado con la mayoría de los "técnicos" de .NET, pero Java es un misterio. Hice un poco de programación J2SE en la Universidad (2003 ish), pero nada más desde entonces.

¿Alguien ha hecho la misma transición (o la opuesta) y podría compartir información, advertencias, cualquier cosa realmente! ¿Cuán comparables son los conjuntos de habilidades de .NET y Java, y qué tan fácil uno puede hacer la transición?

+0

¿Qué términos de búsqueda ha utilizado hasta ahora? –

+0

Relacionado: http://stackoverflow.com/questions/295224/what-are-major-differences-between-c-and-java –

+0

Bueno, esencialmente estoy buscando diferencias fundamentales entre todo, en lugar de diferencias de sintaxis entre C# y Java. Por ejemplo, ¿con qué se correlaciona EJB en .NET? – Jamie

Respuesta

8

He enfrentado el mismo problema yendo para otro lado: Java EE a .NET.

No tengo demasiados problemas con las construcciones de lenguaje cartográfico entre los dos idiomas. No es difícil descubrir el acceso a la base de datos relacional en un idioma u otro. Los bucles son bucles, si son ifs, niños. No hay preocupaciones allí.

He leído Jon Skeets "C# en profundidad", por lo que he recibido un reconocimiento por parte de las cosas buenas que se han añadido a C# que van más allá de Java: LINQ, cierres, delegados, etc.

Mis problemas tenían más que ver con los demás detalles.

Visual Studio es un misterio para mí. Estoy acostumbrado a IntelliJ. ReSharper ayuda. Pero como cualquier otro IDE, hasta que te familiarices con él vas a tropezar, tratando de mapear algo que sabes cómo hacerlo bien en otro sistema al nuevo. Visual Studio Express no parece ser lo mismo.

También ignoro la organización, el empaquetado y la implementación de aplicaciones. Estoy en la oscuridad en los módulos .NET, despliegue en IIS en lugar de un servidor de aplicaciones Java EE como WebLogic, etc.

El uso de JUnit y TestNG en mis proyectos Java es una segunda naturaleza. No tengo el mismo nivel de comodidad con NUnit.

Simplemente no lo tengo en la punta de mis dedos. Es como una persona en un país extranjero con una guía del idioma: "¿Cómo puedo decir eso?" Simplemente no soy fluido en .NET.

Realmente podría usar un buen proyecto y un emparejamiento de un mes con una guía experimentada para ayudarme a superar la barrera. Pero ese no es mi papel en los proyectos, así que estoy estancado.

Estoy más cómodo tomando ese mismo camino con Python. Tengo PyCharm de JetBrains, por lo que el IDE no es un problema. Los módulos de Python son tan abundantes y fáciles de usar como elementos de código abierto de terceros a los que estoy acostumbrado. Tengo un gran libro "Core Python" que me está guiando. Y cuanto más uso el idioma, más me gusta. Tengo los mismos problemas de empaquetado y despliegue, pero estoy más seguro de que los resolveré solo con Python que con .NET.

+0

Solo una nota: Full Visual Studio tiene muy buenas pruebas de unidad incorporadas.Simplemente haga clic en el botón derecho sobre un método, haga clic en "Crear prueba" y cree la prueba para usted en un proyecto separado. Si el método fue privado, protegido o interno, incluso crea un objeto de acceso que permite que la prueba de la unidad acceda a todos los métodos como si fueran públicos (lo que a veces es muy útil y le ahorra la molestia de escribir subclases para probar métodos protegidos) . Usé NUnit después de comenzar con esas pruebas unitarias y NUnit solo se siente torpe en comparación. – dbemerlin

+0

Incluso con un asistente, todavía tienes que poner la carne en los métodos. Y si su asistente simplemente le da pruebas de "ruta feliz", diría que le está haciendo un flaco favor. A veces las personas que se enamoran de los magos deben dar un paso atrás. – duffymo

+0

Visual Studio es uno de los mejores editores del mundo, puede ser un misterio para usted porque es muy nuevo para él, y también puede agregarle un complemento de resharper, que le agregará más potencia techno, pero VS 2013 y ahora VS 2014 están cargados con la mayoría de las herramientas adicionales. – Ambuj

2

Mientras se mantenga alejado de las interacciones complejas del cargador de clases, el idioma y la biblioteca estándar deberían sentirse como en casa, lo que puede ser intimidante para alguien que proviene de las tiendas de Microsoft es la abrumadora cantidad de bibliotecas y opciones de middleware, mientras que el lenguaje es simple , el ecosistema es profundo, muy profundo, y no existe una opción estándar real.

Me concentraría en los técnicos 'estándar' en el J2EE tutorial para la mayoría de las tiendas empresariales, pero si alguna vez obtiene el liderazgo técnico en un proyecto, prepárese para investigar mucho sobre el conjunto óptimo de herramientas para su estilo.

4

En mi opinión, la diferencia entre Java y .NET (C#) no es tan grande, desde el punto de vista del lenguaje. Yo mismo uso ambos a menudo aunque estoy usando más Java que C#.

El problema es más la plataforma a continuación y las bibliotecas de clases que tienen una estructura diferente y proporcionan a veces conceptos diferentes para la misma cosa. Lo principal en mi opinión es que .NET está más impulsado por las bibliotecas integradas/de proveedores directamente de Microsoft, mientras que en Java Plattform la mayoría de las bibliotecas y marcos provienen de fuentes externas a la plataforma.

Por lo tanto, lo mejor a ese respecto es buscar los problemas frecuentes resueltos en .NET y tratar de resolverlos (en parte) en Java para tener una idea de las bibliotecas y marcos utilizados allí.

Otra cosa que es diferente entre las plataformas podría ser el concepto de un servidor de aplicaciones en un entorno Java EE, ya que creo que .NET no tiene un concepto equivalente para las aplicaciones de host.

Nota al margen con respecto a la IDE

Especialmente en relación con Refactoring apoyar las Herramientas de Java que encontrará en Eclipse, IntelliJ, NetBeans es mucho más rica que en Visual Studio fuera de la caja. Aunque ReSharper parece agregar mucha de la funcionalidad faltante a Visual Studio.

+0

E IntelliJ es más rico que Eclipse y NetBeans. ReSharper cierra esa brecha para Visual Studio. – duffymo

+0

Lo he agregado a mi respuesta. –

1

Recientemente hice esa transición. Al igual que usted, he programado usando .NET desde 1.0. Me tomó algunas semanas realmente ponerme cómodo, pero al final, viniendo de C#, no fue muy difícil. Lo más confuso que comenzó fue pasar del paradigma de manejo de eventos basado en delegados de .NET al paradigma de manejo de eventos basado en la interfaz de Java. Estarás bien.

En cuanto a IDE, prefiero Visual Studio a Eclipse, pero todos tendrán su propia opinión al respecto. Eclipse tiene un montón de funciones y es repetidamente ampliable, pero estoy más preocupado con la funcionalidad básica que uso todos los días. Nunca me di cuenta de cuánto código escribí usando la tecla TAB hasta que cambié de Visual Studio a Eclipse. Realmente echo de menos el rápido autocompletado. Si hay una manera de activar una característica similar en Eclipse (en lugar de escribir CTRL-SPACE -> ENTER) por favor avíseme. :)

¡Buena suerte! :)

0

Le sugiero que empiece con un proyecto pequeño usando una arquitectura similar a la de .NET como JSP, que es como ASP o JSF, que es similar a Java Server Faces. Entonces no necesita preocuparse tanto por el concepto que obtendrá más en las diferencias de idioma e IDE, implementación y estas cosas. Entonces puedes ir a una aplicación J2EE adecuada.