Software Guru Conference & Expo 2014

Bienvenido a Java Mexico

Java México es una comunidad de desarrolladores mexicanos en el lenguaje Java.

Este sitio es colaborativo, automáticamente al registrarte obtienes un Blog para compartir tus conocimientos o información acerca del lenguaje. Antes de publicar en tu blog o los foros por favor lee los lineamientos de publicación.

Para dudas y problemas con respecto al lenguaje Java puedes visitar los Foros de Discusión.

También puedes responder nuestra encuesta para saber en que estado vives!

Java Day 2013 en Guadalajara, Julio 27

Hola comunidad JavaMéxico,

Se les hace una atenta invitación al próximo evento Java Day en Guadalajara, el Sábado 27 de Julio.
Habrá dos conferencias por expertos en Java: "Que hay de nuevo en Java EE 7" e "Implementando geolocalización en las apps móviles". Además cuatro talleres a escoger, donde se practicarán las últimas APIs en Java EE 7, así como la migración de aplicaciones Java EE 4 o 5 a Java EE 6 y 7. Además talleres de JavaFX con Java EE 7 y Lambdas en Java SE 8 .

Para más información de las actividades y los boletos en la siguiente página del evento: http://www.gdljug.mx/ ,

Reseña del Taller de Ceylon: Conceptos Basicos (y experimentos no tan basicos). Primera Parte

El sábado pasado asisti al taller de Ceylon, en el taller vimos diferentes temas: Conceptos básicos, Clases, Manejo de Nulos, Uniones e Intersecciones, Funciones, Iterables

En la sección de Conceptos Básicos vimos al típico hola mundo:

void hello() {
    print("¡Holá, Mundo!");
}

En Ceylon un programa es simplemente una función de primer nivel sin parámetros.

Vimos que cuando una funcion sólo devuelve una expresión, se puede abreviar usando la "flecha gorda"

void helloName() => print(greeting("Ceylon"));

Y tambien nos introdujeron a los parametros variadicos (los que pueden aceptar multiples valores):

Integer sum(Integer* numeros) {
    variable value sum = 0; //Los valores asignables deben anotarse con "variable"
    for (x in numeros) {
        sum+=x;
    }
    return sum;
}

Una de las caracteristicas mas interesantes de Ceylon es que puede inferir el tipo de una
declaración local.

void inferredTypes() {
    Integer time = process.milliseconds;
    value nl = process.newline;
    function sqr(Float float) => float*float;
}

Eclipse revienta en el autocompletado

Bueno, para que no se me olvide y para ver si le sirve a alguien.
Resulta que, haciendo una actualización completa de sistema (en debian, apt-get dist-upgrade) no sé que rayos se movió, el punto es que al iniciar el eclipse, a la hora de invocar el autocompletado (CTRL+barra de espacio) se cerraba así, sin más, sin alertas ni logs... yo me quedé sorprendido

Y bueno, después de un par horas buscando en google (digo, sé que es algo de tiempo, pero ¿cómo rastreas algo que ni siquiera deja un log o ventana de error? )

Total que encontré una posible solución y la dejo por cualquier cosa.
Resulta que en fichero eclipse.ini se modifica así:

Ejemplo de fichero eclipse.ini

-vm
/usr/java/jdk1.6.0_31/bin
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile

Rituales de Arquitectura y patrones: De la importancia del camino medio Once and Only Once Balances Yagni – Parte 2

…escuchó a un maestro que estaba enseñándole a una niña a tocar un instrumento de cuerda. Dicho maestro le dijo que si la cuerda estaba muy floja no sonaría, pero si la cuerda del se encontraba muy tensa se rompería: la cuerda debía estar en su justa tensión para que pudiera dar música y armonía. En ese momento comprendió el camino medio

En la parte anterior de esta serie, les relate sobre YAGNI y OAOO y les dije que OAOO y YAGNI son como el Ying y el Yang. Se balancean. Sin OAOO, YAGNI lentamente nos estrangularía. Con OAOO, siempre tienes un sistema que puedes mejorar (frase de Ron Jeffries).

Yo también amarraba al gato, construía los sistemas como veía que los construían los demás, estaba en el nivel Shu de ShuHaRi a la hora de programar sistemas empresariales, ponía mis DAOs, ponía mi Servicio y ponía mi Controller.

Todos los sistemas “bien arquitectados” que conocía lo hacían, asi que lo hacia yo también. Si un sistema bien arquitectado se ve así al final, debe ser por que se veía así desde el principio… ¿no?

Pruebas de unidad con Mockito(Aportación) - [SGCE2013]

En esta ocasión, con la finalidad de aportar algo a la comunidad(y ver si de paso me gano un pase) les quiero poner un tema que les de a conocer una herramienta que puedan usar los que están haciendo desarrollo en Java.

Les platico brevemente el escenario que me ha puesto a escribir de este tema: hace un par de meses me asignaron a la tarea de hacer el mentoring de un grupo de desarrolladores, el objetivo era "aumentar la calidad del software que se desarrollaba", y esto lo fui elaborando a través de varias técnicas: programación en pares, dojos, control de versiones, mediciones de tiempos, pomodoros, etc., y la guía técnica para ir creciendo un proyecto con Java; yo vengo desarrollado Groovy desde hace mucho tiempo y esto se me hizo interesante para medir nuevamente el tiempo de desarrollo de un proyecto con Java. El factor común de todos era Maven y por supuesto Java(en varios niveles de experiencia), lo cual lo hacía más interesante.

Hibernate 4.2.2 y Spring 4.0.0 (SGCE2013)

