introduccion java

47
UD Lenguajes y Herramientas de Desarrollo de Software Actividad 1: Introducción

Upload: alexander-ramirez-melendez

Post on 21-Jul-2015

91 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Introduccion Java

UD – Lenguajes y Herramientas de Desarrollo de Software

Actividad 1: Introducción

Page 2: Introduccion Java

Introducción

El contenido de la siguiente presentación es íntegramente elcontenido del curso Java Programming Language, Java SE 6 deOracle, con algunos agregados propios de Iberotec.

Se utiliza el material oficial de Oracle, por ser Iberotecmiembro del Oracle Academy.

Page 3: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 4: Introduccion Java

Qué es la tecnología Java

La tecnología Java es:

o Un lenguaje de programación.

o Un entorno de desarrollo.

o Un entorno de aplicaciones.

o Un entorno de implantación.

Page 5: Introduccion Java

Qué es la tecnología Java

La tecnología Java es:

o Un lenguaje de programación

La sintaxis del lenguaje Java es similar a la de C++. Es posibleutilizar Java para crear cualquier tipo de aplicación que pudieracrearse con otro lenguaje.

o Un entorno de desarrollo

Como entorno de desarrollo, la tecnología Java proporcionauna amplia variedad de herramientas: un compilador, unintérprete, un generador de documentos, una herramientapara empaquetar archivos de clases y muchas más.

Page 6: Introduccion Java

Qué es la tecnología Java

La tecnología Java es:o Un entorno de aplicaciones

El lenguaje Java suele mencionarse en el contexto de lasaplicaciones World Wide Web (web) y los navegadores que soncapaces de ejecutar programas llamados applets(miniaplicaciones). Los applets son programas escritos enlenguaje Java que residen en los servidores web y que seejecutan a través de un navegador que los descarga en unsistema cliente. Suelen ser de pequeño tamaño para reducir eltiempo de descarga y la llamada para ejecutarlos se realizadesde una página web HTML (Hypertext Markup Language).

Las aplicaciones Java son programas autónomos que norequieren la presencia de un navegador de web paraejecutarse. Normalmente son programas genéricos que seejecutan en cualquier máquina donde se encuentre instaladoel entorno de ejecución de Java (JRE).

Page 7: Introduccion Java

Qué es la tecnología Java

La tecnología Java es:

o Un entorno de implementación

Existen dos grandes entornos de implementación.

El primero es el JRE suministrado a través del kit dedesarrollo de software (SDK) Java 2, que contiene el juegocompleto de archivos de clases para todos los paquetes Java,lo que incluye las clases básicas del lenguaje, las clases decomponentes de la interfaz gráfica (GUI) y un API avanzadode colecciones (Collections) entre otros.

El otro entorno de implementación fundamental es el propionavegador del usuario. La mayoría de los navegadorescomercializados proporcionan un intérprete y un entorno deejecución de Java.

Page 8: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 9: Introduccion Java

Objetivos fundamentales de la tecnología Java

Objetivos fundamentales de la tecnología Java

o Java proporciona lo siguiente:

Un lenguaje en el que resulta fácil programar porque:

Resuelve carencias de otros lenguajes como las relativas a laaritmética de punteros y la gestión de la memoria, que afectan ala solidez y fiabilidad del código.

Es orientado a objetos para ayudar a visualizar el programa deuna forma más cercana a la realidad.

Permite simplificar el código

Un lenguaje interpretado (genera código directamente enbytes), lo que proporciona las siguientes ventajas:

Rapidez de desarrollo: reduce el ciclo compilación-enlace-carga-prueba.

Portabilidad del código: permite escribir código que puedeejecutarse en numerosos sistemas operativos sobre cualquierJVM certificada.

Page 10: Introduccion Java

Objetivos fundamentales de la tecnología Java

Objetivos fundamentales de la tecnología Java

o Java proporciona lo siguiente:

Una forma de que los programas ejecuten múltiples procesosde forma simultánea.

Una manera de cambiar los programas de forma dinámicadurante el tiempo de ejecución permitiéndoles descargarmódulos de código.

Una forma de garantizar la seguridad mediante lacomprobación de los módulos de código cargados.

Page 11: Introduccion Java

Objetivos fundamentales de la tecnología Java

Objetivos fundamentales de la tecnología Java

o La arquitectura de Java utiliza los siguientes elementos paracumplir los objetivos enumerados:

