Eber Edgar Quenta Lopez
Cristian David Restrepo Marin
Sabrina Poggi
¿Qué es una Java Virtual Machine?
Una virtual machine es una virtualización o simulación de un sistema operativo o de los procesos que ocurren dentro de este. En nuestro caso, la Java Virtual Machine pertenece al segundo tipo y se encarga de simular los procesos que ocurren dentro de un sistema operativo. A este tipo de máquinas virtuales se les llama Process Virtual Machines.
¿Qué ventaja nos da?
Nos ayuda a manejar los punteros y las referencias de memoria que en otros tipos de lenguaje como C o C++ hay que manejar manualmente. Para esto se utiliza un proceso llamado garbage collection. Este proceso se encarga de revisar qué referencia de memoria no se está utilizando para eliminarla y así reducir la cantidad memoria que puede consumir un programa.
¿Cómo funciona la JVM?
La JVM funciona como un punto medio entre el código que nosotros escribimos y lo que entiende el sistema operativo del ordenador. Dependiendo del sistema operativo que uses puede variar. La JVM nos ayuda a que nuestro código se ejecute en Linux, Windows y MacOS. Nuestro código es convertido por la JVM a un lenguaje que puede entender el sistema operativo llamado Java Bytecode.
En palabras más simples, nosotros ingresamos código de Kotlin y se transforma en Bytecode. Este proceso puede ocurrir con otros lenguajes como Java, esto hace que nuestro código de Kotlin pueda ser utilizado desde Java y el código de Java pueda ser utilizado en Kotlin.
Eber Edgar Quenta Lopez
Cristian David Restrepo Marin
Sabrina Poggi
Braulio Hernandez
Cristian David Restrepo Marin
Jesus Cuadro
Maycol Romero
Laura Roa
Miguel Angelo Silva
Diego Alejandro Pardo Montero
ENRIQUE LUIS REVOLLO ESCUDERO
Laura Roa
Jesus Orlando Carcamo Posada
Pablo Cristóbal Castro
Denis Gomez
Yonathan Rivas
Esteban Velazquez Cruz
Juan Marcelo Panasiti
Cesar Laurenti
Omar Flores
EDITH VANESA QUISPE HUAMAN
Orlando Betin
Orlando Betin
Cesar Laurenti
Cesar Laurenti
Christian Fallas
John Heder Giraldo Giraldo
María Luisa Castañeda López
👍
Gracias
Bytecode vs lenguaje ensamblador Bytecode es similar a lenguaje ensamblador en que no es un lenguaje de alto nivel, pero todavía es algo legible, a diferencia del lenguaje de máquina. Ambos pueden considerarse "lenguajes intermedios" que se encuentran entre el código fuente y el código de máquina. La principal diferencia entre los dos es que el código de bytes se genera para una máquina virtual (programa.), mientras que el lenguaje ensamblador se crea para un CPU (hardware).
👍
Gracias capo
Perdone profe, pero la defincion en los ultimos 2 parrafos no es correcta.
Al realizar la compilacion de un fichero, el compilador (JAVAC) y no la JVM, se encarga de convertir el codigo a Bytecode. Los ficheros (.class) resultantes son ejecutados por la JVM y traducidos a codigo maquina, para que luego ese codigo maquina, sea ejecutado por el procesador.
Saludos!
La JVM interpreta el bytecode en algo que cada sistema operativo puede entender
lo transforma en código máquina
Muy interesante como puede llegar al mismo punto desde diferentes lenguajes. Desde luego, es muy poderosa la JVM.
Así es, de esta manera Kotlin es muy versatil en la medida que la JVM permite su transformación a Bytecode.
Soy nueva programando. Me podrian Explicar a que se refiere cuando dice "Manejar los punteros"? Gracias
En lenguajes de más bajo nivel como C, cuando creas una variable, además de manejar el valor también tienes que tratar con su dirección física en memoria RAM, a lo cual se le llama un puntero. Y como tienes que manejar punteros, también tienes que decirle al programa específicamente cuando quieres eliminar una variable en memoria, cosa que Java hace automáticamente cuando nota que ya no se esta usando.
Hola profe un apunte:
[...] Para esto se utiliza un proceso llamado garbage collection. [...]
¿No será Garbage Collector?
La similitud entre ambos lenguajes, hacen que kotlin sea la nueva actualización de java, uno de los códigos base en la programación de multiplataforma, kotlin nace como la alternativa o como un hijo de todo lo aprendido por java.
Kotlin potencializa el código, ayudándolo a simplificar una sintaxis algo robusta y rígida en la programación con java. Mejora la compilación y los tiempos de respuesta en la virtualización del su código fuente.
Si se pueden tener archivos .java y .kt en un mismo proyecto.. y teniendo kotlin tantas ventajas sobre java.. qué impedimentos hay para que los proyectos que actualmente corren con java no se comiencen a migrar a kotlin? mas alla de los obvios como el tiempo y el dinero..
Poniendo la pregunta de otra manera.. que razones pueden haber para que un proyecto hecho en java no sea migrado a kotlin?
Pienso que mas que nada es un tema de niveles de adopción del lenguaje. Hoy tienes infinitamente mas desarrolladores java que kotlin. Si haces todo en kotlin luego tienes dependencia de programadores kotlin, que todavia no son tan frecuentes de obtener como los java. Basta con mirar la plataforma de Platzi y ver cuanta informacion hay de Kotlin y cuanta de Java.
El tema de Java Virtual Machine ocupa un lugar fundamental en el curso de Kotlin desde cero. Se presenta en el módulo "Introducción a Kotlin" y es esencial para entender cómo Kotlin se ejecuta en diferentes sistemas operativos gracias a la JVM. La JVM actúa como intermediario que convierte el código de Kotlin en Bytecode, permitiendo su interoperabilidad con Java. Este conocimiento es crucial para manejar correctamente las referencias de memoria y optimizar el uso de recursos en tus proyectos de programación en Kotlin.
Kotlin es un lenguaje de programación moderno, conciso y seguro, diseñado para ser interoperable con Java. Se utiliza principalmente para el desarrollo de aplicaciones móviles en Android, pero también es adecuado para backend y programación en la línea de comandos (CLI). Kotlin permite aplicar conceptos de programación funcional y maneja automáticamente los punteros y referencias de memoria a través del garbage collection, facilitando así el desarrollo de software robusto y eficiente.
La programación nativa se refiere al desarrollo de aplicaciones que utilizan directamente las herramientas y APIs del sistema operativo. En el contexto de Kotlin y la Java Virtual Machine (JVM), Kotlin permite que el código se ejecute de manera eficiente en múltiples plataformas, como Android, gracias a su interoperabilidad con Java. Esto significa que, aunque puedes programar en una forma más "nativa", la JVM facilita la portabilidad y el manejo de memoria a través de su garbage collection, eliminando muchos de los inconvenientes de lenguajes como C o C++.
Kotlin, al ser un lenguaje de programación que corre sobre la Java Virtual Machine (JVM), puede utilizarse con o sin frameworks. Si bien muchos desarrolladores optan por frameworks como Spring o Ktor para facilitar el desarrollo de aplicaciones, no es un requisito.
Puedes programar en Kotlin utilizando sus características y bibliotecas estándar sin necesidad de un framework. Esto te proporciona flexibilidad en el desarrollo y la elección de las herramientas que mejor se adapten a tus necesidades.
El grabage collector "solo" se encarga de elimininar los objetos que estan en memoria pero ya no estan referenciados, y no tiene nada que ver con el manejo de punteros.
La principal ventaja de que use la JVM, por encima de cualquier otra, es la portabilidad. Una vez que obtenemos el bytecode, el mismo puede ser ejecutado en cualquier sistema operativo con solo instalarle una JVM. Esta es la principal ventaja sobre un lenguaje compilado, este ultimo crea un ejecutable que es mucho mas veloz, pero que no es portable entre sistemas operativos.
Te has preguntado, como es que el bytecode generado por JVM es ejecutado finalmente por el procesador?
Bueno aquí la respuesta:
El bytecode generado por la Java Virtual Machine (JVM) es un conjunto de instrucciones que se ejecuta en la máquina virtual. Permíteme explicarte cómo funciona:
.class.En resumen, el bytecode generado por la JVM se ejecuta mediante un proceso de interpretación y, en algunos casos, compilación JIT, antes de llegar al procesador para su ejecución**.**
La maquina virtual el poder de estos lenguajes para garantizar interoperabilidad en diferentes S.operativos
Saludos