sábado, 3 de julio de 2010

Fin del bloque J2ME y casi del curso

Hola.

Hoy hemos terminado el último bloque del curso. Ahora mismo acabo de subir el entregable para que sea evaluado.

El entregable no era difícil, pero ha sido con el que más problemas he tenido. En un principio no entendía muy bien la forma de plantearlo, por lo que le pregunté al profesor y me aconsejó sobre cómo enfocarlo y me dio alguna idea para que quedara mejor.

Consistía en implementar un lector de RSS, que leyera las entradas de nuestros blogs. Para realizarlo, utilicé la librería kXML. La verdad es que tuve bastantes problemas para hacerlo funcionar. Uno de ellos, que me costó bastante y al final fue una tontería es que el Eclipse, me reconocía la librería, pero no funcionaba correctamente. El problema estaba en que debía chequearla en la pestaña "Order and Export" del "Configure Build Path".

Otro problema que tuve es que en el XML aparecen etiquetas HTML, por lo que en ocasiones, el parser se volvía loco, pues algunas etiquetas por ejemplo, no se cerraban y lógicamente, no funcionaba bien.

Pero bueno... Tras lidiar con estas complicaciones estoy contento con el resultado y con el bloque.

Estos días miraré algunas cosillas de otras partes del bloque que no he mirado, sobretodo la parte del Bluetooth, de la que he mirado la teoría y cosillas por Internet, pero no le he dedicado mucho tiempo a los ejercicios, pues me daban bastantes problemas y no quería perder mucho tiempo de cara al entregable. Aún así, la idea me ha quedado clara, que es lo importante y a partir de ahí, se puede investigar y tirar para delante.

Y nada... Ya solamente nos queda venir un día, en el que nos despediremos y daremos por terminado el curso, en el que como habéis podido ver, hemos dado muchas cosas.

Un saludo.

domingo, 27 de junio de 2010

Java ME

Hola.



Esta semana hemos comenzado el último bloque del curso: Java para móviles.

El entregable consiste en implementar un lector de RSS, que muestre todas las entradas que los alumnos hemos ido publicando en nuestros blogs.

Hoy he comenzado a darle vueltas al tema y a averiguar como tratarlo. La primera duda que me ha surgido... ¿Cómo llamar a un middlet desde otro?

La aplicación que tenemos que hacer tiene "3 pantallas". En la primera, aparecen los nombres de todos los alumnos. Una vez cliquemos sobre uno de ellos, aparecerán los títulos de sus entradas. De la misma forma, al hacer click sobre una de estas entradas, la visualizaremos en la pantalla del teléfono.

Buscando por Google, he encontrado una página, en la que dice que no debemos hacer 3 middlets, sino un middlet y varias clases que extiendan de la clase Form. La verdad es que me ha ayudado mucho. Os dejo un enlace a la página:

http://wiki.forum.nokia.com/index.php/How_to_use_two_forms

Por otra parte, también he tenido problemas al invocar a los blogs a través de HttpConnection. El problema estaba en que lo llamaba desde esta nueva clase que extiende a Form y no desde el middlet principal (se me quedaba colgado pidiendome confirmación para realizar la conexión) Por tanto, debemos crear un hilo que se encargue de realizar la tarea.

Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.


En fin... Este era uno de los puntos que más me interesaban del curso y la verdad es que me está gustando.

Continuaré mejorando el código a lo largo de la semana que viene y en clase le preguntaré algunas cosillas al profesor para que quede lo mejor posible.

Un saludo.

domingo, 20 de junio de 2010

Integración de Tecnologías XML con Servlets

Hola.

Esta semana hemos visto el último punto del bloque, que consiste en integrar todas las partes del tema con un servlet.

La tarea a realizar, que es el siguiente entregable, es una mini aplicación de un banco, que es gestionada por un servlet. Los pasos a seguir son los siguientes:

1) Crear las clases Usuario, Cuenta y Cuentas, que representan al banco.
2) Implementar una clase de utilidades que realice el marshalling para instancias de la clase Cuentas, y generar el documento XML.
3) Crear una plantilla XSLT para transformar el documento XML a HTML.
4) Implementar un método en la clase de utilidades que realice la transformación.

Todo ello es gestionado por el servlet. Inicialmente, el servlet carga una página jsp (con el método doGet), que se corresponde con el login del usuario.

Tras rellenar el formulario, llamamos al servlet (doPost), que llama a los dos métodos de la clase de utilidades y muestra la información de las cuentas del usuario.