Como ya confirmo la persona que nos quito dolores de cabeza de como trabajar con distintas base de datos y nos dio otros dolores de cabeza entonces me di a la tarea de terminar lo que les presentare.
Hablare específicamente de una solución con Hibernate y Spring, no me iré a lo general si no al trabajo cotidiano de todo programador. Como trabajar he integrar una solución a los problemas que se nos presentan a diario.

Hay que tomar en cuenta de que por lo regular se usa Hibernate para las aplicaciones nuevas y/o con bases de datos bien estructuradas.

Antes de entrar de lleno a esto es importante que se echen un clavado en algunos temas si no estan relacionados con ellos: inyeccion de dependencias, Spring, Hibernate, Jpa, y los que se acumulen en el camino.

Estoy armando una aplicación de prototipo y me di a la tarea de usar Hibernate 4 y la nueva versión de Spring Frameworks 4, pero con una arquitectura que me ayudara a realizar las operaciones de la forma mas simple posible.

¿Qué espero de un lenguaje de programación? [SGCE2013]


Existen cientos de lenguajes de programación, cada uno con características propias y a la vez semejantes entre si. Algunos dirán que lo importante no es el lenguaje sino quien lo usa (y para que). Tal vez sería ideal que tuviera documentación fácil de leer, y de entender.

include "stdio.h"

void main(){
    printf("¡Hola, mundo!");
}

El primer lenguaje que use fue C. Muy bueno para operaciones matemáticas, aunque la verdad los árboles y listas dinámicas con punteros daban muchos dolores de cabeza (muchos días sin dormir y permanecer aislado como zombie).

Public Sub algo()
MsgBox "Hola mundo",vbInformation, "Aviso del sistema"
End Sub

Decidi probar otros lenguajes como VB, al principio parecía bueno. Podía crear ventanas con mucha facilidad. Sin embargo, cuando queria hacer algo más avanzado (usar bases de datos por ejemplo) tenia muchos problemas. Tal vez era yo y no el lenguaje, pero de plano no me convenció y dejé de usarlo.
 

Rituales de Arquitectura y patrones: De la importancia de amarrar al gato - Once and Only Once Balances Yagni – Parte 1 SGCE2013

El maestro de zen y sus discípulos comenzaron su meditación de la tarde.El gato que vivía en el monasterio hacía tanto ruido que distrajo los monjes de su práctica, así que el maestro dio ordenes atar al gato durante toda la práctica de la tarde.
Cuando el maestro murió años más tarde, el gato continuó siendo atado durante la sesión de meditación. Y cuando, a la larga, el gato murió, otro gato fue traído al monasterio y fue atado durante las sesiones de práctica.
Siglos más tarde, eruditos descendientes del maestro de zen escribieron tratados sobre el profundo significado espiritual de atar un gato para la práctica de la meditación

Hace algunos años asistí a un evento que Sun organizo para promocionar Java aqui en Mexico (Java Dev Days creo que se llamaba). En aquel entonces entre a una presentacion, creo que era de Sang Shin (el creador de JavaPassion) en la que explicaba lo simple que era utilizar JRuby con Ruby on Rails para crear una pagina de “hola mundo”. Era algo mas o menos como este video: http://www.youtube.com/watch?v=sas3KCKwyHI. Era la primera vez que veia a RoR asi que por ese lado me parecio educativo… sin embargo, la mayor parte de audiencia… se estaba durmiendo!

HashMap: Depurando el ingreso a base de datos. SGCE2013

Normalmente no es ningún problema ir a una tabla y recabar los datos necesarios, como una lista de productos en tienda y sus precios. Pero ponte a pensar en lo poco eficiente que es ir una y otra vez por datos que en realidad no están cambiando con tanta frecuencia.

Hace no mucho tiempo tuve un pequeño problema de comunicación entre mi servidor de procesos y el de base de datos, pero resultó en que para un acceso a datos, solo para el proceso de autentificación del usuario se tardaba alrededor de tres o cuatro segundos, para la industria para la que trabajo, donde un proceso no debe tardarse más de los 8 segundos, este performance es terrible (Desarrollo clientes/servidor para PoS).

De allí que decidí disminuir a lo más mínimo (¡depurar!) el acceso a datos vía consultas. Busqué alternativas que me permitiera que con un solo ingreso a BDD [base de datos], en mi mente al inicio de mi clase principal, se recabaran los datos de uso recurrente y se pusieran a disposición para el resto de los procesos y objetos en cualquier tiempo.
¡Y fue así como los encontré! ¡Los HashMap!

javaMéxico te lleva a SGCE 2013

Concurso: Gana un pase gratis a SGCE 2013

Pues bien, como muchos de ustedes ya saben, la edición 2013 de la Software Guru Conference & Expo tendrá lugar del 4 al 6 de julio, y aquí en javaMéxico tenemos 3 pases al evento, los cuales ofreceremos a 3 afortunados miembros de la comunidad, de la siguiente forma:

  1. Es requisito indispensable ser miembro de la comunidad, es decir, ya contar con un usuario aquí en javaMexico.org previo a la publicación de este concurso.
  2. Los interesados deben publicar un post en su blog, que incluya en el título el texto (SGCE2013).
  3. El post debe tratar algún tema relacionado con el desarrollo de software, aunque no sea algo directamente relacionado con el lenguaje Java, pero sí que tenga alguna aplicación en el desarrollo de software sobre la JVM. Si es algo específico de otro lenguaje o plataforma y que no se puede aplicar en desarrollo sobre JVM, no se tomará en cuenta.
  4. Sólo se permite un post por usuario.
  5. La fecha límite de publicación del post es el lunes 24 de junio a las 23:59:59.
Distribuir contenido