Java 8: From PermGen to Metaspace

Leyendo las novedades de Java 8, en donde LAMBDA es la mas importante, no puedo dejar pasar la que a mi entender es mucho mas importante:

La eliminación del PermGen a beneficio del nuevo Metaspace.

Quienes tenemos sistemas en producción hemos luchado con PermGen y sus parámetros de JVM hasta el cansancio.

En esta Pagina tenemos un detallado ejemplo, muy útil y fácil de leer (en inglés)

 

Json, problema de serializacion bi-direccional

Cuando tenemos una relación bidireccional en @annotations podemos obtener un error de serialización en Json.

En la práctica, se creará un bucle infinito intentando Serializar el objeto relacionado.

Para solucionar esto, en Jackson, tenemos estas anotaciones:

En la Collection agregamos @JsonManagedReference:


@OneToMany(mappedBy = "rubro",cascade = CascadeType.ALL,orphanRemoval=true)

@JsonManagedReference

private List<SubRubro> subrubros;

En la otra relación agregamos @JsonBackReference:


@JoinColumn(name = "rubro_id")

@ManyToOne(cascade = {CascadeType.DETACH})

@JsonBackReference

private Rubro rubro;

 

Problema solucionado.

Children, sustituto a ForEach en ZK

Cuando tenemos un bucle en ZK lo primero que pensamos es utilizar EL.
El problema es que EL no tiene el concepto de Binding tal como lo conocemos en el framework, con sus propiedades @Load, @Bind

Para solucionarlo, podemos utilizar Children.

Un ejemplo simple:


<hlayout children="@bind(frm.stocks)">

<template name="children">

<label class="atributoProducto" value="@load(each.stock)" />

</template>

</hlayout>

Donde frm es el controlador, stocks es la colección y each es cada item de la colección.

Android SDK. Device no reconocido. Solución en MacOS

Trabajando con proyectos en Android, plataforma que junto a iOS tienen gran demanda en el mercado,me encontré con algunas particularidades.

Una de ellas fue sincronizar en DEBBUG MODE una tablet de marca genérica o poco conocida.
Eclipse, o mejor dicho, Android Manager no lo reconoce.

Lo primero que se hace es ejecutar por consola desde el directorio Platform Tools del SDK:  adb devices
Esto devuelve una lista con los dispositivos Android conectados. En mi caso esta lista está vacía.

Para lograr desarrollar con nuestra Tablet genérica seguir estos pasos:

1- Encontrar el ID del VENDOR. En Lion, solo debemos ver en Información del sistema, USB y a la derecha debería aparecer el dispositivo. En este paso tenemos el ID del fabricante o VENDOR

Captura de pantalla 2013-06-16 a la(s) 08.47.32

2- Ejecutar en consola el comando con nuestro ID:

echo 0x2207 >> ~/.android/adb_usb.ini

3- Ejecutar el Kill del adb y volver a arrancarlo:


adb kill-server
adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
12AA45556DEF001 device

Problema solucionado.