Вы находитесь на странице: 1из 23

Java

Java es un lenguaje multiplataforma con el que puedo hacer una aplicacin en mi PC y hacer que esa aplicacin funcione en cualquier tipo de plataforma. Tericamente es as aunque la prctica no es tan real ya que el interfaz grfico cambia de una plataforma a otra. .java Java .classs

Bytecode

JVM

En Java trabajamos con archivos .java que al ser compilados generan archivos .class que sern ejecutados en la mquina virtual Java. Adems de su carcter multiplataforma debemos tener en cuenta que es un lenguaje completamente genrico con el que podemos hacer cualquier aplicacin que se nos ocurra. Java es un lenguaje de programacin muy lento en cuanto a ejecucin. Cuando se cre tena que pelearse con otros lenguajes como C++ que era un 30% ms rpido que Java. El caso mas tpico de hardware que soporta java son los primeros DVD, en el que para pasar de un men a otro se tardaban varios segundos. JAVA es el lenguaje ms robusto que existe pero a costa de perder la flexibilidad que tienen otros lenguajes. Es un lenguaje orientado a objetos, gestionado por eventos y que adems nos permite realizar programacin multihilo de manera nativa. En Java competimos por los recursos de hardware al mismo nivel que el sistema operativo. Inicialmente se cre este lenguaje para un proyecto de casa domtica, porque C++ es de tan bajo nivel que controlar sensores de otro tipo de hardware era muy tortuoso. En java es mucho mas fcil acceder a este tipo de recursos. En Java ya no existen los registros, tampoco aritmtica de punteros, no se pueden crear tipos personalizados y tampoco hay directivas de preprocesado. Y tampoco deberemos preocuparnos de la gestin de memoria. Java es un lenguaje pensado para trabajar en red. Implementa una serie de herramientas que nos va a permitir crear aplicaciones distribuidas de una manera simple. Para ello utilizaremos Sockets, RMI (invocacin remota de mtodos) y CORBA (creacin de aplicaciones distribuidas siguiendo este estndar). Una aplicacin distribuida se ejecuta en muchos ordenadores, se fragmenta y luego se procesan sus resultados. En Java todas nuestras aplicaciones se ejecutarn en un entorno hipercontrolado, la mquina virtual.

bytes JVM Aplicacin 1 streams bytes

Sandbox

Utilizaremos Streams o tuberas para aceder a diferentes recursos como pantalla , teclado, ficheros,etc Debemos tener en cuenta que estos canales o stream solo pueden ser de entrada o de salida, no de ambas. Cualquier elemento dentro de este Sandbox estar protegido y si intento acceder a una posicin que no est permitida se parar la ejecucin y se generar una excepcin. Debemos tener cuidado con el concepto de que Java es multiplataforma, ya que algunas de las libreras que pueden crear nuestras aplicaciones no son del todo multiplataforma. Principalmente se utilizan tres libreras grficas para realizar aplicaciones de escritorio en Java. AWT La nica librera multiplataforma SWING Librera grfica con bastantes aos y componentes que aunque funcionan bien no se ven igual en todas las plataformas SWT Es una librera que se usa principalmente en Amrica.

Otra de las grandes ventajas de Java es que es un lenguaje interpretado. Es un lenguaje compilado que realiza la compilacin y la interpretacin del lenguaje al mismo tiempo. Es el concepto de JUST IN TIME. El compilador JUST IN TIME utiliza la carga dinmica de libreras, es decir, nuestra aplicacin solo cargar la librera que va a utilizar en el momento que sea necesario. Todas las libreras de Java se encuentra dentro del API de Java.

Sintaxis del lenguaje


Comentarios // Para comentarios de lnea /* */ Comentario de bloque /** */ Comentario de Javadoc que se utiliza para generar documentacin automticamente, pudiendo ser texto plano o Html. Tipos primitivos En Java todo lo que usaremos sern objetos excepto los tipos primitivos - Enteros o byte 8bits o short 16bits o int 32 bits o long 64 bits - Reales o float 32bits o doubl 64bits - Boolean true or false - Char carcter y su valor se pone entre comillas simples - String es una cadena de caracteres que aunque no son un tipo primitivo sino un objeto se nos permite utilizarlo como tipo primitivo,.

