Launch4j: Crear Ejecutable de Windows para una Aplicación Java

Launch4j

Launch4j

Para simplificar la ejecución en Windows de un programa hecho en Java, launch4j permite transformar un archivo JAR en un archivo EXE con un enorme grado de flexibilidad.

No hace falta ni siquiera tener Windows; se puede generar el archivo EXE desde otro sistema operativo como Ubuntu. Simplemente hay que bajar la versión de launch4j correspondiente al sistema operativo que estemos usando.

Hay que tener en cuenta que si se está usando la versión de Ubuntu de 64 bits hay que instalar la biblioteca libc de 32 bits. En Ubuntu 11.10 (Oneiric Ocelot) el paquete es libc6:i386 y se puede instalar desde Synaptic o con este comando:

sudo apt-get install libc6:i386

El resultado es muy bueno. Se genera un archivo ejecutable nativo de Windows que funciona en todas las versiones de ese sistema y detecta solo si está instalada la máquina virtual Java en la PC del usuario.

Ejemplos de ejecutables generados con esta herramienta:

Minimizar el Espacio Desperdiciado al Grabar un CD o DVD (Parte 2)

Get Ready to Burn es un programa como cualquiera de los que ya hablé en esta oportunidad, pero que intenta tomar lo mejor de cada uno.

Sirve para grabar un conjunto de archivos o carpetas en varios discos grabables de manera de intentar llenar cada disco lo máximo posible y aprovechar al máximo su capacidad.

Get Ready To Burn v0.1

Get Ready To Burn v0.1

  • Multi plataforma (Windows, Mac OS X, Linux, etc.)
  • Soporta diferentes tamaños de CD, DVD y BluRay.
  • Puede generar imágenes ISO directamente (en forma nativa, sin herramientas externas).
  • Sistema de archivos UDF o ISO 9660.
  • Soporta las extensiones de ISO 9660 Joliet y Rock Ridge.
  • Versiones de UDF soportadas: 1.02, 2.01 o 2.60.
  • Opcionalmente se puede sólo separar los archivos en carpetas en lugar de generar imágenes ISO.
  • Drag y drop de carpetas sobre la ventana de la aplicación.
  • Usa 4 algoritmos para calcular la solución (Best Fit, Worst Fit, Next Fit y First Fit) y se queda con el mejor resultado.
  • Es gratuito y su código fuente está disponible bajo licencia GPL versión 3.
Bajar la Última Versión

Bajar la Última Versión

Los 64 bits Son un Privilegio

Leí que el 46% de los que instalaron Windows 7 optaron por la versión de 64 bits. Y que el último Mac OS X no arranca en 64 bits salvo que hagas algo al respecto. Agreguemos a esa situación que sólo el 11% de Windows Vista es de 64 bits y que el 100% de XP es de 32 bits. El panorama, a mitad de 2010, es devastador: casi nadie usa 64 bits y más de la mitad de los que instalan la última versión de Windows y casi todos los que instalan el más reciente OS X siguen con 32 bits.

Y eso a pesar de que en un sistema de 64 bits funcionan todas las aplicaciones de 32 bits. No hay incentivo para que los proveedores de software ofrezcan versiones de 64 bits de sus programas, lo que resta interés de instalar el sistema operativo de 64 bits. Un verdadero círculo vicioso.

Sacando los dueños de una netbook con procesador Atom, casi todos ahí afuera están desperdiciando capacidad de cálculo y no pueden usar más de 4 GB de memoria, entre otras limitaciones. ¿Por qué? Porque en una plataforma cerrada un cambio de arquitectura es prácticamente imposible y aún con todas las condiciones para poder llevarlo a cabo, es un proceso lento y que jamás se completa.

En cambio en Linux, todos usan versiones de 64 bits desde hace por lo menos 4 años. En Linux todos los programas están disponibles en versión de 64 bits y hacen uso de todas las características de los procesadores modernos. Esta flexibilidad es debido a que la enorme mayoría de los programas está disponible con su código fuente para ser compilado a piacere. Aquellos que no lo están, son los menos y sus proveedores se adaptan a lo que esperan el 100% de los usuarios de Linux: proveen versión de 64 bits.

Esta flexibilidad tiene una ventaja invalorable sobre Windows y OS X: próximamente habrá computadoras con procesadores ARM. Con sólo recompilar todos los programas y arreglar los pocos problemas de compatibilidad que surjan en algunas aplicaciones, se dispone de todo el software en una plataforma nueva. Eso que se escribe tan simplemente es prácticamente imposible de llevar a cabo con Windows.

