Java vs. .NET - WarNov Developer Evangelist - Site Home - MSDN Blogs

Java vs. .NET

Java vs. .NET

Rate This
  • Comments 40

Estaba revisando mi Facebook y por allá alguien dijo a propósito de la salida de su creador James Gosling de Oracle:

“Es que Java le lleva mucha ventaja a .NET!”

OMG!

Abrió la caja de pandora… y entonces comenté algo similar a lo siguiente, dado que soy NINJA (Not INcluding JAva):

En lo personal me parece que decir que Java le lleva ventaja a .NET, ni siquiera aplica.
Java es solo un lenguaje. Más bien tendríamos que comparar JDK con .NET aunque tampoco me parece muy apropiado...
.NET es toda una tecnología.
Una tecnología basada en código administrado.
En eficiencia;
en productividad
en hacer todo desde un solo lugar.
En confiar en un solo esquema de librerías bien conocido, documentado y creado bajo los mismos principios.
Alguién más apuntó:

“…he programado en los dos lados y eso de que java le lleva a .net mucha ventaja lo discuto.. JAVA cambia sus paradigmas a toda hora… o será muy fácil pasar de EJB 2 a 3 o integrar plugins y librerías en Eclipse: Algo así EJB 2.0 Hibernate jax-ws y jboos 5… eso es un show con una pila de errores que a veces ni idea y después te das cuenta que solo era por una versión menos de alguna librería x ... en fin Calidad de vida mata Esquizofrenia(enfermedad generada por apagar el modo NINJA)…”

No tengo que importar paquetes extraños. Todo me lo resuelve el IntelliSense.
Aún SDKs de Javascript tan robustos como JQuery se resuelven en segundos y me dejan programar a la velocidad del.. hum... sí.. del programador .NET... que sin ser exagerado caballeros, siempre será más alta que la de java. A .NET no le gusta "echar pedal" (y no mencionemos la velocidad de ejecución).”


Pero Java es multiplataforma!


Y .NET no? Solo hablemos de Mono y ya. O de Silverlight que ahora me permitirá correr la misma aplicación en Linux,. MAC o Windows en modo full trust out of browser o en otras palabras, en modo escritorio... Y me pregunto... cuándo con Java podremos crear algo aunque sea ligeramente parecido a Silverlight? A WPF?


Además, pienso que la interoperabilidad no es correr sobre todos los sistemas operativos (cosa factible con .NET) Sino más bien la capacidad de interoperar con otras aplicaciones existentes... y .NET está super preparado para esto con WCF que hoy día da amplias capacidades de interconexión comenzando por REST, JSon, OData, y los otros viejitos como SOAP, WSDL...


Pero Java es gratis!!!


Y .NET no? Toda la especificación de .NET es abierta. Y tenemos herramientas altamente sofisticadas y SOPORTADAS que son free... si no, pregúntenle a las versiones Express de Visual Studio.
Existe también el sitio http://codeplex.com donde miles de desarrolladores comparten su código de manera OPEN SOURCE y se encuentran proyectos geniales de código libre.

Pero Java es Java!!!


Sí... los programadores se enorgullecen de saber Java... no digo que sea malo... por el contrario rescato la idea original que se tuvo de la JVM y del código administrado y del lenguaje altamente formal y completamente orientado a objetos que en gran parte le dieron vida a mi amado C#...

Pero C# pertenece a .NET y .NET es una cosa con vida propia que permite crear nuevos lenguajes orientados a su funcionalidad (F#, IronPython, IronRuby. APL.NEXT) y además permite la inclusión de elementos avanzados como expresiones lambdas, métodos y clases parciales, métodos extendidos, LINQ, lenguajes dinámicos, automatización en la generación de capas de datos, de negocio y hasta de interfaz de usuario; MVC, Entity Framework, Cloud Services desde su proyecto en Visual Studio derechito pa’ la nube…

En integración transparente con Office, con XNA para hacer videojuegos, con Robotics, con Sharepoint, Biztalk y servidores de DB de toda índole. Con todo eso un simple Enterprise Library (lo que más se compara con la mega colección de paquetes de Java) no es nada… es solo una pequeña porción de todo lo que tiene .NET. Sin olvidar el poderoso C++ que aún está disponible para ejecutar aplicaciones que realmente vuelan porque no son administradas. Además hoy día tenemos librerías específicas para hacer programación en paralelo y hypercomputing sin necesidad de hacer un curso para usarlas! en fin... esta cajita de pandora llamada .NET, me daría para escribir un montón de líneas más....


