Java vs. .NET


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!
😛

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!!!

Comments (43)

  1. 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.

  2. warnov says:

    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.

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

    Saludos desde Cartagena 😀

  4. warnov says:

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

  5. LSE says:

    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.

  6. Alejandro Peña says:

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

  7. warnov says:

    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

  8. warnov says:

    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.

  9. David Villarruel Gaviria says:

    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/

  10. 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!

  11. warnov says:

    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.

  12. warnov says:

    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ó!

  13. Hernan Rengifo says:

    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.

  14. Juanca says:

    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.

  15. warnov says:

    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.

  16. warnov says:

    Gran comentario de Juanca!

    En cuanto a:

    "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"

    En .NET no necesitamos frameworks de integración de tecnologías!!  .NET es EL FRAMEWORK

    Todo reside en .NET

    Entonces cuál es elúnico esfuerzo de integración que hay que hacer?

    Sencillamente incluir las librerías necesarias y en los casos en que los ocmponentes residan en dominios de ejecución distintos, basta recurrir a WCF que viene siendo como el pegante de toas las cosas que tenemos juntitas en nuestro framework.net.

    Obvio que esto tampoco es soplar y hacer botellas.. Hay que saber dónde poner cada componente y qué estructuras usar a la hora de integrarlos…

    pero para eso está la fina arquitectura!!!

  17. Por fin gente sensata reunida en un mismo punto! 🙂 I´m NINJA too!! :))) I love .NET!!

  18. David Villarruel Gaviria says:

    Pues esto ya lo habia puesto en otro comentario, pero otro punto a favor de .NET es su documentación. En java todo se encuentra regado en centenares de pagínas webs  blogs y foros, en .NET uno va a MSDN y listo.

    Y por último algo que es bien interesante, ya no programo en Java pero me mantengo al tanto de varios blogs con mi Google Reader, y he visto que VARIOS programadores Java encuentran LINQ una herramienta envidiable del .NET Framework (claro que no faltan los Microsoft haters).

    Tanto asi que se han creado un par de implementaciones de LINQ para Java pillen esto http://code.google.com/p/jaque/  

  19. Julian Amaya says:

    Walter,

    me gustaría que hiciéramos algo algún dia donde ambos mundos puedan intercambiar opiniones.

    Siento, tristemente, que sientes que esto es una competencia, en donde solo un framework (el "mejor") sobrevivirá…

    Mi filosofia personal es que el mejor framework o lenguaje es aquel que mejor te sirva… y realmente, siendo de la Universidad de los Andes, me siento muy comodo con Java y sus diferentes frameworks…

    No quiero armar controversia realmente pero si me gustaría que si vamos a "comparar" armemos algo entre todos y así poder dar una opinion objetiva… Estoy seguro que ambos frameworks tendrán mejores cosas que el otro y creo que en ultimas serán bastante similares.

    No se que dicen… se animan?

    Una sola nota final, aprovechando que me lee gente de .NET:

    Tristemente he visto que al parecer a partir de ejemplos base no pensados como tal, que se ha creado la cultura de utilizar como parte de la arquitectura recurrente en la mayoría de proyectos procedimientos almacenados. Espero que investiguen un poco y que pregunten y verán que esta no es la mejor practica. Cualquiera sea el lenguaje que se use, usar las mejores practicas siempre es lo mejor 🙂 (y para ir de acuerdo a un comentario que esta mas arriba: el exceso de patrones si puede ser malo, hay que saber aplicarlos!)

    me pueden contactar a julian [at] monoku.com

  20. john says:

    Simplemente prefiero .net, todo lo encuentro en un solo lugar, y con visual estudio no tengo que hacer maromas para realizar aplicaciones en diferentes ambientes(web, escritorio, animaciones etc), ademas de la integracion entre los diferentes componentes que me parece genial.

  21. warnov says:

    Wow David!!! no tenía ni idea!! de lujo si nos mantienes informados!!

  22. warnov says:

    Hola Juliá…

    Quizá sí es una competencia, pero sana.

    De esas competencias que ayudan a que los contendientes no se duerman en sus laureles y al final todos salgamos beneficiados.

    Lo que no creo es que al final solo un framework sobreviva! Eso tampoco tendría sentido, por lo mismo que acabé de mencionar, acerca de evolucionar para cada vez ser mejor.

    Es solo que me siento muy contento con el hecho de que .net ahora puede responder perfectamente ante muchas "ventajas" que tenían sobre él otras plataformas.

    Y más contento me sientop, porque hemos alcanzado una interoperabilidad muy requerida anteriormente y también hemos incursionado en los aspectos Open Source…

    Estas dos últimas características demuestran que la idea no es acabar con las demás tecnologías, sino poder convivir plenamente con ellas, eso sí, haciéndonos la vida más fácil a nosotros VBers y C#ers…

    Aquí no hemos negado las ventajas de Java…

    hemos mencionado que fue primero…

    que es un gran lenguaje muy formal… que dio orígen a C# (junto con otros más). Que ha innovado en grandes campos como cuando puso MVC para web con Struts…

    Y eso precísamente me lleva a comentar el otro punto que mencionas;

    Aunque sea aquí en Colombia, las Universidades más grandes siguen pegadas a Java… los Andes, la Javeriana, la Nacional… Esto pasa, sencillamente porque alprincipio de todo este cuento no había más que Java y Java era muy bueno! Luego salió .Net y no era tan bueno como Java…. pero ahora .Net a mejorado a pasos agigantados y creo que merece un espacio en las universidades… Afortunadamente tuve la oportunidad de dictar la materia de Arquitectura de Software en la especialización de Arquitectura en la Javeriana.. y la orienté a plasmarla con .Net… en esa experiencia, pude observar como en realidad Java tiene cosas geniales para desarrollar aplicaciones de negocio, pero sobretodo ví, como ya todo eso lo podemos hacer con la facilidad que siempre ha caracterizado a .net… Muchos de mis alumnos sin embargo no quisieron abandonar EJB… pero otros dieron el salto y se pasaron a Biztalk… al final todos pudimos comunicarnos en el proyecto final y todos contentos. Pero observen casos como el del MIT; donde finalmente se migraron todos a .net y con unas razones de peso que a mí mismo me escalofriaron cuando lo supe.

    En cuanto a armar el espacio que mencionas, a  mí me aprece genial! Algo muy poropio de mi mensaje como evangelizador siempre ha sido la interoperabilidad y nada mejor para alcanzarla, que conocer con quien vamos a interoperar. Te parece entonces si armamos una pagina para dialogar acerca del asunto?

    En cuanto a la práctica exagerada de Stored Procedures, estoy completamente de acuerdo contigo. He tenido que auditar varios proyectos en los que todo el código está metido en la DB y creanme que realmente administrar eso, es un Pain…

    La gente acostumbra a hacer eso, para no tener que recompilar la aplicación, que para obtener más rendimiento pues los datos bajan calculados, etc, etc…

    Pero no creo que esto sea costumbre inculcada por ejemplos básicos de .net.

    De hecho, en .NET tecnologías como LINQ nos alientan a sacar la lógica de la DB y ejecutarla a través del lenguaje de consulta integrado en nuestras capas de negocio… Ha resultado tan bueno el LINQ que ya en JAVA han creado librerías para emular su comportamiento: http://code.google.com/p/jaque/ (gracias a David Villarruel).

    No obstante, en ocasiones tenemos razones realmente de peso para meter cuertas operaciones lógicas en la DB y se justufica. Pero en general, si pasamos de la docena de SPs, pues algo raro está sucediendo…

  23. Santiago Villegas says:

    Buenos días a todos,

    Este tipo de discusiones “bizantinas” normalmente se encuentran en foros no-colombianos, por lo cual me parece curioso observar hasta puntos de vista en nombre de universidades; y digo bizantinas porque definitivamente las conclusiones a las que se lleguen de este diálogo jamás darán luz al debate, pues todos hablan refugiados en la herramienta y en sus logros personales con ella, ej: “logre algo muy rápido con esta”, “tiene todo listo para iniciar”, “no pierdo tiempo” etc.

    Es muy triste notar como en Colombia se mide la calidad de una herramienta basándose en lo fácil que es utilizarla, según los comentarios de Walter y la mayoría de los adeptos a .NET. Será depronto que nuestra cultura sigue apuntando a la búsqueda de los caminos fáciles ?

    Walter: aisla por un momento los conceptos de facilidad y velocidad en desarrollo y piensa en estas preguntas..

    ¿ Con cuál tecnología se puede lograr proyectos de mayor magnitud ?

    ¿ En tus investigaciones haz identificado ya, que los proyectos de software más grandes del mundo no son precisamente .NET ?

    ¿ Haz notado que los proyectos web más exitosos, estables y escalables del mundo no son .NET (Google, Amazon, Ebay, Yahoo, Facebook…. etc )?

    ¿ Se podría decir que una plataforma es mejor por el simple hecho de que tiene todo junto y es fácil y rápido desarrollar ?

    Definitivamente .NET seguirá teniendo la puerta cerrada en el mundo académico porque es precisamente la academia la que ilustra una alternativa diferente a lo fácil. Hago parte del equipo docente de la Escuela de Ingeniería de Antioquia y aunque también se observa .NET, no se aplica una benda en los ojos a los estudiantes porque este solo hace parte del abanico y no precisamente en un muy buen lugar.

    Si se observa por un momento lo que se utiliza en paises avanzados con estrictos estándares de calidad como Alemania, donde se desarrolla SAP precisamente (Java Powered), se nota que el concepto que tienen de plataformas como .NET es bastante diferente del que expresas aquí, del que expresan los chistes citados, y del que todavía se tiene en Colombia.

    Cuando mencionan ejemplos, habría que citar algunos cientos para notar una tendencia estadísticamente representativa y observar que los proyectos con altos requerimientos en rendimiento, estabilidad y seguridad descartan de inmediato la utilización de .NET.

    El que una tecnología tenga una curva de aprendizaje inclinada, y que su infinidad de componentes haga difícil su integración, no la hace para nada inferior. Habría que evaluar más bien la actitud de los desarrolladores frente a tecnologías complejas y su actitud frente a tecnologías fáciles.

    Siendo entretenido tu artículo, te invitaría a discutir estos temas con menos pasión, más seriedad, menos chistes que poco aportan al debate y más argumento con marco global, no personal.

    Saludos,

    villegas2000@gmail.com

  24. MrSAMA says:

    Saludos…

    Veo que seguimos enfrascados en las mismas discusiones, los “VS”, desde mi humilde punto de vista como desarrollador JAVA acepto que existen deficiencias al igual que las deben existir en .NET (desconozco) sin embargo prefiero estar abierto a cualquier tecnología que permita el crecimiento de nuestra labor, sin encerrarme a decir de manera apresurada cual es mejor, esperaría con agrado que el rumbo de esta conversación se encausara hacia ver las fortalezas y debilidades de cada una de las tecnologías.

    De otro lado hoy en día existen varias opciones en JAVA para realizar desarrollos ágiles yo por mi parte uso GRAILS y no me quejo a respondido a todo lo que he necesitado hacer.

    PD: creo que la comparación de JAVA con un burro es algo fuera de foco e insultante, y haciendo uso de nuestra querida herencia si hijo extiende de burro algo de burro ha de heredar.

  25. warnov says:

    Saludos,

    Primero que todo muchas gracias a Santiago Villegas y MrSama por sus comentarios, y les presento excusas si los chistes de este post les han resultado molestos!

    Pero ustedes mismos lo han dicho. Son chistes!

    Es más.. considérenlo como caricaturas…

    Han visto caricaturas en los periódicos donde ridiculizan presidentes, empresa y demás? tal es este escenario…

    Y mi  intención con el post no es precísamente hacer un paper de las diferencias "científicas" de las plataformas. Sino algo ameno de leer, sobre todo para nosotros los .net.

    Apuesto que han visto sitios en donde le dan palo a .net y hacen chistes aún peores… lo que pretendo aquí es mostrar el escenario dede el otro lado del muro. Y habrán notado entonces cómo nos hacía falta eso, por la acogida que ha tenido el post.

    Si dejan aparte los chistes, observarán que en el resto del post y comentarios siempre estamos mencionando cosas buenas de Java. Cosas que han servido para que .net se hoy como es. Por cierto… el apunte de Mr. Sama está genial pues sí tenemos mucho del burrito aquel!

    Por otro lado, quiero anotar que aquí no estamos midiendo la capacidad de la herramienta por su velocidad y facilidad de uso… eso es solo la punta del iceberg.

    Por eso me permito responder las preguntas de Santiago:

    Con cuál tecnología se puede lograr proyectos de mayor magnitud ? Tristemente tratar de resolver esta cuestión, si sería una discusíon bizantina… porque como lo verán más adelante, tenemos gigantes ejemplos de que .net lo puede lograr sin problemas.

    ¿ En tus investigaciones haz identificado ya, que los proyectos de software más grandes del mundo no son precisamente .NET ?

    ¿ Haz notado que los proyectos web más exitosos, estables y escalables del mundo no son .NET (Google, Amazon, Ebay, Yahoo, Facebook…. etc )?

    Tiene razón en los ejemplos que citas… ninguno de esos proyectos es .NET…. pero tampoco son JAVA. Además, creo que fue un ejemplo con algo de bias, pues no mencionaste MySpace… que está hecho totalmente con .NET y SQL Server!!! Sinceramente no conozco ningun sitio como facebook, MySpace o Twitter que esté hecho con Java.. te agradecería si me das a conocer alguno. Y pues apra no dejar dudas, anoto aquí algunos facts de MySpace:

    Datos totales manejados por SQL Server: 1 Petabyte

    Cantidad total de registros: 827 billones

    Númeor de instancias SQL: 440 instancias

    Usuarios nuevos:  300.000 por día

    Usuarios Concurrentes:  4.4Millones en horas pico

    Les parece que eso no es grande?

    Y adivinen con qué se programó la capa de negocio y de presentación!! 🙂

    Además tengan en cuenta que no es cualquier sitio.. es un sitio en el que entre otras cosas muchas bandas musicales han tenido la oportunidad de salir del anonimato!!!

    ¿ Se podría decir que una plataforma es mejor por el simple hecho de que tiene todo junto y es fácil y rápido desarrollar ?

    No.. no se podría decir eso.. pero afortunadamente .NET tiene esto y mucho más. Y mientras les muestro porqué, me entristece un poco el hecho de que como Santiago lo menciona:

    "Definitivamente .NET seguirá teniendo la puerta cerrada en el mundo académico porque es precisamente la academia la que ilustra una alternativa diferente a lo fácil. Hago parte del equipo docente de la Escuela de Ingeniería de Antioquia y aunque también se observa .NET, no se aplica una benda en los ojos a los estudiantes porque este solo hace parte del abanico y no precisamente en un muy buen lugar."

    Aquí lo que veo es que en realidad sí se tiene la intención de aplicar la Venda a los estudiantes, porque de plano está descalificando a la plataforma .net, y no creo que sea muy adecuado… Si no, por qué cree que el MIT (sí.. aquel que pertenece a la élite de las entidades académicas del MUNDO)

    decidió migrarse a .NET totalmente? (más arriba en mis comentarios hablo de esto… le sugiero que le eche un vistazo); sí el MIT. Aunque ud. no lo crea.

    El hecho de que se descarte .net para proyectos "grandes" a mi modo de ver obedece sencillamente a falta de conocimiento… quienes toman esas decisiones? Adivinen: Los CTOs de las empresas.. y qué fue lo último que estudiaron esos señores: Adivinen: Java!

    Por eso aprovecho para invitar a todos los que hemos tenido la oportunidad de descubrir .net (así fuera a punta de rebeldía en la universidad como lo hice yo, pues todos me obligaban a hacerlo con Java) A que iniciemos esta nueva ola de cambios en el modo de pensar de los dueños de las empresas "grandes" de hoy en día. Aquí en Colombia ya he sabido de muchoas casos de éxito que se han mantenido perfectamente, donde todo el core de negocio y de datos y de desarrollo es .NET. Empresas como Publicar S.A. trataron infructuosamente de trabajar Oracle-Java (a menos que se hubiesen esperado el tiempo requerido para desplegar tan fascinante tecnología) Pero en cuestión de meses y precios muchisimo más reducidos, hoy pueden administrar los sitios de páginas amarillas no solo de Colombia sino de centro y sur América incluido Brasil, con .NET.

    De nuevo amigos, los chistes fueron solo eso y le reconozco de corazón a Java todas sus grandes características.

    Les agradezco mucho que se hayan tomado el tiempo para comentar. Pues creanme que en estos debates amistosos todos aprendemos mucho!

  26. Oscardo says:

    vi por hay una propuesta de evaluar los dos mundos, la idea seria interesante para hacerla en Colombia y de esta manera mas alla de competir, podemos entendernos al dia a dia, con algo mas importante e interesante INTEROPERABILIDAD, se da en el mundo real con los idiomas tb con los sistemas.

    Walter diga no mas si se anime y lo hacemos, yo pondria la publicidad y la sesion de webcast para transmitirlo online!!!!

    si algo me comenta!!!

    pq la propuesta seria muuuy interesante!!!

    pa muchas personas de lado y lado!!!

  27. warnov says:

    De lujo Oscardo.. de hecho ofrecí poner toda una página para este tema, pero mucho mejor un webcast del asunto!

    Qué necesitamos?

    1. Una gran exposición de un experto en Java que nos muestre características de su plataforma.

    2. Otra exposición más de alguien que nos muestre lo características de .net.

    Nos basaremos en un speech colaborativo y no comparativo

    3. Al final mostrar ejemplos de interoperabilidad:

    Se me ocurren algunos:

    a. OData extension – Restlet: Un API para que desde Java se puedan acceder servicios de datos basados en el protocolo OData (originario de Microsoft y de acceso totalmente abierto) con REST – http://wiki.restlet.org/docs_2.0/13-restlet/28-restlet/287-restlet.html En otras palabras permite acceder a ADO.NET Data Services desde Java.

    b. Apache POI OpenXML Java API: Permite que los desarrolladores Java puedan crear y manipular documentos Office bajo el formato abierto y públic OpenXML en sus proyectos Web y de aplicaciones de línea de negocio:

    http://www.interoperabilitybridges.com/projects/apache-poi-openxml-java-api

    c. AppFabric SDK for Java y Windows Azure SDK for Java: Soporte en el bus de comunicaciones de Azure para aplicaciones Java y extensión para manejar el storage en Azure a través de Eclipse http://www.interoperabilitybridges.com/projects/azure-java-sdk-for-net-services

    d. Cómo crear aplicaciones Silverlight usando Java. Esta información no la he visto en internet. Pero la tengo en mis archivos. Solo necesito a alguien de Java que me ayude a desplegarlo.

    Bueno… desde el mundo .net, esto sería lo que se me ocurre… si alguien sabe más, bienvenido!

    Ahora necesitaríamos a alguien de Java que nos cuente que sabe desde su mundo o que quiera colaborarnos en alguno de estos proyectos de interoperabilidad…

    qué opinan?

  28. Lalo says:

    Java esta potenciado por la comunidad y varias empresas que entregan sus soluciones open-source.

    Esto es una ventaja y desventaja a la vez.

    Es una desventaja, pq incrementa la linea de aprendisaje y el tiempo de integracion entre componentes, y la documentacion esta esparcida dependiendo los componentes utilizados.

    Es una ventaja al traer soluciones innovadoras (fue en java que nacio el mejor orm, hibernate y los contenedores IoC Sring, Seam).

    Yo creo que Microsoft al verse presionado por todo el movimiento open-source ha tenido que entregar lo mejor de si (pq si no fuera por esa presion todavia estariamos con componentes COM, visual studio 6 y win95).

    De ahi han nacido buenas ideas como C# y cosas como LINQ.

    Pero MS sigue siendo 1 sola empresa y java muchas.

    Ahora que Oracle va comprar SUN, se suma otra empresa que va poner todo su interes en que se usen soluciones Java en vez de .NET

    Creo que esto es igual que en la economia. Mientras exista competencia entre las empresas, los beneficiados son los desarrolladores que reciben mejores herramientas. Pero la competencia no es eterna. :p

  29. warnov says:

    Super esta frase de Lalo:

    "Creo que esto es igual que en la economia. Mientras exista competencia entre las empresas, los beneficiados son los desarrolladores que reciben mejores herramientas. "

    En cuanto a lo de la compentencia no es eterna, veremos….

    igual, lo que mejor me hace sentir, es que la curva de calidad de .NET desde todo punto de vista ha ide creciendo sin parar y ahora la pendiente ha aumentado!

  30. Crisvill says:

    vaya al parecer este blog es de programadores "reduccionistas"… muchachos quizá uds sean muy buenos en programación y como lo mencionaron más arriba no necesiten correr en rally sino en la F1, pero el caso de J2EE no solo es un asunto de rapides o facilidad, sino de "Libertad" .net es buenicimo, sí, pero qué libertades aporta a la comunidad de emprendedores técnológicos, es un asunto más bien de ética y holística, las soluciones que parecen buenas por su sencilles terminan en su mayoría siendo nuestra propia carcel. ¡Punto!. Piensen de forma global. Usen software libre, o sean esclavos.

  31. warnov says:

    Que tal Crisvill… sería interesante para nosotros saber por qué piensas que .NET es una cárcel. Qué libertades piensan que se quiebran al usar .net?

    Gracias!

  32. Carlos says:

    Me ha gustado mucho el artículo WarNov (y los comentarios también). Creo que esto hace que me convenza más en lo bien que hice en elegir .NET (C#) y me motiva aún más en seguir con mi 70-536!!

    Diré que en mi experiencia personal, VS (yo sólo he visto VS2005, VS2008, VS2010) es espectacular, sobre todo el debugging, immediate window, cambiar el curso de ejecución…es fantástico. Y el IntelliSense es genial. Además, creo que sitios como MSDN, con tanta documentación y demás no los tiene cualquiera :). Si a eso añadimos la gran bibliografía (bajo mi punto de vista) de MSPress, creo que el simple hecho de tener todo tan centralizado es magnífico. El TFS + SharePoint también me parecen comodísimos y el entorno de test también me resulta muy fácil y cómodo. Para mi que uso TDD, creo que nos ayuda muchísimo.

    Yo siempre escuché que las aplicaciones Java eran más rápidas en general de las desarrolladas en .NET. Realmente, y ahora con tanto cambio, .NET 4.0 etc no sé cómo estará el performance de ambas, pero en cualquier caso, y como se decía en un post anterior, creo que el arquitecto es ahora quien tiene un papel quizás con más peso que otra cosa (aunque por supuesto el hardware y como no, unos buenos programadores son fundamentales).

    Saludos!

  33. Oscar Sierra says:

    Lo mejor es .NET …ojala en nuestras universidades empezamos a incursionarlo…"para no peliar con todos los profesores como lo hago yo"….100% .NET

  34. warnov says:

    @Oscar Sierra

    Muchas gracias Oscar. Si necesitas ayuda para que en tu universidad podamos difundir el mensaje .NET, no dudes en comentarme!!

  35. Chema says:

    he sido arquitecto de varios sistemas, unos en java y otros en .net. Como profesional la sugerencia es (por mucho) saber ambos, y espero que se sigan pareciendo para bien de quienes los usamos. Pero la sugerencia vuelve a ser java (antes de Java EE si les habria sugerido .net), lo que he leido que le reprochan es por que no lo conocen o de plano no lo saben usar, me parece que ni siqiuera entienden bien lo que es. Por otro lado, una dificultad con java es que se confunden con todas las opciones que te da, pero .net anda por las mismas, solo que muchos no se dan cuenta por que se encierran solo en lo que provee microsoft, sim importar que no sea lo mejor (desde el punto de vista de desarrollar un mejor sistema). Para terminar (por que que flojera discutir este tema) las facilidades que te da .net (y hasta mas) las puedes hallar tambien con java, pero mejor ni le busques, "entre menos burros mas elotes", y java no va a pasar de moda, como espero que .net tampoco; por cierto, cuando uno pase de moda es casi seguro que el otro correra la misma suerte.

  36. warnov says:

    @Chema:

    Que tal, interesanes apreciaciones… podrías darnos ejemplos más puntuales que te hayan llevado a esa opinión que tienes?

    Gracias!

  37. kevin says:

    como yo programo esto de comments mi msn ksanab_20@hotmail.com

  38. Santiago says:

    Sorry, pero no estamos de acuerdo. Aquí está mi opinión sobre Java vs C#: http://goo.gl/fb/y11HV.

  39. Tito says:

    Me ha gustado mucho el articulo… Yo soy desarrollador de .Net, pero he decicido no quedarme con una sola plataforma, y asi, aprendi algo de JAVA, sin embargo, cada vez que programo en JAVA extraño mucho .NET, sobretodo de su estupenda IDE (Visual Studio 2010) con la que puedo hacer maravillas en muy poco tiempo. Me he acostumbrado mucho a LINQ, los métodos de extensión (Que suelo usar junto a LINQ) y el grandisimo Entity Framework, y por más que traten de imitarla en JAVA, no se le acerca en casi nada. En definitiva, para mi, .Net es la AMBROSIA de los programadores. Saludos.

  40. Couple Watches says:

    http://www.stylishuggboots.com/e eso ya no tiene tanta importancia, porque ahora podemos correr en todo tipo de circuito."

  41. juligan says:

    se requiere un sistema  de informacion que haga la impresion de un hola mundo montado sobre su sistema operativo para una miscelanea o tienda de dulces..

    y tu lo vas a programar:

    .net

    licencia de .net $$$ + licencia de windows $$$ + mas licencia de office por aquellos de las tarea columnes $$$+ valor del desarrollo$$$$.

    ganancia = valor del desarrollo -(licencia .net – licencia office – licencia windows.)

    java

    valor licencia 0 + licencia linux 0 + licencia de libreoffice u open office 0

    + costo del desarrollo $$$$

    ganancia = valor del desarrollo

    simple!

    1. WarNov says:

      Claro.. aún más simple sabiendo que ahora .net es OSS y corre sobre cualquier OS y hasta tenemos un IDE que no tiene costo de licencia. 🙂

  42. miniminiyo says:

    Son diferentes tecnologías con diferentes usos, y por lo tanto diferentes prioridades, ni mejo ni peor, y decir que una es mejor que otra de forma'simple', es decir… es mejor en TODO aunque lo hayas dicho de forma suave no es correcto. Pero bueno las opiniones y las rivalidades son buenas, tanto en deportes como en lenguajes de programación 😉