Pregunta

Cuánto menos las bibliotecas existen para Mono de Java?

Me falta la visión de ambas alternativas, pero tengo bastante libertad de elección para mi próximo proyecto.Estoy buscando duro información técnica en las áreas de

  • el rendimiento (por ejemplo, me dicen que Java es bueno para el roscado, y oigo el código de tiempo de ejecución de la optimización se ha convertido en muy buen recientemente para .NET)
  • mundo real la portabilidad (que tanto significaba para ser portátil, lo Catch-22, para cada uno de ellos?)
  • herramienta de disponibilidad (CI, automatización de la compilación, depuración, IDE)

Estoy especialmente buscando lo que realmente experimentado en su propio trabajo, en lugar de las cosas que me podrían google.Mi solicitud sería un servicio back-end de procesamiento de grandes cantidades de datos de series de tiempo.

Mi principal objetivo de las plataformas Linux.

Editar: La frase de mi pregunta de manera más adecuada, estoy interesado en el paquete completo (3ª parte de las bibliotecas, etc.), no sólo el idioma.Para las bibliotecas, que probablemente se reduce a la pregunta "¿cuánto menos las bibliotecas existen para Mono de Java"?


FYI, desde entonces he elegido Java para este proyecto, porque parecía más desgastado por la batalla de la portabilidad lado y ha sido alrededor por un tiempo en los sistemas más antiguos, demasiado.Estoy un poco triste, porque estoy muy curioso acerca de C# y me encantaría han hecho un gran proyecto, pero tal vez la próxima vez.Gracias por todos los consejos.

¿Fue útil?

Solución

Well....Java en realidad es más portátil.Mono no está implementado en todas partes, y se queda detrás de la implementación de Microsoft de manera significativa.El SDK de Java parece permanecer en una mejor sincronización entre plataformas (y funciona en más plataformas).

También me gustaría decir que Java tiene más de la herramienta de la disponibilidad en todas las plataformas, aunque hay un montón de herramientas disponibles para la .NETO en las plataformas Windows.

Actualización para 2014

Yo todavía sostienen esta opinión en 2014.Sin embargo, voy a calificar esta diciendo ahora yo estoy empezando a prestar algo de atención a Mono después de un largo tiempo realmente de no cuidar, así que puede haber mejoras en el Mono runtime (o ecosistema) que no he sido consciente de.AFAIK, aún no hay soporte para WPF, WCF, WF, de WIF.Mono se puede ejecutar en iOS, pero a mi conocimiento, el tiempo de ejecución de Java aún se ejecuta en más plataformas de Mono.También, Mono está empezando a ver mucho mejor utillaje (Xamarin), y Microsoft parece tener mucho más de la cruz-plataforma de tipo de actitud y la voluntad de trabajar con los socios para hacerlos de cortesía, más que competitivo (por ejemplo, el Mono va a ser una muy importante parte de la próxima OWIN/Helios ASP.NET el paisaje).Sospecho que en los próximos años las diferencias en la portabilidad de disminuir rápidamente, especialmente después de .RED ser de código abierto.

Actualización para el 2018

Mi punto de vista sobre esto está empezando a ir de otra manera.Creo que .NETA, en términos generales, en particular con .NET Core, ha comenzado a lograr la "portabilidad de paridad" con Java.Hay esfuerzos en marcha para llevar WPF .NET Core para algunas plataformas, y .NET mismo Núcleo se ejecuta en un gran número de plataformas de ahora.Mono (propiedad de Xamarin, que ahora es propiedad de Microsoft) es más maduro y pulido producto que nunca, y la escritura de aplicaciones que funcionan en múltiples plataformas ya no es el dominio de la profundidad a la gnosis de .NET trucos, pero es relativamente sencillo esfuerzo.Hay, por supuesto, las bibliotecas y los servicios y aplicaciones que son sólo para Windows o puede sólo objetivo de plataformas específicas, pero el mismo puede decirse de Java (en general).

