lunes, 27 de febrero de 2012

Android primeros pasos


Buenas señores/as hace mucho que no actualizo este blog , pero ahora que estoy aprendiendo Android me gustaria compartir mis conocimientos.

Android es un sistema operativo movil basado en linux, usado para telefonos moviles, tablets , etc.. es desarrollado por la Open Handset Alliance, la cual liderada por google .

Lo primero que explicare en esta entrada es la preparación de nuestro entorno de trabajo.

Paso 1 descarga e instalación de Eclipse.

Te diriges a la pagina oficial de eclipse y te descargas la ultima versión de “Eclipse
IDE for Java Developers”. La instalación consiste simplemente en descomprimir el ZIP en la
ubicación deseada.

Paso 2 descargar el SDK de Android.

Te descargas el SDK de android en "http://developer.android.com/sdk/index.html" y lo descromprimes en la ubicación deseada.

Paso 3 descargar el plugin Android para Eclipse.

Google ha creado un pluggin para eclipse llamado "Android
Development Tools (ADT)" que facilita el desarrollo en android. Se puede descargar desde eclipse en Help / Install new software e indicando la URL de descarga "https://dl-ssl.google.com/android/eclipse/". Se debe seleccionar e instalar el paquete completo Developer Tools, formado por Android DDMS y Android Development Tools.

Paso 4 configurar el plugin ADT.

En "windows-->Preferens" se accede a la ventana de configuración de eclipse, aparecera un apartado que es android, y en el campo " SDK Locatión ", se introducira la ruta donde ubicamos el SDK de android descargado en el paso 2.

Paso 5 descargar los targets necesarios.

Ademas del SDK de android descargado con anterioridad, debemos descargarnos los targets de android, librerias necesarias para el desarrollo en todas las versiones de android, por ello te debes descargar las librerias necesaria de la versión de android en la que desarrolles. Para ello desde eclipse accedemos a “Window / Android SDK and AVD Manager", y en la sección
"Available Packages " seleccionar e instalar todos los paquetes deseados.

Paso 6 configurar un AVD.

Android nos da la oportunidad de mediante un emulador ejecutar nuestros programas sin necesidad de una plataforma con android para ello, tenemos los AVD. En eclipse accedemos window--> AVD Manager y en la sección Virtual Devices podremos añadir tantos
AVD como se necesiten.
Para configurar el AVD tendremos que indicar un nombre , el target de Android que utilizará, y las características de hardware del dispositivo virtual, como por ejemplo su resolución de pantalla, el tamaño de la tarjeta SD, o la disponibilidad de GPS.

Una vez realizados estos paso ya estaremos preparados para iniciar nuestra epopeya en Android, espero que os sea de utilidad esta entrada y gracias por dedicarle vuestro tiempo.

viernes, 11 de diciembre de 2009

Ciclo de vida de JSF


La primera fase puede denominarse como “Aplicar los valores de la petición” (ver recuadro 1). En ella se van recorriendo todos los componentes del formulario siguiendo la jerarquía padre-hijo al mismo tiempo que se recuperan sus valores a partir de los parámetros de la petición o request enviada al servidor. El valor se asigna a cada componente en su propiedad submittedValue.
Esto ocurre siempre excepto en dos casos: si el componente está deshabilitado (disabled = true) o si posee una condición que indica cuándo debe pintarse en pantalla(atributo ‘rendered’).
A continuación tendrá lugar bien la fase de validaciones o bien la ejecución de cada uno de sus eventos asociados dependiendo del valor del atributo ‘immediate’ de los componentes de la página (ver al final el apartado “Uso del atributo ‘immediate’.”).

Siguiendo la secuencia normal del ciclo, la siguiente fase que tiene lugar es la de “Procesamiento de las validaciones” (ver recuadro 2). Este proceso consiste en la validación del dato suministrado por el usuario en función de las reglas de validación definidas para el componente.
Es común el uso de un validator o un converter, que se aplica sobre el submittedValue. Si no se produce ningún error de validación o de conversión, el valor del submittedValue de cada componente válido pasa a ser null y entonces se almacena en su ‘value’ el dato convertido al tipo que tenga la propiedad del bean a la que se asignará posteriormente.
En caso contrario, el ciclo de vida avanza directamente hasta la fase de presentación de la respuesta.

Durante la fase de “Proceso de Eventos” (ver recuadro 3) se llevan a cabo todos los eventos asociados a las acciones realizadas por el usuario.

Pasamos a la próxima fase del ciclo: “Actualización de los valores del Modelo” (ver recuadro 4). Tras las validaciones y/o ejecución de los eventos tiene lugar la asignación del ‘value’ de los componentes a los atributos del bean.

Entonces llegamos a la fase conocida como “Invocar la aplicación” (ver recuadro 5) en la que se usan los valores del bean para ejecutar la lógica de negocio y se llevan a cabo las operaciones correspondientes a las acciones del usuario.

