2009-04-26 34 views
13

Disculpas de antemano por el posible hilo de llama, pero eso no es lo que estoy buscando.Diferencias entre Java y C# y .NET

Solo he hecho un desarrollo serio en Linux usando C y C++, y estoy buscando dar el paso a Windows. He estado leyendo y preguntando por todas partes, y me parece que .NET con C# es el camino a seguir para desarrollar aplicaciones comerciales orientadas al usuario para Windows.

Una gran consideración para mí es la integración de la interfaz de usuario en el escritorio, ya que con esto el usuario finalmente interactúa. ¿Es posible recrear el aspecto de la GUI de Office 2007 en Java, por ejemplo, o solo es posible con .NET?

También me preocupa la portabilidad. En el futuro, es posible que desee portar la aplicación a Linux. Conozco el proyecto mono, pero me pregunto si no sería mejor ir con Java.

En resumen, ¿cuáles son las ventajas y desventajas entre Java y C# cuando se desarrollan aplicaciones comerciales comerciales orientadas al usuario destinadas principalmente a Windows?

+1

No hay llamas aquí - es una pregunta totalmente legítima y una opción importante. –

Respuesta

16

El bit más importante está en "pensado principalmente para Windows".

Si solo necesita trabajar en Windows, es probable que C# sea una apuesta mucho mejor que Java. Hay una mejor variedad de estilos visuales que se combinan bien con Windows. También hace que la interoperación con código nativo (por ejemplo, bits de la API Win32 o bibliotecas COM) sea más fácil que Java. Personalmente, lo prefiero como un lenguaje, pero esa es una cuestión diferente.

Si necesita ejecutar en otras plataformas, consideraría seriamente Java. Si bien Mono tiene bastante impulso, no tiene el mismo grado de compatibilidad con .NET que Java en las diversas plataformas que admite.

Por lo tanto, básicamente, pondere el aspecto "puede querer portar" con mucho cuidado: desde el punto de vista de mi decisión, es el factor determinante en la decisión. Una vez que haya decidido hacer un puerto, no importa mucho si el 90% de sus clientes están en Windows; aún así tendrá que funcionar y funcionar bien para el 10% restante.

+0

El código que funciona en Mono OK funciona de esa manera en CUALQUIER plataforma. Por lo tanto, su afirmación sobre la compatibilidad con plataformas es INCORRECTA. – Mash

+1

La compatibilidad es una relación bidireccional. El código mono que funciona bajo CLR de Windows es solo la mitad del requisito. Hay muchas funciones que Mono no admite y, como tal, hay un montón de código .Net escrito en Windows que no funciona en Mono. –

+0

.NET 2.0 BCL 100% cubierto por Mono excepto algunas cosas específicas de Microsoft Windows. Y hay una herramienta muy útil http://mono-project.com/MoMA para migrar de .NET a Mono. La mayoría de las veces se requiere muy poco esfuerzo para ejecutar aplicaciones .NET bajo Mono. – Mash

0

Si la aplicación es principalmente para Windows, use .NET. Si se toma en serio la posibilidad de portarlos más adelante: evite el uso de P/Invoke, características de .NET anteriores a 2.0 y kits de herramientas de terceros con GUI enriquecida (que no se ejecutan en Mono) . Existen plataformas .NET agradables y comerciales. incluyendo aplicaciones agradable http://www.codicesoftware.com/xpfront.aspx plastic scm UI http://www.plasticscm.com/screenshots/gui27/visual/brexplorer04.png y muchos otros - http://www.mono-project.com/Companies_Using_Mono

también muchos desarrolladores prefieren VS IDE más de Eclipse y C# sobre Java. Pero si su aplicación es principalmente Windows, apuesto a que es mejor usar .NET. ESPECIALMENTE si la integración de la GUI es una preocupación principal, porque hacer que las aplicaciones Java se vean como Windows nativo sigue siendo doloroso. En .NET, hay MUCHOS controles para la interfaz Ribbon (incluida la nativa). Trate de encontrar lo mismo para Java con el aspecto adecuado y comprenderá lo que quiero decir

Con Mono (si va a mantener las reglas principales) la mayor parte del tiempo, no tendrá problemas para portar e incrustar el propio Mono dentro su aplicación.

2

Dado que tiene una expiración con C++, puede ir con C++ más Qt para la GUI. Es una buena biblioteca de GUI multiplataforma, y ​​puede recompilar el código para trabajar en Windows, Mac y Linux con un aspecto uniforme.

Claro que puede hacer interfaces agradables con él, pero tal vez no tan genial como la interfaz de MS Office (mezcla de Microsoft).

Puede considerarlo como una opción. http://www.qtsoftware.com/products/

Ejemplos http://www.qtsoftware.com/qt-in-use

+0

¿Alguna cinta Qt por ahí? – Mash

+0

No he podido encontrar ninguno: S –

4

En primer lugar, si su interfaz gráfica de usuario se verá bien en ventanas dependerá más de su habilidad con el diseño de interfaz gráfica de usuario de lo que será en su elección de idioma o conjunto de herramientas.

Windows Forms realmente no le da acceso completo a la funcionalidad de la GUI de Windows utilizando la API documentada. Tendrá que hacer llamadas a las funciones de la API nativa o al menos usar mensajes específicos de Windows para lograr algunos efectos. Además, no creo que haya una forma integrada de acceder al control de cinta estilo Office 2007. Necesitará un componente de terceros para eso.

Una gran cantidad de aplicaciones .Net se basan en conjuntos de widgets de terceros para lograr agradables GUI. Tenga en cuenta que estos frecuentemente se basan en P/Invoke u otra funcionalidad específica de Windows y por lo tanto no funcionan en mono. Entonces, si realmente quieres una GUI multiplataforma, .Net no es la mejor opción.

También puede hacer .NET GUI en Windows Presentation Foundation, pero una vez más esto no se admite en mono.

GTK # funciona bien en Unix y Windows, aunque se ve un poco menos nativo en Windows.

Java Swing es muy multiplataforma y se ve bastante bien con una apariencia nativa de plataforma. Puedes descargar Netbeans para verlo en acción.

SWT es un kit de herramientas alternativo para Java que tiene una compatibilidad ligeramente inferior a la plataforma que Swing, pero aún así es popular. Eclipse usa este kit de herramientas, así que descárguelo para verlo en uso.

+0

+1 para su GUI toolkits introducción – DerMike