jueves, 9 de diciembre de 2010

Delay

Mantener un blog es complicado, mas no imposible.

Me había propuesto en poner un post cada martes, así en un mes habrían al menos cuatro apuntes que podrían ayudar a la comunidad java - en especial a los hispanos. Si en estas últimas semanas no he podido publicar más artículos no fue porque no sé qué publicar, sino por falta de tiempo.

Estamos terminando un año, y con él muchos proyectos se deben cerrar, y  para preparar (no es por presumir, pero vuestros comentarios me lo confirman) un buen artículo se necesita un tiempo exclusivo.

Hay bastante material para publicar en mi blog, por ejemplo:

  • RESTful con objetos complejos, con entidades, con arreglos, con conversores de tipo y sus clientes en PHP, JavaScript, JavaFX, etc.
  • Plantillas en Liferay.
  • JPA 2.0 y todo lo que se puede hacer.
  • JSF 2.0: más ejemplos de Ajax, y sus extensiones con ICefaces
  • JasperServer
  • NetBeans Platform
  • Java EE 6 sobre WebLogic
  • etc
Como se ve, hay bastante material para publicar, sin mencionar los tutoriales de NetBeans.org que quiero traducir y los cursos virtuales que ya bastante tiempo los estoy postergando.

Dios mediante, este blog no va a morir. 