Si yo estuviera en la OP zapatos en este punto, no puedo pensar en ninguna razón inherente en los idiomas o la tecnología de pilas de sí mismos que me impide elegir .NET para cualquier aplicación que va hacia adelante a partir de este punto.

Otros consejos

Mono hace un mejor trabajo en la orientación de las plataformas quiero apoyar.Aparte de eso, todo es subjetivo.

Comparto código de C# a través de las siguientes plataformas:- iOS (iPhone/iPad) - Android - Web (HTML5) - Mac (OS X) - Linux - Windows

Yo podría compartir más lugares:- Windows Phone 7 - Wii - XBox - PS3 - etc.

El más importante es iOS desde MonoTouch funciona fantásticamente.No sé de ninguna buena manera de destino iOS con Java.No puedes hacer objetivo a Windows Phone 7 con Java, así que yo diría que los días de Java de ser mejor para móviles están detrás de nosotros.

El factor más importante para mí, aunque es la productividad personal (y la felicidad).C# como lenguaje está años por delante de Java en mi humilde opinión y la .NET framework es un placer de usar.La mayoría de lo que se agregó en Java 7 y Java 8 ha sido en C# de años.JVM lenguajes como Scala y Clojure (ambos disponibles en el CLR) son bastante bonita aunque.

Veo Mono como una plataforma de derecho propio (un grande) y tratar .NET como la implementación de Microsoft de Mono en Windows.Esto significa que puedo desarrollar y probar en Mono primera.Esto funciona de maravilla.

Si ambos Java y .NETO (Mono digamos) fueron los proyectos de código Abierto sin ningún tipo de apoyo corporativo, elegiría el Mono sobre Java cada vez.Yo creo que es solo una mejor plataforma.

Ambos .NET/Mono y la JVM son una gran elección, aunque yo personalmente uso algún otro lenguaje de Java en la JVM.

Mi opinión sobre algunos de los comentarios:

Tema:Rendimiento.

**Respuesta:Tanto la JVM y el CLR se desempeñan mejor que los detractores dicen que hacen.Yo diría que la JVM se comporta mejor.Mono es generalmente más lento que .NETO (aunque no siempre).

Personalmente tomaría ASP.NET MVC sobre J2EE cualquier día tanto como desarrollador y el usuario final.Soporte para El Cliente Nativo Google es bastante fresco.Además, sé que los pobres GUI rendimiento para aplicaciones Java de escritorio se supone para ser una cosa del pasado, pero sigo encontrando más lentos.Entonces de nuevo, yo podría decir lo mismo de WPF.GTK# es bastante rápido, así que no hay ninguna razón por la que tiene que ser lento.

Tema:Java tiene un ecosistema más grande de las bibliotecas disponibles.

Respuesta:Probablemente sea cierto, pero no es un problema en la práctica.

Prácticamente cada biblioteca de Java (incluyendo el JDK) se ejecuta sólo dandy en .NET/Mono gracias a IKVM.NET.Esta pieza de tecnología es una verdadera maravilla.La integración es increíble;usted puede usar una biblioteca de Java como era nativo.Sólo he tenido que usar bibliotecas de Java en una .NET app, aunque.El .NET/Mono ecosistema en general ofrece más de lo que necesita.

Tema:Java tiene mejor (más amplio) herramientas de apoyo

Respuesta:No en Windows.De lo contrario, estoy de acuerdo.MonoDevelop es agradable aunque.

Quiero dar un grito a MonoDevelop;es una joya.MonoDevelop integra la mayoría de las herramientas que desea utilizar, incluyendo el código de finalización (intellisense), Git/integración con Subversion, el apoyo de la unidad de pruebas, SQL integración, depuración, fácil de refactorización, y de la asamblea de la navegación con la mosca de la descompilación.Es maravilloso para utilizar el mismo medio para todo, desde la web del lado del servidor para aplicaciones móviles.

Tema:La compatibilidad entre plataformas.

Respuesta:Mono es de una sola base de código a través de todas las plataformas, incluyendo Windows.

