Asi me gusta! empecemos...
Mensaje original de DRK
Yo no soy experto en Java. Lo conozco desde hace mucho tiempo, y no lo utilizo para programar.
No sé si se trata de mitos, por lo menos sé que no en mi caso. El software en java es más lento que en un leguaje menos portable. Y eso, en muchas ocasiones, es toda la diferencia.
OK, primer mito a desbancar... más lento que qué y en qué circunstancias? desde ya que es mas lento comparado con, por ejemplo, assembler... pero está comprobado que java optimizado es tan rápido como c++ optimizado (buscá el link de la comparación de velocidad de 9 lenguajes -a propósito, al final del post voy a explicar por qué hay unos tiempos bastante extraños en los cálculos trigonométricos).
El tema de lento viene de hace mucho, cuando todavía java estaba en pañales y se lo usaba MAL. Las tecnologías cambiaron, los APIs cambiaron y, por sobre todas las cosas, los programadores aprendimos más sobre el lenguaje, gracias a las experiencias de otros y a la gran cantidad de documentación e información que fue surgiendo a lo largo de los años.
Aún asi, qué considerás lento?
Yo sé que es más lento y también sé porque lo es. A la hora de elegir un software, el hecho que consuma muchos más recursos que la competencia, es un factor importante, el tiempo de CPU también es dinero.
Si me posiciono como programador, entiendo las bondades de un software que implementa realmente la filosofía orientada a objetos. Y entonces, sería muy simple para mí decir "bueno, hago todo en java", pero la realidad es que si el costo a esto es tener una aplicación que tarda 15 minutos en levantar y me impide correr otros servicios en un mismo equipo porque se lleva todos los recursos...
Otro mito! He visto correr en pentiums II con 512Mb simultáneamente servicios hechos en java como JBoss (Application Server J2EE), Tomcat y un servidor de WorkFlow, y verlos desenvolverse perfectamente en producción -en un banco también- reemplazando a un servidor original que falló. Los tiempos de inicio de los 3 sistemas? JBoss:40 segundos, Tomcat: 15 segundos, Workflow: 25 segundos.
Y estamos hablando de sistemas que hacen DE TODO
Una anécdota interesante: mientras instalaba una herramienta de IBM en un banco, sobre una RS6000 corriendo AIX, sugerí probar la interface gráfica. La persona responsable del equipo me miró con cara de "ni se te ocurra" y me dijo "no, si me levantas una aplicación en java y te llevás un 60% de procesamiento, me van a matar". Entonces le aclaré, que esta interface (a diferencia del resto de las GUIs de IBM) no estaba en java sino en C y entonces se tranquilizó y la probamos. Obviamente, le mostré que el consumo de CPU estaba por debajo de un nivel crítico. Entonces, me contó que ya le había pasado con DB2, con la GUI que está en java.
OK, una RS/6000 de qué modelo? qué/cuantos procesadores? qué cantidad de memoria?
Si levantar un programa en Java te toma 60% de procesamiento, tenes algo mal configurado y estas usando una JVM sin optimización para servers... O crees que IBM va a vender software que corre mal en sus propios servidores?
Eso es importante, aunque los fanáticos de los lenguajes como java lo quieran minimizar, eso es muy importante.
Mi conclusión es que Java no cambia las cosas. Es una opción más, que desde luego adoptaría, si lo importante es ahorro en costo de mantenimiento del software, o portabilidad. Pero que no deja de tener desventajas que la hacen inútil para ciertas aplicaciones o en determinadas circunstancias operativas.
Bueno, desde ya que si quiero hacer un RDBMS como Oracle o DB2 no lo voy a hacer en Java -probablemente haga en Java las consolas de administración, eso si-, pero el resto de los escenarios operativos son perfectamente abordables mediante Java, siempre que se lo use de manera correcta, y para usarlo de manera correcta se necesita capacitación (de la misma manera que para cualquier otro lenguaje de programación).
Sinó mira la variedad de Application Servers hechos en Java -OC4j en Oracle iAS, IBM WebSphere, BEA WebLogic, JBoss, y la lista sigue- líderes de mercado, que todavía no pudieron -y a mi criterio no van a poder- ser desbancados por tecnologías de similar utilidad no basadas en Java, como .NET ( puaj!

). Corren en servidores standard y son parte de los casos de éxito de un monton de empresas.