Ya que se trata de un objeto los String ponen a nuestra disposicin diferentes mtodos. Operadores o Aritmticos +, - , * , /, %, ++, -o Relacionales <, <=, >, >=, ==, != o Lgicos &&, ||, ! o Bit >>, <<, &, |, !, ^ o Asignacin =, +=,-=*=,/=,&=,|=,^=,<<=,>>=

Java est pensado para que cada fichero tenga una sola clase. Aunque dentro de un fichero podra a ver mas de una clase si las hay solo puede haber una pblica, y la que sea pblica debe tener el mismo nombre que el fichero. System.out.println("Introduce tu nombre:"); //Para leer desde teclado tenemos que utilizar un Stream //La clase Scanner nos permite trabajar facilmente con datos introducidos desde teclado Scanner sc = new Scanner (System.in); //Podemos utilizar sus mtodos para leer tipos primitivos String nombre = sc.nextLine(); System.out.println("Tu nombre es: " + nombre); //leer un numero System.out.println("Dame un numero:"); int n= sc.nextInt(); System.out.println("El nmero es: " + n);

EJERCICIOS Leer dos nmeros por teclado u decir cual es el menor. Leer tres nmeros y decir cul es el menor descendentemente Leer una nota entre 0 y 10 y sacar la descripcin de la nota correspondiente, es decir, suspenso, aprobado, notable o sobresaliente. Leer dos nmeros y decir si uno es mltiplo del otro. Introducir un ao y decir si este es bisiesto o no Dadas tres variables, sacar mensajes que indiquen si todas las variables son 0, todas las variables tienen el mismo signo, todos los valores son distintos, dos de los valores coinciden, el valor de la segunda variable est comprendido entre la primera y la tercera Dado un nmero decir si este es primo Dada una fecha devolver el da de la semana de dicha fecha

Arrays: En Java tienen un tamao fijo y definido, que debe ser asignado a la hora de instanciar. Solo se pueden guardar elementos de un mismo tipo, ya sean objetos o no. Debemos tener cuidado a la hora de recorrer arrays ya que generaremos una excepcin si salimos de sus lmites. IndexOutOfBoundsException Esta excepcin y todas las que se puedan generar deben ser tratadas siempre. Java quiere ser tan robusto y seguro que a veces es excesivo, encontrndonos muchas veces con que la mayora de las lneas del cdigo son para tratar excepciones. El atributo mas importante de un array ser el atributo length, que nos dara el tamao del array. Una vez tengamos el tamao del mismo podremos recorrer con un for.

String: Cadena caracteres de longitud variable. Objeto con un tamao indefinido. Java nos da multiples constructores para crear un String. String nombre= Mikel; String nombre =new String(Mikel); = new String(char[]); =new String(bytes[]); Un String tundra atributos y mtodos: - lenght: atributo tamao - charAt(int): devuelve el carcter en la posicin indicada - equals(String): comparacin lxica entre string.Se usa en defecto == - equalsIgnoreCase(String): comparacin ignorando may y min - compareTo(String): comparar para ordenarlos - regionMatches(): si una cadena se encuentra dentro del string - startsWith(): si nuestro string comienza por la subcadena dada - endsWith(): si nuestro string finaliza por la subcadena dada - indexOf(): ndice de la primera coincidencia de la subcadena dada - lastIndexOf(): ultima coincidencia - substring(): obtener una subcadena del tamao indicado a partir de la posicin dada de nuestro String - concat(): Concatenar String - replace(): reemplaza una subcadena por otra dentro de nuestro string - toLowerCase(): transforma a minusculas - toUpperCase(): transforma a mayusculas - trim(): quita los espacios en blanco del inicio y fin de la cadena - Valueof(): obtener un string a partir de cualquier tipo primitivo String numero = String.valueOf(1);