Por último, tiene lugar la fase: “Presentación de la respuesta” (ver recuadro 6). La implementación de JavaServer Faces delega su autoridad en el contenedor JSP para enseñar la página que el usuario ve por pantalla, y donde todos los campos están informados con su valor en ese momento.
Si se produjo un error en la fase de validación, se muestra la response (pantalla de respuesta) con los valores que introdujo el usuario y además un mensaje informativo del error. El valor que aparecerá en pantalla para cada componente de la página será el primero no nulo que el servidor encuentre en la secuencia:

Componente.submittedValue –> Componente.value –> Bean.attribute

Uso del atributo ‘immediate’

El atributo ‘immediate’ de los componentes de un formulario está presente en la mayoría de las fases del ciclo de vida.
Ya en la primera fase del ciclo se comprueba el valor de dicho atributo. Si vale true, el ciclo avanza hasta la tercera fase, saltándose las validaciones pertinentes. En caso contrario, se continúa el ciclo normal hacia la fase 2.
Es importante señalar en este punto que si ‘immediate’ no se indica su valor es false, ya que así está definido en la declaración de atributos de JSF. Y además es importante saber que el hecho de asignarle el valor true implica no tener acceso a los valores de los campos del formulario así como a los errores que se hubieran producido.

Glosario

Componente: elemento que forma parte del formulario y provee funcionalidades para interactuar con el usuario. Puede ser de diferentes tipos (caja de texto, botón, control de selección…) y el usuario “completa” el formulario a través de su modificación.

Converter: se utiliza cuando es necesario convertir el dato introducido por el usuario al tipo apropiado. Por ello hay que indicar como nombre el de una clase bean que implemente la interfaz Converter.

Evento: acción que queremos que se produzca al cambiar el valor del componente. Por ejemplo, el caso de un selectOneMenu cuando cambiamos la opción marcada del menú desplegable. Solemos indicar estas acción a través de los atributos ‘onchange’, ‘onblur’, ‘onclick’, etc. en el código jsp.

Evento de acción: acción declarada en el atributo ‘action’ de un componente. A cada botón que exista en una página le corresponde una acción (no necesariamente distinta a las demás), y que nosotros solemos denominar con los nombres “doXxxAction” o “goXxxAction”. Por ejemplo: doActualizarAction(), goAtrasAction().

Nota: JSF entiende ‘evento’ como cualquier acción realizada por el usuario. Por ejemplo: pulsar en un botón, hacer clic sobre un link, escribir en un inputText, etc. Como se lee un poco más arriba, nosotros distinguimos entre ‘eventos’ propiamente dichos, y ‘eventos de acción’.

SubmittedValue: valor introducido por el usuario en el formulario.

Validator: responsable de asegurar que el valor ingresado por un usuario es aceptable. Uno o más validadores pueden ser asociados con un solo componente y se definen en clases Java independientes.

martes, 1 de diciembre de 2009

rich:modalPanel



Componente de RichFaces para que nos aparezca una ventana modal. Con esta ventana modal se pueden mostrar errores o el alta de una gestión, etc. A continuación expongo un ejemplo:


Se invocaria desde un componente mediante la sentencia oncomplete un ejemplo sería:

viernes, 17 de abril de 2009

JPA (JAVA PERSISTENCE API)

Hola gente , en la entrada de hoy voy hablar de JPA, para los que no sepan lo que es ,a grandes rasgos ,son unas APIS de java para tratar la base de datos como objetos mediante clases PERSISTENTES.

JPA te permite crear clases persistentes(Clase que sirven para almacenar datos , conviertiendose en tablas en la base de datos) .JPA utiliza anotaciones un ejemplo de clase persistente sería:

@Entity
public class Usuario {
@Id
private String id;
private String name;
private String email;
}


Con las anotaciones @Entity estamos diciendo que esa clase es persistente y como tal se creara una tabla en la base de datos ,@Id sirve para marcar la clave primaria y se coloca encima del atributo en este caso el atributo id de la clase Entity sera la clave primaria.

Es importante tener un archivo persistence.xml en la carpeta WEB-INF de tu proyecto que es donde estara la configuracion de tu JPA.

Bien una vez que tenemos el archivo de configuracion y las clases persistentes ¿como hacer que la clase persistente termine como tabla en la BD? basicamente con este Codigo:

- Primero creamos un EntityManager que nos permita manipular y trabajar con los objeto Entity:


String UNIDAD_DE_PERSISTENCIA = “DOCSPU”;
EntityManagerFactory factory = Persistence.createEntityManagerFactory(UNIDAD_DE_PERSISTENCIA, System.getProperties());
em = factory.createEntityManager();

Como ves, el nombre que uso es “DOCSPU”, esto es porque asi lo tenemos definido en el fichero “persistence.xml”, asi sabe como recuperar las clases y propiedades que corresponden a esta unidad de persistencia. Si tu cambiaste el nombre en el XML, aqui deberias poner el que hayas usado.

Una vez creada la EntityManager, ya es muy simple, abrir una transaccion e incluso almacenar elementos (Entity) en la base de datos. Un ejemplo para insertar un “Usuario” podria ser:

em.getTransaction().begin();
Usuario u = new Usuario();
u.setId(100);
u.setName(”jose”);
u.setEmail(”notengo@gmail.com”);
em.persist(u);
em.flush();
em.getTransaction().commit();

Como observareis, hemos recuperado una transaccion (getTransaction), instanciado un objeto usuario, asignado valores a sus atributos, lo hemos “persistido” (almacenado) en la base de datos con “persist” y por ultimo un commit de la transaccion.Y aqui cierro la entrada de hoy , la proxima entrada hablar de como Consultar en JPA.




viernes, 3 de abril de 2009

Instalacion JSF

Requisitos:
S.O:WIN XP
JDK 1.5.0_6
TOMCAT 5.5.16
JavaServer Faces v 1.1


Descargamos el kit de desarrollo de Java de en lace:
http://java.sun.com/j2se/1.5.0/download.jsp

Se recomienda crear ArchivosDePrograma sin espacio. Una vez instalado vamos a las variables de entorno y modificamos la variable PATH agregandole la ruta donde esta el directorio bin de la instalacion de Java por ejemplo:

C:\ArchivosDePrograma\Java\jdk1.5.0_06\bin

Descargamos el servidor Tomcat del enlace:

http://tomcat.apache.org/download-55.cgi

Instalar la version completa para añadir Examples asi podremos disponer de las librerias standard.jar y jstl.jar , ubicadas en c:\ArchivosDePrograma\Tomcat5.5\webapps\jsp-examples\WEB-INF\lib, necesarias para cualquier aplicación JSF. En cuanto al directorio por comodidad:c:\ArchivosDePrograma\Tomcat5.5
El puerto sera por defecto 8080.

Es necesario agregar la variable JAVA_HOME para que apunte al directorio donde se haya instalado el JDK ( para que Tomcat sepa donde buscar el compilador de Java y demas utilidades) por ejemplo:
C:\ArchivosDePrograma\Java\jdk1.5.0_06

Establezca la variable CATALINA_HOME para que apunte al directorio donde instalo el Tomcat por ejemplo:
C:\ArchivoDePrograma\Tomcat5.5

Y volvemos a modificar la variable PATH para añadir el directorio bin de Tomcat ejemplo:

C:\ArchivoDePrograma\Tomcat5.5.

jueves, 5 de junio de 2008

Swing


Swing

Es muy importante entender y asimilar el hecho de que Swing es una extensión del AWT, y no un sustituto encaminado a reemplazarlo. Aunque esto sea verdad en algunos casos en que los componentes de Swing se corresponden a componentes del AWT; por ejemplo, el JButton de Swing puede considerarse como un sustituto del Button del AWT, y una vez que se usen los botones de Swing se puede tomar la decisión de no volver a utilizar jamás un botón de AWT, pero, la funcionalidad básica de Swing descansa sobre el AWT.


Swing proporciona un conjunto completo de Componentes, todos ellos lightweight, es decir, ya no se usan componentes "peer" dependientes del sistema operativo, y además, Swing está totalmente escrito en Java. Todo ello redunda en una mayor funcionalidad en manos del programador, y en la posibilidad de mejorar en gran medida la cosmética de los interfaces gráficos de usuario.


Son muchas las ventajas que ofrece el uso de Swing. Por ejemplo, la navegación con el teclado es automática, cualquier aplicación Swing se puede utilizar sin ratón, sin tener que escribir ni una línea de código adicional. Las etiquetas de información, o "tool tips", se pueden crear con una sola línea de código. Además, Swing aprovecha la circunstancia de que sus Componentes no están renderizados sobre la pantalla por el sistema operativo para soportar lo que llaman "pluggable look and feel", es decir, que la apariencia de la aplicación se adapta dinámicamente al sistema operativo y plataforma en que esté corriendo.

miércoles, 28 de mayo de 2008

AWT y swing


Hoy vamos hablar de AWT y swing, AWT es una libreria de Java para crear la parte grafica (Ventanas , Botones , etc) y swing es una extensión o mejora de AWT , en el esquema que tenemos en la foto de la entrada tenemos la herencia de clases, como podeis ver todas las clases heredan de Componet, bien expliquemos un poco.



Container: Es un contenedor y por lo tanto, también puede contener a mas container, para simplificarlo seria la ventana de la interfaz grafica. Se utiliza junto a un Layout ( ahora explicaremos que es un Layout ) , permitiendo que aparezcan varios objetos en nuestras interfaces para el usuario.Hay dos tipos de clases que heredan de Container Window y Panel, Window es la clase de la tipica ventana que estamos acostumbrados a ver, Panel como su propio nombre indica es un simple Panel sin botones maximizar, minimizar , cerrar.



Como ya comentamos antes ,cada Container tiene su Layout que sirve para administrar la posicion de los componentes dentro de un Container , Aqui teneis el enlace a la interfaz LayoutManager de las API de java.



De Component tambien heredan una serie de clases que sirven para crear Botones , campos de textos , Listas , etc... objetos que permiten que el usuario se comunique con nuestra aplicación.