PIXEL FACEBOOK
logo-blanco

Diferencia Entre Java De 32 Bits Java Y Java De 64 Bits

diferencia entre versiones de java

Lo que vas a encontrar...

En la arquitectura de computadores, la arquitectura de 64 bits en el uso de los procesadores brinda una mayor cobertura en el uso de datos, el tamaño de enteros, y las direcciones de memoria (ocho octetos / bytes). Además, una CPU de 64 bits y arquitecturas ALU son aquellas que se basan en registros, buses de direcciones, o buses de datos de ese tamaño. Desde la perspectiva del software, la informática de 64 bits significa el uso de código con las direcciones de memoria virtual de 64 bits. Del mismo modo, en la arquitectura de 32 bits, la CPU o la programación de 32 bits utiliza 32 bits (cuatro octetos / bytes) para todo lo dicho anteriormente.

En la página de descarga de Java, en la lista de abajo podrás ver varios paquetes de instalación entre ellos paquetes de 32 bits o paquetes de 64 bits para varias plataformas, como Linux o Windows. Pero, ¿Te has preguntado que tipo de versión (32 o 64 bits) es la mejor para desarrollar aplicaciones en Java? En este articulo, voy a tratar de darte una pequeña dirección sobre las diferencias, algo que me había generado dudas sobre la diferencia entre Java de 32 y 64 bits..

Entiende la arquitectura de 32 bits 😉

dudas en javaComo deberías saber, cualquier sistema operativo de 32 bits se limitan a 4096 MB (4 GB) de RAM. Es simple debido a que el tamaño de un valor de 32 bits no permitirá más referencia en la memoria.

2^32 = 4,294,967,296 es decir, más o menos 4.29 GB

Así que, en un sistema de 32 bits puede asignar teóricamente hasta 4 GB de memoria por proceso. Lo que rompe esto en Windows es cómo se maneja el espacio de direcciones del proceso. Windows acorta el espacio de direcciones de los procesos en el medio. Una media de la misma está reservada para el sistema operativo (el cual un proceso de usuario no puede utilizar) y la otra mitad para el usuario. No importa la cantidad de RAM, un proceso de 32 bits sólo puede utilizar 2 GB de RAM. Lo que es aún peor, este espacio de direcciones debe ser contiguo.

Los lectores y conocedores de tecnología podrían saber que los chips modernos soportan PAE, una tecnología de procesador que permite al sistema operativo usar un poco más de memoria, algo como 64 GB; pero también requiere soporte de aplicaciones especiales que la mayoría de las aplicaciones no tienen ni necesariamente necesitan.

¿Que diferencia hay con Java de 64 bits?

Mientras que la arquitectura de 32 bits sólo puede acceder a 4 GB de RAM, un equipo de 64 bits puede acceder a 17,2 MILLONES GB de memoria del sistema, al menos teóricamente. Por lo tanto, debe eliminar todas las barreras de consumo de memoria del sistema.

Las ediciones de Windows Home de 64 bits aún están limitadas a 16 GB de RAM [todo por razones de licencia], pero las versiones Professional y Ultimate pueden utilizar hasta 192 GB de RAM en la actualidad debido a diversos problemas de compatibilidad.

El límite por proceso de RAM también se incrementa, en gran medida de 64 bits de Windows, en lugar de un límite de 2 GB, cada aplicación puede acceder hasta 8 TB de memoria virtual sin ninguna configuración especial (además de que debe estar presente en el sistema). Es un factor muy importante para la elección de su próxima máquina si tenemos en cuenta las aplicaciones como la edición de vídeo o máquinas virtuales pueden necesitar utilizar enormes cantidades de memoria RAM.

Así que ahora tenemos una buena comprensión de las máquinas de 32 bits frente a equipos de 64 bits. Vamos a centrarnos en las características que se relacionan sobre todo con java.

¿Qué versión de Java debes instalar en máquinas de 32 bits / 64 bits?

codigo compilado en javaEstrictamente hablando, en una máquina de arquitectura de CPU de 32 bits, debe instalar Java de 32 bits. Por otro lado, en una máquina de arquitectura de 64 bits, eres libre de elegir entre java de 32 bits  y java de 64 bits. Ambos trabajarán bien. De hecho, la decisión de la versión depende de otros factores, como la máxima memoria necesaria para ejecutar una aplicación en escenarios de alto rendimiento.

Ten en cuenta que la alta disponibilidad de memoria. Tiene un costo en tiempo de ejecución, por ejemplo,