Para estos días que estamos de lanzamiento de la nueva ola de nuestra plataforma: Visual Studio 2010 (que además ahora incluye modelamiento UML y un manejo de arquitectura que ni en mis sueños me imaginaba) .NET Framework 4.0, Silverlight 4.0, Sharepoint 2010, Windows Azure para Colombia y muchos otros... podría decir que en mis años de experiencia con .NET jamás había presenciado una oleada tan grande de innovaciones que nos va a permitir verdaderamente desarrollar todo nuestro potencial antes de tener que pelear para únicamente mostrar un botón en la interfaz gráfica…

Y ahí terminó la discusión… luego Willy remató con un brillante chascarrillo acerca del asunto:

Michael Schumacher llega a casa después de un duro día de entrenamiento en el circuito.
Su mujer le recibe con un beso y le pregunta:
- "¿Cómo ha ido hoy el día, cariño?"
- "Bueno, cuando he llegado al circuito, he ido a boxes y el F1 no estaba en su sitio. En su lugar había un burro."
- "¿Cómo?", se sorprende la mujer.
- "Si, así es. Le he preguntado al jefe de equipo y me ha confirmado que habían cambiado el monoplaza por el burro."
- "¿Y tu que le has contestado?"
- "Pues yo le he dicho que quizás no seria tan rápido como el F1. Él ha dicho que ciertamente es así, pero que ahora tenemos una ventaja y es que podremos correr en todo tipo de circuitos: F1, rally, motocross, trail sin... Y bueno, al menos hoy he podido venir montado en él hasta casa, cosa que no podía hacer con el F1."
- "Ya. Pero si tu sólo corres en F1, ¿para que quieres poder correr en otros circuitos?"
- "Pues no lo se, la verdad. Además, después de montarme en el burro le he dicho al jefe de equipo que no era ni la mitad de cómodo que el monoplaza."
- "¿Qué ha respondido el?"
- "Simplemente ha dicho que eso no importa porque ahora podemos correr en todo tipo de circuito."
- "¡Ay Señor!, ¿Y no corres más riesgo de hacerte daño si te caes?"
- "En realidad no, porque le han puesto al burro las mismas protecciones que tiene la cabina del F1. A pesar de que hace que todavía vaya un poco mas lento. Según el jefe eso ya no tiene tanta importancia, porque ahora podemos correr en todo tipo de circuito."
- "Esta bien, enséñame el burro."
Tras salir al jardín y quedarse estupefacta con la imagen de un burro pintado de rojo, con el escudo de Ferrari pegado en la frente y una protección de F1 encima de la silla de montar, la mujer le pregunta a Michael:
- "¿Y como se llama el animal?"
- Se llama ....
- Se llama ....
- Se llama ....
- Se llama ....
- Se llama ....
- Se llama ....
JAVA !!!!!!!!
X-DDDDD
Según apunta Willy además no es cierto que Ferrari use Java. Los leguajes oficiales para desarrollo en el equipo Ferrari son VB.NET y C++, tal y como se indica en una entrevista concedida a CNET NEWS"
http://tiny.cc/42f73

 image

Y ahora otro más cortesía de @Caycedo:

- Knock Knock...
-Who's there?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- Java!
:P

A lo cual le agregué el siguiente escenario (un poco más abstracto):

Knock Knock...
-Who's there?
-Dont worry, I'm Just Leaving
(espero aquí sepan de quien estoy hablando)

 

.NET Rocks!!! Felices lanzamientos 2010!!!

