Bytecode es un código de objeto informático de software que solo puede ser interpretado por un programa de software, normalmente descrito como máquina virtual. En muchas plataformas de desarrollo de software modernas, se prefiere el código de bytes al código de máquina de bajo nivel, ya que coloca un intérprete entre el programa de software y el hardware de la computadora. El código de máquina depende de la plataforma, lo que requiere la compilación en cada plataforma de hardware para ejecutarse correctamente en esa plataforma específica.
A medida que los paradigmas de desarrollo de software han madurado con el tiempo, también lo ha hecho el uso de capas externas de interpretación entre el hardware de una computadora y el software que se ejecuta en la computadora. Al comienzo de la creación temprana de software, los desarrolladores dependían del hardware, los controladores y los sistemas operativos subyacentes. Esta dependencia obligó a los desarrolladores a comprender en profundidad muchos aspectos de las computadoras específicas, lo que dificultaba mucho la independencia de la plataforma y hacía que el crecimiento del software estuviera estrechamente vinculado a proveedores específicos de hardware y software.
La creación de bytecode ha creado un entorno de independencia de plataforma en la comunidad de desarrollo de software. Con el uso de esta metáfora, los desarrolladores de software pueden escribir una vez y usar en todas partes. Los desarrolladores no están obligados a comprender los controladores nativos de una computadora específica, ni les preocupa el sistema operativo subyacente en el que se ejecutará el software.
Una máquina virtual es el término utilizado en el lenguaje de programación Java ™ para representar el programa de software que interpretará el código de bytes. Esta máquina virtual convertirá el código de bytes según sea necesario para interactuar con el hardware y el sistema operativo subyacentes dentro de la computadora. El código de máquina generado por la máquina virtual está oculto para el desarrollador del programa de software Java ™ y puede funcionar completamente en múltiples plataformas sin requerir una reescritura de la aplicación de software para cada plataforma.
Los aspectos internos del código de bytes son un tema más avanzado y, por lo general, no es necesario que la mayoría de los desarrolladores comprendan. Bytecode no es un lenguaje legible por humanos y consiste en representaciones codificadas numéricamente de clases, métodos y el alcance de los objetos y su anidación dentro de clases. Cada código de operación de código de bytes tiene una longitud de un solo byte.
El lenguaje de máquina requerido para que las computadoras modernas funcionen con comandos es de naturaleza patentada por el proveedor. Cada hardware y sistema operativo tiene una forma única de manejar los procesos, la asignación de memoria y la utilización de tareas. Mediante el uso de una aplicación de desarrollo de software de código de bytes, el intérprete de la máquina virtual es responsable de crear el código de la máquina que se requerirá para ejecutarse en la plataforma propietaria.