Programacion no numerica ii

705 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
705
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Programacion no numerica ii

  1. 1. Instituto Universitario Politécnico Santiago Mariño Escuela de Ingeniería de Sistemas Porlamar-Estado Nueva Esparta Programación No Numérica II APLICACIONES JAVA. Realizado Por: BR. Rolman Calderín/ C.I: 19682811 Saia – Profesor: Diógenes Rodriguez Porlamar, Junio de 2013 Instituto Universitario Politécnico Santiago Mariño Realizado Por: BR. Rolman Calderín/ C.I: 19682811 Profesor: Diógenes Rodriguez.
  2. 2. Introducción Java es relativamente un nuevo lenguaje de programación debido a los continuos cambios, la API (application programming interface) java incorpora muchos aspectos que en cualquier otro lenguaje son extensiones, threads, ejecución remota, componentes, seguridad, acceso a bases de datos, entre otros. Por eso es un lenguaje ideal para aprender, porque incorpora todos estos conceptos de un modo estándar, mucho más sencillo y claro que con las citadas extensiones de otros lenguajes. El lenguaje java posee varios atributos dentro de ello podemos destacar que es un lenguaje simple, esta orientado a objetos, es robusto, seguro, de arquitectura neutra, multitarea, dinámico, entre muchas otras buenas cualidades. Los programas desarrollados en Java presentan diversas ventajas frente a otros lenguajes, en lo que podemos destacar que posee una ejecución como aplicación independiente, ejecución como Applet, ejecución como Servlet, ente otros. Las Applets en Java cumplen una gran funcionalidad y fue pensado para ser colocados dentro de una página web. Estos pueden ser interpretados por cualquier navegador con capacidades Java. Estos programas se insertan en las páginas usando una etiqueta especial, como también se insertan vídeos, animaciones flash u otros objetos. Hoy día mediante applets se pueden integrar en las páginas web aplicaciones multimedia avanzadas, incluso con imágenes 3D o sonido y vídeo de alta calidad.
  3. 3. Entrada y Salida de Datos en Java Según la pagina web: http://www.ciberaula.com/articulo/java_io nos dice: Cualquier programa realizado en Java que necesite llevar a cabo una operación de I/O lo hará a través de un stream. Un stream, cuya traducción literal es "flujo", es una abstracción de todo aquello que produzca o consuma información. Podemos ver a este stream como una entidad lógica. La vinculación de este stream al dispositivo físico la hace el sistema de entrada y salida de Java. Se ve pues la eficacia de esta implementación pues las clases y métodos de I/O que se necesita dispositivo con el que se este con el teclado, el monitor, un sistema de ficheros o un socket de red liberando a nuestro código de tener que saber con quién está interactuando. Para traer la información, un programa abr (un fichero, memoria, un socket) y lee la información seriamente, de esta forma: Similarmente, un programa puede enviar información a un destino externo abriendo un stream sobre un destino y escribiendo la Entrada y Salida de Datos en Java http://www.ciberaula.com/articulo/java_io visitada el 29/06/2013 Cualquier programa realizado en Java que necesite llevar a cabo una operación de vés de un stream. Un stream, cuya traducción literal es "flujo", es una abstracción de todo aquello que produzca o consuma información. Podemos ver a este stream como una entidad lógica. La vinculación de este stream al dispositivo físico la hace a de entrada y salida de Java. Se ve pues la eficacia de esta implementación pues y métodos de I/O que se necesita emplear son las mismas independientemente de dispositivo con el que se este actuando, luego, el núcleo de Java, sabrá si tiene que tratar con el teclado, el monitor, un sistema de ficheros o un socket de red liberando a nuestro código de tener que saber con quién está interactuando. Para traer la información, un programa abre un stream sobre una fuente de información (un fichero, memoria, un socket) y lee la información seriamente, de esta forma: Similarmente, un programa puede enviar información a un destino externo abriendo un stream sobre un destino y escribiendo la información seriamente, de esta forma: visitada el 29/06/2013 Cualquier programa realizado en Java que necesite llevar a cabo una operación de vés de un stream. Un stream, cuya traducción literal es "flujo", es una abstracción de todo aquello que produzca o consuma información. Podemos ver a este stream como una entidad lógica. La vinculación de este stream al dispositivo físico la hace a de entrada y salida de Java. Se ve pues la eficacia de esta implementación pues emplear son las mismas independientemente del actuando, luego, el núcleo de Java, sabrá si tiene que tratar con el teclado, el monitor, un sistema de ficheros o un socket de red liberando a nuestro e un stream sobre una fuente de información (un fichero, memoria, un socket) y lee la información seriamente, de esta forma: Similarmente, un programa puede enviar información a un destino externo abriendo un información seriamente, de esta forma:
  4. 4. Byte streams: nos proporciona un medio adecuado para el manejo de entradas y salidas de bytes y su uso lógicamente está orientado a la lectura y escritura de datos binarios. El tratamiento del flujo de bytes v InputStream y OutputStream. Cada una de estas clases abstractas concretas que controlan las diferencias ente los distintos dispositivos de I/O que se pueden utilizar. Así mismo, estas dos clases son las que definen los métodos que sus subclases tendrán implementados y, de entre todas, destacan las clases read() y write() que leen y escriben bytes de datos respectivamente. Character streams: Proporciona un medio conveniente para el manejo de entradas y salidas de caracteres. Dichos flujos usan codificación Unicode y, por tanto, se pueden internacionalizar. Una observación: Este es un modo que Java nos proporciona para manejar caracteres pero al nivel más bajo todas las operaciones de I/O son orientadas a byte. Al igual que la anterior el flujo de caracteres también viene gobernado por dos clases abstractas: Reader y Writer. Dichas clases manejan flujos de caracteres Unicode. Y también de ellas derivan subclases concretas que implementan los métodos definidos en ellas siendo los más destacados los métodos read() y write() que, en este caso, leen y escriben caracteres de datos respectivamente. Un File es el único objeto del paquete de E/S que referencia a un archivo de disco real. La clase File no especifica cómo se recupera o almacena la información en los archivos; sólo describe las propiedades de un objeto archivo. os proporciona un medio adecuado para el manejo de entradas y salidas de bytes y su uso lógicamente está orientado a la lectura y escritura de datos binarios. El tratamiento del flujo de bytes viene gobernado por dos clases abstractas que son InputStream y OutputStream. Cada una de estas clases abstractas tienen varias subclases concretas que controlan las diferencias ente los distintos dispositivos de I/O que se pueden dos clases son las que definen los métodos que sus subclases tendrán implementados y, de entre todas, destacan las clases read() y write() que leen y escriben bytes de datos respectivamente. : Proporciona un medio conveniente para el manejo de entradas y salidas de caracteres. Dichos flujos usan codificación Unicode y, por tanto, se pueden internacionalizar. Una observación: Este es un modo que Java nos proporciona para al nivel más bajo todas las operaciones de I/O son orientadas a byte. Al igual que la anterior el flujo de caracteres también viene gobernado por dos clases abstractas: Reader y Writer. Dichas clases manejan flujos de caracteres Unicode. Y también s derivan subclases concretas que implementan los métodos definidos en ellas siendo los más destacados los métodos read() y write() que, en este caso, leen y escriben caracteres es el único objeto del paquete de E/S que referencia a un archivo de disco real. La clase File no especifica cómo se recupera o almacena la información en los archivos; sólo describe las propiedades de un objeto archivo. os proporciona un medio adecuado para el manejo de entradas y salidas de bytes y su uso lógicamente está orientado a la lectura y escritura de datos binarios. El iene gobernado por dos clases abstractas que son varias subclases concretas que controlan las diferencias ente los distintos dispositivos de I/O que se pueden dos clases son las que definen los métodos que sus subclases tendrán implementados y, de entre todas, destacan las clases read() y write() que leen y : Proporciona un medio conveniente para el manejo de entradas y salidas de caracteres. Dichos flujos usan codificación Unicode y, por tanto, se pueden internacionalizar. Una observación: Este es un modo que Java nos proporciona para al nivel más bajo todas las operaciones de I/O son orientadas a byte. Al igual que la anterior el flujo de caracteres también viene gobernado por dos clases abstractas: Reader y Writer. Dichas clases manejan flujos de caracteres Unicode. Y también s derivan subclases concretas que implementan los métodos definidos en ellas siendo los más destacados los métodos read() y write() que, en este caso, leen y escriben caracteres es el único objeto del paquete de E/S que referencia a un archivo de disco real. La clase File no especifica cómo se recupera o almacena la información en los archivos;
  5. 5. Los archivos son un origen y un destino primario de los datos dentro de la mayoría de los programas. A pesar de que se les imponente restricciones severas cuando se utilizan dentro de applets, los archivos siguen siendo un recurso básico para almacenar información persistente y compartida. Los objetos archivo se pueden crear utilizando uno de los tres constructores disponibles. El ejemplo siguiente crea tres archivos: f1, f2 y f3. El primer objeto File se construye utilizando un trayecto de directorio como único argumento. El segundo se crea utilizando dos argumentos, el trayecto y el nombre de archivo. El tercero se crea utilizando el trayecto de archivo asignado a f1 y un nombre de archivo; f3 refiere al mismo archivo que f2. File f1 = new File("/"); File f2 = new File("/","autoexec.bat"); File f3 = new File(f1, "autoexec.bat"); InputStream InputStream es una clase abstracta que define el modelo de Java para el flujo de entrada. Todos los métodos de esta clase lanzarán una IOException si se producen condiciones de error. Este es un breve resumen de los métodos de InputStream: read() devuelve una representación como entero del siguiente byte de entrada disponible. Read (byte[]) intenta leer hasta b.length bytes situándolos en b y devuelve el número real de bytes que se leyeron con éxito. read(byte b[], int off, int len) intenta leer hasta len bytes situándolos en b comenzando en b[off], y devuelve el número de bytes que se leyeron con éxito. skip(long n) omite n bytes de la entrada, y devuelve el número de bytes que se han omitido. available() devuelve el número de bytes de entrada disponibles actualmente para su lectura.
  6. 6. close() cierra el origen de entrada. Los intentos de lectura posteriores generarán una IOException. mark(int limitelectura) coloca una marca en el punto actual del flujo de entrada que seguirá siendo válida hasta que se lean limitelectura bytes. reset() devuelve el puntero de entrada ala marca establecida previamente. markSupported() devuelve true si se admiten mark/reset en este flujo. OutputStream Igual que InputStream, OutputStream es una clase abstracta que define el flujo de salida. Todos los métodos de esta clase devuelven un valor void y lanzan una IOException en caso de error. Esta es una lista de los métodos de OutputStream: write (int b) escribe un único byte en un flujo de salida. Observar que el parámetro en un int, lo que permite que se llame a write con expresiones sin tener que convertir su tipo a byte. Write (byte b[]) escribe una matriz completa de bytes en un flujo de salida. Write (byte b[], int off, int len) escribe len bytes de la matriz b, comenzando a partir de b[off]. flush() inicializa el estado de la salida de manera que se limpian todos los buffers. Close () cierra el flujo de salida. Los intentos de escritura posteriores generarán una IOException. Clases de Java Para Lectura y Escritura de Datos Según la pagina web: http://chuwiki.chuidiang.org visitada el 29/06/2013 nos dice: Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables, métodos o funciones miembro. La programación orientada a objetos se basa en la programación de clases. Un programa se construye a partir de un conjunto de clases. Una vez definida e implementada una clase, es posible declarar elementos de esta clase de modo similar a como se declaran las variables del lenguaje (int,double, string). Los elementos declarados de una clase se denominan objetos de la clase. De una única clase se pueden
  7. 7. declarar o crear numerosos objetos. La clase es lo genérico: es el patrón o modelo para crear objetos. Cada objeto tiene sus propias copias de las variables miembro, con sus propios valores, en general distintos de los demás objetos de la clase. Las clases pueden tener variables static, que son propias de la clase y no de cada objeto. Podemos abrir un fichero de texto para leer usando la clase FileReader. Esta clase tiene métodos que nos permiten leer caracteres. Sin embargo, suele ser habitual querer las líneas completas, bien porque nos interesa la línea completa, bien para poder analizarla luego y extraer campos de ella. FileReader no contiene métodos que nos permitan leer líneas completas, pero sí BufferedReader. Afortunadamente, se puede construir un BufferedReader a partir del FileReader de la siguiente forma: 1 2 3 4 5 File archivo = new File ("C:archivo.txt"); FileReader fr = new FileReader (archivo); BufferedReader br = new BufferedReader(fr); ... String linea = br.readLine(); El siguiente código escribe un fichero de texto desde cero. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.io.*; public class EscribeFichero { public static void main(String[] args) { FileWriter fichero = null; PrintWriter pw = null; try { fichero = new FileWriter("c:/prueba.txt"); pw = new PrintWriter(fichero); for (int i = 0; i < 10; i++) pw.println("Linea " + i); } catch (Exception e) {
  8. 8. 18 19 20 21 22 23 24 25 26 27 28 29 30 e.printStackTrace(); } finally { try { // Nuevamente aprovechamos el finally para // asegurarnos que se cierra el fichero. if (null != fichero) fichero.close(); } catch (Exception e2) { e2.printStackTrace(); } } } } Si se quiere añadir al final de un fichero ya existente, simplemente se debe colocar un flag a true como segundo parámetro del constructor de FileWriter. FileWriter fichero = new FileWriter("c:/prueba.txt",true); Entrada y Salida Estándar (Teclado y Pantalla) Según http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/archivos/teclado.htm esta pagina web visitada el 29/06/2013 nos dice: La entrada/salida estándar (normalmente el teclado y la pantalla, respectivamente) se definen mediante dos objetos que puede usar el programador sin tener que crear flujos específicos. La clase System tiene un miembro dato denominado in que es una instancia de la clase InputStream que representa al teclado o flujo de entrada estándar. Sin embrago, el miembro out de la clase System es un objeto de la clase PrintStream, que imprime texto en la pantalla (la salida estándar). Para leer un carácter solamente tenemos que llamar a la función read desde System.in. try{ System.in.read(); }catch (IOException ex) { }
  9. 9. Obligatoriamente, el proceso de lectura ha de estar en un bloque try..catch. Esta porción de código es la que se ha empleado en muchas aplicaciones para detener la ejecución de una aplicación hasta que se pulse la tecla “Retorno”. Para leer un conjunto de caracteres hasta que se pulse la tecla Retorno se escribe: StringBuffer str=new StringBuffer(); char c; try{ while ((c=(char)System.in.read())!='n'){ str.append(c); } }catch(IOException ex){} La clase StringBuffer es una clase que nos permite crear strings. Contiene métodos para añadir nuevos caracteres a un buffer y convertir el resultado final en un string. Las principales funciones miembro soninsert y append. Usamos una versión de esta última función para añadir un carácter al final de un objeto de la clase StringBuffer. Para convertir un objeto str de la clase StringBuffer a String se usa la función miembro toString. Esta llamada se hace de forma implícita cuando dicho objeto se le pasa a System.out.println. System.out.println(str); Finalmente, se ha de hacer notar, que la función read miembro de InputStream devuelve un int que es promocionado a char. Existe la posibilidad de conectar el objeto System.in con un objeto de la clase InputStreamReader para leer los caracteres tecleados por el usuario. Esta conexión se realiza mediante la sentencia: Reader entrada = new InputStreamReader(System.in); Para leer una sucesión de caracteres se emplea un código similar StringBuffer str=new StringBuffer();
  10. 10. char c; try{ Reader entrada=new InputStreamReader(System.in); while ((c=(char)entrada.read())!='n'){ str.append(c); } }catch(IOException ex){} Para imprimir los caracteres leídos se escribe como en la sección anterior: System.out.println(str); Podemos usar la segunda versión de la función read para leer el conjunto de caracteres tecleados por el usuario. char[] buffer=new char[255]; try{ Reader entrada=new InputStreamReader(System.in); int numBytes=entrada.read(buffer); System.out.println("Número de bytes leídos "+numBytes); }catch(IOException ex){ } En esta segunda porción de código, se lee un conjunto de caracteres hasta que se pulsa la tecla Retorno, los caracteres se guardan en el array buffer. La función read devuelve el número de caracteres leídos. Para imprimir los caracteres leídos se crea un objeto str de la clase String a partir de un array de caracteres buffer, empleando uno de los constructores de dicha clase. A continuación, se imprime el string str. String str=new String(buffer); System.out.println(str);
  11. 11. Lectura y Escritura de Archivos Según la pagina web: http://es.scribd.com/doc/13562650/130/Lectura-y-Escritura-de- Archivos-II visitada el 29/06/2013 nos dice: Las clases FileInputStream y FileOutputStream permiten leer y escribir bytes en archivos binarios. Las clases FileReader y FileWriter permiten leer y escribir caracteres en archivos de texto. Cada llamada a read() o write() accede al disco para un único byte o un único carácter ⇒ poco eficiente. Para mejorarlo, se utilizan las clases que implementan un buffer, de modo que se lee del disco (o se escribe) un conjunto de bytes o caracteres en cada acceso. En la lectura, los constructores de FileInputStream y FileReader, si no encuentran el archivo indicado, pueden lanzar la excepción FileNotFoundException. En la escritura, los constructores de FileOutputStream y FileWriter pueden lanzar la excepción IOException. Si no se encuentra el archivo dado, se crea nuevo. Si ya existe, por defecto escribe desde el comienzo; pero se puede indicar que añada al final (con un 2ºparámetro true). FileInputStream fis = n e w F i l e I n p u t S t r e a m ( “ f i c h . b i n ” ) ; BufferedInputStream bis = new BufferedInputStream (fis); i n t b = b i s . r e a d ( ) ; / / l e e u n s ó l o byte, pero llena //el buffer de datos para //próximas lectura Serialización Serialización de un Objeto: Implementar Serializable Para que un programa java pueda convertir un objeto en un montón de bytes y pueda luego recuperarlo, el objeto necesita ser Serializable. Al poder convertir el objeto a bytes, ese objeto se puede enviar a través de red, guardarlo en un fichero, y después reconstruirlo al otra lado de la red, leerlo del fichero. Según la siguiente página web: http://chuwiki.chuidiang.org/index.php?title=Serializaci%C3%B3n_de_objetos_en_java visitada el 29/06/2013 nos dice: Para que un objeto sea serializable basta con que implemente la interfaz Serializable. Como la interfaz Serializable no tiene métodos, es muy sencillo implementarla, basta con
  12. 12. unimplements Serializable y nada más. Por ejemplo, la clase Datos siguiente es Serializable y java sabe perfectamente enviarla o recibirla por red, a través de socket o de rmi. También java sabe escribirla en un fichero o reconstruirla a partir del fichero. public class Datos implements Serializable { public int a; public String b; public char c; } Si dentro de la clase hay atributos que son otras clases, éstos a su vez también deben ser Serializable. Con los tipos de java (String, Integer, etc.) no hay problema porque lo son. Si ponemos como atributos nuestras propias clases, éstas a su vez deben implementar Serializable. Por ejemplo /* Esta clase es Serializable porque implementa Serializable y todos sus * campos son Serializable, incluido "Datos f;" */ public class DatoGordo implements Serializable { public int d; public Integer e; Datos f; } Serializacion a Medida En realidad, se llama "serializar un objeto" al proceso de convertirlo a bytes, para poder enviarlo por una red, y reconstruirlo luego a partir de esos bytes. A veces podemos necesitar que se haga algo especial en el momento de serializarlo, bien al construirlo a bytes, bien al recibirlo. Por ello java nos permite hacerlo. Basta con hacer que nuestro objeto defina uno o los dos métodos siguientes: private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { // Aqui debemos leer los bytes de stream y reconstruir el objeto } private void writeObject(java.io.ObjectOutputStream stream)
  13. 13. throws IOException { // Aquí escribimos en stream los bytes que queramos que se envien por red. } Java llamará a estos métodos cuando necesite convertirlo a bytes para enviarlo por red o cuando se necesite reconstruirlo a partir de los bytes en red. Lectura de un Archivo en un Servidor de Internet package com.chuidiang.ejemplos; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class PruebaHTTP { public static void main(String[] args) { try { // Se abre la conexión URL url = new URL("http://www.chuidiang.com"); URLConnection conexion = url.openConnection(); conexion.connect(); // Lectura InputStream is = conexion.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); char[] buffer = new char[1000]; int leido; while ((leido = br.read(buffer)) > 0) { System.out.println(new String(buffer, 0, leido)); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
  14. 14. El código es sencillo. Se hace un new URL() con la URL en cuestión. Llamamos al método openConnection() y luego connect(). Sólo queda obtener el InputStream de lectura y leer en él como mejor nos venga para nuestras necesidades. En el ejemplo se va leyendo en buffer de caracteres y sacándolo por pantalla, por lo que se obtiene en pantalla el texto html de la página cuya URL hemos abierto (suponiendo que esa URL tenga un texto html). Este ejemplo se encuentra en la página web dispuesta a continuación visitada el 29/06/2013: http://chuwiki.chuidiang.org/index.php?title=Lectura_http_y_https_desde_java Java Foundation Classes (JFC) y Java 2D Según la pagina web: http://zarza.usal.es/~fgarcia/doc/tuto2/IV_1.htm visitada el 29/06/2013 nos dice: Java Foundation Classes (JFC) JFC es la abreviatura de Java Foundation Classes, que comprende un grupo de características para ayudar a construir interfaces gráficos de usuario (GUIs). Se creo como una extensión de AWT. Comprende las siguientes características: o Componentes Swing. o API de accesibilidad. o Java 2D API o Soporte de Drag and Drop. Modelo de Eventos Tanto AWT como Swing tienen en común un sistema para gestionar los eventos que se producen al interactuar con el usuario de la interfaz gráfica; su modelo de eventos. El funcionamiento del modelo de eventos se basa en la gestión de excepciones. Para cada objeto que represente una interfaz gráfica, se pueden definir objetos "oyentes" (Listener), que esperen a que suceda un determinado evento sobre la interfaz. Por ejemplo
  15. 15. se puede crear un objeto oyente que esté a la espera de que el usuario pulse sobre un botón de la interfaz, y si esto sucede, él es avisado, ejecutando determinada acción. La clase base para todos estos eventos que se pueden lanzar es la clase AWTEvent (perteneciente al paquete java.awt). El modelo de eventos de AWT depende del paquete java.awt.event, que en Swing se amplía con el paquete javax.swing.event. Existen dos tipos básicos de eventos: o Físicos: Corresponden a un evento hardware claramente identificable. Ejemplo: se ha pulsado una tecla (KeyStrokeEvent). o Semánticos: Se componen de un conjunto de eventos físicos, que sucedidos en un determinado orden tienen un significado más abstracto: El usuario ha elegido un elemento de una lista desplegable (ItemEvent). Subpaquetes de AWT A continuación se enumeran los paquetes que componen las JFC, así como su funcionalidad, ordenados por orden de antigüedad. Esto es importante, porque debe de tenerse en cuenta si se va a utilizar para crear applets, ya que normalmente los navegadores no soportan la última versión de la API de Java en su propia máquina virtual. Si se quiere que la applet se vea igual en varios navegadores, hay que tener en cuenta qué paquetes se pueden utilizar y cuáles no, comprobando la versión de Java que soportan los navegadores en los que van a trabajar. Desde la Versión 1.0 o java.awt: Contiene todas las clases básicas de AWT para crear interfaces e imprimir gráficos e imágenes, así como la clase base para los eventos en componentes: AWTEvent.
  16. 16. o java.awt.image: Para crear y modificar imágenes. Utiliza productores de imágenes, filtros y "consumidores de imágenes". Permite renderizar una imagen mientras está siendo generada. Desde la Versión 1.1 o java.awt.datatransfer: Transferencia de datos entre aplicaciones. Permite definir clases "transferibles" entre aplicaciones, y da soporte al mecanismo del portapapeles (copiar y pegar). o java.awt.event: Modelo de eventos de AWT. Contiene eventos, oyentes y adaptadores a oyentes. Desde la Versión 1.2 o java.awt.color: Utilización de colores. Contiene la implementación de una paleta de colores basada en la especificada por el ICC (Consorcio Internacional de Color). o java.awt.dnd: Operaciones de arrastrar y soltar. o java.awt.font: Todo lo referente a las fuentes de texto. Soporta fuentes del tipo True Type, Type 1, Type 1 Multiple Master, y OpenType. o java.awt.geom: Aporta clases de Java 2D, para crear objetos en 2 dimensiones, utilizando geometría plana (elipses, curvas, áreas). o java.awt.im: Para utilizar símbolos Japoneses, Chinos o Coreanos. o java.awt.image.renderable: Para producir imágenes que sean independientes de redering (animación). o java.awt.print: Para imprimir documentos. Incorpora capacidad para gestionar diversos tipos de documentos, formatos de página e interactuar con el usuario para controlar la impresión de trabajos. Java 2D Java2D es una de las APIs (Application Program Interface) más ricas que proporciona la edición estándar de Java (J2SE). Java 2D aborda tres áreas principales que integran Java2D:
  17. 17. figuras geométricas, imágenes y dibujo de texto. Asimismo se introducen en profundidad los conceptos generales que pueden aplicarse a todos ellos, como pueden ser el tratamiento del color y de la transparencia, la gestión de transformaciones geométricas o la manipulación de ficheros JPEG. A medida que se van introduciendo nuevas clases de la API, éstas se van hilvanando entre sí para proporcionar al programador un mayor control sobre el aspecto de los lienzos que quiera dibujar. De esta forma se estudia, entre otras muchas cosas, el dibujo de figuras sobre fotografías digitales, la sobreimpresión de texto sobre imágenes e incluso la utilización del contorno de un texto en negrita como elemento a través del que ver una imagen de fondo. Cada uno de los conceptos necesarios se introduce desde cero, aunque se suponen conocimientos del lenguaje Java, y se proporcionan numerosos ejemplos completos que pueden ser puestos en práctica sin más modificación que la de elegir la foto preferida que se desea transformar, o modificar la cadena de texto a visualizar. Cada ejemplo se acompaña de una adecuada explicación sobre las líneas de código vitales que producen el efecto que se desea conseguir en cada caso, por lo que al lector le resultará muy cómodo realizar modificaciones personalizadas y obtener sus propios resultados. La inclusión de las imágenes que resultan de cada uno de los ejemplos comentados también ayuda enormemente a la comprensión del código y facilita la asimilación de conceptos. Java Media Framework (JMF) Según la pagina web: http://blogdejuls.blogspot.com/2007/04/java-media-framework.html visitada el 29/06/2013 nos dice: JMF es una API que sirve para incluir multimedia en las aplicaciones de Java, funciona básicamente, recibiendo el contenido multimedia de alguna fuente, para después procesarlo y entregarlo en alguna salida multimedia.
  18. 18. Para entender mejor la arquitectura que es muy ilustrativa y ayuda a comprender mejor esta API. La videocámara y el casete de video que se muestran en esta imagen, como fuente de multimedia bien podría ser un archivo mpg son una televisión y unas bocinas que serian la applet en el cual se van a contenidos multimedia. Lo único que mas sencilla de poner un reprod Instanciamos un Media Player, asi: MediaPlayer player = new javax.media.bean.playerbean.MediaPlayer(): Para entender mejor la arquitectura de JMF en la página de Java muestran esta image ayuda a comprender mejor esta API. La videocámara y el casete de video que se muestran en esta imagen, como fuente de multimedia bien podría ser un archivo mpg y los dispositivos de salida que en la imagen ión y unas bocinas que serian la applet en el cual se van a os multimedia. Lo único que haría falta entonces seria el reproductor. poner un reproductor en la applet es utilizando el MediaPlayer Bean. tanciamos un Media Player, asi: player = new javax.media.bean.playerbean.MediaPlayer(): muestran esta imagen, La videocámara y el casete de video que se muestran en esta imagen, como fuente de y los dispositivos de salida que en la imagen ión y unas bocinas que serian la applet en el cual se van a presentar los entonces seria el reproductor. La manera tilizando el MediaPlayer Bean. player = new javax.media.bean.playerbean.MediaPlayer():
  19. 19. Para decirle al player que archivo queremos reproducir se utiliza la siguiente linea: player.setMediaLocation (dirección del archivo); Para iniciar, detener o pausar la reproducción, se usan las siguientes líneas respectivamente: player.start(); player.close(); player.stop(); Java 3D Según la pagina web: http://www.programacion.com/articulo/java_3d_169 visitada el 29/06/2013 nos dice: El API 3D de Java es un árbol de clases Java que sirven como interface para sistemas de renderizado de gráficos tridimensionales y un sistema de sonido. El programador trabaja con constructores de alto nivel para crear y manipular objetos geométricos en 3D. Estos objetos geométricos residen en un universo virtual, que luego es renderizado. El API está diseñado con flexibilidad para crear universos virtuales precisos de una amplia variedad de tamaños, desde astronómicos a subatómicos. A pesar de toda esta funcionalidad, el API es sencillo de usar. Los detalles de renderizado se manejan automáticamente. Aprovechándose de los Threads Java, el renderizador Java 3D es capaz de renderizar en paralelo. El renderizador también puede optimizarse automáticamente para mejorar el rendimiento del renderizado. Un programa Java 3D crea ejemplares de objetos Java 3D y los sitúa en un estructura de datos de escenario gráfico. Este escenario gráfico es una composición de objetos 3D en una estructura de árbol que especifica completamente el contenido de un universo virtual, y cómo va a ser renderizado.
  20. 20. Los programas Java 3D pueden escribirse para ser ejecutados como aplicaciones solitarias o como applets en navegadores que hayan sido extendidos para soportar Java 3D, o ambos. Java Beans Según la pagina web: http://www.slideshare.net/BorisSalleg/java-beans-en-jsp visitada el 29/06/2013 nos dice: Los JavaBeans son un modelo de componentes creado por Sun Microsystems para la construcción de aplicaciones en Java. Se usan para encapsular varios objetos en un único objeto (Bean en inglés), para hacer uso de un solo objeto en lugar de varios más simples. La especificación de JavaBeans de Sun Microsystems los define como "componentes de software reutilizables que se puedan manipular visualmente en una herramienta de construcción". A pesar de haber muchas semejanzas, los JavaBeans no deben confundirse con los Enterprise JavaBeans (EJB), una tecnología de componentes del lado servidor que es parte de Java EE. Para funcionar como una clase JavaBean, una clase debe obedecer ciertas convenciones sobre nomenclatura de métodos, construcción y comportamiento. Estas convenciones permiten tener herramientas que puedan utilizar, reutilizar, sustituir y conectar JavaBeans. Las convenciones requeridas son: o Debe tener un constructor sin argumentos. o Sus propiedades deben ser accesibles mediante métodos get y set que siguen una convención de nomenclatura estándar. o Debe ser serializable. Dentro de un JavaBean podemos distinguir tres partes: o Propiedades: Los atributos que contiene. o Métodos: Se establecen los métodos get y set para acceder y modificar los atributos. o Eventos: Permiten comunicar con otros JavaBeans.
  21. 21. RMI y JAVA IDL Según la pagina web: http://es.scribd.com/doc/51830722/206/RMI-Y-JAVA-IDL visitada el 29/06/2013 nos dice: Tanto RMI (remote method invocation) como JAVA IDL (java interface definition language) son herramientas para desarrollar aplicaciones distribuidas. Estas aplicaciones presentan la característica, de que una aplicación puede ejecutar funciones y métodos en varios ordenadores distintos. Utilizando una referencia a un objeto que se encuentra en un ordenador remoto, es posible ejecutar métodos de ese objeto desde una aplicación que se ejecuta en un ordenador distinto. RMI y JAVA IDL proporcionan los mecanismos mediante los cuales los distintos objetos distribuidos se comunican y se transmiten la información. Son por lo tanto tecnologías que permiten la creación y uso de objetos distribuidos, esto es, objetos o programas que interactúan en diferentes plataformas y ordenadores a través de una red. RMI es una solución basada íntegramente en java. Incorpora métodos para localizar los objetos remotos, comunicarse con ellos e incluso enviar un objeto de java, "por valor", de un objeto distribuido a otro.java IDL permite la conectividad entre objetos distribuidos utilizando corba (common object request broker architecture). Corba es un estándar para la interconexión entre objetos distribuidos. Existen implementaciones de corba en varios lenguajes, lo que posibilita comunicar objetos realizados en distintos lenguajes como Java, C/C++, Cobol, tanto RMI como Java IDL están incluidos en el JDK 1.2 de sun. En el caso de Java IDL se precisa de una utilidad adicional (llamada IDLTOJava) que genera el código necesario para comunicarse con cualquier implementación corba. Java ative Interface (J I) Según la pagina web: http://homepage.cs.uiowa.edu/~slonnegr/wpj/JNI.pdf visitada el 29/06/2013 nos dice: El JNI se usa para escribir métodos nativos que permitan solventar situaciones en las que una aplicación no puede ser enteramente escrita en Java, como por ejemplo en el caso de que la biblioteca estándar de clases no proporcione soporte para funcionalidades dependientes de la plataforma.
  22. 22. También se usa para modificar programas existentes escritos en algún otro lenguaje, permitiéndoles ser accesibles desde aplicaciones Java. Muchas de las clases de la API estándar de Java dependen del JNI para proporcionar funcionalidad al desarrollador y al usuario, por ejemplo las funcionalidades de sonido o lectura/escritura de ficheros. El desarrollador debe asegurarse que la API estándar de Java no proporciona una determinada funcionalidad antes de recurrir al JNI, ya que la primera ofrece una implementación segura e independiente de la plataforma. El framework JNI permite a un método nativo utilizar los objetos Java de la misma forma en que el propio código de Java lo hace. Un método nativo puede crear objetos Java; examinarlos y utilizarlos para que lleven a cabo su función. Un método nativo puede asimismo examinar y utilizar objetos que han sido creados por código de aplicación escrito en Java. A menudo se denomina a JNI como la "válvula de escape" para desarrolladores dado que les permite añadir funcionalidades a sus aplicaciones que el API de Java no puede proporcionar. Puede ser usado para interactuar con código escrito en otros lenguajes como C++, también se usa para operaciones y cálculos de alta complejidad temporal, porque el código nativo es por lo general más rápido que el que se ejecuta en una máquina virtual.
  23. 23. Conclusión El lenguaje de programación Java, permite el desarrollo de aplicaciones bajo el esquema de Cliente Servidor, como de aplicaciones distribuidas, lo que lo hace capaz de conectar dos o más computadoras u ordenadores, ejecutando tareas simultáneamente, y de esta forma logra distribuir el trabajo a realizar. Java es un lenguaje interpretado, y esto es lo que permite que los programas Java puedan ser ejecutados en una gran variedad de entornos. Una vez que existe el programa intérprete para un sistema dado, cualquier programa Java puede ejecutarse en esa plataforma. Un applet Java es un programa diseñado para ser transmitido a través de Internet o de una Intranet, desde un servidor web a un cliente, y ser ejecutado en un navegador web compatible con Java. Los applets Java no presentan problemas de seguridad, pues su ejecución se realiza dentro del entorno del navegador. Estos applets no son simples ficheros de imagen, sonido o animación, sino que son verdaderos programas, que pueden reaccionar ante las acciones del usuario y cambiar dinámicamente, no sólo ejecutar repetidamente la misma animación. En resumen cualquier tipo de aplicación se puede realizar con ella. Java permite la modularidad por lo que se pueden hacer rutinas individuales que sean usadas por más de una aplicación. Sin duda alguna uno de los mejores lenguajes de programación en la actualidad y con una gran cantidad de aplicaciones informáticas que pueden ser usadas en distintas ramas de la ciencia y tecnología.
  24. 24. Referencias Electrónicas http://www.ciberaula.com/articulo/java_io http://chuwiki.chuidiang.org http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/archivos/teclado. htm españa 2013 http://es.scribd.com/doc/13562650/130/Lectura-y-Escritura-de-Archivos-II http://chuwiki.chuidiang.org/index.php?title=Serializaci%C3%B3n_de_obje tos_en_java http://chuwiki.chuidiang.org/index.php?title=Lectura_http_y_https_desde_java http://zarza.usal.es/~fgarcia/doc/tuto2/IV_1.htm españa 2013 http://blogdejuls.blogspot.com/2007/04/java-media-framework.html http://www.programacion.com/articulo/java_3d_169 http://www.slideshare.net/BorisSalleg/java-beans-en-jsp http://es.scribd.com/doc/51830722/206/RMI-Y-JAVA-IDL http://homepage.cs.uiowa.edu/~slonnegr/wpj/JNI.pdf

×