Descargar

Computación distribuida (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

Java es un lenguaje de programación orientado a objetos desarrollado por James Gosling en Sun Microsystems a comienzos de los 90 Los programas Java no se compilan a código nativo (código máquina) El código fuente Java no se interpreta (no es un lenguaje de script) El código Java se compila a bytecode (un código intermedio menos abstracto que el código fuente pero más abstracto que el código máquina) El bytecode es único (no depende del hardware ni del sistema operativo) Nociones sobre el lenguaje de programación Java El bytecode es ejecutado por la Máquina Virtual Java. Hoy en día, lo más habitual es utilizar compilación JIT (Just-In-Time). El bytecode se compila a código nativo como paso previo a la ejecución Los programas Java pueden ejecutar en cualquier plataforma sobre la que exista una JVM (Java Vírtual Machine) Filosofía “Write once, run anywhere” Por tanto, los programas Java son independientes de la plataforma

edu.red

JVM (Java Virtual Machine): Software que virtualiza el entorno de ejecución. Es la parte que se ocupa de que una aplicación pueda ejecutar con independencia de la plataforma

JRE (Java Runtime Environment): Paquete de programas que permiten la ejecución de una aplicación Java. Incluye una JVM + una API Dependiendo de la plataforma hardware, se han definido diferentes familias de APIs JME (Java Platform Micro Edition: para entornos con recursos limitados JSE (Java Platform Standard Edition): para ordenadores personales JEE (Java Platform Enterprise Edition): para aplicaciones de empresa distribuidas

JDK (Java Development Kit): JRE + herramientas necesarias para desarrollar aplicaciones en el lenguaje Java (compiladores, depuradores, etc.)

Netbeans: IDE distribuido por Sun Microsystems para el desarrollo en Java Eclipse: IDE para el desarrollo en Java distribuido como software libre

Java: Algo de jerga

edu.red

En Java hay tres tipos de programas: las aplicaciones, los applets y los servlets Existen otros tipos de programas muy específicos (MIDlets, etc.) pero no los estudiaremos en este curso

Aplicaciones Java (Java stand-alone applications) El programa se ejecuta como un proceso independiente El flujo de ejecución debe comenzar siempre en un método estático con nombre main que se encuentre en una clase pública Java: tipos de programas public class HolaMundo{ public static void main(String[] args){ System.out.println(“Hola mundo!”); } }

edu.red

Java applets El programa se ejecuta empotrado en otra aplicación (normalmente un navegador) Debe existir una clase pública que extienda la clase Applet de la API estándar y redefina el método paint de la misma El flujo de ejecución comienza en el método paint de la citada clase El applet se descarga desde una máquina remota y se ejecuta en una máquina virtual local Java: tipos de programas Cont. import java.applet.Applet; import java.awt.Graphics;

public class HelloWorld extends Applet { public void paint(Graphics gc) { gc.drawString("Hello, world!", 65, 95); } }

edu.red

Java servlets El programa se ejecuta empotrado en otra aplicación (normalmente un servidor) Se debe implementar la interfaz Servlet definida en la API Servlet El servlet el un objeto que ejecuta en una máquina remota e interactúa con un proceso local mediante un protocolo de petición – respuesta Java: tipos de programas Cont. import java.io.*; import javax.servlet.*; import javax.servlet.http.*;

public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter pw = response.getWriter(); pw.println(“Hello, world!"); pw.close(); } }

edu.red

Toda clase pública está definida en un fichero con el mismo nombre que la clase El compilador (javac) espera el nombre de un fichero como argumento El intérprete (java) espera el nombre de una clase como argumento Los ficheros fuente tienen extensión .java, los compilados (bytecode) .class Java: Hola mundo # vi HolaMundo.java public class HolaMundo{ public static void main(String[] args){ System.out.println(“Hola mundo!”); } } # javac HolaMundo.java # ls HolaMundo.java HolaMundo.class # java HolaMundo Hola mundo!

edu.red

Las clases y los objetos son los dos conceptos básicos de Java Lleva algún tiempo comprender como manejarlas correctamente Un objeto es una entidad que se puede manipular en un programa Las clase son una definición de qué “cosas” tienen los objetos Las “cosas” que puede tener un objeto son: atributos y métodos Los atributos son variables tipadas Los métodos son secuencias de instrucciones que actúan sobre los atributos Los objetos son siempre instancias de una clase Java: Clases y objetos public class Persona{ private String nombre; private String apellidos; public Persona (String nombre, String apellidos){ this.nombre = nombre; this.apellidos = apellidos; } public String getNombreCompleto(){ return nombre + “ “ + apellidos; } … }

edu.red

Miembro = atributo o método En Java, los miembros pueden ser de instancia o de clase Un miembro de instancia está asociado a un objeto concreto de esa clase (cada objeto tiene su propio miembro) Un miembro de clase está asociado a una clase (todos los objetos que sean instancia de esa clase comparten el mismo miembro) A un miembro de instancia se accede precediéndolo del identificador de la instancia A un miembro de clase se accede precediéndolo de un identificador de instancia o bien del nombre de la clase Los miembros de clase se preceden de la palabra clave static Java: Miembros estáticos public class Alumno{ private static numAlumnos = 0; } … Alumno.numAlumnos ++; Alumno alumno = new Alumno(); System.out.println(“Hay “ + alumno.numAlumnos + “ alumnos”);

edu.red

En Java hay dos tipos de datos: objetos y tipos primitivos Los tipos primitivos incluyen: int, float, double, byte, boolean, etc. Para cada tipo primitivo existe una clase asociada (Integer-int, Float-float, etc.) Desde Java 1.5 la conversión de tipos primitivos a sus “objetos” equivalentes es automática (mecanismo de autoboxing) Las variables de tipo primitivo “contienen” su valor Las variables de tipo “objeto” contienen una referencia al objeto Por seguridad, hay objetos inmutables (no se pueden cambiar) Los objetos de la clase String son inmutables Java: Tipos Persona p1 = new Persona(“Luis”, “López”); Persona p2 = p1; p2.setNombre(“Patata”); System.out.println(p1.getNombreCompleto); //Imprime “Patata López”

int a = 22; int b = a; b = 3; System.out.println(“a=” + a); //Imprime “a=22”

edu.red

En Java, las clases pueden extenderse mediante un mecanismo de herencia class ClaseHija extends ClasePadre{…} La clase hija “hereda” (posee) los atributos y métodos de la clase padre La clase hija solo “ve” los atributos y métodos declarados con visibilidad de paquete, públicos o protegidos, pero no “ve” los privados En Java, todas las clases heredan de la clase Object definida En Java no se soportan herencia múltiple Java: Herencia class Empleado extends Persona { public Empleado(String nombre, String apellidos){ super(nombre, apellidos); } public int sueldo; } … Empleado e = new Empleado(“Pedro”, “González”); System.out.println(e.getNombreCompleto);//Imprime “Pedro González” …

edu.red

En Java, las interfaces proporcionan un conjunto de declaraciones de métodos Las interfaces no proporcionan implementación, son solo declaración Las clases pueden “implementar” una interfaz determinada, para ello, deben proporcionar una implementación de todos los métodos declarados en la interfaz class MiClase implements MiInterfaz{…} Las interfaces son muy útiles para crear abstracciones y reducir el acoplamiento entre clases Java: Interfaces public interface Coin { public double unitsPerEuro(); } … public class Peseta implements Coin{ public double unitsPerEuro(){ return 166.3; } … Peseta peseta = new Peseta(); Coin coin = peseta;

edu.red

En Java, las excepciones son un mecanismo utilizado para indicar que se ha producido un problema algún tipo de problema durante la ejecución Las excepciones se “elevan” o “lanzan” ante situaciones de error o conflicto throw new IOException(“El fichero no se encuentra”); Una excepción “lanzada” rompe el flujo de ejecución del programa y le hace “saltar” hasta “el llamante” de manera recursiva Las excepciones pueden manejarse en cualquier punto de la jerarquía de llamadas Una excepción no manejada va progresando en la jerarquía de llamadas hasta que alcanza el programa principal (método main()) y se detiene el programa en curso Java: Excepciones try{ //código que puede elevar una excepción }catch(TipoDeExcepción e){ //código a ejecutar en caso de excepción }finally(){ //código que se ejecuta haya o no excepción }

edu.red

En Java, existe el paquete como instrumento para organizar grandes proyectos El espacio de nombres de paquete es jerárquico y compuesto por etiquetas separadas por puntos. Para declarar que una clase está en un paquete, añadimos al comienzo del fichero package nombre.de.paquete; Para poder utilizar las clases (e interfaces) declaradas en un paquete sin necesidad de incluir el nombre completo del paquete, podemos utilizar imports import java.io.*; import mi.paquete.MiClase;

Java: Paquetes package mi.paquete;

import java.io.*; import java.lang.*; //importado por defecto en todos los ficheros

public class MiClase{ //definición de la clase }

edu.red

Estas nociones básicas no son suficientes para “saber programar” en Java Existen infinidad de libros y de documentación en Internet que pueden ser de ayuda para aprender o profundizar en las tecnologías Java

Libros: Gay Horstmann, “Big Java”, John Wiley & Sons, 2002 (bueno para empezar) Bruce Eckel, “Piensa en Java”, Prentice Hall, 2003

Tutoriales y libros en la web: Java Programming en Wikibooks: http://en.wikibooks.org/wiki/Java_Programming Thinking in Java 3rd Ed: http://www.mindview.net/Books/TIJ/ Página oficial de Java en Sun Microsystems: http://java.sun.com

Conocer los fundamentos del lenguaje es condición necesaria para poder desarrollar aplicaciones en Java, pero no suficiente … tarde o temprano hay que acudir a la especificación de la API estándar Java: Hay que saber más.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente