lunes, 14 de mayo de 2012

Trabajo de Taller de Programación 1 (Java)

He aquí mi primera entrada al blog, además de ser mi primera vez como bloguer.
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.