2009-02-05 7 views
6

Estamos pensando en combinar tecnología .NET con tecnología Java (WCF, JBoss/ESB, MOM, WPF, WF) y necesito tener un alto nivel idea de cuáles son las manzanas y las naranjas en los mundos .NET 3.5 y Java.Buscando un .NET 3.5/J2EE concepto de arquitectura artículo/gráfico de comparación

¿Alguien sabe de un buen artículo, clara o mejor aún un gráfico simple que responde a preguntas como:

  • WCF en el mundo Java es ______
  • el equivalente de WPF en el mundo Java es _____
  • la cosa se cierra a JBoss en el mundo .NET es _____
  • la JVM y CLR son esencialmente los mismos a excepción de estas diferencias: ....
  • en el mundo Java no tiene la conc ept de WF/WCF/WPF, en su lugar tiene ....
  • no hay "LINQ" en el mundo de Java todavía, pero puede usar ___
  • lo más cerca que se puede llegar a ADO.NET Data Services en el mundo Java es ....

no estoy buscando a debatir esto, así que no estoy buscando "puntos" de combate, sólo necesito un neutra qué-es-lo gráfico que compara los dos mundos.

Respuesta

4

Es realmente difícil encontrar buena información sobre esto, aún más difícil encontrar información actualizada. La mayor parte se trata de .NET 1.1 o 2.0.

De todos modos, voy a dar aquí algunos enlaces que puedan ser de su interés:

espero que ayuda! Seguiré actualizando esto cada vez que me detenga por alguna información útil.

+1

Grandes enlaces, gracias por publicarlos. – duffymo

6

No conozco un gráfico bueno y claro, pero voy a aventurar algunas respuestas a sus preguntas. (Advertencia: soy un desarrollador de J2EE, y la última vez que hice la programación de Microsoft fue con el clásico ASP y VB 6. No podré evaluar las tecnologías de MS, pero tengo una buena idea de mucho de los equivalentes de Java)

  • WCF:. WCF parece que hay sobre la simplificación de los Servicios web. El equivalente de J2EE sería Apache CXF, que utiliza anotaciones disponibles en la especificación JAX-WS 2.0 para simplificar la creación de servicios web.
  • WPF: Este es fácil. La tecnología de Microsoft parece una estafa directa de JavaServer Faces. No puedo decir cuál es mejor, pero se parecen mucho. EDITAR: Fui demasiado rápido fuera de lugar con este - JSF no funciona en el escritorio, como se supone que WPF. Las tecnologías subyacentes son similares, pero JavaFX puede ser la mejor comparación.
  • JBoss en .NET: Alguien más puede querer aclararme, pero me siento bastante seguro al decir que esto no existe. Piénsalo. Está solicitando un producto gratuito de código abierto para ejecutar una especificación propietaria no libre. Si vas con Microsoft, estás atrapado con IIS tanto como estás atrapado con Windows.
  • JVM vs. CLR: Encontré un documento, disponible here, que sugiere que hay poca o ninguna diferencia entre los dos. Gran parte de la discusión entre los dos que he visto se centra en las debilidades (reales o percibidas) de Windows como tecnología de servidor.
  • Lo que tiene el mundo de Java en lugar de WF/WPF/WCF: Ahora aquí es donde, en mi opinión, el mundo de Java tiene beneficios reales sobre MS. Hay innumerables marcos disponibles, por lo que seguramente encontrará algo que se adapte a sus necesidades (¡gratis!). Puede usar Spring MVC o Struts 2.0 o Wicket. Para su capa de base de datos, tiene la opción de Hibernate o Ibatis. Mire this list de los marcos de servicios web. Java tiene un total de nueve marcos enumerados. Microsoft tiene uno: WCF.
  • Equivalente de Java de LINQ: Nuevamente, alguien me puede corregir, pero no estoy seguro de que haya un equivalente. Ventaja de Microsoft.
  • ADO.NET Data Services: Esto se puede hacer en Java a través de JPA y servicios web RESTful, pero imagino que es un poco más fácil de implementar en el mundo de los MS.

Hay otra área en la que percibo Microsoft que se arrastraba por delante de la comunidad de Java: que están haciendo algunas inversiones inteligentes en la programación funcional, mientras que la gente de Java están discutiendo inútilmente sobre la mejor manera de añadir cierres a Java. También hay algunas tecnologías emergentes, OSGi, para manejar la abrumadora complejidad involucrada en la gran cantidad de frameworks Java que existen. Como MS tiene un control más estricto sobre su dominio, es más fácil para ellos tratar con sus diversos componentes.

Y luego están las consideraciones humanas: a quién se puede encontrar para trabajar qué tecnologías y cuánto contratar para X le costará versus contratar para Y. Pero eso es cierto sin importar lo que elija.

Espero que esto ayude!

+0

respuesta esclarecedora, la comparación WPF/JavaServer Faces fue una sorpresa, ¿qué es entonces XAML en Java World? Además, ¿hay algún producto que resuelva la dicotomía diseñador/desarrollador, así como Blend/Visual Studio? –

+0

Definitivamente hay algunas cosas que WPF trae a la mesa de las que carece JSF. JSF no puede hacer aplicaciones de escritorio muy bien, lo cual no es sorprendente, considerando que Java debe admitir todas las plataformas de escritorio. Y el soporte para herramientas de diseño siempre ha sido muy pobre en JSF. MyEclipse tiene algunas herramientas, (continúa) – rtperson

+0

... pero no son particularmente útiles. Pero el núcleo de las dos tecnologías parece muy similar: un conjunto de herramientas de componente/widget basado en XML. Es posible que desee echar un vistazo a JavaFX, un competidor directo de Silverlight, y probablemente una mejor comparación. – rtperson