Desarrollar para el Mono primera y despliegue .NET en Windows si te gusta.Si usted compara .NET de microsoft a Java, a pesar de que Java tiene la ventaja en términos de consistencia a través de las plataformas.Ver la siguiente respuesta...

Tema:Mono de los gal .NET.

Respuesta:No se no se. En mi humilde opinión, esta es una afirmado a menudo, pero la instrucción incorrecta.

El Mono de distribución de Xamarin barcos con C#, VB.NET, F#, IronPython, IronRuby, y creo que tal vez Boo fuera de la caja.El Mono compilador de C# es completamente actualizado con la SRA.El Mono VB.NET compilador hace retraso de la versión de MS.Los otros compiladores son los mismos en ambas plataformas (como otros .NET languages como Nemerle, Boo, y Phalanger (PHP) ).

Mono de los buques con una gran cantidad de la real de Microsoft código escrito, incluyendo el Dynamic Language Runtime (DLR), Managed Extensibility Framework (MEF), F#, y ASP.NET MVC.Porque de Afeitar no es de código Abierto, Mono actualmente, los barcos con MVC2 pero MVC3 funciona en Mono bien.

El núcleo de la plataforma Mono ha mantenido el mismo ritmo .NET o muchos años, y la compatibilidad es impresionante.Usted puede utilizar el total de C# 4.0 idioma e incluso un poco de C# 5.0 características de hoy en día.De hecho, Mono menudo conduce .NETO en muchas maneras.

Mono implementa partes de la CLR de especificaciones que incluso Microsoft no admite (como de 64 bits de matrices).Una de las novedades más interesantes de las piezas de la tecnología en el .NET mundial es Rosylyn.Mono ha ofrecido el compilador de C# como un servicio por muchos años.Algo de lo que Rosylyn ofrece está disponible a través de NRefractory así.Un ejemplo de fueron Mono es aún más adelante sería la SIMD instrucciones para acelerar el rendimiento de los juegos.

Microsoft ofrece una serie de productos en la parte superior de .NETA que no están disponibles en Mono que se fueron de la idea errónea acerca de Mono quedando viene.Windows Presentation Foundation (WPF), Entity Framework (EF), WCF (Windows Communication Foundation) son ejemplos de productos que no funcionan, o son poco compatibles, en Mono.La solución obvia es el uso de la cruz-plataforma alternativas como GTK#, NHibernate, y ServiceStack lugar.

Tema:Microsoft está mal.

Respuesta:Verdadero.Para qué.

Muchas personas ofrecen las siguientes razones para evitar el uso de Mono:

1) Usted no debe usar Mono porque Microsoft tech debe ser evitado

2) Mono chupa porque no permite utilizar toda la tecnología que Microsoft ofrece

Para mí, está claro que estas declaraciones son incompatibles.Yo rechazo la primera declaración, pero se omite que en el argumento aquí.La segunda declaración se aplica a todos .NET alternativas.

La JVM es una gran plataforma y la explosión de los lenguajes de la JVM es impresionante.Usar lo que te hace feliz.Por ahora, que es a menudo .NET/Mono para mí.

Yo realmente desarrollar .NET, ejecutar todos mis primeras pruebas en Mono, y, a continuación, en Windows.De esa manera sé que mis aplicaciones son multiplataforma.Esto lo he hecho con mucho éxito en ambos ASP.NET y aplicaciones Winforms.

No estoy realmente seguro de donde algunas personas tienen la impresión Mono es tan horrible, pero que sin duda ha hecho su trabajo en mis casos y opiniones.Es cierto que usted tendrá un poco de retraso, para el último y el mayor de los inventos en el .NETO mundo, pero hasta ahora, .NET 2.0 en Windows y Linux es muy fuerte para mí.

