Float vs. Double en Java

Float vs. Double en Java

¿Aprendes Java en la actualidad? Es una excelente idea, pero antes de ponernos manos a la obra explicando qué es float y double allí, es importante saber cómo nació éste lenguaje, así que ¡comencemos!

Java fue desarrollado por Sun Microsystems en el año 1995, aunque comienza a desarrollarse en 1991 para tarjetas inteligentes y sintonizadores de TV. Este lenguaje fue ideado y construido por un equipo de 13 personas al mando de James Gosling, pero no fue porque se les ocurrió y ¡boom! ya hicieron el lenguaje. No, no, Java está basado en C++.

¿Y siempre se llamó así Java? Pues la verdad no. Se llamó primero C++++ pero por temas legales y de confusión decidieron que se llamara Oak (o roble en español) ya que los robles son fuertes (justo había uno frente a la ventana de la oficina de James), pero entonces la vida volvió a sacudir la imaginación y tranquilidad de este equipo y, finalmente, fue renombrado a Java porque este grupo de programadores asistía a una cafetería que se llamaba así. ¿Qué tal?

¿Se imaginan que los hubiesen demandado por copiar el nombre de una cafetería? Bueno, siguiendo el hilo, Java fue lanzado públicamente y oficial en 1996 incluyendo soporte web con el navegador HotJava.

Luego, en 1998, aparecen las primeras versiones de Java. Hablemos un poco sobre cada una.


Java Micro Edition (JAVA ME)

Edición enfocada en la creación de aplicaciones tanto en dispositivos móviles como integrados. Antes estaba orientada a dispositivos con capacidades restringidas.

Puedes desarrollar aplicaciones para teléfonos y televisores inteligentes, consolas de videojuegos, controladores de microprocesadores y mucho más.


Java Runtime Environment (JRE)

Es un conjunto de herramientas que permiten crear un entorno donde puedes correr o ejecutar tus aplicaciones, es decir, para ejecutar Java debes tener un JRE que se adapte a la arquitectura y sistema operativo de tu computador.


Java Development KIT (JDK)

Esta es una extensión del JRE que incluye herramientas y compiladores para crear programas de Java. Tener JRE y JDK es absolutamente necesario para desarrollar una aplicación Java.

Java Virtual Machine (JVM)

Java es un lenguaje compilado, eso significa que cuando compilamos el resultado es un ByteCode, tomado por la JVM y traducido a código máquina (unos y ceros). Así la computadora comprende y ejecuta.

Java Standard Edition (JAVA SE)

Es la edición estándar de Java y la original de Sun Microsystems. Podemos crear tanto aplicaciones web como de escritorio. Cabe mencionar que cuenta con una amplia biblioteca de clases enfocadas en seguridad, red, acceso a base de datos, interfaces gráficas, conexión entre dispositivos y XML entre otras.

Java Enterprise Edition (JAVA EE)

Edición más grande de Java. Contiene toda la Standard Edition y  se usa para crear apps con la arquitectura cliente-servidor.

JAVA EE fue pensado para el mundo empresarial ya que es portable y escalable. Tiene una gran biblioteca de clases, pudiendo trabajar con JSON, email, bases de datos, transacciones y envío de mensajes.

API de Java (librerías)

Una amplia librería de clases que ya viene con el lenguaje Java. Puedes consultar la documentación oficial de Java para conocer más de sus usos.

Ahora que sabes esto dirás: “Ok interesante, pero ¿para qué necesito saber esto?". Fácil, porque si no sabes cómo es la arquitectura de Java, no entenderás qué es un Float o un Double y su diferencia de uso.

Aquí verás dónde va cada detalle, desde lo macro a lo micro. Por ende, necesitamos varias piezas para comenzar a lanzar código y que sea interpretado por el computador.

¿Qué quería Goslin con la creación de Java?

Que el lenguaje fuera multiplataforma: "escríbelo una vez y ejecútalo donde quieras” o WORA (Write it Once, Run Anywhere).

En pocas palabras, Goslin concibió un lenguaje independiente del sistema operativo con un entorno de ejecución llamado JVM (Máquina Virtual de Java), el cual interpreta el bytecode para que, cuando usemos Java, se pudieran ejecutar en Linux, en Windows o en MacIntosh.

Es decir, buscaba la independencia de la plataforma de ejecución.

Pero entonces ¿qué es bytecode?

Es un lenguaje intermedio entre medio del programador y el computador:

Un archivo Java  (JAR) se compila en un lenguaje binario intermedio o que no es 100 por ciento binario. Lo que conocemos nosotros, los desarrolladores, se identifica como el bytecode, el cual es ejecutado e interpretado por la máquina virtual de Java, convirtiéndose ahí en lenguaje binario, el conocido por la máquina, el hardware.

Recuerda que la máquina virtual de Java que ejecuta el bytecode es propia de cada sistema operativo y eso lo hace multiplataforma.

En pocas palabras, tendremos una máquina virtual para Linux, otra para Windows y otra para Mac.

Ahora sí, hablemos de Float y Double

Empecemos con los tipos de datos en Java:


Fíjate en que existen tipos de datos objeto Float y Double con mayúscula, estos tienen un uso diferente a los primitivos float y double que son en minúscula.

¿Por qué existen estos tipos primitivos y no sólo sus objetos equivalentes?

La razón es la eficiencia. Estos tipos básicos son almacenados en una parte de la memoria conocida como stack, manejada directamente por el procesador a través de un registro apuntador (stack pointer). Esta zona de memoria es de rápido acceso, pero tiene la desventaja de que el compilador de Java debe conocer, cuando está creando el programa, el tamaño y el tiempo de vida de todos los datos allí almacenados para generar código que mueva el stack pointer, lo cual limita la flexibilidad de los programas.

En cambio, los objetos son creados en otra zona de memoria conocida como Heap, zona de propósito general que, a diferencia del stack, no requiere que el compilador conozca el tamaño o  el tiempo de vida de los datos allí alojados.

En términos prácticos, abordemos lo que nos interesa como principiantes en tipos de datos de Java: Los datos primitivos (esos que no tienen métodos, no son objetos y tampoco necesitan una invocación para ser creados).

  • double: Ocupa 8 bytes (por eso te di toda la charla de arriba, para que entendieras lo que eso significa).
  • float: Ocupa 4 bytes.

Entonces, ¿cuándo usar cuál?

La respuesta es… depende. Los doubles usan mayor cantidad de memoria que los float. Si se requiere una alta precisión en los cálculos, es mejor utilizar double. Si la precisión no es crítica y se desea ahorrar memoria y recursos computacionales, entonces puedes utilizar float.

Pero ¿y cómo sé eso? ¿Cómo tomo la decisión ante uno u otro?

Debes tener en cuenta cuán exacto necesitas que sea tu número con decimales en tu proyecto. Si los decimales los puedes redondear sin afectar tu proyecto, pues usa mejor float. Si requieres más precisión en tus decimales, usa double. En proyectos cortos no interesa mucho si usas double o float, pero en proyectos muy grandes sí daría una ventaja al momento de ahorrar recursos y memoria.

Si necesitas recursos para apoyarte o entender un poco más sobre Java te recomiendo que revises https://www.w3schools.com/java/

Finalmente, el uso de double o float dependerá del proyecto en el cual estés trabajando y el volumen de información qué tienes que manejar.

Considerando estos dos aspectos, podrás decidir qué necesitas. Esto ha sido todo por hoy. ¡Éxito!

💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Listopro.

Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.