« October 2008
SunMonTueWedThuFriSat
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
       
Hoy
XML

Unete al JUG de UPIICSA

Blog::Tags

Blog::Navigation

Blog::Editing

Bookmarks::Blogroll

Bookmarks::News

Blog::Referers

Las visitas de hoy a la página: 75

Site notes

This page validates as XHTML 1.0, and will look much better in a browser that supports web standards, but it is accessible to any browser or Internet device. It was created using techniques detailed at glish.com/css/.

Powered by Roller Weblogger.
Main | Next page »
20051019 Wednesday October 19, 2005
Segunda reunión de la Comunidad Java de México

Este jueves 20 de Octubre de 2005 tendremos la Segunda Reunión de la Comunidad Java de México. El lugar nuevamente será el Hotel Galería Plaza. La cita es a las 6:30 pm. Para asistir sera necesario hacer un registro al evento, el registro es gratuito solo accedan al sitio de la Comunidad y entren a la liga de registro. Solo un detalle con el registro: Si tienes un proxy configurado sera difícil que puedas entrar, lo mejor es entrar sin proxy, ya ven problemas técnicos...


En esta ocasión me toca estar como speaker, hablare un poco de Spring y hierbas relacionadas (IoC, DI, AOP), tratare de mostrar mas código que slides, a ver como le sale el experimento. Después de mi intervención, Sun Microsystems de México tendrá su participación en el evento. Luego de un receso tendremos sesiones de intercambio de experiencias sobre Spring, Ambientes de desarrollo, Estrategias de Pruebas, Alternativas de persistencia y Desarrollo de aplicaciones móviles. Al mas puro estilo de mesa redonda debatiremos de estos temas. Ya para terminar la jornada vendrá el convivio y el networking...


A pesar de los difíciles días en el trabajo, estaré por alla divirtiéndome con mis compañeros y amigos, un poco de ocio no me caera nada mal :P


Hasta la otra...

20050316 Wednesday March 16, 2005
Arrancan!!!
Ya es hora.  Bueno faltan unas cuantas horas, pero al fin es el dia de apertura de la Primera Jornada Técnica de JavaUp.org. Serán unos dias intensos, no necesitare Red Bull para "motivarme".

En fin, la promoción del evento ha funcionado muy bien,  me di cuenta porque las inscripciones al JUG han estado sube y sube...

La revista Software Guru estara el jueves en el evento, tal vez regale algunas suscripciones y ejemplares, en su proxima edicion nos dedicara un breve espacio. El periodico Reforma ayer me hizo una entrevista sobre el evento y hoy salio la nota en su edición electronica. Esto suena muy bien :).

Ya escribire aqui mi experiencia, al menos una poca de ella, el resto lo dejo para mi memoria, como lo mejor que me ocurre....
20050309 Wednesday March 09, 2005
Primera Jornada Tecnica del JUG JavaUp
La proxima semana por fin se efectuara la Primera Jornada Tecnica del JUG javaUp. Ha costado algo de tiempo, esfuerzo, algunos enojos (disculpame Edivargas), pero al fin es un hecho.

Estan cordialmente invitados todos los interesados que la proxima semana anden en el D.F., se efectuara en el auditorio Ing. Victor Bravo Ahuja de la UPIICSA. Si no son estudiantes de UPIICSA, pueden asistir de todos modos, solo registrense en la entrada y tendran acceso :)

El programa de charlas a continuación:

16 de Marzo de 2005.

17:00

Bienvenida.

Luis Antonio Mani

17:20

Overview Java

Jorge Vargas García

18:00

J2SE. Panorama general.

Juan Manuel Reyes

19:00

J2SE. Caso práctico

Juan Manuel Reyes


17 de Marzo de 2005.

17:00

JDBC y persistencia

Domingo Suárez Torres

18:00

J2EE. Panorama general.

Jesus  Ramos Cardona

19:00

Mercado laboral en tecnología Java

Emilio Osorio

 
18 de Marzo de 2005.

17:00

Integrando XML, Java, TeX y DSSSL. Caso práctico

Jorge Vargas

18:00

Web Services

Víctor  Romero

19:00

Desarrollo WEB. Caso práctico

Jorge Vargas


Souvenirs Sun Tech Days
Como mencione en el post anterior, me senti afortunado de haber obtenido un Duke este año, no resisti la tentacion para presumirles al Duke y otros souvenirs que adquiri en el evento :p

Da click para Zoom out
Dale clik para verlo más grande

Saludos...
20050305 Saturday March 05, 2005
Breve cronica de los Sun Tech Days 2005 en Mexico D.F.

Al fin tengo un ratito libre, bueno a decir verdad, hoy sábado tuve que venir a la oficina a "reponer" el tiempo que esta semana invertí en los Sun Tech Days. Tratare de trasmitir un poco mi experiencia en el evento.

El miércoles fue el primer día, llegue tarde, como es mi costumbre, iba con Miriam (aka la Papos), en el área de registro me encontré con mis queridos amigos Liliana Millán y Jesús Carmona. Entramos cuando James Gosling estaba dando la conferencia Magistral, igual que el año anterior, me guardo esos recuerdos para mi....