La JVM (Java Virtual Machine)

El reciclaje de memoria

El JRE (Java Runtime Environment)

JVM Tool Interface: interfaz de herramientas de JVM

Page 12: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 13: Introduccion Java

Objetivos fundamentales de la tecnología Java

Máquina Virtual de Javao El documento The Java Virtual Machine Specification define la

máquina virtual de Java como:

o La especificación de la JVM incluye las especificaciones de lasplataformas de hardware para las que se compila todo el código deJava. Esta especificación es la que permite que el software de Javapueda ser independiente de la plataforma, porque la compilaciónse realiza para una máquina genérica conocida como la JVM. Esposible emular esta máquina genérica en software para que seejecute en diferentes sistemas informáticos del mercado oimplementarla en hardware.

Una máquina imaginaria que se implementa como una emulación desoftware sobre una máquina real y actúa como puente entre el códigobinario de Java y la plataforma (Sistema Operativo + Procesador). Elcódigo de la JVM se guarda en archivos .class, cada uno de los cualescontiene código de una clase pública como máximo.

Page 14: Introduccion Java

Objetivos fundamentales de la tecnología Java

Máquina Virtual de Javao El compilador lee el código fuente de la aplicación Java y genera

bytecodes o código de byte. El código de byte son instrucciones decódigo en formato máquina para JVM. Cada intérprete de Java,independientemente de que sea una herramienta de desarrollo deaplicaciones Java o un navegador de web, tiene unaimplementación de la JVM.

o La especificación de JVM proporciona definiciones concretas parala implementación de los siguientes elementos: un juego deinstrucciones (equivalente al de una CPU o unidad deprocesamiento central), un juego de registros, el formato dearchivo de clases, una pila de tiempo de ejecución, un área dealmacenamiento y reciclaje de la memoria dinámica, una zona dememoria, un mecanismo de comunicación de errores graves yfunciones de temporización de alta precisión.

Page 15: Introduccion Java

Objetivos fundamentales de la tecnología Java

Máquina Virtual de Javao El formato del código de la máquina virtual consta de códigos de

byte pequeños y eficientes. Los programas que presenten estecódigo deben atenerse a la disciplina de tipos de datos adecuada.La mayor parte de la comprobación de tipos se realiza durante lacompilación.

o Cualquier intérprete de Java compatible debe ser capaz de ejecutarcualquier archivo de clases que cumpla los requisitos de formatoespecificados en el documento The Java Virtual MachineSpecification para este tipo de archivos.

o El diseño de JVM permite crear implementaciones para numerososentornos operativos. Por ejemplo, Sun Microsystems proporcionaimplementaciones de JVM para Solaris, Linux y MicrosoftWindows.

Page 16: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 17: Introduccion Java

Objetivos fundamentales de la tecnología Java

Reciclaje de memoria dinámicao Muchos lenguajes de programación permiten asignar la memoria

de forma dinámica durante el tiempo de ejecución. El proceso deasignación de la memoria varía en función de la sintaxis dellenguaje, pero siempre implica devolver un puntero a la direcciónde inicio de un bloque de memoria.

o Cuando la memoria asignada deja de ser necesaria (el puntero quehace referencia a ella ha abandonado su referente), el programa oel entorno de ejecución debería liberarla.

o En C, C++ y otros lenguajes, el programador es el responsable deliberar la memoria. Esto puede ser una tarea complicada enocasiones, porque no siempre se sabe con antelación cuándo debequedar libre. Los programas que no liberan la memoria puedenbloquearse en un momento dado porque ya no queda memoria enel sistema para asignar. Cuando esto ocurre, se dice que elprograma pierde memoria.

Page 18: Introduccion Java

Objetivos fundamentales de la tecnología Java

Reciclaje de memoria dinámicao El lenguaje Java descarga al programador de la responsabilidad de

liberar la memoria. Proporciona un hilo en el nivel del sistema quehace el seguimiento de cada asignación de memoria. Durante losciclos de inactividad de la JVM, el mecanismo de reciclaje busca lamemoria en desuso y la libera.

o Esta operación se realiza de forma automática mientras dura elprograma Java, lo que elimina la necesidad de liberar la memoria y,con ello, el riesgo de “pérdidas”. No obstante, los modelos dereciclaje de la memoria pueden variar considerablemente en cadaimplementación de JVM.

Page 19: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 20: Introduccion Java

