lunes, 30 de noviembre de 2009

NetBeans 6.8 RC 1

Se publicó (por fin) el NB 6.8 RC1.. el cual incluye la traducción al español.

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

Spring ROO - Para desarrollar una aplicación en 10 minutos

En el JavaDay se expuso Spring Roo, al cual quedamos mi esposa y yo sorprendidos por la rapidez para poder crear una aplicación.

Aquí presento un vídeo que muestra la simpleza de este framework.

sábado, 28 de noviembre de 2009

ApuntesDeJava.com

Gracias a mi amada esposa, ahora mi blog tiene dominio propio:

http://apuntesdejava.com

Ahora, cada vez que se acceda a apuntesdejava.blogspot.com, se redireccionará al nuevo dominio.

Sigamos con los apuntes de Java...

viernes, 27 de noviembre de 2009

Java Day en la UNI - agradecimientos

Anoche se realizó el Java Day en la UNI, donde se expusieron interesantes temas respecto a la tecnología Java, los frameworks (como Spring MVC, Spring ROO) que apoyan enormemente al desarrollo de aplicaciones, las tendencias del desarrollo de sistemas basados en SOA, y más. Fue realmente impresionante.

Solo que el tiempo no nos dió para más. Habían muchos temas que se quedaron en el tintero.

Agradezco a José Luis Casiano por haberme invitado como expositor a este evento. Estuvo todo organizado... y (como le dije).. su tranquilidad me desesperaba. Otras personas estarían golpeándose la cabeza o gritando cuando algo no habría salido como espera.. pero José Luis mantuvo la calma de un cirujano en plena operación.

Los que no pudieron ir ayer al evento, aquí les dejo mi presentación sobre Java EE6.

También me tocaba exponer sobre JavaFX... solo que el tiempo ya se nos había acabado. Así que aquí publico la presentación de JavaFX.


Anoche no pude acabar con la demostración de una aplicación usando JavaEE6, así que en un siguiente post publicaré el código fuente (además del proyecto para que lo puedan bajar) y de la misma manera sobre JavaFX. Tenía unos ejemplos monos.. en fin.. ya será para otra oportunidad.

jueves, 26 de noviembre de 2009

Unit Test para EJB 3.1

NetBeans 6.8 viene con una (de muchas) característica novedosa: Pruebas Unitarias para EJB 3.1.
Para ello, primero recordemos lo siguiente:
  1. EJB 3.1 es parte de Java EE 6
  2. Glassfish V3 implementa Java EE 6
  3. NetBeans 6.8 tiene soporte para Java EE 6, y por tanto también a Glassfish V3
Hecha esta aclaración, probemos lo siguiente: Hacer un módulo ejb para GF3 llamado CalculadoraModule.



Ahora, recordemos algunas de las características del EJB 3.1:
  1. Existen los @Singleton que son como un Stateless pero único y perpetuo en el contenedor. Permite también sincronización para evitar "datos cruzados".
  2. Ya no requiere de una interfaz como local o remote, puede ser una clase y nada más.
  3. Para acceder a través de un JDNI no se necesitará de direcciones raras según sea el contenedor. Todas serán "globales" para un mismo estándar.

Hecho el recordatorio, crearemos un SessionBean pero que sea Singleton y que no sea ni local ni remote. Este Bean se llamará "SeriesBean"



Para nuestro ejemplo, crearemos un método llamado "factorial" que hace justamente eso: calcular el factorial

package ejb;

import javax.ejb.LocalBean;
import javax.ejb.Singleton;

@Singleton
@LocalBean
public class SeriesBean {

    public long factorial(long base) {
        if (base < 1) {
            return 1;
        }
        return factorial(base - 1) * base;
    }
}


Con la clase recién creada y seleccionada, entramos a la opción del menú principal: Tools > Create JUnit Tests. Seleccionamos a JUnit 4.x. Luego, en la ventana de creación de la prueba, seleccionar al menos las siguientes opciones: Method Access Level: Public, Generated Code: Default Method Bodies

Clic en OK, y veamos la clase que ha creado.

package ejb;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

public class SeriesBeanTest {

    public SeriesBeanTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    @Test
    public void testFactorial() throws Exception {
        System.out.println("factorial");
        long base = 0L;
        SeriesBean instance = (SeriesBean)javax.ejb.embeddable.EJBContainer.createEJBContainer().getContext().lookup("java:global/classes/SeriesBean");
        long expResult = 0L;
        long result = instance.factorial(base);
        assertEquals(expResult, result);
        fail("The test case is a prototype.");
    }

}