Tras realizar el ejercicio, me di cuenta de que no siempre mostraba el documento actual, ya que lo generaba una vez la aplicación había sido desplegada y muchas veces lo cacheaba, de forma que perdíamos el control sobre el mismo. Se lo comenté al profesor y como alternativa, salió la de eliminar la generación del documento XML, es decir, el método marshall devuelve un StringWriter con el contenido XML y este contenido es transformado a HTML por el método transformXML. De esta forma, además, nos evitamos el tener que almacenar un fichero de trámite, que no interesa al usuario final.

Y con esto damos por terminado el cuarto bloque del curso. La semana que viene comenzaremos el último, el de Java para dispositivos móviles.

Un saludo.

domingo, 13 de junio de 2010

JAXB

Hola.

Esta semana hemos visto JAXB (Java Architecture for XML Binding), que es una API que relaciona las clases Java con los documentos XML.

Con JAXB podemos realizar dos tipos de operaciones:

- Marshall: Transformar un objeto a un documento XML.

- Unmarshall: Construir un objeto a partir de un documento XML.

Pero la gracia de JAXB es la de obtener clases Java a partir de un esquema. Para ello, utilizamos xjc (JAXB Binding Compiler) mediante una tarea Ant.

Un saludo.

domingo, 6 de junio de 2010

Inicio del Bloque IV - XML

Hola.

Esta semana, como comentaba en la anterior entrada, hemos comenzado un nuevo bloque, el cuarto, que trata sobre XML.

En la sesión del viernes, vimos XSL (Extensible Stylesheet Language), que nos permite dar formato a un documento XML.

El sábado, nos centramos en JAXP (Java API for XML Processing) y más concretamente en StAX (Streaming API for XML)

JAXP es un API de Java para el tratamiento de XML, que trabaja con los siguientes parsers:

- DOM (Document Object Model)
- SAX (Simple API for XML)

DOM requiere tener toda la información en memoria y SAX necesita que parseemos todo el documento. Otra alternativa es StAX, un API basada en eventos, que nos permite acceder a la estructura del documento XML de manera sencilla.

No obstante, en la actualidad se utilizan otras tecnologías, como Castor, JAXB o XMLBeans, que permiten mapear un XML en objetos Java.

La semana que viene, daremos un paso más y veremos una de esas tecnologías, JAXB.

Un saludo.

domingo, 30 de mayo de 2010

Fin del tercer bloque

Hola.

Esta semana hemos terminado con el bloque más denso del curso, el de J2EE.

Como entregable final, debemos retocar la Tienda Virtual, separando la parte de la vista de los servlets mediante el uso de jsps.

El siguiente bloque trata sobre XML y veremos los siguientes puntos:


  • Qué es XML. Documentos válidos y bien formados. DTD y Schema.

  • Estándares para el manejo de XML: DOM, SAX y Pull.

  • JAXP: Java API for XML Processing.

  • Transformaciones: XPath, XSL y XSLT.

  • Java Architecture for XML Bindings (JAXB).

  • Integración de XML con tecnologías de Servlets, servicios RESTful y clientes ricos.



Ya os iré comentando conforme los vayamos tratando.

Un saludo.

domingo, 23 de mayo de 2010

GWT

Hola.

Esta semana hemos visto el framework de Google GWT. Su punto fuerte es que nos permite desarrollar componentes Web en Java, siendo el compilador el encargado de traducirlo a código HTML y JavaScript.

Como parte práctica, realizamos un ejercicio, que consistía en la implementación de una calculadora. La mayor parte ya estaba hecha y símplemente teníamos que centrarnos en la parte visual y en realizar algunos retoques en la parte del controlador.

Otra alternativa a GWT es "Dojo Toolkit", que es el framework que utilizo yo. No para de crecer día a día y ofrece componentes muy elaborados.

Además, se integra a la perfección con DWR (Direct Web Remoting), que ofrece la posibilidad de realizar llamadas asíncronas, de forma que mediante JavaScript, invocamos a un método del servidor, cuyo resultado será procesado por una callback.

Finalmente, este resultado puede ser tratado por algún componente de Dojo, como por ejemplo un Grid o un Tree, obteniendo unos resultados fabulosos.

Os dejo algún enlace:

http://www.dojotoolkit.org/
http://dojocampus.org/explorer/

http://directwebremoting.org/dwr/index.html

http://wiki.parleys.com/display/PARLEYS/Home#title=Creating%20amazing%20user%20interfaces%20with%20Dojo%20and%20DWR;talk=25591823;slide=1


Un saludo.