1) Se requiere un 30-50% de más memoria en 64 bits en comparación con 32-bit. ¿Por qué? Principalmente debido a la distribución de la memoria en la arquitectura de 64 bits. En primer lugar, las cabeceras son 12 bytes en JVM de 64 bits. En segundo lugar, las referencias a objetos pueden ser o bien de 4 bytes u 8 bytes, dependiendo de banderas JVM y el tamaño de la pila. Esto definitivamente añade cierta sobrecarga en comparación con los 8 bytes en las cabeceras de 32 bits y 4 bytes en referencias.

2) La recolección de basura más larga pausa. La construcción significa que hay más trabajo por hacer por GC durante la limpieza de los objetos no usados. Lo que significa en la vida real es que tienes que ser muy prudentes en la construcción de pilas más grandes que 12 a 16GB.

¿Puede un archivo .class generado usando un compilador de Java de 32 bits usarse en Java de 64 bits?

Absolutamente si. El código de bytes en Java es independiente de los sistemas de 32 bits o 64 bits. Es por eso que se dice que el código Java compilado será ejecutable en «cualquier» sistema. Recuerda que sólo la máquina virtual está compilada para una arquitectura especial del sistema debido a algunos archivos nativos que tiene en paquete y archivos nativos que no son independientes de la plataforma.

Si es así, entonces las aplicaciones desarrolladas en Java de 32 bits se ejecutan en sistemas de 64 bits? La respuesta es que los sistemas de 64 bits incluyen una capa de compatibilidad llamada WoW64, que en realidad cambia la parte posterior del procesador y cambia entre los modos de 32 bits y 64 bits, dependiendo de que hilo tiene que ejecutar; haciendo correr software de 32 bits sin problemas, incluso en el entorno de 64 bits.

¿Cuál es la cantidad máxima de RAM que se asignará a Java en una máquina de 64 bits ó máquina de 32 bits?

palabras reservadas en javaEl sistema de 64 bits, teóricamente tiene un límite bastante alto para cualquier configuración disponibles en la actualidad (17,2 MILLONES GB de memoria). Todavía hay limitaciones impuestas por los proveedores para diversos fines, que incluyen principalmente la concesión de licencias y la compatibilidad con otras aplicaciones nativas.

Del mismo modo, en la máquina de 32 bits, el límite es de 4 GB, y alrededor de sólo el 1,5 GB es realmente disponible para las aplicaciones de usuario por las razones anteriormente dichas dentro del articulo.

Existe un truco que puede jalar de Windows de 32 bits algo para reducir el espacio del núcleo y hacer crecer el espacio de usuario. Puedes utilizar el parámetro /3GB en el boot.ini. Sin embargo, para utilizar realmente este pequeño truco, la JVM debe ser compilado/enlazado con el modificador /LARGEADDRESSAWARE.

Esto, desafortunadamente, no es el caso, al menos con el Hotspot JVM. Hasta las últimas versiones de JDK la JVM no está compilada con esta opción. Si tienes suerte, y estás ejecutando un JRockit en las versiones posteriores a 2006. En este caso se puede disfrutar de hasta 2.8 a 2.9 GB de tamaño en la pila.

Finalmente

Como se puede entender, la diferencia radica en el uso de la RAM (algo que probablemente ya sabias), pero lo mas importante, es que aun con estas dos versiones, no se pierde el concepto de multi plataforma. Como experiencia propia, puedo decirte que existen aplicaciones o entornos de desarrollo como Apache Ant, que exigen una versión de 32 bits para poder compilar el código. Si tienes alguna experiencia, no dudes en compartirla 😉

Facebook
Twitter
LinkedIn
WhatsApp
  1. Avatar de MiguelMiguel dice:

    Muy Buen aporte, Gracias

  2. Avatar de Gonzalo SánchezGonzalo Sánchez dice:

    Muchas gracias por la información… te dejo una consulta ¿Puede un archivo .class generado usando un compilador de Java de 64 bits usarse en Java de 32 bits?

  3. Avatar de ArielAriel dice:

    Muchas gracias por la explicación =).

  4. Avatar de WerneriaBitsWerneriaBits dice:

    Excelente articulo.

  5. Avatar de GandhyGandhy dice:

    Muy buen artículo tal vez con ejemplo práctico sería un poco mejor comprendido con tamaños de datos y el manejo de la pila.. Desconozco como se llena la pila y como hacer el programa para que sea de arquitectura 64 bits..

Deja una respuesta

Artículos Relacionados

Síguenos