Por lo pronto me pueden seguir en Twitter (@apuntesdejava), FriendFeed (http://friendfeed.com/apuntes-de-java) y Facebook.

Gracias por su preferencia.

Bendiciones...!

jueves, 25 de noviembre de 2010

RESTful - Parte 2: Manejando un solo objeto

Hemos visto en el anterior post cómo hacer un servicio REST solo para producir y consumir un texto simple. Ahora bien, en la vida real no son textos simples, sino estructuras de datos algo complicadas. Pero para ir lentos pero seguros, aprenderemos cómo hacer un servicio REST pero para manejar un solo objeto.

martes, 16 de noviembre de 2010

Lo que se viene con JDK 7 & NetBeans 7

Se dice que el número 7 es el número de la perfección, y para el mundo Java este número no está lejos de serlo.
Está cerca el JDK 7, con muchas mejoras en la sintaxis, y casi a la par también sale el NetBeans 7 con su respectiva compatibilidad.

En este post mostraré algunas características de estos software.

miércoles, 3 de noviembre de 2010

RESTful... la forma más ligera de hacer WebServices (Parte 1)

Quienes hayan usado SOAP para WebService, sabrán que es bien fácil de diseñar, pero algo complicado de consumir: se necesita toda una API para construir los clientes utilizando el WSDL. Por ejemplo, para PHP se necesita de la biblioteca NuSOAP. Entonces, para lograr el concepto de "lenguaje único XML" es un dolor de cabeza. Y más aún si el cliente es tan simple como JavaScript, manejar XML de SOAP provocaría suicidos masivos... o no usar WebServices.

Además, con SOAP se permite crear un solo servicio y ponerle varios métodos. Esto puede llevar a un mal diseño del servicio ya que podría tener un servicio que haga de todo: por ejemplo, un servicio de manejo de Clientes que permita también manejar Proveedores.

RESTful es una propuesta muy interesante de Roy Fielding que permite manejar los servicios web con métodos definidos, manteniendo la simpleza del protocolo como XML, pero que cada servicio sea identificado únicamente con un solo URI.

En este post veremos cómo crear un Servicio RESTful usando NetBeans, y haremos crecer de poco a poco nuestro ejemplo... desde hacer operaciones sencillas, hasta manejar estructuras complejas.

Cabe destacar que los servicios de las redes sociales como Flickr, Twitter, Facebook, etc son basados en RESTful.

miércoles, 27 de octubre de 2010

Preparando capacitación virtual en NetBeans Platform

A Geertjan Wielenga (considerado como el maestro de  NetBeans Platform) le he propuesto hacer un entrenamiento virtual sobre NetBeans Platform para Latinoamerica. Le agradó la idea, y me dice que reuna al menos a cinco o seis participantes.

NetBeans Platform es una plataforma completa que permite desarrollar aplicaciones desktop (swing) proporcionándonos varias funcionalidades "rutinarias" que se necesitan al momento de hacer una aplicación swing, tales como manejo de ventanas, árboles, ventanas de diálogos, opciones, manejo de archivos, etc.  También se pueden desarrollar complementos que permitan ampliar la funcionalidad del mismo NetBeans IDE. Para tener una idea de lo que se puede hacer: NetBeans IDE y iReport están hechos sobre NetBeans Platform.

¿Quienes se apuntan para este entrenamiento? Si estás interesado, llena tus datos aquí :

martes, 26 de octubre de 2010

Swing: Componentes enlazados a un bean

La mejor manera de tener sincronizado un control swing con un javabean es utilizando enlaces (binding). La manera común y poco profesional es utilizar los set  y gets de cada atributo de un bean para asociar a cada componente.

//...
nombreTF.setValue(persona.getNombre());
edadTF.setValue(persona.getEdad());
//... etc
y si son 80 campos, nadie querra hacerle mantenimiento.

Aquí es donde entran los enlaces. Mostraremos un ejemplo con NetBeans para enlazar los componentes de un formulario con un JavaBean.

martes, 19 de octubre de 2010

Compilando y ejecutando una clase java.... desde java

El JDK 6 viene con varias funcionalidades interesantes, entre ellas la compilación de clases java desde el mismo java.

viernes, 15 de octubre de 2010

CouchDB, base de datos orientada a documentos

Desde Panamá, nuestro amigo Arístides Villareal, ha publicado algunos post referente a esta base de datos orientada a documentos llamada CouchDB.


CouchDB proporciona un API JSon para que puede ser accdido desde cualquier entorno, incluyendo peticiones HTTP. Fue escribo en Erlang, un lenguaje de programación funcional ideal para sistemas distribuidos concurrentes.

martes, 12 de octubre de 2010

EJB 3.1 en Porlets de Liferay

Ya que GlassFish v3 es compatible con Java EE6, y permite módulos web con componentes EJB (por la característica propia de EJB 3.1).. y además Liferay puede ser instalado sobre GlassFish v3... y... los portlets son módulos web con otro archivo de despligue ¿los portlets para Liferay/GFv3 deberían permitir EJB 3.1?

viernes, 8 de octubre de 2010

Liferay: Recursos necesarios

Para poner en producción un servidor web con Liferay, en base a la experiencia, sugiero lo siguiente:
  • Memoria: 2GB. Recomendable: 4GB
  • CPU: 2 Core. Recomendable 4
  • Arquitectura: 32bits, Recomendable 64 bits.
¿Por qué tanto? Recordemos que este Liferay es para portales serios, para una empresa u organización seria. Si quieren algo más simple, y más barato, usen Joomla o algo parecido.

Otro post más sobre Liferay y hago mi blog "Apuntes de Liferay" :). También hablaré de otros contenedores de portlets, por si liferay parece muy costoso poner en producción.

    jueves, 7 de octubre de 2010

    NetBeans 7.0

    La versión NetBeans 6.10 cambia de numeración para ser la 7.0.
    Será lanzada en marzo de 2011 y tendrá importantes cambios. Ojo a la nota:

    miércoles, 22 de septiembre de 2010

    Liferay: Registrando varios usuarios (usando complemento Hook)

    He estado buscando alguna opción de Liferay que me permita crear varios usuarios a la vez... pero no tuve éxito. Pensé (y hasta pregunté en el foro de liferay.com) si se podía modificar directamente la base de datos. Pero como es un sistema complejo, hacer esto podría malograr el sistema.

    Entonces pensé que debería haber otra solución utilizando el API de Liferay. Al final de todo, es una plataforma, y debería existir un API completo para ello.

    jueves, 16 de septiembre de 2010

    mysqldump: ignorando el tag DEFINER

    Este es otro no-apunte-de-java. Se trata del MySQL.
    Resulta que he tratado de hacer un dump de un servidor a otro. Pero como tienen usuarios restringidos por host, y el mysqldump me genera el script con el tag
    
    /*!50013 DEFINER=`root`@`10.%` SQL SECURITY DEFINER */
    

    ... pensé que debería haber algún parámetro de mysqldump para ignorar estos tags. Pero según el mismo MySQL dicen que tendría problemas de seguridad (vamos: darle derechos de pasar un VIEW o STORED PROCEDURE a alguien que no le corresponde).

    Así que tuve que valerme de un comando de unix/linux para ignorar estos tag:

    martes, 14 de septiembre de 2010

    Enmulando EJB en Web usando Spring

    Cuando salió el EJB 3.1 con la capacidad de poderse ejecutar en un módulo web, comencé a usarlo sin parar. Con los EJB me hace más fácil conectarme a la base de datosusando JPA porque simplemente debería usar  @PersistenceContext respectivamente.

    Pero no todos los servidores  donde uno va a desplegar aplicaciones son Java EE6, así que las facilidades del EJB 3.1 serían truncadas.

    Afortunadamente existe Spring para ayudarnos a instanciar clases como si fueran EJB, y más aún, nos permite usar JPA y mantener las notaciones  @PersistenceContext.

    Veamos cómo se hace esto.

    jueves, 9 de septiembre de 2010

    Instalando Liferay 6 en GlassFish v3

    Retomando los tutoriales, ahora vengo con lo de la instalación de Liferay 6 en GlassFish v3.

    La verdad, es casi lo mismo que está explicado en el anterior post "Instalación de Liferay en un servidor GF v3 para producción", con la excepción de que se debe considerar algunos cambios:

    jueves, 2 de septiembre de 2010

    martes, 31 de agosto de 2010

    Regresando....

    Hoy regreso de mis vacaciones. Pensé que tendría más tiempo para elaborar algunos artículos, pero me lo dí al verdadero descanso. No es de quedarme echado en cama todo el día todos los días, al contrario, me dediqué a hacer cosas que no hago en un día normal, así que lo pasé con mis niños, mi esposa.. todo divertido. Y como no he pensado en  nada del trabajo (gracias a Dios casi todo anduvo solo) me olvido qué tenía que hacer. (La imagen creo que dice exactamente lo que estoy pasando :) )

    Bien, hoy también es el Blog Day, y como parte de este día, recomendaré 5 blog de diferentes temas a todos los visitantes de este pequeño blog:

    miércoles, 18 de agosto de 2010

    lunes, 9 de agosto de 2010

    ¿Qué apunte quieres?

    Debido a diversos temas en mente, aún no me decido por algún apunte para las siguientes semanas. Comienzo uno, y luego veo que otro puede ser interesante, y cuando lo desarrollo me doy cuenta que el primero tiene más documentación... en fin, me hago un lío innecesario.
     Además, para mi puede ser útil un apunte, pero para los visitantes quizás no. Así que, haré la siguiente pregunta

    ¿Qué tema, apunte, tutorial, tip (etc) quieres que se publique en este blog?

    Tus respuestas puedes hacerlas en este post, en feisbuk y FriendFeed (que es como Twitter... que también puedes conectarte desde twitter)

    Vamos, todos los comentarios serán considerados :)

    martes, 20 de julio de 2010

    Nuestro primer Portlet en Liferay

    Hasta el momento hemos visto cómo configurar Liferay sobre un Servidor Glassfish v3 para producción. Esto nos permite tener un Portal en blanco listo para que nosotros le configuremos todo. Es decir, el Liferay que viene preconfigurado con el GF, Tomcat o Jetty que está disponible en la página de descarga de liferay.com, tiene contenido preparado, textos de ejemplo, temas, aplicaciones completas, etc. Además que viene configurado con HSQLDB. Si al preconfigurado le cambiamos el acceso a la base de datos para que utilice el MySQL o cualquiera, en ese momento todo el contenido del Portal estará en blanco.

    Recomiendo la versión preconfigurada de liferay para conocer un poco cómo funciona, y además, para usarlo como caja de arena para probar nuestros portlets.

    En este post veremos cómo hacer un Portlet para Liferay usando NetBeans 6.x

    viernes, 16 de julio de 2010

    Liferay 6.0.3 disponible

    Después de mucho trabajo dedicado por la gente de Liferay.com, Brian Chan anuncia la disponibilidad de Liferay 6.0.3.

    (Ahora tendré que hacer posts para actualizar el Liferay a esa versión.. bueno, será después que publique sobre cómo hacer Portlets... ya casi acabo).

    La nota completa, aquí:

    con referencia a: Liferay Portal 6 GA Released - Blog - Liferay.com (ver en Google Sidewiki)

    jueves, 15 de julio de 2010

    "Persona" de NetBeans

    Si usas Firefox, te gusta "vestirlo" con las "Personas" disponibles...y además te gusta NetBeans, pues creo que esta "Persona" te podría gustar.

    Está disponible aquí
    http://www.getpersonas.com/es/persona/253842

    Algo simple como para ser la primera vez :)

    jueves, 8 de julio de 2010

    Entendiendo especificación Java Portlet 2.0

    Y siguiendo con la onda de los portlets (creo que tendré buen tiempo hablando de ellos), aquí un artículo (en inglés) de Deepak Gothe, explicando sobre Portlet 2.0. Es un artículo de tres partes.
    1. Part 1, Overview and Coordination Between Portlets
    2. Part 2, Serving Resources and Other New Features
    3. Part 3, Extensions
    Si podemos juntarnos virtualmente un día para traducir estos y otros artículos , la comunidad nos lo agradecerá.

    Juegos en JavaFX

    Como me bloquearon páginas comunes de juegos (esos con Flash), y necesito de cuando en cuando descansar un poco del trabajo (vamos, que no somos máquinas.. Taylor está equivocado!) Encontré esta página de juegos pero hechos con JavaFX, además de tutoriales y guias para el desarrollo de aplicaciones JavaFX.

    Realmente muy interesante.. a ver si un día me aventuro a hacer un juego.
    con referencia a: JavaFX Topic: JavaFX Games (ver en Google Sidewiki)

    martes, 6 de julio de 2010

    Instalación de Liferay en un servidor GlassFish v3 para producción

    En un anterior post mencioné los Portales en Java, y la facilidad que nos da el utilizar una plataforma con muchas funcionalidades, y nosotros simplemente deberíamos hacer los componentes que faltan. Estos componentes se llaman Portlets.

    Ahora mencionaré uno de los gestores de Portlets en Java que, según mi opinión, es bastante útil. Su nombre LIFERAY. Pero no hablaré de sus cualidades, ni todo lo que puede hacer.. eso ya lo hizo Pedro Edison en su blog :), y como no hay que amontonar la red con lo mismo, esta vez mostraré cómo instalar el LIFERAY desde cero. No desde la instalación de un .exe, sino desde un archivo .war y sobre GlassFish v3 usando MySQL como gestor de base de datos.

    viernes, 2 de julio de 2010

    Instalando Portal Pack en NetBeans 6.9

    Para comenzar con tutoriales de Portlets, es necesario preparar nuestro IDE para programar con Porlets. Por ello primero vamos en este Post vamos a ver cómo instalar el Portal Pack  para NetBeans.

    jueves, 1 de julio de 2010

    Resultado de encuesta "¿Por qué quieres conocer Java?"

    Agradezco a los que participaron de mi encuesta "¿Por qué quieres conocer Java?"

    Estos son los resultados


    Soy estudiante y quiero saber para aprobar el curso
      21 (42%)
    Me interesa la tecnología Java, y quiero conocer más
      35 (70%)
    En donde trabajo quieren que aprendan todo o parte de Java
      13 (26%)
    Para agregarlo a mi CV
      12 (24%)

    Aunque pareciera una encuesta sin importancia, estaba midiendo qué tipo de usuario promedio visitaba este blog. Agradezco a los  doce "sinceros" que buscan Java solo para agregar a su CV, aunque creo que también pudieron responder por diversión, y hay un grupo invisible que no ha marcado esta alternativa... solo especulo :). También a los 21 desesperados que necesitan aprobar el curso... también puede haber un gran grupo que no ha respondido... también estoy especulando.

    Ahora, los 35 que quieren saber más de Java (quizás ya sepan y quieran aprender más), también pueden pertenecer a los demás grupos... quizás, por eso lo puse como respuesta múltiple. Y me compadezco de los trece (quizás más) que quieren aprender Java porque lo presionan en su trabajo. Digo "compadezco" porque cuando uno tiene presión para aprender algo, es muy posible que no lo entienda, hasta que le encuentre el gusto. Así que, ánimo! Java no es algo del otro mundo.

    Bueno, aún estoy en un proyecto personal entre manos, que si Dios quiere lo tendré listo para este mes para el bien de la comunidad Java.

    miércoles, 30 de junio de 2010

    Tomcat 7.0

    Apache ha lanzado Tomcat 7.0, con compatibilidad para Servlet 3.0, JSP 2.2, EL 2.2

    Se puede descargar desde aquí: http://tomcat.apache.org/download-70.cgi

    Y más documentación, aquí: http://tomcat.apache.org/tomcat-7.0-doc/

    martes, 29 de junio de 2010

    Ajax en JSF 2.0 - Ejemplo 2: Tabla actualizada según se escriba

    Siguiendo con los ejemplos después de mucho tiempo, ahora mostraré cómo actualizar una lista dependiendo del texto que se escribe en un input-text, pero usando Ajax. Es decir, a medida que se escribe, se actualizará el contenido del texto. Todo esto usando JSF 2.0 con su tag <ajax />

    viernes, 25 de junio de 2010

    miércoles, 23 de junio de 2010

    Desarrollo evolutivo

    Yo creo que lo único que es evolutivo es el conocimiento humano, por eso antes existían los TV de tubo y ahora están apunto de salir los TV LED 3D :).

    Y es porque a medida que se desarrolla una nueva tecnología, el humano descubre que se puede hacer algo mejor, y por tanto lo deja para la siguiente versión.

    ¿Y que pasa con nosotros los programadores/desarrolladores de aplicaciones?

    martes, 22 de junio de 2010

    Actualización de GlassFish v3 a v3.0.1

    Sparky V3
    Junto con el lanzamiento de NetBeans 6.9, Oracle también lanzó GlassFish v 3.0.1 (que también viene incluido en el NB 6.9)

    Ahora, si ya tenemos en producción un GFv3 con todas las aplicaciones configuradas, JDBC Resources puesto a punto... ¿cómo le hacemos para actualizar a la versión  3.0.1?

    Tranquilos, no hay que temer.. aquí está la solución

    martes, 15 de junio de 2010

    NetBeans 6.9 liberado!

    Valió la espera

    NetBeans 6.9 ya está aquí!!





    Información de la versión (en español): http://netbeans.org/community/releases/69/index_es.html

    Un agradecimiento especial a los traductores hispanos que lograron la versión en español de NetBeans IDE 6.9

    Portales en Java

    Una aplicación web es relativamente fácil de hacer... pero si nuestro cliente quiere que le hagamos un portal para que sea Intranet, Extranet, administración de contenidos, gestor de archivos, foros, chat, wiki y 50 etc. más, podemos decir "sí se puede", y a medida que avanza el proyecto pensamos que se podría vender a otro cliente, tratamos de hacer lo más estándar posible.... y nunca terminamos.

    Estos sistemas web que permiten administrar contenidos se llaman Sistemas de Gestión de Contenidos (En inglés Content Management System - CMS) Estos ya tienen todo, o al menos todo el soporte necesario para gestionar contenidos web. Es una plataforma, y nosotros deberíamos unicamente anexarle las partes que faltan y lo que nuestro cliente necesita.

    Los más conocidos en PHP son Joomla, PHPNuke, Drupal.  Estos se encuentran en los hosting que se alquila por US$20 al año. Son simples, y funcionan para todos tipos de usuarios.

    Pero ¿y Java?

    martes, 8 de junio de 2010

    Resultado de encuesta "¿Cómo es más legible un tutorial?"

    Es interesante los resultados de la encuesta que he puesto en este humilde blog



    Sólo vídeo
      2 (7%)
    Sólo instrucciones e imágenes
      8 (28%)
    Vídeo e instrucciones
      15 (53%)
    Solo una leve explicación y tener el código fuente
      3 (10%)


    Por lo que podría concluir con lo siguiente:
    1. Pocos respondieron a la encuesta:  28.. para los varios visitantes que monitoreo... muy poco.
    2. Es más fácil ver hacer, que leer. Bueno, creo que nadie lee, sino quiere ver.
    3. Es mejor un vídeo, porque es como estar con alguien que te explica cómo se hace. Pero también con las instrucciones para volverlo a hacer. Uhm, esto puede sonar a "Quiero tener clases virtuales". Suena bien.
    No podría concluir cosas como:
    • La gente que ve el blog quiere vídeos, manuales, impresos, CD y hasta profesor particular... todo desde el blog.. y que sea público! 
    Bueno, creo que eso (si en algún momento alguien lo pensó) está bien difícil, porque la persona que redacta esto es un humano que come y vive. ¿Por qué crees que está lleno de publicidad? No es porque me gusta, porque hasta los de TI de donde trabajo han bloqueado mi blog porque (dicen) tiene mucha publicidad.

    En fin.. haré otra encuesta. Todo esto es para focalizar algo que tengo en mente. Ya vereís.

      Empaquetar una aplicación para distribuir, desde NetBeans

      Uno de los tantos motivos por lo que utilizo NetBeans en lugar de otro IDE, es que utiliza la Apache Ant para compilar, crear .jar .war .ear, javadoc, etc.. prácticamente para todo, y solo usando un archivo .xml. Y lo mejor es que se puede personalizar el .xml a nuestro antojo.

      En este post se va a explicar cómo empaquetar una aplicación Swing en un archivo .zip para ser distribuido a los usuarios finales.


      viernes, 4 de junio de 2010

      NetBeans 6.9 RC 2 disponible ( y también en español)

      La versión 6.9 del IDE NetBeans está casi lista. Se programa el lanzamiento para (aprox) el 9 de junio. En este momento está en la etapa RC 2 que se puede descargar desde aquí:


      http://download.netbeans.org/netbeans/6.9/rc/

      También incluye la traducción en español, que está al 94%.

      Si deseas colaborar en la traducción del NetBeans, regístrate en el Grupo que tenemos para tal fin.

      http://groups.google.com/group/traduccionnetbeans

      miércoles, 2 de junio de 2010

      net.sf.jasperreports.engine.JRRuntimeException: Unknown hyperlink target 0

      Si haz usado iReport para hacer tus reportes, y al ejecutarlo en un servidor lanza este error

      net.sf.jasperreports.engine.JRRuntimeException: Unknown hyperlink target 0

      y por más que compiles y recompiles el .jrxml, lanza el mismo error.... revisa las versiones del iReport y del JasperReports utilizado en el proyecto.

      martes, 25 de mayo de 2010

      Convertir cualquier cadena en objeto java.util.Date

      
      DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Date date = dateFormat.parse("2010-05-17 15:18:19");
      

      XML a Objeto Java

      ¿Quién no ha querido convertir un archivo XML a objetos Java? Usando el DOM, es muy útil pero bastante trabajoso.

      Hay un "parser" de Apache Commons llamado Digester que permite convertir un XML (usando algunas reglas) a objetos Java. Lo he usado bastante tiempo y me es muy útil.

      Así que comparto un ejemplo usando esta biblioteca.

      https://apuntes.dev.java.net/files/documents/10908/150452/ReadXML.tar.gz

      En este ejemplo, se leerá el archivo http://www.xmlfiles.com/examples/simple.xml, lo descargará de Internet usando HttpClient, y lo procesará usando DOM del JDK, y luego usando el Apache Digester. 

      Espero que les sea de utilidad.

      martes, 18 de mayo de 2010

      Definición de DataSource en JavaEE6

      Las aplicaciones Java EE que se han mostrado en este blog son más orientados para desplegarlos en GlassFish. Esto conlleva a que cada los DataSource sean de acuerdo para proveedor de cada Java EE. Así, mis ejemplos para GlassFish no funcionarían para JBoss, Geronimo, WebLogic, etc. Aún así, cuando se desarrolla la aplicación desde NetBeans, y cuando se genera el .war, este no asegura que en ese archivo no exista la configuración de DataSource para la aplicación para usar. Por ejemplo, para GlassFish desde NetBeans se crea el archivo sun-resources.xml, pero este archivo no existe dentro del .war. Por tanto, antes de desplegar el .war en el GlassFish, se necesita crear manualmente el Pool de Conexiones y el Recurso JDBC. Como siempre he dicho a los que he dictado el curso Java EE: el archivo sun-resources.xml es el archivo de recursos para el modo de desarrollo. Solo es usado desde NetBeans.


      Ahora bien ¿no debería haber un archivo único? Vamos: el JPA funciona para todos los motores de base de datos, el JNDI de EJB 3.1 (ahora) ya es compatible con todos los proveedores de JavaEE ¿el DataSource no merece tener el mismo respeto? Pues aquí la solución.

      jueves, 13 de mayo de 2010

      Instalando base de datos MySQL de ejemplos desde NetBeans

      NetBeans con JavaDB (Apache Derby) viene con unas bases de datos ejemplos, que son justamente los que se han usado en los tutoriales de este blog. Iba a hacer una demostración de cómo se instala la base de datos SAKILA de MySQL para un tutorial que iba hacer, pero encontré el plugin para NetBeans.

      Así que muestro un vídeo de cómo instalar este Plugin, además de cómo crear la base de datos de ejemplo desde NetBeans.

      martes, 11 de mayo de 2010

      Dónde descargar los complementos (plugins) curiosos de NetBeans

      En mi post "Plugins curiosos para NetBeans 6.8"olvidé mencionar cómo descargar estos plugins.

      Realmente no pertenecen exclusivamente a la versión 6.8. Son complementos que están en fase de desarrollo, son útiles, pero no están en producción. Pero son muy buenos. Estos están disponibles en la versión de desarrollo de NetBeans.

      Ahora, les diré cómo incluirlos en cualquier versión de NetBeans. Si el complemento a descargar no es compatible con la versión del IDE que se tiene, se emitirá un mensaje de error.

      martes, 4 de mayo de 2010

      Cliente remoto de EJB 3.1 (en GlassFish V3)

      Leyendo el FAQ de EJB (https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html) quiero comentar cómo crear un cliente EJB sin necesidad de desplegarlo en el mismo en servidor. Realmente es muy simple:

      jueves, 29 de abril de 2010

      Nuevas sugerencias (hints) de NB 6.9

      He estado revisando el nuevo NetBeans 6.9 y he encontrado algunos interesantes hints.
      • No concatenar en un StringBuilder/StringBuffer
      • El logger debe ser final
      • Parametriza el logger, no lo concatenes

      Ahora en FaceBook


      Para estar mas conectados, y todos apoyarnos...

      Apuntes de Java

      Promocionar tu página también

      miércoles, 28 de abril de 2010

      Creando un servicio RESTful con NetBeans 6.9

      Volviendo con mis vídeos tutoriales, aquí presento cómo hacer un servicio RESTful desde NetBeans 6.9.

      martes, 27 de abril de 2010

      La nueva cara de NB 6.9

      A ver amigos... ¿quién puede ver los sustanciales cambios de la ventana de inicio de lo que será el  NetBeans 6.9?

      viernes, 23 de abril de 2010

      NetBeans 6.9 Beta


      NetBeans.org anuncia el lanzamiento de la versión 6.9 Beta de su galardonado IDE.

      Las características más sobresalientes son las siguientes:
      • Soporte con OSGi
      • JavaFX Composer (el "Visual" JavaFX)
      • Spring Framework 3.0
      • Editor de Java: seguimiento a métodos heredados y sobreescritos.
      • Completación de código y reestructuración de JavaScript, CSS y HTML
      • Soporte PHP Zend Framework
      • Ruby on Rails 3.0
      • y mucho más...
      (y pensar que comenzó como un proyecto estudiantil)

      El lanzamiento oficial de NetBeans 6.9 está programado para inicios de Junio 2010. También estará disponible en los diversos idiomas.. también en español.

      jueves, 15 de abril de 2010

      Nuevas herramientas para Desarrolladores de OSGi

      A partir de la versión 6.9 del IDE NetBeans contendrá herramientas gráficas para el manejo el desarrollo de OSGi.
      Aquí un tutorial

      con referencia a: New Cool Tools for OSGi Developers | NetBeans Zone (ver en Google Sidewiki)

      lunes, 12 de abril de 2010

      JavaFX en Acción

      Aquí un vídeo de cómo funciona el JavaFX desde NetBeans

      con referencia a: Created by Camtasia (ver en Google Sidewiki)

      miércoles, 31 de marzo de 2010

      Ahora en Google Groups

      Fueron interesantes los comentarios dejados en la encuesta anterior. En unos días más publicaré los resultados.

      Lo raro es que pensé que habrían más respuestas. Pero en fin, supongo que el 'desarrollador hispano promedio' solo quiere hacer preguntas y no responderlas. Y si sabe la respuesta, es bastante difícil que lo comparta.

      ¿O si me equivoco?

      De todas maneras, he creado un Grupo en Google para que podamos compartir preguntas y respuestas.

      Este blog seguirá publicando artículos, tips, ayudas, vídeos, tutoriales, comentarios y demás cosas que siempre se ha estado haciendo.


      Grupos de Google
      Suscribirte a "Apuntes de Java"
      Correo electrónico:

      Consultar este grupo

      jueves, 18 de marzo de 2010

      Encuesta sobre capacitaciones de Tecnología Java

      Como no quiero que las capacitaciones que doy (o que daba) queden en un aula, me gustaría abrir los temas al mundo.. pero ¿quieren realmente capacitaciones de Java?

      Así que, como parte de mi investigación de mercado, aquí les paso un encuesta para ver cuales son sus apreciaciones.






      O también puedes responder a esta encuesta aquí: http://miniurl.com/32332

      jueves, 11 de marzo de 2010

      Webinar de ICEfaces

      ICEfaces presentará el 18 de marzo un Webinars sobre "desarrollo de aplicaciones con Ajax Push"

      La presentación durará 50 minutos y su objetivo es presentar más allá de los principios básicos de ICEfaces.

      Se realizará a las 4PM CET (GMT +1)
      con referencia a: ICEfaces Webinar - Desarrollar Aplicaciones con Ajax Push (ver en Google Sidewiki)

      sábado, 27 de febrero de 2010

      lunes, 22 de febrero de 2010

      Catálogo de tutoriales Java

      No sé si ya lo sabíais, pero yo recién lo encontré.

      Existe un catálogo de bastantes (y eso es poco) ejemplos de Java, para todos los gustos y sabores.

      http://www.java2s.com/Tutorial/Java/CatalogJava.htm

      También hay catálogos para otros lenguajes, pero lo que a mi me importa es Java :)

      Provecho

      Ahora en java.net

      Apuntes de java ya tiene su alojamiento en java.net.

      https://apuntes.dev.java.net/

      Será más fácil para reunir y atender foros, preguntas, publicar proyectos, ejemplos, vídeos, colaboración en todos, etc.

      Como todo proyecto, comienza con algo pequeño y terminará siendo grande.

      sábado, 20 de febrero de 2010

      Ajax en JSF 2.0 - Ejemplo 1: Combo cambia texto

      La técnica Ajax es muy útil para hacer aplicaciones donde solo se actualiza una parte de la página y no toda.

      Cuando salió JSF no tenía esta característica, pero otros frameworks (como ICEfaces) proporcionaban el Ajax como manera natural. También se podía utilizar otros complementos al JSF para que pueda funcionar.. pero ya no era el JSF natural.

      Con JSF 2.0, el Ajax ya es natural. Mostraremos un conjunto de ejemplos de Ajax con JSf 2.0.

      En este post haremos un ejemplo de cómo un combo puede cambiar el valor de un texto. Primero lo haremos sin Ajax, y luego con Ajax.

      El ManagedBean

      Primero haremos un ManagedBean llamado FormBean. Tendrá una propiedad que contiene las opciones del combo, y luego un atributo donde tendrá el valor seleccionado del combo.

      package jsf;
      
      import javax.faces.bean.ManagedBean;
      import javax.faces.bean.RequestScoped;
      import javax.faces.model.SelectItem;
      @ManagedBean(name = "FormBean")
      @RequestScoped
      public class FormBean {
      
          private SelectItem[] opciones = new SelectItem[]{new SelectItem("01", "Opción 1"),
              new SelectItem("02", "Opción 2"),
              new SelectItem("03", "Opción 3")};
      
          private String opcionActual;
      
          public FormBean() {
          }
      
          public SelectItem[] getOpciones() {
              return opciones;
          }
      
          public String getOpcionActual() {
              return opcionActual;
          }
      
          public void setOpcionActual(String opcionActual) {
              this.opcionActual = opcionActual;
          }       
      
      }
      
      

      El archivo .xhtml

      Ahora, en nuestro .xhtml mostraremos el combo, ponemos un botón para ejecute el formulario y un outputText para que se muestre el valor seleccionado:

      <?xml version='1.0' encoding='UTF-8' ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:f="http://java.sun.com/jsf/core">
          <h:head>
              <title>Ejemplo Combo Cambia Texto</title>
          </h:head>
          <h:body>
              <h:form>
                  Opciones: <h:selectOneMenu value="#{FormBean.opcionActual}">
                      <f:selectItems value="#{FormBean.opciones}" />
                  </h:selectOneMenu><br/>
                  <h:commandButton value="Mostrar" />
                  <br/>
                  Opción seleccionada: <h:outputText id="opcionActual" value="#{FormBean.opcionActual}" />
              </h:form>
          </h:body>
      </html>
      

      Al ejecutarlo, veremos que se muestra el combo, cambiamos el valor de este, hacemos clic en el botón y se actualiza el valor de abajo. Muy simple :). Pero el problema es que tenemos que hacer clic en el botón para actualizar el texto inferior. Lo ideal es que se actualiza solo cuando se haga el cambio en el combo, si necesidad de hacer submit. Ahí es donde entra Ajax.

      Implementado Ajax en JSF 2.0

      En JSF 2.0 es tan fácil implementar Ajax como escribir un tag.
      Pongamos el tag <f:ajax /> dentro del combo a mostrar. Pero como queremos que cambie solo el valor del outputText, le indicamos el id del tag en el atributo render. Así quedaría el .xhtml final.

      <?xml version='1.0' encoding='UTF-8' ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml"
            xmlns:h="http://java.sun.com/jsf/html"
            xmlns:f="http://java.sun.com/jsf/core">
          <h:head>
              <title>Ejemplo Combo Cambia Texto</title>
          </h:head>
          <h:body>
              <h:form>
                  Opciones: <h:selectOneMenu value="#{FormBean.opcionActual}">
                      <f:selectItems value="#{FormBean.opciones}" />
                      <f:ajax render="opcionActual" />
                  </h:selectOneMenu><br/>
                  <h:commandButton value="Mostrar" />
                  <br/>
                  Opción seleccionada: <h:outputText id="opcionActual" value="#{FormBean.opcionActual}" />
              </h:form>
          </h:body>
      </html>

      Ahora, ejecutamos el proyecto y veremos qué pasa cuando cambiamos el combo.

      El código fuente de este proyecto, está disponible aquí:
      http://diesil-java.googlecode.com/files/JSF20AjaxComboCambiatexto.tar.gz

      Y aquí un vídeo para que vean que no estoy mintiendo :P

      martes, 16 de febrero de 2010

      Spring 3 en NB 6.9

      En la nueva versión de NB, se incluirá la biblioteca Spring 3, tanto el framework como el MVC

      .. a ver si también incluyen Spring Roo :)

      NetBeans 6.9 en ML1

      NetBeans.org ha anunciado hoy el lanzamiento de la versión Milestone 1 de NetBeans 6.9





      sábado, 13 de febrero de 2010

      Acceder a ManagedBean desde otro ManagedBean en JSF 2.0

      Cuando se trabaja con variables sesión en JSP/Servlets es fácil guardar estas variables y también accederlas... bueno, al menos para quien ha trabajado bastante con este tipo de variables de sesión: Desde un servlet se debería escribir

      request.setAttribute("obj1",obj1);

      ... cuando se desea guardar una variable de sesión de alcance "request".Para uno de alcance "sesión" es una historia similar.

      Y desde un JSP para acceder a esta variable de sesión, usando EL, deberíamos usar algo como esto:
       Mostrando objeto: ${ob1}


      Pero en JSF (en especial la versión 2.0), ya no se debería utilizar variables de sesión ya que JSF propone ManagedBeans que tengan alcance Scope, Request, Application, Custom y none. Pues bien, esto funcionaría así.

      Un ManagedBean:
      @ManagedBean(name="bean1")
      @SessionScoped
      public class Bean1 {
      
          public Bean1() {
          }
          private String nombre;
      
          public String getNombre() {
              return nombre;
          }
      
          public void setNombre(String nombre) {
              this.nombre = nombre;
          }
      
      }
      

      Y para accederlo desde una página JSF, debería ser así:

      <?xml version='1.0' encoding='UTF-8' ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml"
            xmlns:h="http://java.sun.com/jsf/html">
          <h:head>
              <title>Facelet Title</title>
          </h:head>
          <h:body>
              <h:form>
                  Nombre:<h:inputText value="#{bean1.nombre}" />
                  <br/><h:commandButton value="Guardar" />
              </h:form>
          </h:body>
      </html>
      

      Todo normal.. y si accedemos desde otra página, bastaría con escribir #{bean1.nombre}

      Hasta ahí todo normal y muy bien.. pero que pasaría si tenemos otro managedBean y queremos acceder al primer managedBean?

      Pues bien, se debería declarar una propiedad (con set/get) del tipo del primer ManagedBean, y agregarle la anotación @ManagedProperty("#{bean1}") (Donde bean1 es el nombre del otro managedbean. Y listo!! solo usar.

      @ManagedBean(name = "bean2")
      @RequestScoped
      public class Bean2 {
      
          @ManagedProperty("#{bean1}")
          private Bean1 bean1;
      
          /** Creates a new instance of Bean2 */
          public Bean2() {
          }
      
          public String getSaludo() {
              return "Hola " + bean1.getNombre();
          }
      
          public Bean1 getBean1() {
              return bean1;
          }
      
          public void setBean1(Bean1 bean1) {
              this.bean1 = bean1;
          }
      
          
      }
      

      El código fuente de este ejemplo se encuentra aquí: http://diesil-java.googlecode.com/files/ScopesJSF20.tar.gz

      jueves, 11 de febrero de 2010

      Concatenar filas en una columna (MySQL)

      Este truco lo vi en la documentación de MySQL (vamos, sí, sí. no es Java, pero es algo que encontré y quiero compartirlo).

      Imaginemos que tenemos una tabla así
      +--------+--------+
      | campo1 | campo2 |
      +--------+--------+
      | fila1  |   a    |
      | fila2  |   b    |
      | fila2  |   c    |
      | fila1  |   b    |
      | fila3  |   b    |
      | fila2  |   c    |
      +--------+--------+
      

      Y queremos concatenar todos los valores del campo2 por cada fila no repetida de campo1 así:
      +--------+--------+
      | campo1 | campo2 |
      +--------+--------+
      | fila1  |  a,b   |
      | fila2  |  b,c   |
      | fila3  |   b    |
      +--------+--------+
      

      Para ello, hay que usar la función de agregación GROUP_CONCAT

      
      SELECT campo1,group_concat(distinct campo2) FROM tabla GROUP BY 1
      

      miércoles, 10 de febrero de 2010

      Java EE 6 Codecamp (graduados)

      Sang Shin de javapassion.com ha dejado de trabajar para sun.com, y sus cursos tan buenos que ha publicado para la comunidad, serán ahora accedidos bajo un pago anual de $89.
      Yo creo que es lo justo para tan buen material elaborado por este Evangelista de Java.

      El 8 de febrero se publicó la lista de los graduados de la 1ra sesión del CodeCamp Java EE 6. Ha sido un buen curso donde se ha aprendido más a profundidad sobre esta nueva tecnología.

      Muchas gracias Sang Shin por tu trabajo a la comunidad.

      con referencia a: Graduates of Java EE 6 Codecamp (ver en Google Sidewiki)

      martes, 9 de febrero de 2010

      Parche 1 de NB 6.8

      Desde el 4 de febrero está disponible el parche 1 de NB 6.8.


      Éste se puede obtener desde Herramientas > Complementos y luego hacer clic en el botón "Volver a cargar el catálogo"


      Si no dispones de una conexión directa para actualizar los .nbm, se pueden descargar directamente desde esta dirección:

      http://updates.netbeans.org/netbeans/updates/6.8/uc/final/stable/patch1/

      Solo que se tendría que bajar uno por uno.

      jueves, 28 de enero de 2010

      La estrategia de Oracle + Sun para GlassFish

      Arun Gupta comenta/resume sobre el futuro de GlassFish en manos de Oracle según fue expuesto el día de ayer.

      http://blogs.sun.com/arungupta/entry/glassfish_strategy_by_oracle_sun

      Sun ha muerto, larga vida a Sun!

      Ahora, las web de java.sun.com ha pasado por el pincelazo rojo/gris:




      también http://developers.sun.com/.. la web de netbeans: http://www.netbeans.org tiene el pie "Sponsored by Oracle".

      y la web de sun.com ya direcciona a oracle.com

      Sun va a ser un buen recuerdo.

      miércoles, 27 de enero de 2010

      El plan de Oracle sobre el NetBeans

      No sé qué pensar respecto a lo que acaba de decir Larry Elison sobre el NetBeans.
      A parte de publicitar hasta por los codos sobre el Stack de Oracle, el futuro de NetBeans es la de ser un mero "IDE Ligero" para desarrolladores Java... y el JDeveloper será el software comercial para el desarrollo de aplicaciones Java.. vaya, me imagino que a la gente que desarrolló el jdev no les iba a gustar que se desplace su software por un OpenSource, además que con el jdev solo se desarrolla aplicaciones Oracle, no se desarrolla Java.. el Java en jdev es algo que existe pero no se ve como lo principal.

      La misma suerte está corriendo GlassFish: Será solo la referencia de la implementación de Java EE, pero para comercial debería usarse el WebLogic (claro, no por nada lo habrán comprado antes).

      Ahora ¿Cuál habrá sido la estrategia de Sun en sacar el GlassFish V3 con NetBeans 6.8 con el soporte respectivo, hacer sus conferencias online y el curso de javapassion.com? ¿Quizás fue su último suspiro para que la comunidad lo recoja (NB y GF) y sea lo único que escape del pisotón de Oracle? ¿GF y NB serán potenciados por la misma comunidad así como hay tantos software existentes como Apache, Maria y Camilion? ¿Que hago con mi libro recién adquirido "Rich Client Programming:Plugging into NetBeans Platform"?

      viernes, 22 de enero de 2010

      Ahora sí: Sun + Oracle es una realidad

      La Comisión de la Unión Europa ha aprobado la adquisición de Sun por parte de Oracle (órale!!!)

      Ver las notas:
      El 27 de este mes Larry  Ellison dará una conferencia virtual sobre ello: http://blogs.sun.com/theaquarium/entry/oracle_sun_strategy_update_webcast

      James Josling manifiesta esta noticia de manera gráfica:



      Sun + Oracle =snorcle ?







      martes, 19 de enero de 2010

      Chamilo - Nueva herramienta de e-learning

      Nuevamente tengo un post que no se tiene nada que ver con Java, pero es bueno mencionarlo.

      Hace varios años en una oficina de donde trabajo se necesita una herramienta e-learning alterna al conocido Moodle. Así que entre varios encontramos uno que era muy bueno e interesante, llamado Dokeos. Un cierto año lanzaron su versión web para que uno mismo  - a la vez que probaba la versión última - podía crear sus cursos online. Realmente consideré que era un buen software. La última versión disponible es la 1.8.6.1 de agosto de 2009.

      Pues bien, me acaba de llegar un correo  de chamilo.org donde se explica que el ".. 90% de sus
      desarrolladores activos y una grande comunidad de contribuyentes, ha decidido the abandonar el proyecto.".. Oops!!

      "Como seguramente sabrá, Dokeos es una marca registrada con pertenencia personal. Queremos que nuestro desarrollo quede libre de cualquier tipo de control individual y, después de muchas discusiones, no hemos encontrado otra opción que el inicio de un nuevo proyecto open source, basado en la experiencia y el código que hemos ido desarrollando hasta ahora."

      (más adelante mencionan)

      "Para que Ustedes, usuarios de Dokeos, puedan usar nuestra solución, lo
      hemos hecho muy sencillo: Chamilo 1.8.6.2 (publicado hoy mismo) es en
      realidad lo que Dokeos 1.8.6.2 hubiera sido si hubiera beneficiado de
      nuestro trabajo."

      Uhmmm.. parece que desde Agosto 2009 hasta hoy hubieron muchos días de discusión para que se lanzara la versión 1.8.6.2 .

      En fin, acabo de probarlo y tiene interesantes mejoras, mejores presentaciones y mejores acabados.

      Si desean tener una herramienta e-learning "OpenSource" y Libre, les recomiendo este software: Camilo. Desarrollado en PHP para todo el mundo.

      Curso OnLine Groovy y Grails

      Siguiendo con los cursos online dictados por Sang Shin, en javapassion.com se dictará el curso "Groovy and Grails Application Development (with Passion!) ".
      La clase comienza el 10 de febrero.
      con referencia a:
      "Groovy and Grails Application Development (with Passion!)"
      - Groovy and Grails Training Online Course by Sang Shin (ver en Google Sidewiki)

      martes, 5 de enero de 2010

      Curso online gratuito de Java EE6 en una semana

      Desde el 12 al 20 de enero de este año, se dictará en línea el curso Java EE6 vía JavaPassion.com

      http://www.javapassion.com/courses/javaee6codecamp.html


      Se utilizará el NetBeans 6.8 y el JDK 1.6 u17

      Habrán tareas al final de cada sesión para medir el avance de cada participante. Al finalizar el curso y haber concluido satisfactoriamente las tareas, se emitirán sus respectivos certificados. Ojo: estos certificados no están asociados a ninguna entidad, solo certifican que han llevado el curso en JavaPassion.com

      Para participar de dicho evento, deberán registrarse en Google Groups: http://groups.google.com/group/javaee6-codecamp

      Anímense, y conocerán el Java EE6 de una manera rápida.

      lunes, 4 de enero de 2010

      Groovy: Un lenguaje dinámico y ágil para la Plataforma Java

      El primer post de este año quisiera dedicarlo a un lenguaje interesante. Este es Groovy: Un lenguaje dinámico como JavaScript, pero no es interpretado; tiene acceso a todo el API de Java, se ejecuta sobre el JVM, y por tanto puede interactuar con nuestras aplicaciones Java. Podemos tener algunas clases en Groovy y otras en Java. Más información lo puedes encontrar en Wikipedia.

      Lo bueno de este lenguaje es que - a gran diferencia de Java - no necesita de una clase "Main" para ejecutar la aplicación. Es como JavaFX, PHP, o como JavaScript, que ejecuta las instrucciones de arriba a medida que se van declarando. Por tanto, un "HolaTodos" puede ser así
      
      package demogroovy
      
      public class Prueba{
          public static void main(String[] a){
              System.out.println("Hola a todos");
          }
      }
      

      o así:
      
      package demogroovy
      println("Hola a todos")
      

      Ambos son válidos en Groovy. Notar que los punto-y-coma (;) son opcionales.

      NetBeans nos permite crear clases Groovy en cualquier proyecto Java. Por tanto, necesitamos crear un proyecto Java cualquiera (web o desktop) y luego crear las clases Groovy.


       No voy hacer un tutorial de Groovy ya que hay uno bueno aquí: http://groovy.org.es/ en español, o si deseas la fuente en inglés, aquí está la web oficial: http://groovy.codehaus.org/. Solo voy a resaltar cosas muy interesantes de este lenguaje. Por ejemplo, el acceso a base de datos:

      Como está hecho en Java, entonces debe utilizar las bibliotecas de java. Si deseo acceder a la base de datos Apache Derby, debo utilizar sus drivers; si uso MySQL, debo usar su respectivo driver, y así.


      Un ejemplo que adapto de "Tutorial 6 - Groovy SQL" es este:
      
      package demogroovy
      
      import groovy.sql.Sql;
      
      sql=Sql.newInstance("jdbc:derby://localhost:1527/sample",
              "app","app",
              "org.apache.derby.jdbc.ClientDriver")
      println "ID Prod.\tDescripción"
      sql.eachRow("select * from product",
          {println "${it.product_id}\t${it.description} "})
      
      fila=sql.firstRow("select customer_id,name,email from customer")
      println "Cliente ${fila.customer_id}:${fila.name} -> ${fila.email}"
      

      Aquí estoy usando la base de datos "sample" que viene como ejemplo en NetBeans.


      La simpleza del lenguaje permite ahorrar tiempo en programación. Por ejemplo, podemos tener un JavaBean en Java:
      
      package demogroovy.beans;
      
      public class Cliente {
      
          private int id;
          private String nombre;
          private String correo;
      
          public Cliente() {
          }
      
          public String getCorreo() {
              return correo;
          }
      
          public void setCorreo(String correo) {
              this.correo = correo;
          }
      
          public int getId() {
              return id;
          }
      
          public void setId(int id) {
              this.id = id;
          }
      
          public String getNombre() {
              return nombre;
          }
      
          public void setNombre(String nombre) {
              this.nombre = nombre;
          }
      }
      

      Luego, podemos tener un DAO hecho en Groovy:
      
      package demogroovy.dao
      import groovy.sql.Sql;
      import demogroovy.beans.Cliente
      
      class ClientesDao {
          private def sql;
          ClientesDao(){
              sql=Sql.newInstance("jdbc:derby://localhost:1527/sample", //URL del JDBC
              "app","app", //usuario y contraseña
              "org.apache.derby.jdbc.ClientDriver") //driver del JDBC
          }
      
          def getClientes(){
              def lista=[];
      /*notar las comillas de los alias de cada campo. Esto nos asegura que cada campo
      será asociado a cada propiedad del bean Cliente.
      */
              sql.eachRow("SELECT customer_id as \"id\",name as \"nombre\",email as \"correo\" FROM customer"){
                   Cliente c=new Cliente(it.toRowResult()) //se instancia y pone las propiedades segun corresponda de acuerdo al metodo toRowResult()
                  lista << c //agrega a la lista
              }
              return lista;
          }
      
          def updateCliente(Cliente c){
              sql.executeUpdate("UPDATE customer SET name=?, email=? WHERE customer_id=?",[c.nombre,c.correo,c.id])
          }
      
      }
      
      Notemos que para acceder a las propiedades del bean no necesitamos usar los métodos set/get.. solo accedemos a la propiedad misma.

      Y para acceder al dao, lo hacemos como si fuera un objeto java:
      
      List<Cliente> clientes= (List) dao.getClientes();
      

      Es un ahorro de código, de esfuerzo y de tinta si se desea imprimir los códigos fuentes (¿aún se hace eso? Por el bien de la naturaleza espero que ya no).

      Aquí he colgado un proyecto de cómo usar un JFrame + JTable para acceder a una base de datos, usando una clase Groovy para el DAO.
      http://diesil-java.googlecode.com/files/DemoGroovy.tar.gz
      Utiliza el Apache Derby, por lo que primero debemos iniciar el servidor. En su defecto, se puede utilizar otra base de datos, y hacer los cambios respectivos.

      viernes, 1 de enero de 2010

      new Año2010().start();

      Este año que pasó ha tenido cambios. Recordemos un poco:
      1. Se lanzó las versiones de NetBeans 6.5.1, 6.7, 6.7.1 y 6.8
      2. Oracle compró Sun.
      3. GlassFish v3 salió a la luz, a la par con la especificación de Java EE6

      ...y en lo personal,
      1. Pude concluir con mi licenciatura en Ingeniería de Sistemas (ha sido de Dios que mientras llevaba la licenciatura pude seguir trabajando, desarrollar un par de proyectos adicionales y dictar cursos)
      2. Mi esposa me compró mi dominio apuntesdejava.com :)
      3. Dicté más cursos en bitnetperu.com
      4. Participé en el JavaDay de la UNI. (Que por cierto es el 2do que hice en toda mi  carrera profesional. Mi anterior participación fue en Lacfree 2003. Espero participar más en este año) Muy buena organización y mis sinceras felicitaciones a JocLuis.

      Espero que este año pueda cumplir con algunos tutoriales más; quiero dictar más cursos sobre la tecnología Java, si es posible organizar una conferencia virtual; quiero de una vez certificarme en Java en este verano; tengo un par de propuestas de proyectos muy interesantes.. espero que se concreten; y más .. todo esto, solo si Dios quiere.

      En este año que comienza, que se cumplan vuestros proyectos (pero primero, definid los objetivos.. sino, no sabréis cuándo se ha cumplido el proyecto)... y os dejo un verso que debiera ser la base para la vida:

      Fíate de Jehová de todo tu corazón, y no te apoyes en tu propia prudencia. Reconócelo en todos tus caminos,  y él enderezará tus veredas.

      Proverbios 3: 5-6

      Feliz Año 2010