Aún si Microsoft compilara Windows para ARM, no habría aplicaciones disponibles. Tendrían que colaborar todas las empresas que venden programas para Windows y es muy difícil que todas encuentren un motivo para poner tiempo, esfuerzo y dinero en portar sus aplicaciones a una nueva plataforma. En cambio en el mundo Linux, la misma empresa que vende procesadores ARM está colaborando para que todos los programas de Linux estén funcionando bien en sus procesadores. Lo puede hacer porque el código fuente de todos esos programas está disponible para ser mejorado.

Con Evince, el Acrobat Reader va a la Basura

El Adobe Acrobat Reader es un programa pesado, lento y cada vez más molesto de usar porque nos pide actualizarse e incluye funciones que no necesitamos. Sólo queremos poder leer los documentos PDF. Además, que todos lo usen implica el riesgo de que se lo use como trampolín para instalar malware en nuestra PC.

Hay varias alternativas, todas son recomendables, pero una en particular es bastante poco conocida: Evince.

En el link está el instalador  para Windows (MSI). Lo recomiendo calurosamente.

Se vienen las netbooks con ARM y Ubuntu

Puede ser una revolución o un paso más hacia la convergencia digital. Varios fabricantes están preparando computadoras portátiles (netbooks) con procesador ARM.

Estos procesadores (que son omnipresentes en teléfonos móviles como el iPhone o cualquier smartphone Nokia) tienen varias ventajas en cuanto a precio y a consumo por lo que prometen más horas de batería.

Todavía no hay oferta de este tipo de netbooks en el mercado masivo porque se está trabajando para afinar la experiencia con el software.

Windows no se puede ejecutar en ARM, por lo que los fabricantes están experimentando con Ubuntu para darle a sus potenciales compradores una experiencia de notebook y no de una tablet o smartphone.

iPhone y iPad ya corren sobre ARM, pero tienen sistemas operativos específicos, distan de ser una notebook. Los teléfonos que corren Android, corren sobre Linux con ARM, pero son teléfonos. El Nokia N900 tiene un procesador ARM y ejecuta Maemo que está hecho con Linux, pero no llega a ser una netbook porque los programas que se pueden usar deben ser adaptados. Se planea que la próxima encarnación del Nokia N900 sea más parecido a una netbook al reemplazar Maemo con Meego.

Cada nuevo producto borra más y más las diferencias entre netbook, notebook, teléfono y tablet.

Ahora con la próxima llegada de netbooks con ARM y Ubuntu se puede tener una netbook con más autonomía y con la misma experiencia que una notebook tradicional en cuanto a posibilidad de instalar y usar software.

¿Habrá netbooks con ARM y con Windows? Todo parece indicar que no por ahora y tal vez nunca las haya. El problema no es Windows únicamente, sino lo difícil que es lograr que todos los programas para Windows se consigan compilados para ARM. Basta ver que hoy en pleno 2010, cuando desde hace 5 años todos los programas para Linux están disponibles para 64 bits, ningún programa para Windows lo está.

Quienes tienen Windows de 64 bits saben que no existe casi ningún programa, gratuito o pago que ofrezca versión de 64 bits.

Está claro que una netbook con ARM que dé 8 horas de autonomía con batería, que no lleve ventilador y que tenga Ubuntu sería un golazo para muchos.

Una Macbook Carísima

Por $5.399 te compras una portátil DELL de 15,6 pulgadas (core 2 dúo, 4gb RAM, 320gb de disco y Windows 7), pero una Macbook Pro 13 MB990LE/A (2gb RAM, 160gb de disco) sólo te cuesta $7.499. Es un excelente negocio (no para el consumidor).
¡Cuánto marketing hay que usar para que tanta gente gaste tanto más por un producto inferior! ¿Tan caro es el sistema operativo de Apple que encarece tanto las computadoras?

Razones para pasarse a 64 bits

Cada vez más gente tiene en su poder una computadora capaz de ejecutar programas de 64 bits, pero entre los usuarios y proveedores de programas de Windows hay una gran resistencia al pasaje a esa nueva plataforma. Creo que muchos observan que sus programas más usados no tienen versión de 64 bits y no ven las ventajas puede llegar a tener usar la versión de 64 bits de Windows.