0

IMO hay demasiados frameworks para Java. El mismo problema con las docenas de distribuciones de Linux ...

Claro que puede decir lo mismo de .NET, pero está más claro. que es mi 0,02

+1

Es curioso, me frustra la filosofía .NET/MS de "¡así es como se hace, hazlo a nuestra manera o vete!". –

+0

Estoy de acuerdo. Hay una desventaja muy definida al tener una gran entidad central que decida qué es lo que funciona para usted. Cuando era desarrollador de MS, una de mis mayores frustraciones era que si MS quería que lo usara, no tenía alternativas, incluso si la tecnología era mala, con errores o simplemente no funcionaba. – rtperson

+0

Como desarrollador de .Net, creo que la elección es buena. Me sorprende la frecuencia con la que las cosas de MS son una reinvención de una herramienta existente que ha existido por siempre y que a menudo se transporta desde Java. – danswain

0

En el post de rtperson:

.NET tiene NHibernate y iBatis.NET. No es tan bueno como sus contrapartes de Java, parece, pero es lo suficientemente bueno.

De hecho, hay un montón de proyectos de código abierto en el lado .NET: Castle Project (MVC, IoC), NUnit, Spring.NET ... Y no nos olvidemos de Mono como una implementación de código abierto de la core .NET framework.

0

Soy un programador que ha hecho C++, Java y C# ahora el desarrollo.

Aquí es mi respuesta a la pregunta inicial:

WCF = EJB/servidor J2EE (por ejemplo, JBoss)

JBoss = no creo necesidades WCF WPF = Swing (JavaFX) un servidor, simplemente se ejecuta en el tiempo de ejecución .net. Sin embargo, no estoy seguro de esto, sigo aprendiendo. JVM vs CLR: CLR puede hacer todo lo que JVM puede, pero CLR también puede: ejecutar código no administrado, separar un proceso en varios lógicos (AppDomains). Tiene muy buena integración de C++ en comparación con Java, CLR es simplemente mejor. El lenguaje C# también es mejor que java (Lambda, delegetes, árboles de expresiones, referencias, estructuras, métodos de extensión, clases parciales, genéricos sin boxeo. ¡Hicieron un muy buen trabajo aquí!) Pero solo se ejecuta en Windows.

WF = no saben si existen, puede

LINQ = Actualmente no puede ser implementado en Java porque es necesario: Lambda, árboles de expresión y métodos de extensión

DataServices ADO.NET: I don' Conozco algo simular en Java, pero esto podría implementarse fácilmente. Probablemente existe en algún proyecto de opensourse.

Habiendo hecho tanto esta es mi conclusión acerca de cómo se relacionan:

.net es más fácil de aprender, y mucho, pero igualmente poderoso. La razón de esto es porque los nombres de los métodos en las API son más consistentes, las soluciones están mejor integradas y algunas api se diseñan mucho mejor (WPF es un ejemplo de esto, no puede decir esto para otras API, todavía está aprendiendo). Debido a esto, los programadores .net costarán menos.

Desarrollar una aplicación en C# será 1.5 a 2 veces más rápido que en Java. Allí IDE (visual studio) se siente mejor. Puedes extenderlo en 20 minutos, ¡no mierda! ¡Intentar comprender los mecanismos de extensión de eclypse no es una tarea fácil! La funcionalidad de refactorización del código Eclipse gana una pierna. Visual Studio gana en muchos otros. (Los complementos comerciales pueden estar disponibles?)

Al usar .Net, es posible que tenga que pagar licencias, para el sistema operativo y para IIS. Para la base de datos, puede escaparse con MySQL.

Para Java, no tendrá que pagar licencias. Sin embargo, en realidad ustedes todavía tienen que hacerlo. Las aplicaciones serias ejecutan un Redhad u otro SO ninguno libre. El servidor web puede ser completamente gratuito. Además, estos sistemas son más difíciles de administrar, por lo que su administrador probablemente le cueste más.

Soy un desarrollador certificado por Java (92%), también tengo certificación de servicios web (JSP, servlets, 87%) y soy desarrollador de componentes web (EJB, 82%). También soy un desarrollador certificado de microsoft (90%) y un desarrollador certificado de WPF (90%). Los exámenes de Java son más difíciles que los exámenes de Microsoft. Esto se debe a que los exámenes de Java hacen muchas preguntas infantiles irrelevantes.Como cuál es el nombre correcto del método para persistir un objeto: SaveChanges(), PersistChanges(), EmitChanges() o SendChangesToDatabase(). Cualquiera sabe que conocer el nombre del método no es útil. IDE te proporcionará el nombre correcto. ¡Y si realmente tienes nombres de métodos tan simétricos entre ellos, entonces tienes una API muy mala y confusa! ¡Lo que importa es que usted sepa por qué lo llama! Los exámenes de Microsoft se enfocan más en el porqué del cómo. En mi opinión, los exámenes de Microsoft realmente te ayudan a ser un mejor programador. Los exámenes de Java también son útiles, pero más como estudiar una guía telefónica; es muy duro pero inútil.

En resumen, creo que C# es técnicamente superieur (sería lógico ya que aprendieron mucho de Java y compraron las personas más inteligentes del mundo para escribirlo). Pagará más en licencias pero probablemente menos en personas.

Es tarde, estoy cansado y no tengo ganas de volver a leer. Debería, lo sé. Pero no lo hará. No tengo un corrector ortográfico aquí, por lo que puede haber muchos errores tipográficos. Mi primer idioma es el holandés, el segundo francés y el tercero el inglés (vivo en Bélgica, somos complicados), así que supongo que me permiten algunos errores tipográficos ¿no? :)

Espero que esto proporcione algo de claridad para usted.

Cuestiones relacionadas