Modifiquemos un poco el código para ver si es cierto que nos ha creado un JUnit para un EJB.

    @Test
    public void testFactorial() throws Exception {
        System.out.println("factorial");
        long base = 20;
        SeriesBean instance = (SeriesBean)javax.ejb.embeddable.EJBContainer
                .createEJBContainer()
                .getContext()
                .lookup("java:global/classes/SeriesBean");
        long expResult = 2432902008176640000L;
        long result = instance.factorial(base);
        assertEquals(expResult, result);
    }


Ejecutamos la prueba con Alt+F6 y listo.


Ahora podemos crear y probar EJBs con más comodidad.

viernes, 20 de noviembre de 2009

Discusión de lenguajes

No sé cómo llamar este post, pero es un extracto de los comentarios de un post de SinergiaSinControl.com titulado "Dominación mundial"
Me pareció buenísimo. Aquí les comparto:

 UN puntero a null que hoy sale del stack dijo...

    Hola, hoy quiero gritar al mundo que soy un puntero a null, y no me averguenzo de ello.
    Sí, hoy he decidido no ocultarme más y reivindicar desde este foro de Sinerjias un día anual del orgullo null. PORQUE HAY OTRAS FORMAS DE VIVR LA SEXUALIDAD QUE APUNTAR A UNA POSICIÓN VÁLIDA DE MEMORIA, COPÓN YA!!!



variable del PHP dijo...

    Al puntero ese que ha salido del stack; ¡anticuado! ¡carrozón! ¡ahora lo que se lleva es ser BI. Yo ahora mismo soy un string, y puedo ser una fecha o un objeto, o un puercoespín rosa.

    ¡Dia del orgullo SCRIPT ya!



UN puntero a null que hoy sale del stack dijo...

    Variable de PHP, por culpa de entidades promiscuas como vosotras, que lo mismo les da hacérselo con un tipo de dato u otro es por lo que la sociedad nos mira mal.
    Con Ada Lovelace esto no pasaba


Malloc dijo...
    aaaaah, los tiempos de Ada Lovelace... ¡qué mujer! ¡la primera programadora! ¡y fiel al estilo femenino, era programadora cuando no existían ordenadores!

    mujeres: complicándose la vida desde tiempos inmemoriales

    Para una función de edad, como yo, sois todos unos drogadictos, jovenzuelos indecentes. Y tú, puntero, un poco de decoro, que eres de un lenguaje con clase, hombre, no como esa pestuza del PHp o esos delincuentes de javascript.


UN puntero a null que hoy sale del stack dijo...
    Hombreee, malloc()!!.... digo...Funciooón, malloc()!!!
    Que alergía verte por estos lares.
    Con la de buenos ratos que hemos pasado tu y yo.
    Te acuerdas cuando nos dedicábamos a apuntar aposiciones aleatorias? LAs caras quese le ponían a los testers. Juas juas juas, que tiempos


Objeto dijo...

    Estáis todos locos. Todos ahí enseñando vuestras vergüenzas sin decoro, que todos vean vuestras intimidades... Luego que os hacen un DoS de nada y os vais por la patilla abajo. Si ejjjque...


UN puntero a null que hoy sale del stack dijo...
    éramos pocos e invocaron al construcor de la clase Abuela.

    Objeto: No vengas aquí a dártelas de casto y puro. Os creeis que por ser de alto nivel perteneceis a una estirpe superior. Me se de unos cuantos casos de colegas tuyos, y tengo papeles que lo demuestran, que generan NullpointerException cuando se creen que nadie les está mirando.
    Si ejjjqueee.


Nacho Álvarez dijo...

    Legalizar punteros nulos xDDDDDDDD...


Un NullPointerException dijo...

    Para el puntero a null que salio del closet, nosotros no somos seres generados por objetos malintensionados.

    Somos generados espontáneamente cuando la nada quiere hacer algo, lo que motiva una ruptura en la continuidad espacio-temporal de la cual somos el resultado palpable.

    Y los programadores quieren dominar el mundo, jajajaja, estarán preparados el día que puedan controlar su código para que nosotros o los StackOverflowException (primos lejanos nuestros, que se generan también en rupturas espacio-temporales) no podamos aparecer.

    Mientras no lo logren, seguirán siendo dominados por los releases retrasados y por los logs de errores, y nosotros seguiremos dominando el mundo, buaaaaaaaaaaaaaaaah.