Ten en mente que hay, obviamente, muchas peculiaridades, pero la mayoría de ellos vienen de asegurarse de que usted está escribiendo el código portable.Mientras que los marcos de hacer un gran trabajo de abstracción de qué sistema operativo se está ejecutando en, pequeñas cosas como Linux caso de la sensibilidad en las rutas y nombres de archivo, toma un poco de tiempo para acostumbrarse, como hacer cosas como permisos.

.NET es definitivamente muy cruz de la plataforma debido a Mono basado en mis experiencias hasta el momento.

Java es en realidad como la cruz-plataforma como todo el mundo dice que es.Hay una JVM aplicación para apenas alrededor de cualquier corriente de OS que hay (incluso de Mac OS X, por fin), y todos ellos funcionan realmente bien.Y hay toneladas de herramientas de código abierto que están tan de plataforma cruzada.

El único inconveniente es que hay ciertos nativos de operaciones no se puede hacer en Java sin necesidad de escribir algunos archivos Dll o SOs.Es muy raro que estos surgen en la práctica.En todos los casos, sin embargo, he sido capaz de obtener alrededor de desove procesos nativos y la pantalla de raspado de los resultados.

Creo que la pregunta es formulada incorrectamente.C# vsJava es mucho menos interesante en términos de la cruz-plataforma de uso de lo que es (un) que plataformas necesita apoyo, y (b) considerando el núcleo de las bibliotecas y disponible en las bibliotecas de terceros.El idioma es casi la parte menos importante del proceso de toma de decisiones.

Java es una mejor opción para el desarrollo multiplataforma.

  • Rendimiento.Java y .Net tienen similar nivel de rendimiento debido a la máquina virtual, pero JVM normalmente tiene un mejor rendimiento debido a años y años de optimización.

  • Biblioteca.Aunque esto depende de su tarea, Java tiene mucho más abierto o bibliotecas de terceros disponibles.Para la Aplicación de servidor, J2EE, Spring, Struts, etc.Para la interfaz gráfica de usuario, aunque .Net ofrece Win32 API de nivel, pero esto causa problemas de compatibilidad.Java Swing, SWT, AWT, etc.Funciona en la mayoría de los casos.

  • La compatibilidad.Esta es la clave de los problemas que deben ser considerados al momento de desarrollar la cruz-plataforma de programa.Dos problema:en primer lugar, la compatibilidad de las plataformas.Java todavía gana desde el JDK se mantienen bien por único y original de la compañía Sol.Mono no es mantenida por MS, por lo que no tiene garantía pero para la actualización de compatibilidad.2.Compatibilidad con versiones anteriores.El sol mantiene una buena reputación en su compatibilidad con versiones anteriores, aunque a veces esto parece demasiado rígido y ralentiza el ritmo.

  • Herramientas.Java tiene un buen cruz-plataforma de IDEs.Netbeans, Eclipse, etc.La mayoría de ellos son gratuitos.VS Studio es buena, pero sólo en Windows, y no cuestan un poco.Ambos de ellos proporciona una buena unidad de pruebas, depura, perfiles, etc.

Por lo tanto te sugiero que Java es una mejor opción.Como un espectáculo caso, hay algunos famosos de escritorio de la cruz-las plataformas de aplicaciones desarrolladas en Java:Bittorrent, Limewire, BlogBridge, CrossFTP, para no hablar de las IDEs.Como para .Net, tengo un conocimiento limitado sobre el éxito de las aplicaciones.

Me he estado preguntando la misma pregunta off-tarde y en mi humilde opinión, .NET/Mono parece ser una mejor opción, simplemente porque Mono tiene una gran trayectoria en la cruz-plataforma de aplicaciones de escritorio (a diferencia de Java) y, por supuesto, Mono está mejorando a pasos agigantados en estos días.

Yo voy a decir que Java así.Si usted lo mira en términos de madurez, mucho más tiempo y esfuerzo ha sido gastado por el Sol (y otros) en llegar a la JVM para trabajar en plataformas distintas de Windows.

En contraste, el Mono es, definitivamente, un ciudadano de segunda clase en el .NETA del ecosistema.