Objetivos fundamentales de la tecnología Java

Entorno de Ejecución de Javao En la Figura se ilustra el entorno de ejecución de Java (JRE) y la

forma en que maneja la seguridad del código.

Page 21: Introduccion Java

Objetivos fundamentales de la tecnología Java

Entorno de Ejecución de Javao Los archivos de código fuente de Java se compilan en el sentido de

que se convierten en un conjunto de códigos de un byte a partirdel formato de texto en el que se escriben. Los códigos de byte seguardan en archivos .class.

o Durante el tiempo de ejecución, los códigos de byte que componenun programa Java se cargan, comprueban y ejecutan a través de unintérprete. En el caso de los applets, es posible descargar loscódigos de byte para luego interpretarlos a través de la JVMintegrada en el navegador. El intérprete tiene dos funciones:ejecuta dichos códigos y efectúa las llamadas apropiadas alhardware de la plataforma.

Page 22: Introduccion Java

Objetivos fundamentales de la tecnología Java

Entorno de Ejecución de Javao En algunos entornos de ejecución de Java, una parte del código de

byte verificado se compila adaptándolo al código máquina nativo yse ejecuta directamente en la plataforma de hardware. Estopermite al código del programa Java ejecutarse a velocidadespróximas a las del lenguaje C o C++ con una pequeña demora en eltiempo de carga para permitir que el código se compile en formade código máquina.

Page 23: Introduccion Java

Objetivos fundamentales de la tecnología Java

Entorno de Ejecución de Java

Nota: Sun Microsystems ha mejorado la JVM agregando tecnologías queaumentan el rendimiento. Una de ellas es la llamada máquina virtual JavaHotSpot™, con la que es posible conseguir que el lenguaje Java se ejecute ala misma velocidad que el código C++ compilado.

Page 24: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 25: Introduccion Java

Objetivos fundamentales de la tecnología Java

Tareas de JVMo En esta sección se examinan en mayor profundidad las tres tareas

fundamentales de la máquina virtual de Java:

Cargar el código: a través del cargador de clases.

Verificar el código: a través del verificador de códigos de byte.

Ejecutar el código: a través del intérprete de tiempo de ejecución.

Page 26: Introduccion Java

Objetivos fundamentales de la tecnología Java

Cargador de claseso El cargador de clases obtiene todas las clases necesarias para la

ejecución de un programa. Para mayor seguridad, lo haceseparando los espacios de nombres de las clases del sistema dearchivos local y los espacios de nombres procedentes de la red.Esto reduce la posibilidad de entrada de troyanos, porque lasclases locales se cargan primero.

o Una vez cargadas todas las clases, se determina la distribución dela memoria del archivo ejecutable. En este momento, se asignanlas direcciones concretas de memoria a las referencias simbólicas yse crea la tabla de búsqueda. Dado que la distribución de lamemoria se produce en el momento de la ejecución, el intérpretede Java introduce un mecanismo de protección contra accesos noautorizados a zonas restringidas del código.

Page 27: Introduccion Java

Objetivos fundamentales de la tecnología Java

Verificador de los códigos de byteo El código del software Java se somete a distintas comprobaciones

antes de ejecutarse en una máquina. La JVM lo hace pasar a travésde un verificador de códigos de byte que busca posiblesfragmentos de código ilícito, es decir, código que falsea punteros,infringe los derechos de acceso a los objetos o intenta cambiar lostipos de los objetos.

Nota: Todos los archivos de clases importados desde la red pasanpor el verificador de códigos.

Page 28: Introduccion Java

Objetivos fundamentales de la tecnología Java

Proceso de verificacióno El verificador de códigos efectúa cuatro pasadas sobre el código de

un programa. De esta forma se garantiza el cumplimiento de lasespecificaciones de la JVM y la integridad del sistema. Si despuésde las cuatro pasadas el verificador no encuentra ningún error,significa que:

Las clases son conformes con el formato de archivos de clases de laespecificación de JVM.

No se han producido intentos de infringir las reglas de acceso.

El código no provoca desbordamiento ni falta de operandos en la pila.

Todos los tipos de parámetros de los códigos operativos son correctos.

No se han realizado conversiones de datos irregulares tales como laconversión de enteros en referencias a objetos.

Page 29: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 30: Introduccion Java

Aplicación Java sencilla

