miércoles, 30 de enero de 2008


Las excepciones predefinidas y su jerarquía de clases es la que se muestra en la figura.


Los nombres de las excepciones indican la condición de error que representan. Las siguientes son las excepciones predefinidas más frecuentes que se pueden encontrar:


ArithmeticException
Las excepciones aritméticas son típicamente el resultado de una división por 0:
int i = 12 / 0;

NullPointerException
Se produce cuando se intenta acceder a una variable o método antes de ser definido:

class Hola extends Applet {
Image img; paint
( Graphics g ) { g.drawImage( img,25,25,this );
}
}

IncompatibleClassChangeException
El intento de cambiar una clase afectada por referencias en otros objetos, específicamente cuando esos objetos todavía no han sido recompilados.

ClassCastException
El intento de convertir un objeto a otra clase que no es válida.y = (Prueba)x; // dondex no es de tipo Prueba

NegativeArraySizeException
Puede ocurrir si hay un error aritmético al intentar cambiar el tamaño de un array.

OutOfMemoryException
¡No debería producirse nunca! El intento de crear un objeto con el operador new ha fallado por falta de memoria. Y siempre tendría que haber memoria suficiente porque el garbage collector se encarga de proporcionarla al ir liberando objetos que no se usan y devolviendo memoria al sistema.

NoClassDefFoundException
Se referenció una clase que el sistema es incapaz de encontrar.

ArrayIndexOutOfBoundsException
Es la excepción que más frecuentemente se produce. Se genera al intentar acceder a un elemento de un array más allá de los límites definidos inicialmente para ese array.

UnsatisfiedLinkException
Se hizo el intento de acceder a un método nativo que no existe. Aquí no existe un método a.kkclass A {
native void kk();
}
y se llama a a.kk(), cuando debería llamar a A.kk().

InternalException
Este error se reserva para eventos que no deberían ocurrir. Por definición, el usuario nunca debería ver este error y esta excepción no debería lanzarse.

Repositorio

https://jesus-project.googlecode.com/svn/trunk/

AOP

La Programación Orientada a Aspectos (POA) es un paradigma de programación relativamente reciente cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de conceptos. Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicación en entidades bien definidas, eliminando las dependencias entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersión del código y las implementaciones resultan más comprensibles, adaptables y reusables. (Fuente: WikiPedia)

Servidor de Aplicaciones

Se trata de un dispositivo de software que proporciona servicios de aplicación a las computadoras cliente. Un servidor de aplicaciones generalmente gestiona la mayor parte (o la totalidad) de las funciones de lógica de negocio y de acceso a los datos de la aplicación. Los principales beneficios de la aplicación de la tecnología de servidores de aplicación son la centralización y la disminución de la complejidad en el desarrollo de aplicaciones.
un servidor de aplicaciones J2EE debe proveer los siguientes contenedores para albergar a componentes J2EE:

- applet container
- aplication Client COntainer
- web container
- ejb container

J2EE

Características Ap. J2EE
Alto rendimiento
App. Distribuida y multiusuario
Escalable
= granja de servidores( en un momento del programa, si el servidor está sobresaturado, se “clona” a otro servidor adjunto.
Testeable (podemos hacer pruebas con el)
Gestión Estado
Persistencia
(Se entiende por persistencia en la programación orientada por objetos como la capacidad que tienen los objetos de conservar su estado e identidad entre distintas ejecuciones del programa que los creó o de otros programas que accedan a ellos.)
Transacciones
Seguridad
Interceptores (AOP)

- Gestión de estado ≈ ciclo de vida componentes
o Inicialización componentes
o Inyección dependencias
o Mantenimiento estado

Esto deriva en varios tipos de EJB
- Sesión:
o Con Estado (Stateful)
o Sin estado (Stateless)

Lo que mantiene al servicio con Estado entre llamada y llamada del Bean (un bean es es un componente que tiene la particularidad de ser reutilizable) el componente pasa a estar en estado pasivo, que se escribe en el disco del servidor y se queda guardado, hasta que el usuario lo vuelva a utilizar, lee el disco y lo vuelve a preparar y lo deja en el estado en el que estaba.
Para que esto pase, tenemos que implementar la interfaz Serializable.
Si alguien llama a un sin estado lo llama, se crea un (x ejemplo) nuevo usuario y su durabilidad lo mantiene durante la sesión de usuario. Si está creado pero en desuso, y lo requiere otro usuario no se crea, si no se utiliza lo destruye el recolector de basuras.

martes, 29 de enero de 2008

OOP

La Programación Orientada a Objetos es un sistema de Programación para diseñar aplicaciones y programas para el ordenador, sistema en el que se basa la programación JAVA., en el que se trata a todo como objeto, al que se le pueden implementar unas determinadas características y unos determinados métodos.

EasyMock

EasyMock es una libreria muy util para hacer pruebas unitarias con JUnit. Nos sirve para crear cualquier objeto fantasma (mock) y hacer que devuelva un resultado concreto para una entrada concreta.
Por ejemplo, si queremos probar un servicio que necesita un DAO para obtener un dato, podemos crear un DAO fantasma (mock) que realice esa funcion y asi librarnos de dependencias y probar el servicio unitariamente.
Para usar EasyMock tan solo hay que hacer:

1. Create mock Tendremos que tener cuidado, al crear las clases que utilicemos con el Mock, ya que tenemos que crear INTRFACES
2. Reset Mock
3. Expect Mock
4. Replay Mock
5. Verify Mock

Herencias

La herencia son propiedades que implementan las clases hijas de las clases padres, es decir, cuando nosotros creamos una clase y a su vez le creamos unos determinados metodos, podemos utilizar dichos métodos desde la clase hija.
Pongamos un ejemplo para verlo mas claro:
Supongamos que tenemos una familia que compra una casa, los hijos de esa familia pueden tener acceso a la casa. Si el padre compra una televisión, los hijos tambien tendrán acceso a dicha televisión. Eso en java es la Herencia.

public class hijos extends familia{}

martes, 22 de enero de 2008

TestNG


Es una librería para hacer pruebas, a través de etiquetas. ¿Para qué sirve esto?
Básicamente sirve para confirmar por nuestra propia cuenta que el código que nosotros escribimos funciona perfectamente y no tiene ningun tipo de error.
La instalación debe ser a través de la web, ya que no viene integrado (a dia de hoy 22/01/08) accediendo a su página principal, a través del apartado descargas e importando la librería desde el archivo que hemos descargado.

Refactorización

Se trata de aclarar el código de nuestro programa, cambiandole el nombre a clases, interfaces... para que todo lo podamos entender mejor.
¿Cómo se hace?
Sobre la clase pulsamos Shift, Alt y R y le cambiamos el nombre
Eclipse buscará dentro de nuestro código todo lo que estemos renombrando y lo cambiará automáticamente, para que no haya errores de compilación