Clases
[mbito/modificador] class nombreClase En java no puede haber cdigo fuera de una clase. Las clases pueden heredar de otras pero teniendo en cuenta que solo se permite la herencia simple. Adems nuestras clases pueden implementar interfaces. En el API de Java hay miles de interfaces que se utilizan con mucha frecuencia. Estas interfaces se utilizan tanto para dar sensacin de herencia mltiple como para simular comportamiento. extends es la palabra usada para la herencia y implements para las interfaces class Trabajador extends Persona implements iEmpleado, iJefeDepartamento mbito Existen varios mbitos a la hora de declarar clases en java. Estos mbitos marcaran la accesibilidad de la clase desde otras. - public: accesible desde cualquier otra clase - prvate: accesible solo desde la propia clase - friendly: accesible desde las clases de su mismo paquete - protected: accesible por la propia clase y por su jerarqua Modificadores - abstract: las clases con este modificador no se pueden instanciar y deben contener un mtodo abstracto. - final: El modificador final indica el final de una jerarqua, por lo que ninguna clase podr heredar de esta - Syncronizable: indica que es una clase que accede a un recurso no compartido, como una impresora, fichero, etc. Todos sus mtodos sern sincronizados por lo que no podrn ser accedidos por dos hilos de ejecucin a la vez. Atributos de clase Son los valores que definen dicha clase mbito - static: solo existe una copia de este atributo para todos los objetos de dicha clase - public: publico para todas las clases - prvate: solo es accesible por la propia clase - final: indica que dicho atributo no va a cambiar

