2009-02-22 20 views
33

¿Cuáles son los principales beneficios de usar Mono sobre Java (o cualquier otro lenguaje/tiempo de ejecución "libre" o compatible con Linux)?¿Por qué usar Mono?

Mono siempre estará detrás de los últimos desarrollos en el framework .NET, ¿por qué querría usar Mono sobre otro lenguaje/framework tradicional de código abierto (Java)?

EDIT: Como alguien mencionado a continuación, supongo que la pregunta de raíz es, ¿por qué querrías usar .NET en la plataforma Linux?

+19

Debido Mono tiene C# y C# no es Java. – Rayne

+1

Simplemente curioso, esta pregunta ya tiene 2 votos a favor, ¿por qué? – fmsf

+0

subjetivo y argumentativo? ;) –

Respuesta

62

La respuesta es bastante obvia: porque desea utilizar .Net en Linux.

Esto, por supuesto, plantea la pregunta (que creo que es realmente a lo que te refieres): ¿por qué querrías usar .Net en Linux (sobre Java)?

Por muchas razones:

  • El código común entre el servidor y, por ejemplo, una aplicación de WPF o WinForms;
  • Uso de un lenguaje .Net particular, como F #;
  • Características del lenguaje que no están en Java (cierres, sobrecarga del operador, clases parciales, genéricos de tiempo de ejecución, indexadores, delegados, LINQ, tipos de var, etc, etc.);
  • Sus habilidades o las de su equipo ya están en C#;
  • etc.
+2

Una de mis aplicaciones favoritas de Linux "Gnome-do" (similar al Mac Quicksilver) está escrita en mono. http://do.davebsd.com/ – mmcdole

+10

Solo para identificar el uso correcto de 'beg the question': http://begthequestion.info/. Jeff Atwood comete los mismos errores todo el tiempo en los podcasts ... –

+2

Sí, hice filosofía introductoria en la universidad y esto también surgió. El uso que Jeff, yo y otros atribuimos al término ha sido (me guste o no) aceptado en la lengua vernácula moderna. – cletus

1

en una palabra? Multiplataforma

+4

Java es un lenguaje de plataforma cruzada más confiable que cualquier cosa provista por Mono. –

+2

Sí, pero si quiere codificar en C# fuera de Windows, puede :) – fmsf

+2

@fmsf: Entonces su respuesta debería ser "Porque quiere codificar en C# en Linux" y no "Forma de cruce" – OscarRyz

11

Personalmente, tengo más confianza en la plataforma Linux como servidor, pero desea utilizar C# como lenguaje de programación.

7

A algunas personas les gusta C# mejor que Java. Además, considere que C# es un lenguaje estándar ISO, mientras que Java no lo es. ¿Tal vez quiera ejecutar código ASP.NET en un servidor Linux? Hay muchas razones, de verdad.

2

Trabajé para una empresa cuyo producto principal se escribió en ASP.NET. Se dieron cuenta de que probablemente podrían aumentar su cuota de mercado si pudieran hacer que su producto se ejecutara en servidores Linux. Esto, por supuesto, sería bastante difícil si no fuera por Mono. Me dieron la tarea de pasar algún tiempo viendo cuánto (si alguno) de su código se ejecutaría bajo Mono. Esto habría sido hace aproximadamente 2 años, la mayoría compilados, pero el apoyo de Mono a los genéricos en ese momento dejaba poco que desear. Creo que ha madurado desde entonces, pero parte del código ni siquiera se analizará. El código también hizo uso de p/invoke un poco para llamar al código nativo, por lo que hizo las cosas un poco interesantes también. Sin embargo, fue divertido intentar hacerlo funcionar.

2

Dado que Microsoft presenta cambios en el estándar C# ISO antes de que los hagan, en teoría, Mono no NECESITA rastrear .NET. En realidad, el gran presupuesto antiguo de MS llega primero a la línea de meta.

4

Creo que todo se reduce a las preferencias personales. Me siento cómodo con C#, y quiero desarrollar aplicaciones que pueda ejecutar en mi computadora portátil Ubuntu o mi computadora portátil Vista. Por lo tanto, uso mono. Si estuviera más cómodo con Java, probablemente sea eso lo que usaría.

Sólo mis 2 centavos.

2

Como todos dicen, "ejecutar C# en Linux" o "ser multiplataforma" o lo que sea.

La razón por la que estoy interesado en Mono, y aún no me he convencido de tocarlo, es la posibilidad de aprovechar todas las ventajas de .Net que Java no ofrece. Básicamente, su pregunta se reduce a una comparación Java vs. .Net, y no voy a comenzar a recorrer un millón de puntos de comparación entre ellos (en Google encontrará decenas de comparaciones de J2EE vs. ASP.NET, que es una parte, y Java vs. C#, que es otra).

Pero, ¿cuál es la gran diferencia entre .Net y Java? Tiene que ver con la fuerza monolítica detrás de .Net (Microsoft y Novell está tratando de traducir eso a otras plataformas) o el enfoque de múltiples proveedores de Java. Solo el proceso de elegir un servidor de aplicaciones puede ser suficiente para que algunas personas elijan Mono.

¿Qué un gran proveedor monolítica como Microsoft le dan que Java no parece tener:

  1. documentación centralizada (era "Sorprendentemente buena documentación, todo en un solo lugar", pero varias personas me han dicho que soy mal)
  2. no hay necesidad de tomar decisiones de plataforma individuales (por ejemplo, ASP.NET o ASP.NET, no servlets JSP + + JSTL? + Eje)
  3. otras cosas que estoy olvidando

Y entonces t Aquí están las otras diferencias masivas: Java es un lenguaje único y Mono (creo) puede ejecutar código compilado CLR desde una variedad de idiomas.

+0

FWIW, creo que el doco de .Net chupa al lado de Java. Extraño. –

+0

Sí, pensé que algunos podrían sentirse así. Tendríamos que hacer algún tipo de comparación, o hacer otra pregunta sobre SO al respecto :) –

+0

Estoy de acuerdo con el mono ... Estoy tan pendiente de Java Doc. – dotjoe

2

Mono está atrasado en algunas cosas, pero muy por delante en otras. Por ejemplo, Mono admite SSE y compilación completa por adelantado: integrada. Por otro lado ... a Mono le tomará algún tiempo implementar todas las novedades en la próxima versión de .net ... por ejemplo ... las bibliotecas paralelas bastante extensas.

0

¿Cómo es que nadie ha mencionado que Linux es gratis?

+1

Porque eso no tiene nada que ver con la pregunta. La pregunta no era por qué usarías Mono en lugar de .NET, pero por qué usarías Mono en lugar de algo más nativo de Linux. –

+0

más nativo? ... – nicodemus13

0

He usado mono como un compilador cruzado, en efecto. Agregué algunas líneas "ejecutivas" a un archivo existente de compilación java/ant para llamar a mono como el compilador, por lo que hubo un único proceso de compilación de línea de comando completo.

Tuve que escribir una capa de envoltura C# alrededor de un código de PC que tenía que usar nuestro código java-on-linux, pero no pude exigir que se iniciara Visual Studio (en una computadora separada) solo para hacer el proceso de salida y construcción.

1

Cualquiera que use Mono se enfrenta al peligro de patente de software de Microsoft.

Es por eso que no solo debe evitarse Mono para nuevas aplicaciones sino también C# en primer lugar.

La migración a Mono solo tiene sentido si ya te has quedado con Windows y quieres escapar.

Why free software shouldn't depend on Mono or C#