Lo gracioso de este evento fue que segun Gosling, este año, Sun envio 650 Dukes de goma, pero pues en México muchas  cosas se pierden, asi que solamente llegaron al evento 100 de ellos, ¿Donde estarán los 550 restantes?. Después de enterarme de esto, me siento realmente afortunado ya que pude obtener uno este año....

Como sea, después de la charla de Gosling, se realizo un demo técnico, subieron varios Sun Evangelist, divididos en dos equipos, el equipo A formado por Sang Shin, Raghavan Srinivas, Casey Chan y la bella Angela Caicedo. El equipo B, un poco desangelado por cierto, formado por Doris Chang, Simon Ritter y que me disculpe la otra evangelist, pero olvide su nombre :p. Bueno, la idea era una competencia entre los equipos, cada integrante iba a presentar una demo técnica de algún producto o desarrollo propio. Se estas demos, una que se me hizo curiosa, fue que Sun Java Creator incorpora ahora una especie de IM, al mas estilo del MSN Messenger o Yahoo Messenger. No resistí la tentación y cuando llegue a mi casa empecé la búsqueda de algo similar para mi poderoso Eclipse, así que encontré algo curioso, no cabe duda que hay mucha gente enferma :). Regresando a la competencia, no esta de mas decir que el equipo A gano.

Después de esto, entre a la primera sesión, trato de persistencia, a decir verdad no queria perdermela por nada, ya que de momento la persistencia es una de mis "aficiones". Casey Chan nos hablo de varias tecnologias para persistencia, me sorprendio que le dedicara gran parte de su charla a Hibernate.

Segui despues con la sesión de Oracle, muy buena por cierto, trato de WebServices y SOA. BPEL es sorprendente, la cereza del pastel al final de la charla, invoco un webService y le llego la respuesta a su movil, chidisimo. :)

Simon Ritter nos hablo después de Tiger, nada que no hayamos probado aún.

Regresando del almuerzo de nuevo Simon Ritter nos hablo en esta sesion de Clientes Enriquecidos, presento dos proyectos que en el futuro se incorporaran al SDK, estos proyectos están enfocados a tecnología Swing, ellos son JDNC y JDIC. Prometen bastante, tengo pensado un proyectito por ahi en Swing, sin duda los usare.

La última charla del primer día fue de JavaServer Faces, yo no he usado aún JSF,  Doris Chang durante dos horas nos hablo de esta tecnología, sin duda invertire mi tiempo en JSF también.

Al segundo día no pensaba ir, fui de improviso, de nuevo llegue tarde :p. Pero a tiempo para escuchar a Sang Shin, nos hablo de Java Business Integration (JBI), una tecnologia que se incluira en J2EE 5.0. Promete tambien.

Le siguio Angela Caicedo.... disculpen deje suspiro a gusto....  Ya, sigamos. Bueno ella nos hablo de desarrollo de Portlets, otra tecnologia a la que debo incarle el diente lo más pronto posible, sin duda.

Al final del dia Raghavan Srinivas, nos hablo de seguridad, JCA, JCE, etc. Sin duda elemental la informacion.

Muy a grandes rasgos asi fueron los SunTech Days 2005, ahora inicia la espera para el proximo año....
20050228 Monday February 28, 2005
Los Sun Tech Days Pues los Sun Tech Days son en esta semana. De nuevo el tiempo se paso rapidísimo, recuerdo aún como ingenuamente el año pasado asisti son toda la ilusión de promocionar a javaHispano, este año pues no quise que me ignoraran y desisti en el intento. Además de que comprendi que eso de andar de promocionando donde no te necesitan pues...

Pero bueno, asistire solo a un día, al primero, ya comentare como me fue...
20050207 Monday February 07, 2005
Música para aprender

Me ha llegado de parte de mi estimadisimo Jesús Carmona, una canción que en verdad como dice Jésus es "Master Piece". La rolita ya tiene algo de tiempo, es del 2003, pero no por ello pierde su vigencia.

La rola trata sobre nada más y nada menos que el patrón de diseño MVC, la compuso  James Dempsey que no se ahora pero en ese momento era Ingeniero de Operaciones en Apple.

Es una canción divertida, didáctica, con ritmo, agradable, la primera vez que la escuche me encanto y si ustedes no la conocen creo que bien vale la pena escucharla. Sobre todo si están empezando y no saben de que trata el patrón MVC.

En el blog de  Dion Almaer pueden descargar el MP3 de esta joya, o más directo aqui http://www.oreillynet.com/pub/wlg/3533

Saludos y hasta la otra.

20050127 Thursday January 27, 2005
En busca del jar perdido

Un compañero del trabajo, me ha pasado un link realmente interesante, se trata de un buscador de Jar's.

Se llama Jarhoo, lo he probado y es realmente util, sobre todo cuando no sabes en que jar de los mulpiples jar's de tus aplicaciones esta esa clase que necesitas o en todo caso que no necesitas...

Se los recomiendo, http://www.jarhoo.com

20041027 Wednesday October 27, 2004
Toma forma....

Pues este lunes tuvimos una reunión informal, algunos miembros del JUG de la UPIICSA y la profesora Marina Vicario de la Academia de Informática. Platicamos sobre la realización de la I Jornada Técnica del JUG.  Ya habiamos planeado la jornada para la segunda semana de noviembre, pero dado el poco tiempo, se ha movido a Marzo del 2005. Con este "colchón" de tiempo, estamos seguros que se organizara un mejor evento. :)

El viernes pasado tuvimos una reunión interna, en la cual se tomo la decisión de la emisión de una revista electronica, la cual permitira de mejor manera la transferencia de conocimientos a los miembros del JUG. El JUG ha crecido un poco, ya somos 120 :).

Poco a poco toma forma el JUG, dentro de 15 dias tendremos otra reunión, esta se esta planeando que se lleve a cabo en las instalaciones de la escuela, asi que ni modo Jorge...:)

Hay intenciones de conseguir "sponsors" para el evento, eso lo veo estos dias, espero conseguir algo para los chavos, tal vez souvenirs, playeras, etc. algo que se puedan llevar los asistentes al evento. Veremos que obtenemos...

¿Podra javaHispano participar en este evento al?

En fin, les agradezco a mis compañeros del JUG, entre ellos a Jorge Vargas, Juan Reyes, Héctor Fernández, Luis Mani, entre otros. Por su ayuda y soporte a este proyecto que cada vez más se fortalece.. Sobre todo les agradezco el haberlos conocido y conocerlos mejor...

20040808 Sunday August 08, 2004
De encuentros y desencuentros

Primero los encuentros.....

Este viernes algunos miembros del JUG de la UPIICSA, estuvimos presentes en la primera reunión de este grupo.

Ya nos habiamos tardado en hacer esta reunión, teniamos que poner en orden algunas proyectos del Grupo como:

Pues fijamos la reunión para el viernes 6 de agosto a las 19:00 hrs. en el Bar del Sanborns Aeropuerto. La papos(Miriam Garcia) y yo hemos llegado primero, ella falto al trabajo y yo me sali temprano. Estuvimos esperando un momento, poco despues llego Juan Manuel Reyes y un compañero suyo del trabajo. Mientras platicabamos llego un poco despues Jorge Vargas.

La verdad escogimos mal el lugar, en viernes y en un bar, habia mucho ruido (música viva), asi que decidimos cambiarnos para poder platicar mejor, justo en esto estabamos cuando llego Héctor Fernández y una acompañante.

Hablamos sobre la organización de la Jornada Técnica. La cual se va a realizar en la primero o segunda semana de noviembre en las instalaciones de la UPIICSA. Esta jornada se va a realizar en tres dias, cada dia va a ver 3 platicas, no pongo los titulos de las platicas, dado que pueden cambiar en los proximos dias. Espero que dentro de las siguientes dos semanas podamos ya definr bien el programa de la jornada.

Otro tema que tocamos fue una propuesta para tener nuestro propio sitio, con algunos servicios para los miembros del JUG. Yo creo que HostingJava.info, es una buena opción para nuestro hospedaje, ¿alguno de ustedes puede recomendarme algún otro?

Una propuesta de Juan Reyes fue que el grupo dejara de ser llamado el JUG de la UPIICSA y que tomara otro nombre para no cerrarlo solo a estudiantes de esta escuela, fue muy buena idea, estamos ahora pensando en el nuevo nombre de este grupo.

Pues a grandes rasgos esos fueron los temas tratados con respecto al grupo.

En toda la reunión pude apreciar el interes de los asistentes por hacer crecer este JUG. La verdad cada vez estoy más entusiasmado con este proyecto. Sobre los asistentes puedo decir que todos ellos tiene muy buenas opiniones y son muy propositivos. El ambiente que senti en la reunión fue de un gran compañerismo y camaraderia. Estoy muy contento. :) La pase muy bien, son muy agradables todos ellos...

Desde aqui les agradezco el interes demostrado en este esfuerzo compartido, ya espero la proxima reunión que será dentro de tres semanas, mientras en una lista de Yahoo, seguiremos discutendo los temas pendientes.

En el transcurso de esta semana enviare al grupo una minuta detallada sobre los temas tocados en la reunión.

Desencuentros... bueno, un desencuentro

No se que habra pasado, no lo entiendo. Y es que al principio tuve una sensación de culpabilidad, pero pues no sabia de que sentirme asi. Posteriormente me senti desorientado, tal vez un poco enojado y ahora me siento decepcionado.

La razón de esto no la conozco, yo solo puedo decir lo que paso de mi parte. No he tenido respuesta a ningún correo que le envie, y pues ya tiene tiempo de esto. Desde mayo que no lo veo. Justo una semana antes de cuando se realizo el evento en la UPIICSA de la conferencia de Siga Desarrollos.

Como mencione en alguna ocasión en este blog, lo vi por ultima vez un domingo, cuando me entrego un maletín del I Congreso de javaHispano. Se trata de RuGI, y es que la verdad, no queria hacer ningún comentrario en este blog. Pero pues no he sabido nada de el. No me ha contestado a ningún correo que le he enviado.

En mi último post de este blog, me puso un comentario, al cual conteste que estaba sorprendido de leerlo. Y la verdad que lo estaba.

Algo que me desoriento mucho, fue cuando borro el post de su blog, de la reunión que tuvimos alguna vez. Lo senti ofensivo.

Y es que en dicha reunión platicamos sobre "reunir" a la comunidad de javaHispano de México. Note en RuGI, interes en ello. Pero hasta la fecha nada de nada.