Mtodos de clase A la hora de trabajar con mtodos en Java debemos recordar de que pasamos un objeto pasamos la referencia al mismo por lo que cualquier cambio afectar al objeto en cuestin. [mbito/modificador] tipoValorRetorno nombreMetodo([Parmetros]){ //Cdigo del mtodo [return valor] }

Mtodo constructor Es uno de los mtodos ms importantes de una clase java, y es el mtodo llamado cuando usamos el operador new. Siempre existir un constructor que en cado de omisin ser el constructor vaco. supersera constructor de la clase padre super(matricula)

Ejercicios Implementar una aplicacin de consola que permita almacenar datos siguiendo los siguientes requisitos: Se debe crear la siguiente jerarqua de clases: o Vehculo clase abstracta con mtodos abstractos acelerar y frenar o Coche Calculara acelerar se incrementa su velocidad por 0.1 y al frenar se divide (decrementa) o Camin al acelerar se multiplica por 0.05 y al frenar se decrementa o De todos los vehculos se desea almacenar su matricula, modelo, color, velocidad o de los coches adems se desea saber el numero de plazas y el tipo de carburante o de los camiones se desea almacenar sus dimensiones (alto, ancho y largo) o se deber almacenar los coches y los camiones e arrays que tendrn un tamao mximo de 10 o Se podr introducir un vehculo o consultar las existencias mediante un men.

Ejercicio con frames

Colecciones en Java
Introduccin Una coleccin es un grupo de objetos almacenados en una instancia de clase diseada para esta finalidad. Tipo de objeto para almacenar dentro de l. Podramos crear nuestras propias colecciones, pero no merece la pena crear algo ya inventado y optimizado. Java nos proporciona una plataforma de colecciones que contiene: Interfaces; para interactuar con las colecciones independientemente de la implementacin que utilicemos Clases de implementacin; emplea clases que implementan las interfaces principales para satisfacer distintas necesidades Clases de utilidad; la plataforma tambin dispone de clases de utilidad que nos permite realizar ciertas tareas sobre las colecciones, por ejemplo ordenarlas, obtener colecciones sincronizadas, etc Jerarquas de las interfaces principales

Iterable

Queve

Collection

SortedMap

List

Set

Queve

SortedSet

Clases de implementacin de la plataforma: Arraylist LinkedList TreeSet HashSet LinkedHashSet EnumSet PriorityQueve TreeMap HashMap LinkedHashMap IdentityHashMap WeakhashMap Enummap

La plataforma dispone de clases de implementacin abstractas: AbstractCollection AbstractList AbstractSequentialList AbstractSet AbstractQueve AbstractMap

Estas implementaciones abstractas ofrecen implementaciones estructurales de las interfaces principales para facilitar la creacin de nuestras clases personalizadas. Las clases de utilidad son: Arrays Collections

Comparable y comparator Las colecciones con las que trabajaremos podrn ser ordenadas o no. Una coleccin ordenada guardar sus elementos de acuerdo a su organizacin natural, ya sea numrica, alfabtica, etc Para realizar esta ordenacin no podemos basarnos en el mtodo equals, ya que este mtodo solo determina si los elementos son equivalentes. Para realizar la ordenacin, nuestros objetos deben implementar el mtodo: int compareTo (Object o)

Este mtodo devolver: - un valor negativo cuando el elemento actual preceda al parmetro - 0 cuando ambos elementos sean equivalentes - Positivo si el elemento actual debe ir tras el parmetro. En ocasiones debemos ordenar los elementos de una manera distinta a la natural y para ello podemos utilizar la interfaz Comparator <T> La interfaz Comparator nos ofrece los siguientes mtodos: int compare (T o1, T o2) Comparar dos objetos de un mismo tipo - 0 cuando ambos objetos son iguales - Valor negativo cuando o1 es menor que o2 - Valor positivo cuando o1 es mayor que o2 boolean equals (T objeto) Comparar objetos de tipo comparado - True si los objetos son iguales - False si los objetos son distintos

Iterable y Collection La mayor parte de las interfaces de la plataforma de colecciones provienen de estas dos. La interfaz Iterable contiene un mtodo iterator() que devuelve una instancia de un objeto iterator que nos permite recorrer una coleccin. La interfaz Collection nos ofrece los siguientes mtodos: boolean add (T objeto) boolean addAll (Collection <T> objetos) void clear() Boolean conatains (T objeto) Boolean conatainsAll (Collection <T> objetos) Boolean equals (Object o) int hashCode() Boolean isEmpty() Iterator<T> iterator() Boolean remove (T objeto) Boolean removeAll (Collection<T> objetos) boolean retainAll (Collection<T> objetos) int size() T[] toArray()

Method Summary
boolean add(Object o)

Ensures that this collection contains the specified element (optional operation).
boolean addAll(Collection c)

Adds all of the elements in the specified collection to this collection (optional operation).
void clear()

Removes all of the elements from this collection (optional operation).


boolean contains(Object o)

Returns true if this collection contains the specified element.


boolean containsAll(Collection c)

Returns true if this collection contains all of the elements in the specified collection.
boolean equals(Object o)

Compares the specified object with this collection for equality.


int hashCode()

Returns the hash code value for this collection.


boolean isEmpty()

Returns true if this collection contains no elements.


Iterator iterator()

10

Returns an iterator over the elements in this collection.


boolean remove(Object o)

Removes a single instance of the specified element from this collection, if it is present (optional operation).
boolean removeAll(Collection c)

Removes all this collection's elements that are also contained in the specified collection (optional operation).
boolean retainAll(Collection c)

Retains only the elements in this collection that are contained in the specified collection (optional operation).
int size()

Returns the number of elements in this collection.


Object[] toArray()

Returns an array containing all of the elements in this collection.


Object[] toArray(Object[] a)

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array.
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collection.html Uso de Iterator Tiene los siguientes mtodos: Boolean hasNext() Devuelve true o false en funcin de si el iterador contiene ms elementos T next() Recupera el siguiente elemento del iterador void remove() Elimina el ltimo objeto recuperado del iterador ArrayList<Coche> coches = new ArrayList<Coche>(); Iterator<Coche> iterador = coches.iterator(); while (iterador.hasNext()) { Coche c = iterador.next(); }

11

Colecciones ms utilizadas - List: es una coleccin ordenada en la que cada elemento ocupa una posicin determinada. Este tipo de colecciones admite elementos duplicados. Entre los mtodos de esta coleccin estn: void add(int index, Object element) Aade el objeto a la coleccin addAll (int index,Collection c) aade en la posicin todos los elementos de la coleccin pasada como parmetro Object remove(int index) Elimina el objeto de la posicin dada Object get(int index) recupera el objeto dada en la posicin como parametro Object set(int index, Object element) coloca el objeto dada en la posicin como parametro int indexOf(Object o)devuelve la posicin de la primera ocurrencia del objeto int lastIndexOf(Object o) devuelve la posicin de la ltima ocurrencia del objeto List subList(int min, int max) Arraylist: usa un array extensible como implementacin de List. Permite un acceso aleatorio muy rpido a los elementos, pero realiza con lentitud operaciones de insercin y borrado de elementos en mitad de la lista, ya que debe reorganizar todos los elementos Set: similar a un Arraylist pero no se permite elementos duplicados

HashMap: es un objeto que asocia pares-clave-valor. Entre sus mtodos estn: Object put(Object key, Object value) coloca un n uevo par-clave-valor. Si la clave existe se sobrescribe Object remove(Object key) elimina par-clave-valor de la clave pasada como parmetro Object get(Object key) recupera el valor asociado a la clave pasada containsKey (Object key) devuelve true o false en function de si el HashMap contiene la clave o no containsValue (Object value) lo mismo pero con el valor isEmpty size () Devuelve el tamao

12

EJEMPLO CON COLECCIONES

13

14

15

16

Ejercicio

Crear una aplicacin que me permita introducir en una coleccin trabajadores, as como modificarlos o eliminarlos. Se posibilitar la ordenacin por dni y por salario. Los trabajadores se mostrarn dentro de un JList al que debermos pasar un Array de trabajadores de la siguiente forma: lisstTrabajadors.setListData(trabajadores.toArray()); Fecha de nacimiento debe ser de tipo Date

17

Tratamiento de errores
No es un evento porque esto indicara cierta interaccin con el usuario, pero tampoco son errores propiamente dichos. Es algo que se produce en un momento indeterminado y que probablemente har que la aplicacin deje de funcionar, por eso deben ser tratados. El tratamiento de excepciones proporciona un mecanismo especialmente poderoso para controlar programas dotados de muchas caractersticas dinmicas durante su ejecucin. Este control de excepciones representa una forma muy limpia de manejar errores y problemas inesperados en la lgica de nuestras aplicaciones. No debemos utilizar el tratamiento de excepciones como un mecanismo de ramificacin o un tipo de sentencia de salto. Hay tres bloques en Java para tratar excepciones: Try/catch: para tratar las excepciones Throw: para lanzar una excepcin throws: para propagar las excepciones a lo largo de la jerarqua de clases en Java. Solo los mtodos pueden propagar excepciones.

Excepciones predefinidas Object

Throwable

Exception

RunTimeException

Hay muchas excepciones de las que veremos las mas importantes: Excepciones que heredan de Exception ClassNotFoundException: salta cuando trabajamos con servidores externos y no se encuentra una clase a la hora de instanciarlo. Si hacemos referencia a alguna librera que no est en el proyecto CloneNotSupportedException: No se permite la clonacin de un objeto InstantiationException: un error cuando instanciamos un objeto Interrupted Exception: cuando nuestro programa se para durante un largo periodo de tiempo SQLException: excepcin relacionada con operaciones contra una BD IOExcetion: son excepciones relacionadas con la entrada salida de datos (ficheros) ClassCastException: cuando no se puede castear un objeto dado al tipo indicado en nuestro cdigo OutOfMemoryException: cuando el sistema se queda sin memoria

18

Excepciones que heredan de RunTimeException IndexOutOfBoundsException: cuando nos salimos de los limites de una coleccin IlegalArgumentException: cuando los parmetros pasados a un mtodo no son vlidos

Cuando usamos bloques Try/catch no debemos colocar todo nuestro cdigo dentro del bloque, ya que ralentizaramos la ejecucin del programa. Solo debemos introducir dentro del bloque las lneas de cdigo susceptibles de generar una excepcin Excepciones personalizadas Este tipo de excepciones son errores para mi aplicacin. Cualquier excepcin de este tipo puede estar basada en una excepcin del sistema.

Try/catch/finally Este tipo de bloques se utiliza para tratar excepciones. No se pueden anidar bloques Try/catch pero s podemos tener un Try con varios catch.

19

Clases de I/O (Streams)


Las clases de Entrada y salida estn definidas dentro del paquete Java.IO Este paquete se basa en Streams que significa flujo. Realmente este flujo es aquello capaz de producir informacin. Hay Streams para trabajar con ficheros perifricos, para trabajar por red, etc Java define dos grandes grupos de Streams: Byte Streams: enfocados al flujo de bytes Character Streams: enfocados al envo de texto plano

Los Streams solo pueden ser de entrada o de salida, en ningn caso de ambos. Acceso a ficheros Cuando trabajemos con ficheros usaremos las siguientes clases: - File: para acceder al sistema de ficheros - FileInputStream: permite leer bytes desde un fichero - FileOutputStream: permite escribir bytes en un fichero - DataInputStream: permite leer tipos primitivos desde un fichero - DataOutputStream: permite escribir tipos primitivos en un fichero - ObjectInputStream: permite leer objetos desde un fichero - ObjectOutputStream: permite escribir objetos en un fichero Siempre que trabajemos con objetos y leamos o escribamos desde un fichero debemos tener en cuenta que dichos objetos deben de implementar la interfaz Serializable.

Ejercicio Realizar una aplicacin que me permita gestionar todos los datos relacionados con los artculos de un almacn De los artculos se desea almacenar su cdigo, nombre, descripcin, precio, fecha de alta y ubicacin Los datos deben ser almacenados y recuperados desde un fichero que ser actualizado siempre que sea necesario

20

Threads (Hilos)
Cuando hablamos de Threads nos referimos a la programacin multihilo en Java. Debemos tener en cuenta que cuando lanzamos dos hilos a la vez estos procesos deben ser absolutamente independientes. Adems estos procesos son lanzados en paralelo, independientemente de si nuestro sistema tiene un ncleo o varios. Un hilo no es ms que una clase que hereda de Thread o implementa la interfaz Runnable. De cualquiera de las dos formas estaremos obligados a implementar el mtodo run() que asigna la tarea que debe realizar el hilo. La manera ideal de crear hilos es mediante herencia de la clase Thread, pero en algunos casos esto no ser posible. En los casos que nuestra clase herede de otra clase no podremos hacer que herede de la clase Thread y deberemos implementar la interfaz runnable. Comunicacin entre hilos El problema surge cuando diferentes hilos acceden a un recurso no compartido. Para solucionar este problema se utiliza una clase que gestiona el acceso de los hilos al recurso no compatible mediante mtodos sincronizados. Para hacer que un hilo espere usaremos el mtodo wait(), y para notificar que un hilo pueda seguir su ejecucin debemos utilizar el mtodo notify() notifyAll(). notify() Indica al siguiente hilo en espera que puede continuar su ejecucin notifyAll() Comunica a todos los hilos en espera que pueden continuar su ejecucin

Ejercicio Realizar una aplicacin java que simule una carrera de 1000m. Al arrancar el programa se solicitar el nmero de corredores y se esperara a que todos los corredores estn listos para salir. Tras el pistoletazo de salida cada corredor esperara entre 10 y 20 segundos y cuando llegue a meta escribir en consola su dorsal y el tiempo tardado. Debemos utilizar los mtodos setName para colocar el dorsal al corredor y sleep (milisegundos) para que el corredor espere.

Corredor Corredor1 Corredor 2

Carrera EstoyListo Esperar Seguir (Se avisa a todos de que pueden seguir)

21

API JDBC
Java de por s no tiene drivers, son los fabricantes los que los ponen a nuestra disposicin. Modelos de funcionamiento JDBC - Modelo de dos capas Aplicacin

JDBC 2 capas

Driver comunicacin

BBDD

Modelo de tres capas

Aplicacin HTTP Api Persistence 3 Capas JDBC

Driver comunicacin

BBDD

22

Objetos involucrados en una conexin JDBC Siempre que trabajemos con una BD independientemente del tipo que sea utilizaremos los siguientes objetos. DriverManager: permite a travs de una cadena de conexin obtener un objeto de tipo Connection Connection: permite ejecutar sentencias SQL contra la BD Statement: es un objeto que nos permite ejecutar sentencias SQL sin parmetros contra la BD PreparedStatement: nos permite ejecutar sentencias SQL pero con parmetros de entrada CallableStatement: nos permite ejecutar procedimientos almacenados o funciones ya que tiene parmetros de entrada y/o salida ResultSet: nos permite recorrer los resultados obtenidos de una sentencia tipo select ResultSetMetaData: contiene datos adicionales sobre un resulset, por ejemplo el tipo de datos o el nombre de las columnas

23

Вам также может понравиться