Quiero aportar mi granito de arena y enumerar algunas de las ventajas que se obtienen usando programas de 64 bits.

  1. Aprovechar toda la RAM instalada en sistemas con 4 GB o más. Por más que los programas de 32 bits no puedan acceder a más de 2 GB de RAM aún ejecutándose en Windows de 64 bits, el sistema operativo sí tiene esa memoria disponible para caché y para mantener más programas en RAM.
  2. Las operaciones que usan intensivamente la CPU andan más rápido. Y no estamos hablando sólo de comprimir películas o MP3, estamos hablando, por ejemplo, de: mostrar una imagen en Firefox o simples bechmarks comparando Vista de 32 bits contra Vista de 64 bits.
  3. Ejecutando en modo de 32 bits, el procesador desperdicia la mitad de los registros. O visto de otra manera, ejecutando aplicaciones de 64 bits, los programas tienen disponible el doble de registros. El impacto es una menor cantidad de ciclos desperdiciados en leer datos a través del bus de memoria ya que más datos se pueden almacenar en registros (que son memorias internas del procesador).
  4. Un programa compilado para 64 bits puede usar todas las instrucciones SSE disponibles. Cuando un programa se compila para 32 bits no es seguro que esas instrucciones estén disponibles en el hardware ya que no existían en los Pentium. La forma de usarlas era detectar su existencia al arrancar un programa, pero eso requiere que el programador haya tenido la inquietud y no se puede automatizar en el compilador. Es es el caso del Firefox de 64 bits que logra un 15% de mejora en la descompresión de imágenes JPEG sólo con ser compilado para la arquitectura de 64 bits; sin requerir modificar su código fuente.

Uso de memoria: Linux vs. Windows

Con la llegada al mercado de Windows Vista por primera vez las distribuciones de Linux para computadoras personales requieren menos memoria que Windows.

En la época en la que reinaba Windows 98 (entre 1998 y 2001) eran comúnes las PC con 32 MB de memoria RAM. Muy pocos tenían 64 MB y sólo por el 2001 se empezaron a ver computadoras que vinieran con 128 MB. En esa época Linux no era una alternativa para casi nadie, pero mucho menos lo era si tenían 32 MB RAM. Ejecutar KDE o GNONE con tan poca memoria era frustrante. Los usuarios de Linux usaban clientes de correo de consola como el Pine y era común que las distribuciones incorporaran junto a GNOME y KDE otros manejadores de escritorio más livianos como IceWM. Con 64 MB la experiencia era un poco mejor, pero la comparación con Windows 98 era muy desfavorable. Claro que Linux ofrecía muchísimas ventajas en otros aspectos, pero el entorno gráfico era muy pesado y no había forma de acceder a la web decentemente sin usarlo. Linux necesitaba más memoria que Windows.

En 2001 Microsoft sacó Windows XP al mercado y como pasa siempre las PCs nuevas empezaron a incorporarlo preinstalado por lo que ya no se vendieron computadoras con menos de 128 MB. Este salto puso a GNOME y KDE en el mapa ya que ambos funcionaban muy bien con esa cantidad de RAM.

Como puede observarse en las notas de Gnome 2.0 (lanzado al mundo en junio  de 2002) se indica que funcionaba bien con 96 MB y lo confirma otro usuario en otra página. El 2002 fue un año bisagra en la introducción de Linux como sistema operativo de escritorio ya que, además de darse esta circunstancia de que sus requisitos de hardware estaban al alcance de todos, es el año en el que salieron a la luz las versiones 1.0 del navegador Mozilla y de la suite de oficina OpenOffice.org. Sin duda ambas herramientas fundamentales para todos los potenciales usuarios de Linux.

Durante los años de XP (entre el 2001 el 2006) la cantidad de memoria requerida para Windows y para Linux en computadoras de escritorio fue similar. En general se recomendaba 256 MB para XP y las distribuciones más populares de esos días andaban muy bien con esa cantidad.

A partir de 2006 con la llegada de Windows Vista la situación es la inversa. 512 MB es lo mínimo necesario para que Vista arranque (sin todas las funciones activadas), siendo el doble un mínimo más adecuado. La diferencia con Windows XP es notoria: con 512 MB anda perfectamente. Por el lado de Linux, 512 MB es una cantidad más que suficiente y con 256 MB tampoco se tienen mayores problemas. En el artículo anterior en este mismo blog está la tabla con las cantidades mínimas y recomendadas de memoria para Windows y Linux según qué versión.

Hoy en día es común leer en blogs de usuarios de Vista comentarios como que con 2 GB anda bárbaro. Yo todavía no he usado nunca una PC con esa cantidad de memoria, la mía tiene 512 MB (menos 32 MB usados para video), tengo la última versión de Ubuntu y uso programas pesados (Netbeans 6.1) y corro servicios como FirebirdSQL sin sentir que tengo que ir a comprar más memoria.

Hoy se observa cómo los requerimientos de memoria de Linux pasaron a ser menores que los de Windows revirtiendo la situación existente antes de 2001.