Lo que en verdad me da muchas vueltas en la cabeza cuando pienso en ello, es el motivo por el cual RuGI me ignora. Por eso me senti enojado, bueno es que no me gusta que me ignoren. Pero eso no puedo evitarlo.

La forma en la que se han dado las cosas me desorienta, pero no se que hacer. Si al menos supiera los motivos que a tenido RuGI, para ignorarme, los aceptaria. Pero cuando no sabes el porque de las cosas, no sabes que pensar o como aceptar lo que sucede.

Si algún comentario o actitud mia lastimaron la sensibilidad de RuGI, pues te pido una disculpa RuGI, aunque se que nunca fue mi intención hacerlo. De hecho no recuerdo algo ofensivo de mi parte.

Pues eso era todo.

20040629 Tuesday June 29, 2004
Generics y Autoboxing

En un proyecto que recientemente he terminado, use JFreeChart y JfreeReport, ademas de estos frameworks, use JCommons.

Ya para terminar el proyecto, le agregue al proyecto (que es una aplicación Swing), un dialogo “Acerca de”.

JCommons, provee un dialogo de esta naturaleza, pense: “je je je, una tarea facil”.

Sucede que este dialogo lo use de esta manera:


  import org.jfree.ui.about.AboutFrame;
  import org.jfree.ui.about.ProjectInfo;


  ProjectInfo projectInfo = new ProjectInfo();
  projectInfo.setLogo(ResourceLoader.getImage("logoLeman.png"));
  projectInfo.setName("Leman");
  projectInfo.setVersion("0.9.2");
  projectInfo.setCopyright("Copyright (c) 1997-2004 Yum-Ká Software.");
  projectInfo.setInfo("Aplicación de un Sistema de Gestión de la Calidad");
  projectInfo.setLicenceName("GNU GPL");
  projectInfo.setLicenceText(ResourceLoader.getTextFile("licence-GPL.txt"));
  /**
   * Los siguiente métodos, reciben un objeto que 
   * implemente la interface List.
   */
  projectInfo.setContributors(null);
  projectInfo.setLibraries(null);
  AboutFrame aboutFrame = new AboutFrame("Acerca de", projectInfo);
  aboutFrame.show();

Hasta aquí todo sencillo y muy rápido.

Como verán, deje pendiente agregar al dialogo, la información referente a los desarrolladores y las librerias empleadas. Pues después de hacer la primera demo del proyecto, que me dicen. “Es necesario saber quienes participarón en el desarrollo del proyecto”. “Bueno”, pense, “Algo trivial”

Me di a la tarea de hacer lo que me habian pedido. Entonces empezaron unos cuantos detalles. Antes de seguir, deben saber, que estaba usando el J2SE SDK 1.4.2_04.

Me pidieron varios cambios, ya saben, cambios no documentados, asi que empece con aquellos que eran prioritarios. Deje al final, lo del dialogo “Acerca de”

Cuando llegue a esa parte, intente atacar el problema asi:

  ArrayList developers = new ArrayList();
  ArrayList libraries = new ArrayList();
  developers.add("Desarrollador 1");
  developers.add("Desarrollador 2");
  developers.add("Desarrollador n...");
  libraries.add("JFreeReport");
  libraries.add("JFreeChart");
  libraries.add("JCommons");
  projectInfo.setContributors(developers);
  projectInfo.setLibraries(libraries);

No lei la documentación de JCommons, asi que me lleve una grata sorpresa al ejecutar mi aplicación y al tratar de mostrar mi “Acerca de”....

java.lang.ClassCastException

“mmm, algo anda mal, ¿Que sera?”. Me tome unos minutos para checar el codigo fuente de JCommons, y descubri mi error. Resulta que el objeto contenedor que almacena los “contributors” y las “libraries”, debe almacenar objetos Contributor y Library, respectivamente.

La JVM, me escupia este error, al tratar de convertir el objeto almacenado en el ArrayList, en un Contributor, en el ArrayList, yo estaba guardando un String.

El error anterior no me hubiera pasado en tiempo de ejecución en el nuevo y flamante J2SE SDK 1.5.0-beta2-b51, lo hubiera tenido en tiempo de compilación. Esto debido a la caracteristica de Generics, disponible a partir de esta versión. Pero bueno, antes de abordar Generics y Autoboxing, les comento como resolvi mi problema y me cubri de gloria al entregar el proyecto. :P


  ArrayList contributors = new ArrayList();
  ArrayList libraries = new ArrayList();
  Contributor c;
  Library l;
  c = new Contributor("Desarrollador 1", "dev01@server.com");
  contributors.add(c);
  c = new Contributor("Desarrollador 2", "dev02@server.com");
  contributors.add(c);
  c = new Contributor("Desarrollador n", "devnn@server.com");
  contributors.add(c);
  l = new Library("JFreeChart", "0.9.18", "license", "info");
  libraries.add(l);
  l = new Library("JFreeReport", "0.8.4.10", "license", "info");
  libraries.add(l);
  projectInfo.setContributors(contributors);
  projectInfo.setLibraries(libraries);

Ahora si, pues resulta que los tipos genericos era algo que a Java la hacia mucha falta, hace tiempo C# implementa esta funconalidad, cuando lei la especificación me agrado mucho, casi me paso al lado obscuro de la fuerza. :)

En fin, explico brevemente:

El ArrayList, puede almacenar cualquier tipo de objeto Java, para ser exactos, cualquier objeto que descienda de java.lang.Object. También puede almacenar tipos de datos primitivos, gracias al Autoboxing. El Autoboxing es el proceso de convertir tipos primitivos a objetos Java y viceversa, esto de manera automatica.Esta conversión tiene la pega en el performance de la aplicación. No es recomendable utilizar en exceso el Autoboxing.

Sin generics, por ejemplo si deseamos crear una estructura que almacene objetos de una sola clase, tenemos de dos sopas:

  1. Crear una clase contenedor, que solo admita el tipo de objeto que nosotros especifiquemos.

  2. Dejar que el desarrollador no meta la pata y solo almacene en algún contenedor Java(ArrayList, y compañia) los objetos de la clase especificada.

Si consideramos la primera opción, esto supone trabajo extra al desarrollador, ya que necesita diseñar e implementar esta clase, un ejemplo hipotetico seria:

Supongamos que deseamos almacenar en un ArrayList objetos de esta clase.

class MiObjeto {
  private String nombre;
  public MiObjeto(String nombre) {
    this.nombre = nombre;
  }
  public String toString() {
    return this.nombre;
  }

}

Ahora, creamos una clase se solo admita almacenar en ella objetos de tipo MiObjeto. La implementación de una clase con la funcionalidad de un ArrayList por ejemplo, requiere mucho trabajo, y eso solo para que pueda almacenar unicamente objetos MiObjeto. Si necesitamos almacenar otro tipo de objetos, hay que crear esa clase. Demasiado trabajo, para algo tan simple.

Ya vimos que si usamos el segundo enfoque, pues estamos propensos a muchos errores, y lo peor es que la mayoria de ellos solo se detectan en tiempo de ejecución.

Con generics, esto se facilita mucho, si tenemos la necesidad de una estructura que solo admita objetos de tipo MiObjeto, la implementación es muy sencilla y limpia:

public class Demo {
  public static void main(String[] args) {
    // podemos tener Collecciones de objetos, de tipos seguros
    Collection<MiObjeto> nombres = new ArrayList<MiObjeto>();
    nombres.add(new MiObjeto("domix"));
    nombres.add(new MiObjeto("mirix"));
    nombres.add(new MiObjeto("lulix"));
    nombres.add(new MiObjeto("jessix"));
    nombres.add(new MiObjeto("javix"));
    // esto es fabuloso¡¡
    for(MiObjeto nombre : nombres) {
      System.out.println("nombre = " + nombre);
    }
  }
}

La salida del programa es algo parecido a esto:

E:\pruebasSDK1.5>ant
Buildfile: build.xml
compilar:
    [javac] Compiling 1 source file to E:\pruebasSDK1.5\classes
probar:
     [java] nombre = domix
     [java] nombre = mirix
     [java] nombre = lulix
     [java] nombre = jessix
     [java] nombre = javix
BUILD SUCCESSFUL
Total time: 3 seconds


Si el desarrollador es muy despistado y codificara algo mal, como esto:

public class Demo {
  public static void main(String[] args) {
    // podemos tener Collecciones de objetos, de tipos seguros
    Collection<MiObjeto> nombres = new ArrayList<MiObjeto>();
    nombres.add(new MiObjeto("domix"));
    nombres.add(new MiObjeto("mirix"));
    nombres.add(new MiObjeto("lulix"));
    nombres.add(new MiObjeto("jessix"));
    nombres.add(new MiObjeto("javix"));
    nombres.add("burrix");
    // esto es fabuloso¡¡
    for(MiObjeto nombre : nombres) {
      System.out.println("nombre = " + nombre);
    }
  }
}

El compilador nos “avisa”, del despiste y no permite compilar

E:\pruebasSDK1.5>ant
Buildfile: build.xml
compilar:
    [javac] Compiling 1 source file to E:\pruebasSDK1.5\classes
    [javac] E:\pruebasSDK1.5\src\Demo.java:23: add(MiObjeto) in java.util.Collection<MiObjeto> cannot be applied to (java.lang.String)
    [javac]     nombres.add("burrix");
    [javac]            ^
    [javac] 1 error
BUILD FAILED
E:\pruebasSDK1.5\build.xml:8: Compile failed; see the compiler error output for
details.
Total time: 3 seconds


Muy cojonudo, ¿no?.


Otra caracteristica muy fregona de este nuevo SDK, es la nueva sintaxis del for. Chequen:

  for(MiObjeto nombre : nombres) {
    System.out.println("nombre = " + nombre);
  }

Para recorrer el ArrayList, ya no es necesario obtener un Iterator y movernos a travez de el. Ahora con la sintaxis de arriba podemos recorrer el ArrayList, de una manera muy sencilla. Aunque podemos seguirlo haciendo a la manera antigua.

Ahora me surgio una inquietud, ¿Que pasa si decompilamos el byte-code de la clase?.

Increiblemente obtenemos el suguiente código:

// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 
import java.io.PrintStream;
import java.util.*;
public class Demo
{
    public Demo()
    {
    }
    public static void main(String args[])
    {
        ArrayList arraylist = new ArrayList();
        arraylist.add(new MiObjeto("domix"));
        arraylist.add(new MiObjeto("mirix"));
        arraylist.add(new MiObjeto("lulix"));
        arraylist.add(new MiObjeto("jessix"));
        arraylist.add(new MiObjeto("javix"));
        MiObjeto miobjeto;
        for(Iterator iterator = arraylist.iterator(); 
            iterator.hasNext(); 
            System.out.println((new StringBuffer()).append("nombre = ").append(miobjeto).toString()))
            miobjeto = (MiObjeto)iterator.next();
    }
}

Como ven el compilador si genera el código para obtener el Iterator y hacer el recorrido como ha sido siempre. Genial. :)


Hasta la otra.

domix

20040522 Saturday May 22, 2004
Conclusiones Evento Java

Pues como ya les había mencionado con anterioridad, esta semana se llevo a la Conferencia "Desarrollo de Aplicaciones Web con Java y herramientas Borland".

Pues puedo decir con seguridad, que hemos tenido éxito, ya que el auditorio estuvo casi lleno, más o menos unos 300-350 asistentes.

De nuevo he de agradecer a muchas personitas que me han ayudado mucho en la realización del evento, las nombrare a continuación, sin ningún orden en particular:

 

Ing. Enrique Freyermuth, Jefe de las Academias de Informática de la UPIICSA

M. en E. Claudia Marina Vicario Solórzano, Profesora de las Academias de Informática

 

Mis amigos, todos ellos estudiantes de Ciencias de la Informática

Luis Antonio Mani Barrera

Alexandra Beltrán García

Humberto Martines Díaz

Denyce Castañeda Monterrosas

Alejandro Mora Ascencio

 

La próxima semana, posteare otro mensaje incluyendo al demás personal de la academia, ya que ellos me apoyaron muchísimo.

 

También agradecer a RuGI, él me apoyo con recursos ($), para ofrecer unos “regalitos” a los asistentes, estos regalitos consistieron en plumas grabadas con la leyenda:

 

Tu Lenguaje, Tu Comunidad

javaHispano.org

UPIICSA Mayo 2004

 

RuGI, no pudo acompañarme, me hubiera gustado que estuviera ahí, pero en fin. El próximo semestre haremos otro evento. ;)

 

Y un reconociendo especial a el M. en C. Gustavo Adolfo Arellano, ya que como decimos en México, se “rifo”.

 

Gracias a todos ellos, en verdad, muchas gracias.

 

Cometí un error imperdonable, olvide la cámara que me había prestado un amigo, no pude tomar fotos del evento y de las personitas que estuvieron ahí, hay un video, cuando logre rippearlo (esta en VHS), pondré unos cuadros.

 

Las actividades de ese día comprendieron:

La apertura del evento por la Prof. Marina Vicario, después de esto, tuve una intervención para promover  javaHispano, la verdad me puse nervioso, pero creo que cumplí mi objetivo, que era hablar de javaHispano y de anunciar el Grupo de Usuarios Java de la UPIICSA. Prosiguió Gustavo Arellano, el contenido de su material estuvo bastante interesante, comprendió todo el ciclo de desarrollo, desde la metodología de Borland, llamada ALM (Application LifeCycle Management), la cual para cada fase de esta, comprende una o varias herramientas Borland, las cuales son intercambiables por herramientas “semejantes” de otros fabricantes.

 

Al término de su intervención de nuevo tome la palabra para invitar de nuevo a mis compañeros a unirse al JUG de la UPIICSA, puedo asegurar que a raíz de este acontecimiento, el número de miembros del JUG se ha duplicado, en estos momentos, tenemos registrados 64 miembros.

 

Me alegra que en menos de un mes hayamos juntado a esta cantidad de interesados en tecnología Java en mi escuela, los planes a corto plazo del JUG comprenden la realización de unos talleres de diversos niveles. Ya les contare de los avances.

 

Eso fue a grandes rasgos lo que ocurrió el lunes 17. Y pondre algunas fotos de los que hicieron posible el evento.

 

Hasta la otra.

domix

20040504 Tuesday May 04, 2004
Evento Java

Después de un largo proceso burocrático, al fin el evento que les comente hace tiempo, es una realidad.  No podría haberlo llevado a cabo sin la ayuda de las siguientes personas: Profesora Claudia Marina Vicario Solórzano, Ing. Enrique Freyermuth Moreno Jefe de las academias de Informática, Lic. María Evelia López Moreno Jefa de la oficina de Difusión cultural, mis amigos Luis Antonio Mani Barrera, Luis Alberto Arenas Salinas, Luis Hernández Alcántara, y algunos más. Disculpen si omití a algunos…

 

Por supuesto también agradecer a Gustavo Arellano, como de que no, sin él no habría evento.

 

Tengo que admitir que no estoy satisfecho con lo que he logrado, la propuesta inicial incluía tres charlas técnicas, de las cuales solo me aprobaron una sola.

 

En fin, RuGI va a asistir al evento y le vamos a robar unos minutos Gustavo Arellano, para promover javaHispano y un JUG que esta en fase de creación.

 

Lo dicho, el próximo semestre volveré con mas fuerza, este evento crecerá mas y dará mucha información importante, lo sostengo: “El próximo semestre volveré”

 

Ok, basta de desahogos….

 

Visiten este lugar, ahí esta la información, pero para los vagos, aquí les pongo algunos datos…

 