o Como en el caso de cualquier otro lenguaje deprogramación, Java se utiliza para crear aplicaciones. Losejemplos a continuación contienen una aplicación Javasencilla creada para enviar un saludo a través de la pantalla.

// Ejemplo de aplicación de "Saludo“. Clase TestGreetingpublic class TestGreeting {

public static void main (String[] args) {Greeting hello = new Greeting();hello.greet();

}}

//Clase Greeting.javapublic class Greeting {

public void greet() {System.out.println("hola");

}}

Page 31: Introduccion Java

Aplicación Java sencilla

Cuando se especifica un nombre de clase en un archivo decódigo fuente, al compilar dicho archivo se crea un archivonombreclase.class.

Si no se especifica ningún directorio de destino que pueda usarel compilador, el archivo de clase se situará en el mismodirectorio en el que se encuentre el archivo fuente. En este caso,el compilador crea un archivo llamado TestGreeting.class. Estearchivo contiene el código compilado de la clase públicaTestGreeting.

Page 32: Introduccion Java

Aplicación Java sencilla

El método main es el punto donde empieza a ejecutarse elprograma. El intérprete de Java debe encontrar esta sentenciaexactamente tal y como se muestra o deniega la ejecución.

Otros lenguajes de programación, entre los que destacan C yC++, también utilizan la declaración main() como punto departida de la ejecución. A continuación se describen las distintaspartes de esta declaración. Los detalles se explican más adelanteen este curso.

Si el programa recibe argumentos en su línea de comandos,éstos se pasan al método main() en un array de String llamadoargs. En este ejemplo no se ha utilizado ningún argumento.

Page 33: Introduccion Java

Aplicación Java sencilla

A continuación se explica cada elemento del método main:

o public: al método main() puede acceder cualquier componente deJava, incluido el intérprete.

o static: esta palabra clave indica al compilador que el métodomain() puede utilizarse en el contexto de la clase TestGreeting. Nose necesita ninguna instancia de la clase para ejecutar métodosestáticos.

o void: esta palabra clave indica que el método main() no devuelveningún valor. Esto es importante porque el lenguaje Java realizauna cuidadosa comprobación de tipos para asegurarse de que losmétodos a los que se ha llamado devuelvan los tipos de datos conlos que se han declarado.

Page 34: Introduccion Java

Aplicación Java sencilla

o String args[]: este método declara el único parámetro delmétodo main, args, y utiliza como tipo un array String.Cuando se llama a este método, el parámetro args contienelos argumentos introducidos en la línea de comandos detrásdel nombre de clase, por ejemplo:

o La siguiente línea se muestra cómo crear un objeto al quehace referencia la variable hello. La sintaxis new Greetingindica al intérprete de Java que construya un nuevo objetode la clase Greeting.

java TestGreeting Hola Mundo

Greeting hello = new Greeting();

Page 35: Introduccion Java

Aplicación Java sencilla

o En la siguiente línea se muestra una llamada a un método deun objeto. Esta llamada indica al objeto hello que envíe unsaludo (greet). La implementación de este método puedeverse en el archivo Greeting.java

o La siguiente línea se muestra cómo crear un objeto al quehace referencia la variable hello. La sintaxis new Greetingindica al intérprete de Java que construya un nuevo objetode la clase Greeting.

Greeting hello = new Greeting();

hello.greet();

Page 36: Introduccion Java

Aplicación Java sencilla

o En las siguientes líneas se muestra la declaración de unmétodo. El método se ha declarado public, lo que permite alprograma TestGreeting acceder a él. No devuelve ningúnvalor, por lo que se utiliza void como tipo de retorno.

o El método greet envía un mensaje en forma de cadena detexto a la salida stándar. El método println() se utiliza paraescribir dicho mensaje en la salida.

public void greet() {System.out.println(“hola”);

}

Page 37: Introduccion Java

Aplicación Java sencilla

Compilación y ejecución del programa TestGreetingo Después de crear el archivo de código fuente TestGreeting.java,

compílelo mediante la línea siguiente:

o Si el compilador no devuelve ningún mensaje, el nuevo archivoTestGreeting.class se almacena en el mismo directorio que elarchivo fuente, a menos que se especifique otra cosa. El archivoGreeting.java se ha compilado en Greeting.class. El compiladorrealiza esta operación automáticamente porque la claseTestGreeting utiliza la clase Greeting.

javac TestGreeting.java

