Me he dedicado a seguir varios blogs con temas de mi interés, pero nunca se me cruzó por la mente crear uno. Ahora, por razones académicas, me veo en la "obligación" de comenzar con uno, así que , para quien lo lea, espero le sirva de algo y obviamente, si tiene algún comentario constructivo, mejorarlo, y sobre todo, para corregir la información que se escribe en éste (después de todo, aquí anotaré todos los trabajos que me soliciten en la Universidad deje en línea).
Esta vez comenzaremos con algunos coneptos de Java, Lenguaje de programación que en este momento estoy aprendiendo, y que de los que he visto hasta ahora, creo que es el que más me ha gustado.
Maquina Virtual de Java
La Máquina Virtual de Java, o JVM (Java Virtual Machine) es
un programa nativo el cual permite ejecutar las aplicaciones Java en cualquier
máquina, independiente del sistema operativo que utilice, es decir, permite la
portabilidad de las aplicaciones Java.
La JVM es prácticamente un compilador de bytecode que
convierte el código a java a lenguaje máquina para que éste sea ejecutado en
una plataforma específica.
Los programas en Java se organizan en clases, y éstos se
codifican en archivos de texto con extensión .java. Estos archivos, al
compilarse, generan uno o varios archivos con extensión .class, los cuales se
denominan bytecode. Éstos son los archivos que no pueden ejecutarse en
cualquier máquina
Entre las tareas que debe realizar JVM están:
Reservar espacio en la memoria para los objetos que se
crean
Liberar la memoria que no se utiliza (garbage collection)
Asignar variables a registros y pilas
Vigilar el cumplimiento de las normas de seguridad de las
aplicaciones Java.
Garbage Collector:
Para entender este concepto, aclararemos 3 conceptos más para poder entenderlo mejor,
estos son Zona de Datos, Stack y Heap , los cuales son parte de la
memoria.
Zona de Datos:
La Zona de Datos es donde se guardan las
instrucciones del programa, las clases, los métodos, y las constantes), esta
parte de la memoria es totalmente fija, y no puede ser cambiada durante el
proceso de ejecución.
Stack
El stack es
algo parecido a un array, el cual tiene un tamaño fijo durante el tiempo de ejecución.de
un programa. Aquí es donde se guardan
las instancias y los datos primitivos, se almacenan las variables locales,
parámetros/valores de retorno de los métodos, etc.
Heap
Es la zona de la memoria dinámica, donde los objetos son creados, eliminados o modificados.
La Java Virtual Machine le asigna un espacio predeterminado de memoria, pero en el caso que se necesitase más memoria, la
JVM le solicita al S.O. la memoria necesitada, y según se vaya requiriendo, la
JVM le seguirá proporcionando más memoria.
Por fin hablamos del Garbage Collector:
Según lo explicado anteriormente, cada vez que creamos un
objeto tenemos memoria en uso (zona de datos), y si no tenemos cuidado de
borrarlo de forma “manual” (esto corre por parte del programador al crear un
programa en otros lenguajes, como en C), podríamos tener un OutOfMemory. Para
evitar esto, el Garbage Collector se encarga de revisar los elementos que
pueden ser borrados y cuáles no. ¿Y cómo logra determinar cuáles pueden ser
borrados? Fácil, todos los elementos en memoria que estén perdidos, no tengan
referencias y obviamente no se puedan accesar, son los que el Garbage Collector
se encarga de eliminar.
Métodos de Programación Orientada a Objetos
Java es un lenguaje de programación orientado a objetos,
y como tal, cuenta con métodos que hacen que la creación de objetos sea más o
menos fácil de manejar. Entre algunos de estos objetos podemos encontrar:
Encapsulamiento
Abstracción
Polimorfismo
Herencia
Encapsulamiento:
Consiste en hacer privadas las variables que son
innecesarias para el tratamiento del objeto pero necesarias para su
funcionamiento, es decir, se encarga de
mantener ocultos los procesos internos que necesita el programa para hacer lo
que sea que haga, dándole al programador acceso sólo a lo que necesita.
Abstracción.
La Abstracción, más que un método, es una característica
de la Programación Orientada Objetos la cual consiste en captar las características
esenciales de un objeto, así como su comportamiento. Es ver un objeto desde un
punto de vista de “qué hace” sin preocuparse del “como lo hace” detalladamente.
Polimorfismo.
Es la propiedad que permite que un objeto tome muchas
formas, es decir, permite referirse a
objetos de clases diferentes mediante el mismo elemento de programa y realizar
la misma operación de diferentes formas.
Herencia.
La herencia es una propiedad en la Programación Orientada
a Objetos que nos permite que los objetos sean creados a partir de objetos que
ya existen, los cuales tendrán atributos y métodos similares a los ya
existentes.