Leave a Comment
  • Please add 2 and 3 and type the answer here:
  • Post
  • Soy de .Net pero hago este comentario, la tecnolog ... Ver másía relacionada con Java ha influenciado nuestra plataforma y visceversa, pongo un ejemplo Struts. IMHO ASP.NET MVC copia bastantes conceptos de Struts. Por otro lado pienso que JEE pisa más fuerte en el terreno de servidores de aplicaciones, tienen muchas opciones para todo los gustos, y por último, pues el tiempo que alcance a trabajar en JEE me di cuenta que las aplicaciones hacen un uso extensivo casi obligatorio de IoC o Dependency Injection lo cual genera diseños e implementaciones menos cohesivas, en .Net la verdad si bien existen varios contenedores IoC yo por lo menos en los proyectos que he trabajado no me ha tocado el primero en que haga uso de alguno (corriganme por favor). Y para agregar por que no lo vi en el post, un punto muy debil de Java es el soporte tan pobre de sus tecnologías, con .Net uno lo encuentra todo en MSDN.

  • Gran comentario David...

    Tal como lo comenté, carias características de .NET se derivan de JAVA. Pero hoy en día se han vuelto radicalmente mejor. Sé que con nuestro framework 1.1 era muy fácil mostrar que JAVA seguía siendo mejor... pero ahora la cosa ha cambiado mucho....

    Ahora bien; te hago algunas aclaraciones: ... Ver más

    ASP.NET MVC no copia nada de Struts, sencillamente porque está basado en el paradigma MVC que se originó como parte del lenguaje SmallTalk por allá en 1978. Fue en el 2000 cuando el señor McClanahan inventó Struts como una implementación de MVC con sabor a Java. Sin embargo el éxito de MVC se vió con Ruby OnRails como en el 2004 o 2005 y fue ahí cuando Microsoft decidió implementar su sabor de MVC; pero fue mayormente basado en Ruby.

    Lo de JEE pisa más fuerte en servidores de aplicaciones abría que verlo con cifras porque con la evolución de nuestro framework he visto a muchos gigantes pasarse a .NET.

    En cuanto a Inversion Of Control, ha estado disponible en .NET desde siempre. Y aquí te voy a mostrar una gran diferencia entre JAVA y .NET.

    .NET confía en los buenos arquitectos y si no has visto IoC en ningún proyecto .NET, eso es porque no has tenido Arquitectos que lo hayan aplicado allí.

    Como tú mismo lo has dicho, JAVA casi que obliga a hacer IoC.... pero en la vida real no todos los problemas se resuelven igual!! Y a veces el sobreuso de patrones genera perjuicios en el performance (como si ya el performance de Java no dejara mucho que desear).

    .NET da el poder de elegir y con él podemos generar los patrones más adecuados para generar las arquitecturas más grandes jamás vistas.

  • Excelente Post, unifica todo lo que como Ninjas queremos decir. jeje

    Saludos desde Cartagena :D

  • Sludos Marylin... continúa tu buen trabajo con la comunidad!

  • Jajaja, si por eso a la Bolsa de Londres le toco cambiarse de .Net y soluciones Windows por que no fueron capaces de manejar la transaccionalidad de la bolsa en los días de la crisis económica mundial:

    http://www.itwriting.com/blog/1787-london-stock-exchange-migrating-from-net-to-oracleunix-platform.html

    Muy claramente el artículo (y muchos otros en la red) muestra que la bolsa estaba buscando una alianza Sun + Oracle (Por lo tanto Java, xq con que creen trabajan las plataformas de Middleware de ambas compañias). Actualmente la bolsa de Londres está realizando esta transición, pero que viva .Net, jajajajaja! Es buenisimo, y lo deja siempre demostrado.

  • por que si .net es tan bueno, ORACLE, IBM y SAP hacen uso JAVA para el manejo y desarrollo de todas sus aplicaciones???

  • Para LSE:

    No considero determinante mostrar ejemplos puntuales para definir las ventajas de una plataforma contra la otra; dado que en las decisiones de implementación la mayoría de las veces no solo intervienen las capacidades técnicas de la herramienta.

    Pero pues dado que se abrió el espacio, yo podría mencionarle por ejemplo que el MIT... si el MIT, decidió pasarse a .NET desde J2EE, aún cuando venía del mundo Unix OpenSource y con mucha gente allí haciendo lo que fuese para evitar cualquier cosa relacionada con Microsoft cuando pudo haber escogido algo como Apache/Jopmcat/Java o Sun con Oracle... imagínese... todo un MIT!

    En este artículo: http://philip.greenspun.com/bboard/q-and-a-fetch-msg?msg_id=000tcP

    encontramos toda una explicación excelente que nos da Philip Greenspun. Profesor de Ciencias de Computación en el MIT. Explicaciones MUY BIEN fundamentadas.

    De las razones que más me gustan es que como institución académica, MIT tiene unas limitaciones de presupuesto. Y menciona que un verdadero sistema J2EE debería involucrar EJB y un sistema de persistencia administrado. Y desafortunadamente, los propios experimentos del MIT, demostraron que toda esa generación de código automáticamente hecha por Java llegaba a ser hasta 100 veces más lenta que el SQL hecho a mano. Lo que significaba que el MIT tendría que comprar 100 veces más de capacidad de cómputo para lograr un rendimiento adecuado. Con .NET los rendimientos siempre fueron muchisimo mejor. Cómo lo lograron? Por qué los de la bolsa de Londres no pudieron?

    Lo lograron porque tenían verdaderos profesionales en la materia que no estaban viciados por una moda o tenddencia sino que querían opoerar de la mejor forma con  bajo presupuesto. Ellos investigaron la mejor forma de desplegar cada herramienta y así lo hicieron y .NET les dio muchos mejores resultados. En la bolsa, como pasa en muchos otros sitios, pudo haber pasado que sencillamente no tenían los profesionales adecuados para desplegar la plataforma y eso es una pena.

    A propósito podría mencionar por ejemplo un caso colombiano. En el que Oracle iba a vender su mega suite de negocios obviamente apoyada en J2EE. Costo: USD$12M. Sí! Doce millones de dólares. Y cuando los consultores iban a la empresa a tratar de hacer demos y demás o al menos una prueba de concepto, nunca podían armar nada, pues en ese mundo los componentes con tan independientes que son muy difíciles de agrupar. Seis meses y nada.

    Luego llegó .NET. Ofreció costos de USD$1.2M y el sitema comenzó a ser productivo desde el principio.

    J2EE aparece como un clásico callejón sin salida de IT. Hay muchgos servidores de aplicaciones y ambientes de ejecución para Java (de todos esos cual escogemos? en .net tenemos IIS y el framework.net pare de contar) Todos ellos tienen diferencia sutiles así que una aplicación construida para WebLogic no correrá en Tomcat o Websphere. Es esto interoperabilidad? Tal vez la aplicación porte bien cambniando un 1% del código... pero lo difícil es saber cuál es ese 1%!!!

    Eso mismo lo pasó a UNIX a principios de los 90. Una aplicación AIX sencillamente no corría en SunOS o HP-UX.

    Para finalizar, una cita más del profesor Greenspun:

    "Así que en el tiempo que el MIT calculó para evaluar y seleccionar el servidor de aplicaciones Java adecuado para sus fines, la primera versión de uno de sus sistmeas puedo ser construida y puesta en producción usando las herramientas Microsoft"

    El artículo citado es bien largo y explica muchos otros hechos que llevaron a tomar la decisión del radical cambio; la lista de ventajas crece y crece con el tiempo. Antes de transcribirla aquí, les recomiendo que lean el artículo.

    En conclusión, no basta cn mostrar un par de ejemplos para decir cual es la mejor plataforma. Debemos conocer las dos y poner en balanza las cualidades y defectos de cada una de ellas.

    Yo he desarrollado y arquitecturado proyectos en ambos mundos y personalmente siempre he visto la balanza inclinada hacia el lado de .NET

  • Para Alejandro:

    por que si .net es tan bueno, ORACLE, IBM y SAP hacen uso JAVA para el manejo y desarrollo de todas sus aplicaciones???

    esa pregunta se podría asociar por ejemplo con esta:

    por qué si Mercedes Benz es tan bueno, AUDI, SEAT y BMW no usan sus componentes en sus aplicaciones?

    El Know How de empresas como Oracle está basado en JAVA así fue como surgió y hoy en día la misma naturaleza de Java haría inviable una migración de .NET. Esto sin mencionar que obviamente toda la credibilidad de esas empresas quedaría por el piso, pues luego de estar compitiendo contra un contendor comercial, terminarían uniéndose a él. Una decisión poco acertada diría yo.

  • Yo me guio mas o menos en el concepto que alguna vez emitio Scott Guthrie con respecto a la pelea entre ASP.NET WebForms vs ASP.NET MVC.

    Uno puede desarrollar buenas aplicaciones con cualquier tecnologia, o uno puede desarrollar realmente malas aplicaciones con cualquiera de las dos tecnologias.

    Si la intencion del post era disuadir aquellas personas que aún no se deciden por .NET o aquellas que se aburrieron de Java y quieren probar algo distinto, deberian tratarse temas donde realmente le duele a Java, como es la adquisición de Oracle, su futuro incierto, el modelo de certificaciones que ahora ya no permiten para personas naturales si no empresas y por último el modelo de negocio que va a aplicar Oracle a Sun.

    Estas precupaciones ya se ven en la vida rean y si quieran ilustrarse al respecto lean esto  http://www.pcworld.idg.com.au/article/343012/google_exec_worries_over_rudderless_java/

  • Excelente Articulo, que agradable es programar en .Net, en cambio en la U, cada semestre cambiamos de IDE, Eclipse, Netbeats, y fuera de eso, tambien de framework, "Que Pesadilla"y sus Jar,mas el tinte politico,los de izquierda:Java y los de Derecha :VB.Net, ja ja,y la razon de los docentes,que como es software libre por eso debemos trabajar con esa herramienta "Java". !PLOP!

  • Bueno... parece que realmente Java tiene más preocupaciones de las que se ven a simple vista!

    El objetivo del post no es disuadir. Es concluir que Java no le lleva mucha ventaja a .NET (eso fue realmente lo que me animó al post)

    Es sacudir al lector que todavía está en conceptos de hace años... mostrarle que que hay con que! Y que a medida que pasa el tiempo, la plataforma se enriquece y fortalece cada vez más.

  • Jajaja sí, Juan Pablo.. yo viví exactamente esa pesadilla en la Nacional... hasta que un día me decidí a levantarme en armas (.net claro está) y convencer a los profesores de que me dejaran presentar los proyectos con C#... de ahí en adelante todo fluyó!

  • dos cosas:

    1. LSE, sas en toda la boca.

    2. es claro la ventaja que tiene .net en aplicaciones que necesiten velocidad y un bajo tiempo de desarrollo, pero hay que aceptar que un arquitecto java, experto en soluciones como java+seam+jpa+jsf puede hacer maravillas, eso si, si tiene un presupuesto más que generoso.

  • Es muy interesante lo que se plantea con la plataforma dotnet , yo he seguido muy de cerca los dos tecnología  .net y java (jdk) , desde los inicios de .net con el framework 1.1 y también con el jdk 1.1, las dos plataformas son sorprendentes desde el punto de vista arquitectónico,  las dos tecnologías proveen motores de persistencia, tiene sus implementaciones MVC,  tiene framework de presentación  (JSF, ASP.NET), motores de lujos de trabajo, entre otros.

    Creo que el mejor IDE de desarrollo es Visual Studio (200*), no hay nada que hacer, pero también he trabajo con  eclipse, y hoy en día con un solo plugin como  JBoss Tools puedes acelerar el desarrollo de forma eficiente, claro está, hay que estar un poco familiarizado con todo este tema de los plugins de eclipse pero es solo un poco de lectura y listo.  Lo que no me queda claro aun en .net es el tema de los frameworks de integración de tecnologías, por ejemplo por el lado de java esta JBoss Seam , el cual nos permite integrar tecnologías como JPA,EJB 3.0, JBPM ,JSF ,RICHFACES , con solo descargar un plugin para eclipse, queda totalmente integrado al entorno,  y al crear un proyecto nuevo, este queda con todas las configuraciones necesarias, y el  proyecto queda casi listo para desarrollo.

    En cuanto al rendimiento de java, la maquina virtual de la actualidad no es la misma máquina virtual de hace 10 años, yo creo que el rendimiento  en estos tiempo ya no depende de la maquina virtual, depende altamente de las decisiones de arquitectura  que se han hecho, por ejemplo si queremos que nuestro sistema soporte 1.0000 usuarios y debe ser escalado a 100.000  usuarios concurrentes en un año,  si implemento el sistema en .net  o en java y monto toda la aplicación en un solo servidor, estoy  seguro que la aplicación solo va a estar al aire unos minutos.

    En conclusión creo que las dos tecnologías son excelentes, la una ha avanzado más rápido que la otra, pero también una se baso fuertemente en la otra (primero fue java) y eso está bien, se rescataron todas las cosas buenas y se incluyeron;  y lo que hace rápida una aplicación no es tanto la tecnología en sí; son los arquitectos califados que toman buenas decisiones.

  • Muy de acuerdo con Hernan.

    Haciendo énfasis en que aquel arquitecto debe ser realmente un teso para poder integrar todos los componentes que andan por ahí sueltos sin un Vsual Studio que los acoja y que por una pequeña variación en las versiones dejan de funcionar.

Page 1 of 3 (40 items) 123