Conferencia Técnica “Desarrollo de aplicaciones Web con Java y Herramientas Borland”

Impartida por el M. en C. Gustavo Arellano, Gerente de Calidad de Siga Desarrollos S.A. de C.V. Borland Bussiness Partner

 

El lugar: IPN UPIICSA Auditorio “Víctor Bravo Ahúja” el 17 de mayo de 2004 a las 17:00 hrs

Para los y las que viven en México, D.F., les hago extensiva la invitación, no importa que no sean del Politécnico, pueden asistir, deben dejar una identificación oficial en la entrada de la escuela y mencionar que van a la conferencia. no deben tener problemas con eso.

Ok, es todo por ahora, asi que, hasta la otra....

20040417 Saturday April 17, 2004
Inquietudes que matan

Bueno, pues basicamente se me metio en la cabeza, la realización de una Jornada Técnica en mi escuela. Empece ya con algunas cosillas.

Hasta ahora, tengo asegurada la asistencia de Gustavo Arellano, él es Gerente de Calidad de Siga Desarrollos, los representantes de Borland en México. Ademas, aún no confirmada la asistencia, pero es casi un hecho de RuGI, asi que RuGI, ya tienes el paquete encima.. :). Por cierto yo tambien tengo pensado dar una platica. ;D

Tengo el apoyo tambien de las Academias de Informática, a travez del Profesor Enrique Freyermuth, le presente la propuesta por escrito y pues le parecio muy buena idea. Por ahora me asegura que me apoya con el recursos necesarios de promoción y publicidad, aparte de dar su aval en la escuela.

Me falta apartar el auditorio principal de la escuela, eso lo hare el lunes, espero que todo salga bien.

Ya les detallare los temas a tratar en la Jornada, eso lo tengo que detallar aún.

20040330 Tuesday March 30, 2004
JBoss Como servicio

En estos momentos, me encuentro estudiando EJB's por eso me surgió la necesidad de ejecutar JBoss en mi equipo.
No era nada practico para mi iniciarlo desde la línea de comandos cada vez que lo ocupaba, asi que me le pregunte a mi gurú como podria iniciar JBoss como un servicio de Windows.

Encontre dos opciones:

De estas dos, me decidi por Java Service Wrapper, el proceso para iniciar JBoss como un servicio a continuacion:

  1. Descargue Java Service Wrapper para Windows
  2. Obviamente lo descomprimi :). A la carpeta, donde se descomprima la nombraremos {WRAPPER_HOME}
  3. Hay que copiar al directorio bin de JBoss los siguientes archivos:
         {WRAPPER_HOME}\bin\Wrapper.exe
         {WRAPPER_HOME}\src\bin\App.bat.in
         {WRAPPER_HOME}\src\bin\InstallApp-NT.bat.in
         {WRAPPER_HOME}\src\bin\UninstallApp-NT.bat.in
       
  4. Hay que renombrar los archivos con extensión in de la siguiente forma:
        {JBOSS_HOME}\bin\JBoss.bat
        {JBOSS_HOME}\bin\InstallJBoss-NT.bat
        {JBOSS_HOME}\bin\UninstallJBoss-NT.bat
       
  5. Hay que editar el archivo JBoss.bat, para que quede de la siguiente forma:
    @echo off
    @echo off
    rem
    rem Find the application home.
    rem
    if "%OS%"=="Windows_NT" goto nt
    
    echo This is not NT, so please edit this 
    echo script and set _APP_HOME manually
    set _APP_HOME=..
    
    goto conf
    
    :nt
    rem %~dp0 is name of current script under NT
    set _APP_HOME=%~dp0
    rem : operator works similar to make : operator
    set _APP_HOME=%_APP_HOME:\bin\=%
    
    
    rem
    rem Find the wrapper.conf
    rem
    :conf
    set _WRAPPER_CONF="%~f1"
    if not %_WRAPPER_CONF%=="" goto startup
    set _WRAPPER_CONF="%_APP_HOME%\conf\wrapper.conf"
    
    
    rem
    rem Run the application.
    rem At runtime, the current directory will be that of Wrapper.exe
    rem
    :startup
    "%_APP_HOME%\bin\Wrapper.exe" -c %_WRAPPER_CONF%
    if not errorlevel 1 goto end
    pause
    
    :end
    set _APP_HOME=
    set _WRAPPER_CONF=
    
    
    
  6. Si son observadores, notaran que se esta indicando buscar el archivo wrapper.conf en la carpeta conf de jboss, esta carpeta no existe, hay que crearla, mucho cuidado aqui. Aprovechando de una vez, tambien creen otra llamada logs. Hay que hacer notar, que el archivo de configurción como el de logs, pueden ir en cualquier otras ubicaciones, solo que hay que indicar en el archivo de configuración donde se localiza. Por comodidad es preferible hacerlo de la forma en la cual lo indico.
  7. Bien, ahora tenemos que crear el archivo de configuración de Wrapper, este como se habran dado cuenta, se encuentra en {JBOSS_HOME}\conf\wrapper.conf
  8. Editamos ese archivo, para que quede de la siguiente forma:
    #********************************************************************
    # Wrapper Properties
    #********************************************************************
    # Java Application
    wrapper.java.command=%JAVA_HOME%\bin\java
    
    # Java Main class.  This class must implement the WrapperListener interface
    #  or guarantee that the WrapperManager class is initialized.  Helper
    #  classes are provided to do this for you.  See the Integration section
    #  of the documentation for details.
    wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
    
    # Java Classpath (include wrapper.jar)  Add class path elements as
    #  needed starting from 1
    wrapper.java.classpath.1=%JBOSS_HOME%\lib\wrapper.jar
    wrapper.java.classpath.2=%JAVA_HOME%\lib\tools.jar
    wrapper.java.classpath.3=%JBOSS_HOME%\bin\run.jar
    
    # Java Library Path (location of Wrapper.DLL or libwrapper.so)
    wrapper.java.library.path.1=../lib
    
    # Java Additional Parameters
    wrapper.java.additional.1=-Dprogram.name=run.bat
    
    # Initial Java Heap Size (in MB)
    wrapper.java.initmemory=3
    
    # Maximum Java Heap Size (in MB)
    wrapper.java.maxmemory=64
    
    # Application parameters.  Add parameters as needed starting from 1
    wrapper.app.parameter.1=org.jboss.Main
    wrapper.app.parameter.2=-c         # Tipo de servidor
    wrapper.app.parameter.3=all        # En este caso se usa el completo, opcion "all"
                                       # se puede usar "default" o "minimal"
    #********************************************************************
    # Wrapper Logging Properties
    #********************************************************************
    # Format of output for the console.  (See docs for formats)
    wrapper.console.format=PM
    
    # Log Level for console output.  (See docs for log levels)
    wrapper.console.loglevel=INFO
    
    # Log file to use for wrapper output logging.
    wrapper.logfile=../logs/wrapper.log
    
    # Format of output for the log file.  (See docs for formats)
    wrapper.logfile.format=LPTM
    
    # Log Level for log file output.  (See docs for log levels)
    wrapper.logfile.loglevel=INFO
    
    # Maximum size that the log file will be allowed to grow to before
    #  the log is rolled. Size is specified in bytes.  The default value
    #  of 0, disables log rolling.  May abbreviate with the 'k' (kb) or
    #  'm' (mb) suffix.  For example: 10m = 10 megabytes.
    wrapper.logfile.maxsize=0
    
    # Maximum number of rolled log files which will be allowed before old
    #  files are deleted.  The default value of 0 implies no limit.
    wrapper.logfile.maxfiles=0
    
    # Log Level for sys/event log output.  (See docs for log levels)
    wrapper.syslog.loglevel=NONE
    
    #********************************************************************
    # Wrapper NT Service Properties
    #********************************************************************
    # WARNING - Do not modify any of these properties when an application
    #  using this configuration file has been installed as a service.
    #  Please uninstall the service before modifying this section.  The
    #  service can then be reinstalled.
    
    # Name of the service
    wrapper.ntservice.name=JBoss
    
    # Display name of the service
    wrapper.ntservice.displayname=JBoss Application Server
    
    # Description of the service
    wrapper.ntservice.description=JBoss Application Server
    
    # Service dependencies.  Add dependencies as needed starting from 1
    wrapper.ntservice.dependency.1=
    
    # Mode in which the service is installed.  AUTO_START or DEMAND_START
    wrapper.ntservice.starttype=AUTO_START
    
    # Allow the service to interact with the desktop.
    wrapper.ntservice.interactive=false
    
  9. Ahora hay que copiar algunos archivos más a la carpeta lib de jboss:
    {WRAPPER_HOME}\lib\Wrapper.DLL
    {WRAPPER_HOME}\lib\wrapper.jar
    
    

Con eso bastaria para iniciar para hacer una prueba. Esta consiste en ejecutar el archivo {JBOSS_HOME}\bin\JBoss.bat, con la finalidad de detectar algun error en la configuracion del Wrapper. La salida de la consola de las ultimas dos lineas, debe ser algo parecido a esto:

jvm 1 | 21:01:55,340 INFO [Server] JBoss (MX MicroKernel) [3.2.3 (build: CVS
   Tag=JBoss_3_2_3 date=200311301445)] Started in 44s:781ms

Para detener JBoss, desde otra consola, tecleamos {JBOSS_HOME}\bin\shutdown.bat -S.

Si no tuvimos problemas, ejecutamos el archivo {JBOSS_HOME}\bin\InstallJBoss-NT.bat, obtendremos algo como esto:

C:\jboss-3.2.3\bin>InstallJBoss-NT.bat
   wrapper | JBoss Application Server installed.
   C:\jboss-3.2.3\bin>

Con esto ya no debemos preocuparnos por iniciar JBoss cada vez que tengamos que usarlo, ahora correra como un servicio de Windows. Ya solo bastara abrir la consola de Servicios de Windows e iniciar JBoss.

Echen un vistazo:

Si deseamos remover el servicio, ejecutamos {JBOSS_HOME}\bin\UninstallJBoss-NT.bat

Practico ¿no?

Linderel, habia hecho algo similar...

Por cierto, la instancia de JBoss ejecutandose, consumira los 64 MB que le indicamos al archivo de configuración. Obviamente se pueden establecer parametros diferentes, pero como comentaba usuariox, suele ser un poco doloroso tenerlos apartados para un solo proceso...

Hasta la otra.

 

Copyright (C) 2003-2004, La zona muerta