Dependiendo de que sus clientes objetivo son, usted puede también encontrar que hay un verdadero retroceso en contra del uso de Mono - hace Novell ofrecen el mismo tipo de soporte del proveedor de Mono que sería para Java o .NET en Windows?

Si usted estaba fundamentalmente dirigida a su servicio de hosting en Windows, tendría sentido para considerar esta opción, pero ya que usted está apuntando a Linux principalmente, parece como una especie de obviedad para mí.

Java fue diseñado para ser multiplataforma;C#/.Net no.En caso de duda, utilice la herramienta de la que fue diseñado para su propósito.

EDITAR:en la equidad, la .RED fue diseñada para trabajar en embedded/PC/entornos de Servidor, por lo que es una ESPECIE de cruz-plataforma.Pero no fue diseñado para Linux.

Creo que la respuesta es "depende". Java se ejecuta en casi cualquier cosa, pero .NET/Mono son (en mi humilde opinión) un mejor marco para el escritorio.Así que supongo que la respuesta realmente depende de qué plataformas plan de orientación.

Para añadir un poco más a la conversación, Java es más portátil si usted permanece sobre una versión por detrás - Java 5 todavía tiene muchas características excelentes así que usted puede esperar para Java 6 y todavía tiene un montón de variedad en términos de lenguaje y de las bibliotecas para desarrollar con.La Mac es la principal plataforma que puede tomar algún tiempo para ponerse al día con la última versión de Java.

Java también tiene un excelente cuerpo de estándares inteligente que crece la plataforma basada en la entrada de muchas compañías diferentes.Esto es a menudo pasado por alto pero se mantiene incluso nuevas características de trabajo a través de múltiples plataformas y ofrece una gran cantidad de variedad en la biblioteca de soporte para algunas cosas esotéricas (como extensiones opcionales).

Yo votaría por que Java esté más portátiles que las de C#.Java sin duda, también tiene un muy amplio conjunto de bibliotecas estándar.También hay un amplio conjunto de fuente abierta la 3ª parte de las bibliotecas por ahí, como los proporcionados por el proyecto Jakarta (http://jakarta.apache.org/).

Todos los sospechosos habituales existen para CI, pruebas unitarias, etc también.Cruz de la plataforma de soporte IDE también es muy bueno con los gustos de Eclipse, Netbeans, IntelliJ IDEA, etc.

Hay otras opciones de idioma también.Me he convertido en muy aficionado a la de Python, que funciona bien en Windows, Linux y Mac, y tiene un rico conjunto de bibliotecas.

Mientras que el Mono tiene su cuota de problemas Creo que tiene una mejor compatibilidad entre plataformas de la historia, especialmente SI usted tiene la confianza de los nativos de invocación de plataforma.

No hay suficientes palabras en el Desbordamiento de Pila para expresar lo mucho más suave que es conseguir algo nativo llamado y ejecutado en .NET/Mono en (al menos en mi experiencia de 3...) múltiples plataformas vsel equivalente de Java esfuerzo.

Gatorhall ¿tienes algunos datos para que una copia de seguridad?

Rendimiento.Java y .Net tienen similar nivel de rendimiento debido a la máquina virtual, pero JVM normalmente tiene un mejor rendimiento debido a años y años de optimización.

Antecedentes:Soy un chico de Windows desde Windows 3.1 y en la actualidad un usuario de Linux (que ejecuta Windows 7, gran OS, en una VM para Visual Studio 2010 y otras herramientas).

El punto:a mí y a un montón de usuarios (windows, linux, etc) lo sé, puede discrepar de usted.Java tiende a realizar más lento, incluso en un linux de escritorio de la aplicación, ASP.NET realizar más rápido que java server pages muchas de las veces.Algunos pueden estar de acuerdo que incluso los no-compilado PHP realiza mejor que varios de los escenarios.

Java es más plataformas?No tengo dudas acerca de esta (la historia de nuevo este), pero más rápido (no dice .NET es) no es tan cierto y me gustaría ver a algunos de los verdaderos puntos de referencia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top