Y ahora Multiplataforma..pos Mono compila codigo .NET en Linux
Pero en lo de multiplataforma estas equivocado, uno piensa que la afirmacion que has dicho es valida hasta que te sientas y comienzas a trabajar en Mono de verdad.
Java funciona en casi todas las plataformas puesto que existen runtimes para muchos sistemas, y ya hemos comprobado muchos que así es y que funciona. Y Sun no pone impedimentos para crear nuevos runtimes para nuevos sistemas.
En cambio .NET solo está pensado para Windows, aunque digan que sirve para las demás. Y el proyecto Mono no creo que jamás consiga hacer funcionar 100% una aplicación .NET, puesto que a Microsoft no le interesa que la gente ejecute un programa hecho en Windows (p.ej. usando Visual Studio .NET) bajo Linux de igual manera, sin tener que pagarles por un Windows. O ni siquiera eso, que haya empresas que desarrollen todo en Linux y ejecuten en Linux, y ellos que ni cobren por la herramienta ni por los Windowses. ¿Perderían mucho dinero verdad?.
Mono está bien para cuatro o cinco cositas; una ventanita que diga Hola, un texto que cambie de color, cositas facilonas que el propio Miguel de Icaza va por ahí demostrando sobre la marcha. Es ilógico que Microsoft apoye una cosa que hará que la gente y las empresas no le compren un Windows.
Se desarrollo un sistema de informacion basado en Tecnologia J2EE muy bueno pero con un pequeño problema...que despues de 150 conexciones la JVM alogada el el servidor consume demasidos recursos.(hablamos de un server de 8 GB de memeroria con Windows server 2003 ) y esta consumiento segun el Testing realizado al menos 2.6 gb de memoria (Mucho..para una aplicacion).
Este mismo software se realizo para una empresa de servicios de seguridad en .NET con los mismos recursos de Hardware del anterior (8gb de memoria) y el testing que se realizo a su mayor capacidad 180 conexciones consumio 1.8. gb de memoria ...estamos hablando de 0.8 gb de memoria de diferencia...es bastante no lo crees.
Ahora no digo y aclaro JAVA NO ES MALO...es muy bueno..pero consume demasiada maquina.
En lo personal pienso que es normal ver un comportamiento asi en las aplicaciones .NET pues estan optimizadas netamente para correr en Windows, porque esta pensado unica y exclusivamente para este sistema operativo.
Creo que tal vez configurando bien la JVM no hubieras tenido el problema tan grande de memoria, o para ese tipo de tareas hay otras JVM optimizadas (esta por ejemplo la JVM de IBM que segun dicen es muchisimo mejor que la JVM de Sun en cuanto el manejo de memoria).
Hoy en dia es importante tener en cuenta a la portabilidad como una prioridad critica de negocio. En un mundo tan cambiante como en el que vivimos, hacer un desarrollo ligado exclusivamente a un fabricante y sus designios es, cuando menos, suicida.
Por lo menos en el caso de las aplicaciones web que son de tipo cliente/servidor, ejecutándose la aplicación en el servidor., Windows no tiene la cuota de mercado que tiene en los equipos de escritorio, puedes estar seguro.
A la hora de desarrollar para la web me parece importante poder desarrollar aplicaciones donde se tenga independencia de a) sistema operativo b) servidor de aplicaciones y c) gestor de base de datos. Todo esto se puede conseguir mediante Java y un framework como Hibernate. Un cambio de Windows a Linux, de Tomcat a JBoss, o de MySQL a PostgreSQL debería ser prácticamente inmediato.
Ahora ni se que estamos comparando
.NET esta comprendido de varios lenguajes... ASP.NET, VB.NET, C#, y hasta J# ( "Java.NET"
) y enesimos lenguajes que pueden ser compilados para la CLR.
http://blogs.ugidotnet.org/nettools/articles/8060.aspx
Igualmente muchos lenguajes para la JVM como JRuby (Ruby), Rhino (Javascript), Jython (Python), Groovy, Scala etc
http://www.is-research.de/info/vmlanguages/
Podriamos comparar
CLR vs JVM
ASP.NET vs JSP
Java vs C#
ADO.NET vs JDBC
Visual Studio vs Eclipse/jDeveloper/Netbeans (y enesimas IDE para Java)
Y pasarnos muchas paginas de este foro hasta no terminar o podriamos ponernos de acuerdo en que Java es mejor en determinadas circunstancias (cuando se quiere portabilidad o trabajar bajo la web) y los lenguajes .NET en otras (cuando se tiene la seguridad de que se va a depender unica y exclusivamente del Windows)
Saludos