Foro sobre Java SE > Rendimiento aplicaciones Java
Cuando alguien me asegura que Java es lento, siempre le pido que me lo demuestre, con código.
Y la inmensa mayoría de las ocasiones, o se callan, o hacen una "demostración" que deja bien claras sus carencias en el conocimiento del lenguaje.
Entonces, ¿es completamente mentira que Java sea lento para aplicaciones escritorio?
Algunos dicen que la JVM tarda un poco en correr pero una vez que corre todo es rápido.
No me gusta C#, y el proyecto mono depende de la patente de Microsoft, para mí no es multiplataforma aunque exista Mono.
Entonces, ¿puedo elegir Java como mi lenguaje preferido para aplicaciones Escritorio?
Muchas gracias amigo.
"Java es lento" es una falacia, que viene de las primeras versiones, cuando la JVM no usaba un compilador interno.
En la actualidad no solo usa uno, sino dos, encadenados, que permiten la compilación "sobre la marcha" a código nativo de la plataforma en la que se ejecuta la JVM, y el almacenamiento del código ya compilado en memoria, a partir de un número ajustable de repeticiones del mismo bloque de código.
Por eso "tarda" un poco más al principio, mientras el JIT (Just In Time compiler) compila, y almacena cuando sea el caso.
De todos modos, el JIT suele usar alrededor del 1% del total del tiempo de ejecución, la mayoría al principio. Apenas si se nota en una aplicación de cierta complejidad.
De lo que mucha gente no se entera es de que, una vez que la aplicación está "lanzada", todo el código que se repita (un número de veces) se ejecuta directamente en código nativo almacenado, y el resto en código nativo compilado en el momento.
¡Y si la ejecutas en modo server, ni te cuento! Aunque para ello se debe instalar el JDK en la máquina cliente, no solamente el JRE.
El único "problema" que tendrás con Java y con Swing (y tal vez en su día con JavaFX) es que la codificación correcta no es algo trivial: o sigues escrupulosamente las recomendaciones y las mejores prácticas conocidas, o tendrás un resultado mediocre y decepcionante.
Elígelo sin reservas; pero prepárate a "sufrir" :D
jajaja Muchísimas gracias choces, completísima tu respuesta. He leído eso mismo de Swing xD pero dicen que JavaFX está mucho mejor ;)
Cual me recomiendas para mis sistemas? Swing o Fx?
Muchas gracias por tu ayuda choces, grande ;)
Creo que la mejor plataforma para aplicaciones de escritorio (que no sean demos o juguetes) es NetBeans Platform, que usa Swing, lo mismo que NetBeans IDE.
http://netbeans.org/features/platform/index.html
JavaFX es "una idea en desarrollo". Es cierto que se le está dedicando una gran cantidad de recursos, y que se postula a sí mismo como "el nuevo UI" de Java.
Pero para ello deberían suceder dos cosas:
1º Que se incluya en el JDK, como lo está Swing.
2º Que haya una adopción masiva por parte de los desarrolladores, que asegure su continuidad, y la asignación de recursos.
Mientras tanto, lo que aprendas de Swing te servirá para JavaFX, porque su arquitectura es muy similar. La interna no, claro, la que "se ve" desde fuera ;)
Como no hay nada que te impida en la actualidad "mezclar" Swing y FX (ejecutar FX dentro de Swing), en tu lugar empezaría con Swing, y si JavaFX sale adelante como está previsto, iría sustituyendo Swing por JavaFX... o no. :D
Muchísimas gracias choces, completísimas tus respuestas. Gracias hermano por tu ayuda y tus consejos. Dios te bendiga :)
muy buena información @chose de verdad no sabia cuanto había evolucionado la jvm,
cabe mencionar que c# como java usan maquinas virtuales para su ejecución que es de ahí que salio surgió el pensamiento que java es màs lento que un programa compilado a una maquina especifica (fisica), yo he desarrollado en los dos lenguajes y realmente no le veo mucha diferencia. y si el rendimiento depende mucho del programador si me acordare mis primeros programas de java andaba lentísimos y era precisamente por el mal uso que hise de Swing.
ademàs con los recursos que tienen los ordenadores hoy en día ni se nota la diferencia que tendría un programa hecho en c o ensamblador y ni hablar de los beneficios que logras a programar en java debes de los mencionados.
Lo que hace el Hotspot en la actualidad es bastante más complicado de lo que se puede resumir en una frase, o dos :D
http://www.oracle.com/technetwork/java/whitepaper-135217.html
Hola, buenas noches con toda la comunidad. Mi nombre es Gustavo, soy estudiante y tengo un par de dudas, que no sé como solucionar.
Verán, estudio para Analista Programador, y quiero especializarme en aplicaciones de escritorio(Sistemas de ventas,etc). He visto que la mayoría de programadores usan para aplicaciones de escritorio Java.
Pienso que Java en realidad es muy bueno, he visto un sistema de una tienda hecho en Java, rápido y de agradable interfaz, refutando lo que muchos programadores dicen: Java es lento para aplicaciones de escritorio.
Algunos dicen que es muy lento para aplicaciones de escritorio, otros dicen que NO es lento para nada, que la lentitud de un determinado sistema es producto de la incapacidad del programador.
Por otro lado miro a C#, un lenguaje que según dicen se puede crear una aplicacion rápida, eficaz, agradable a la vista, etc. Casi no veo que gente le reclame algo a C#, salvo su portabilidad.
C# es perfecto para windows según tengo entendido, pero no es multi-plataforma como lo es Java. He oído tambén del proyecto Mono, que es una "trasladación" de .Net a plataforma Linux.
Sobre el rendimiento de Mono desconozco mucho. Algunos dicen que Mono corre bien otros que no, etc. Además que Microsoft en cualquier momento le quita su patente y destrute a Mono.
En fin, me agrada mucho Java, por su portabilidad y todo lo demás. Pero me desaniman los comentarios negativos sobre su rendimiento. Por otro lado, C# no me agrada mucho, pero si es lo mejor para aplicaciones de escritorio, tendré que usarlo.
Mi pregunta: ¿Es realmente Java lento en las aplicaciones escritorio ó es una mentira? ¿Que ventajas tiene C# sobre Java y viceversa? ¿Tiene futuro el proyecto Mono? ¿Que tal su rendimiento?
Espero sus comentarios. Por favor, dejar el gusto personal de cada lenguaje de lado, para una mejor observación.
Muchas gracias.