Page 38: Introduccion Java

Aplicación Java sencilla

Compilación y ejecución del programa TestGreetingo Para ejecutar la aplicación TestGreeting, utilice el intérprete de

Java. Los archivos ejecutables de las herramientas de Java (javac,java, javadoc, etc.) están situados en el directorio bin.

o Nota: Debe definir la variable de entorno PATH de forma queencuentre java y javac. Asegúrese de que incluya raíz_java/bin(donde raíz_java representa el directorio raíz donde está instaladoel software de la tecnología Java).

java TestGreeting

Page 39: Introduccion Java

Actividad 1: Introducción

1. Qué es la tecnología Java

2. Objetivos fundamentales de la tecnología Java

o Máquina virtual de Java.

o Reciclaje de memoria dinámica.

o Entorno de ejecución de Java.

o Tareas de JVM™

3. Aplicación Java sencilla

o Solución de errores de compilación

Page 40: Introduccion Java

Aplicación Java sencilla

Solución de errores de compilacióno En las próximas secciones se describen los errores que pueden

aparecer al compilar el código de los programas.

o Errores producidos durante la compilación

A continuación se citan algunos errores que suelen producirsedurante la compilación, junto con ejemplos de los mensajespresentados por el compilador o por el programa en ejecución.Los mensajes pueden variar en función de la versión de Java 2SDK que esté utilizando.

Page 41: Introduccion Java

Aplicación Java sencilla

Solución de errores de compilación

o La variable PATH no se ha configurado adecuadamente paraincluir el compilador javac. El compilador javac está situadoen el directorio bin, debajo del directorio donde seencuentra instalado el software del JDK™ (Java DevelopmentKit).

javac: Command not found

Page 42: Introduccion Java

Aplicación Java sencilla

Solución de errores de compilación

o El nombre del método println se ha escrito de formaincorrecta.

Greeting.java:4:cannot resolve symbolsymbol : method printl (java.lang.String)location: class java.io.PrintStreamSystem.out.printl("hola");

^

Page 43: Introduccion Java

Aplicación Java sencilla

Solución de errores de compilación

o Si el archivo .java contiene una clase pública, el nombre delarchivo debe ser igual que el nombre de la clase. Porejemplo, la definición de la clase en el ejemplo anterior es:

o Por tanto, el nombre del archivo fuente debe serTestGreeting.java. Si ha denominado al archivoTestGreet.java, recibirá el siguiente mensaje de error:

Nombres de clases y archivos

public class TestGreeting

TestGreet.java:4: Public class TestGreeting must bedefined in a file called "TestGreeting.java".

Page 44: Introduccion Java

Aplicación Java sencilla

Solución de errores de compilación

o Sólo debe declarar una clase no estática de nivel superior en cadaarchivo fuente y el nombre de la clase debe ser idéntico al delarchivo. Si declara varias clases públicas, aparecerá el mismomensaje que en el punto anterior por cada clase pública cuyonombre no sea idéntico al del archivo.

Cantidad de clases utilizadas

Page 45: Introduccion Java

Aplicación Java sencilla

Errores producidos durante la ejecución

o Normalmente esto significa que el nombre especificado para laclase en la línea de comandos difiere del nombre del archivonombrearchivo.class . En el lenguaje Java, existe diferencia entremayúsculas y minúsculas.

Can't find class TestGreeting

Por ejemplo:public class TestGreet {crea una clase TestGreet.class, que no tiene el nombre esperado por el compilador (TestGreeting.class).

Page 46: Introduccion Java

Aplicación Java sencilla

Errores producidos durante la ejecución

o .

o Esto significa que la clase que se ha pedido al intérprete queejecute no tiene ningún método main estático. Puede que haya unmétodo main, pero es posible que no se haya declarado con laclave estática o puede que se haya declarado con parámetrosinadecuados, por ejemplo:

o En este ejemplo, args no es un array de cadenas, sino una solacadena.

o En este ejemplo, el programador ha olvidado incluir una lista deparámetros.

Exception in thread "main" java.lang.NoSuchMethodError: main

public static void main(String args) {

public static void main() {

Page 47: Introduccion Java

Aplicación Java sencilla

Errores producidos durante la ejecución

o En la Figura puede verse el proceso de compilación de Java ysu posterior ejecución en la JVM. Existen muchasimplementaciones de la JVM según las distintas plataformasde hardware y sistemas operativos.