UN puntero a null que hoy sale del stack dijo...

    NullPointerException, vosotros sois los pedos de los objetos decadentes, pero no teneis que avergonzaros de ello. Estamos todos en el mismo bando, hermano y lucharemos...
    Lucharemos hasta /dev/null si hace falta, para que los pérfidos programadores no dominen el mundo.

    NOOO NOO NO NOS MOVERÁN...
    NOOO NOO NO NOS MOVERÁN...
    DEL BANCO DE MEMORIA...NO NOS MOVERÁN!!

public static void main dijo...
    Yo soy el alfa y el omega,
    el inicio y el fin.

    Un metodo para dominarlos a todos,
    y hacerlos punteros nulos,
    en las tinieblas
    donde habita Mr Puertas.


Duczen dijo:
(...)  Como erradiques el 99% de los errores, me sé de un sector que iba a sufrir paro a mansalva.

Pascal (lenguaje zombi) dijo...
    tranquilo, Duczen. los errores, por definición, son infinitos. Son como los zombis, cuando matas uno, otro distinto ocupa su lugar.

UN puntero a null que hoy sale del stack dijo...
    Pascal, no menciones la soga en casa del ahorcado, juuuurl
    POr cierto, tu no te dedicabas ahora a hacer anuncios de yogures bio y leche descremada? O era otro Pascal? Es que con esto de tener las mente a null a veces pierdo el hilo

Una consulta SQL dijo...

    Jajajajaja, ilusos, ustedes hacen mi trabajo sucio, yo soy el pu** Stalin de los lenguajes!!!

fichero binario dijo...

    stalin, stalin...¡hasta tú me obedeces a mí! ¡pringao! ¡eres el oficinista que clasifica los datos!

miércoles, 11 de noviembre de 2009

Sun en el mundo OpenSource

Aquí comparto una interesante presentación realizada por Ezequiel Singer. Sin duda algo que no deberiamos pasar por alto.



martes, 10 de noviembre de 2009

MVC / MVP

El Modelo - Vista - Controlador es encontrado en casi cualquier artículo y muchas tecnologías demanda usar estos principios, por lo que genera bastante confusión en su significado actual y sus variaciones.

Aquí podrán encontrar una definición sobre el MVC - que fue creado en los 70s -, y el MVP que fue creado en los 80s. Vamos, el tiempo pasó, y en el mundo de la tecnología, solo un año es suficiente para cambiar radicalmente el mundo.

Aquí el enlace.. un interesante artículo.

http://wiki.apidesign.org/wiki/MVC (en inglés)

Java: Primeros pasos - La revista

El grupo "Java: Primeros Pasos" ha lanzado el segundo número de su revista digital. La podéis descargar de aquí

http://osum.sun.com/group/javaprimerospasos

Los temas que tratan en este número son:
  1. Java Web "JSP": Cómo crear una JSP. (Usando el único IDE que lo tiene todo: NetBeans*)
  2. Instalación de MySQL, Apache y PHP en Fedora

Muy recomendada para quienes recién se inician en el mundo Java.

Felicitaciones al grupo

(*) La publicidad de NB en este post es mía :)

viernes, 6 de noviembre de 2009

Java Day en la UNI

José Luis Casiano, miembro líder de OSUM UNI,  anuncia el Primer Java Day en la UNI.
Se realizará el día 26 de diciembre en el auditorio CTIC de la Universidad Nacional de Ingeniería.
Los temas a tratar son los siguientes:
  • Presentación de Open Source University Meeting (OSUM) and Sun Academic Initiative (SAI)
  • Test Driven Development ( Diseño dirigido por pruebas ) – Juan Carlos Vergara
  • Lo Nuevo de JavaEE6 – Diego Silva (Sí, yoo!)
  • Spring ROO- José Diaz
  • Spring MVC- Susan Inga
  • Service Oriented Architecture (SOA) – Javier Rosado Carrizo
Habrán premios para los asistentes.. y coffee break. :)

Comienza a las 7pm.. así que ahí nos vemos.

LA ENTRADA ES LIBRE.


Actualización: Comienza a las 6pm!!