Cuando Windows 98 causaba muchos dolores de cabeza a sus usuarios por su inestabilidad, inseguridad y poca solidez Linux perdió la oportunidad de captar más usuarios por sus altos (para la época) requisitos de memoria. Windows XP solucionó los problemas de inestabilidad y poca solidez de su antecesor suprimiendo uno de los motivos principales que podían llevar a usuarios de Windows a cambiar de sistema, pero a la vez equiparó los requisitos de memoria de ambas plataformas. Windows Vista está dejando afuera del mapa a un importante porcentaje de las computadoras en uso y es un excelente momento para que en muchos casos la migración de XP sea a Linux y no a Vista.

Aumento en los requerimientos de RAM de Windows y Linux

Si comparamos versión tras versión de Windows para usuarios de escritorio (3.1, 95, 98, Me, XP y Vista) vemos un aumento exponencial de los requerimientos mínimos de memoria RAM.

Versión Año Mínimo Recomendado
Windows 3.1 1992 2 4
Windows 95 1995 4 8
Windows 98 1998 16 32
Windows Me 2000 32 96
Windows XP 2001 64 128
Windows Vista 2006 512 1024

La tabla considera unos requerimientos mínimos muchas veces ridículos. Todo el mundo sabe que Windows 95 con 4 MB de RAM no funcionaba. Windows XP con 64 MB es algo nunca visto. Ya muchos están comprobando que Windows Vista tampoco funciona bien con 512 MB. Pero aún así el salto de XP a Vista es impresionante como se ve en el gráfico que sigue.

La evolución de las diferentes distribuciones de Linux es difícil de rastrear ya que antes no acostumbraban  publicar el detalle de requerimientos de memoria ya que estos dependían de los programas que uno quisiera usar y de si usaba o no el entorno gráfico. Voy a considerar 3 distribuciones que sí publicaron sus requerimientos cuando fueron presentadas y casualmente son 3 versiones que he usado yo mismo con asiduidad: Red Hat Linux 9, Fedora Core 2 y Ubuntu 8.04.

Versión Año Mínimo Recomendado
Red Hat Linux 9 2003 128 192
Fedora Core 2 2004 192 256
Ubuntu 8.04 2008 256 512

(*) Tengamos presente que «Recomendado» en el caso de Windows podría interpretarse como un «mínimo recomendado» en casi todos los casos. Sin embargo por experiencia propia puedo afirmar que con 256 MB de RAM tanto Fedora Core 2 y Ubuntu 5.10 (que es de fines de 2005 y no está en la lista) andaban mejor que el propio Red Hat Linux 9. La mejora más que seguro es atribuible a optimizaciones en el escritorio Gnome. Ubuntu 8.04 con 512 MB (en realidad cerca de 480 MB por la memoria de video compartida) funciona holgadamente.

Para tener una idea de cuánta memoria era necesaria para ejecutar Linux con entorno gráfico antes de 2003 podemos mencionar los requisitos de Mozilla 1.0 (presentado en 2002): 64 MB. Es poco probable que el entorno gráfico funcionara adecuadamente con menos RAM, aunque siempre hubo versiones minimalistas de manejadores de ventanas menos amigables para el usuario que KDE y Gnome, pero adecuadas para equipos con 32 MB.

El principal resultado es que en una época (allá por los años 90) Windows requería menos memoria que Linux para ejecutar aplicaciones en un entorno gráfico. Aunque esos años de Windows 95, 98 y Me son muy recordados por las pantallas azules y la inestabilidad de Windows. Cuando se lanzó Windows XP con sus 128 MB de memoria «recomendados» el entorno gráfico de Linux ya estaba empatado con Windows en cuánto a uso de RAM, aunque aún atrasado en facilidad de uso. Las mejoras que sobrevinieron en estos años en ese aspecto no implicaron un aumento significativo de los requisitos de memoria.

Uno de los principales motivos para que Windows aumente tanto los requisitos de memoria con cada versión nueva es que su principal canal de venta son los equipos nuevos y éstos salen a la venta con más memoria que los que la gente tiene en su casa comprados con anterioridad. Además la política de MS es adaptar Windows al hardware que estará disponible un par de años a partir de su lanzamiento. Si en 2001 ya se vendían PCs con 256 MB de RAM (las de más altas prestaciones) entonces Windows XP va a tener esa memoria disponible y la puede usar. A los fabricantes de equipos les da un motivo para que le gente compre una nueva PC para poder usar el nuevo Windows.

Por el contrario, las distribuciones de Linux no tienen interés en que la gente compre equipos nuevos, quieren que todos puedan ejecutarlo con la computadora que ya tienen. Claro que quien tenga necesidad de mayor rendimiento tendrá que tener el hardware adecuado.