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!

Clases internas en Groovy

Acabo de toparme con un problema en Groovy. Tristemente la solución que todo mundo da en foros es simplemente "no lo hagas, es mejor si haces [cualquier otra solución]"; pero, qué tal si lo que necesitaba era esto?

Bueno y ¿cuál es el problema? Es simple: el soporte en clases internas tiene problemas con atributos heredados en la clase externa. Tiene solución, y es sencilla, pero me parece una leaky abstraction y honestamente la encontré por pura suerte, buscando maneras de darle vuelta al asunto.

El problema se da bajo estas circunstancias:

//Una clase padre, normalita, con un atributo normalito
class Parent {
  String name
}
//Una subclase, normalita, con una clase interna
class External extends Parent {
  //Un atributo propio de esta clase
  String outer
  //Y esta es la clase interna
  class Internal {
    //También tiene un atributo propio
    String inner
    //Este método truena como ejote
    void boom() {
      //Esta línea se ejecuta bien, se despliega el atributo externo y el interno
      println "Outer is " + outer + ", inner is " + inner
      //Pero esta línea truena con un error macabro,

JavaFX una Herramienta Realmente Potente

En todo el tiempo que llevo trabajando como desarrollador he probado herramientas que me han permitido mejorar los tiempos de desarrollo y la productividad, y tengo que confesar que mi fuerte no es el diseño de la interfaz de usuario, y aunque estuve alejado de Java por algún tiempo por mi trabajo con Dynamics AX, en el reencuentro que he tenido con el lenguaje, me he encontrado con unas muy agradables sorpresas, tal vez las que más me han impactado de forma muy favorable son JavaFX y Scene Builder.

Estas dos herramientas han hecho que ese placer al programar se multiplique y que Java ahora más que antes sea mi lenguaje preferido, es cierto que le debemos mucho a swing, porque en su momento fue también un instrumento de mucha ayuda. Con la llegada de Los IDE's como Eclipse, Netbeans, IntelliJ etc, se acortaron los tiempos de programación enormemente, pero mi punto débil siempre ha sido el diseño de la interfaz, en realidad nunca logré resultados que me dejaran satisfecho, siempre hacia falta algo para que me sintiera bien con la presentación.

Scala Tutorials

Un buen sitio para aprender Scala.
http://scalatutorials.com/

Publicado SQL Data Workshop

Después de poco más de año y medio de tiempos libres dedicados y, gracias a que mi compañera de trabajo me ayudó con la documentación, he podido liberar una herramienta que se conecta con los gestores de base de datos más populares para permitir al usuario realizar operaciones SQL.

No es una herramienta de administración completa, más bien está enfocada en la ejecución de consultas y obtenciónde datos. de igual forma, tiene un diseñador visual de consultas (muy parecido al SQL Server Management Studio) aunque con menos prestaciones en esta parte. Aunque estás líneas presenten cierto sesgo, puedo argumentar que esta herramienta la utilizo a diario en mi trabajo y me siento cómodo trabajando con ella. Aun faltan mejoras, las cuales iré incorporando con el paso del tiempo.

La aplicación está completamente construida en Java y Swing. Para el retoque visual y gestión de componentes y documentos utilizo el framework jidesoft (http://www.jidesoft.com. Aunque es una librería de pago, la compañía me ha proporcionado una licencia totalmente gratis para incorporar la librería en la versión final.

Esta es la página del proyecto:

Paginacion: DataTables + Spring

Les cuento que ando un poco alterado llevo 4 tasas de cafe ya termine mi pega y aun traigo energias...

Asi que me pondre a compartir un poco de mi experiencia con estas dos cosas datatables y spring.

En esta ocacion lo que tenemos es una paginacion y tabulacion de datos. Para ello como dice el titulo sera con DataTables y un framework que veo que se usa mucho Spring. Como acceso a datos se utiliza un ORM Hibernate


El ejemplo lo llevare a cabo con una tabulacion de dos columnas (ingrediente y su categoria), las cuales a nivel datos son la union de dos tablas. Realizaremos el ordenamiento por ambas columnas, paginacion y busqueda por texto en ambas columnas.

Caracteristicas:
Comunicacion: Peticiones ajax datatables ya realiza por ti el render de los resultados, genera la peticion al servidor y nosotros solo la procesamos.
Tipo de peticion: GET
Respuesta: Json que se define en la documentacion de datatables
Referencia: DataTables Server-Side

Jasper Report + Tapestry

Editado:
Les dejo como implemente mi generacion de reportes usando jasper Reports en Tapestry5.

Comienzo desde la parte en que ya se tiene el reporte.

Caracteristicas:

Manejo JRBeanCollectionDataSource puesto que estamos utilizando un ORM para la obtencion de los datos y no queremos queries en el reporte.
Manejamos el template en otro servidor para poderlos cambiar si asi se requiere (creanme funciona lo he realizado incontables veces)

De ahi tengo 2 Clases principales: una que genera el reporte y otra mas para generar la respuesta de stream de tapestry.

Como manejo archivos dentro de la app tengo un wrapper para eso.

Receta:

Código “flecha” y cláusulas de guardia

Hace poco me encargaron cambiar un código bastante viejo para que pudiéramos usarlo en una capa de Batch donde se requiere dividir bastante lo que se quiere hacer i.e. hacerlo en lo que Spring Batch llama Tasklets.

Obviamente llego el momento en que tuve que seguir el código para entender que es lo que hacía (además de preguntar qué es lo que se supone que debe hacer, cosa diferente) y mi sorpresa fue que me topé con un código que se veía similar a esto...

groovy y propiedades enlazadas

hola comunidad quise hacer mi primer blog y empeze por este tema ya que estoy jugando con groovy ya un tiempesito , bueno todos sabemos que java a traves de los javabeans cuenta con PropertyChangeListeners que notifica a todos los oyentes antes registrados con (addPropertyChangeListener) de los cambios de valor de algunas de sus propiedades a traves de firePropertyChanged aqui hay un ejemplo del javabeans que llamaremos modelo

import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;

public class Modelo{
    private String propiedad;

    PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public void addPropertyChangeListener(PropertyChangeListener l) {
        pcs.add(l);
    }

    public void removePropertyChangeListener(PropertyChangeListener l) {
        pcs.remove(l);
    }

    public String getProp() {
        return prop;
    }

    public void setProp(String propiedad) {
        pcs.firePropertyChanged("propiedad", this.propiedad, this.propiedad = propiedad);
    }
}

-las clases registradas a este modelo tienen que implementar la interfaz PropertyChangeListener con su metodo
 

Harvesting verticles, parte 2.

> ¿Qué es un verticle?

Antes de comenzar debes tener instalado Vert.x. Si tienes dificultades para instalarlo crea un nuevo hilo en el foro y verifica que la pregunta no exista aun.

Vert.x usa eventos para producir acciones y las consecuencias de esas acciones pueden generar otros eventos, así sucesivamente. La forma en que los eventos trasmiten información es mediante mensajes.

Los verticles son una unidad muy pequeña de código; scripts en su mayoría, y se encargan de contener la lógica de los eventos, están pensados para ser muy pequeños y la máxima es que no estorben a los demás verticles. Sí un verticle se muere no dejara colgado a los demás. Pero si un Verticle contiene más verticles, todos los que dependan del original mueren y eso esta bien porque estamos seguros de no dejar verticles huérfanos.

Déjenme poner uno ejemplos para entender este concepto.

Harvesting verticles parte 1.

> ¿Qué es Vert.x?

Es una plataforma orientada a crear aplicaciones web, empresariales, móviles, que es poliglota, simple, escalable, concurrente, o por lo menos es lo que dice la portada de la pagina del proyecto, también puedes ver lo que dice wikipedia al respecto y dentro de la documentación comentan también este teman. Y la versión resumida

Distribuir contenido