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!

Inicia la JavaCup MX 2015 con premios a los 3 primeros lugares

En marco del evento JavaDevDay México a celebrarse en la ciudad de Guadalajara el próximo 29 de agosto, la asociación JavaHispano organiza el concurso de programación JavaCupMX 2015.

El evento, por cuestiones de los patrocinadores, está abierto a cualquier residente en México y consiste en programar una táctica de la JavaCup que participará en el torneo a celebrarse del 15 al 29 de agosto.

Los 3 primeros serán premiados:

  • 1er lugar: 1 iPad
  • 2o lugar: 1 iPod
  • 3er lugar: 1 tableta Android

Spring Batch, más allá del tutorial

Parte de la operación de un sistema en el que llevo ya años trabajando, consiste en generar varios reportes diarios para conciliar con proveedores. El proceso es automatizado y ya hay componentes reutilizables para realizar esto, pero la cantidad de productos últimamente ha crecido bastante y esto trae un problema de desempeño, pues cada reporte lee la misma tabla, pero con criterios diferentes, para obtener prácticamente el mismo tipo de datos: Las ventas de X producto de un día.

La tabla en cuestión contiene las ventas de todos los productos, de modo que lo que ocurre diariamente es que se realiza la misma consulta, una vez por producto; algo así como SELECT * FROM venta WHERE producto=? y solamente cambia el producto. Si tenemos 20 productos, pues son 20 consultas a la tabla.

Curso gratuito sobre Lambdas y Streams API

A través de un amigo me entere que a través de Oracle Learning Library se ofrecerá un curso sobre lambdas y el API de Streams, el curso da una introducción a la programación funcional, el curso es online (comienza el 14 de Julio de 2015) a través de videotutoriales, esta dirigido a personas que comienzan con lambdas pero igual y no esta de más que los que ya saben le hechen un ojo.

Para acceder al curso solo tienes que tener una cuenta oracle, es gratuita a continuación dejo la liga:

JDK 8 Massive Open and Online Course: Lambdas and Streams Introduction

Saludos.

Oracle CloudWorld Developer Day En la Cd. de México, 9 de Julio

El 9 de Julio será el Oracle CloudWorld en Centro Banamex, con un track de Java para la Nube, con temas como:

  • Java SE Cloud Service : Corra Cualquier Java App en la nube
  • Integración continua, control de fuente, y colaboración: todo sobre el servicio de desarrollo en la nube
  • Cómo utilizar Java Service Cloud para Java EE Prueba En La Nube

Además de otros tracks como Mobile, Database, e Integración y Proceso para la Nube, con grandes ponentes.

Aquí la página del evento:

https://eventreg.oracle.com/profile/web/index.cfm?PKWebId=0x224049784d

Guardar Archivos en SQL Server

A continuación les comparto un ejemplo de cómo guardar archivos en una BD SQL Server, adicionalmente pueden leer el mime del archivo para la hora de la decodificación.

public String GuardarDocumento(String nombre, String valor, String path_img, int id_movimiento) throws SQLException, FileNotFoundException {
        Conexion objConexion = new Conexion();
        String salida = "";
        int len;
        String query = "insert into documentos(nombre_documento,ruta_documento,movimiento,archivo_binario) values(?,?,?,?)";
        PreparedStatement ps = objConexion.Conectar().prepareStatement(query, PreparedStatement.RETURN_GENERATED_KEYS);
        try {            
            File file = new File(path_img);
            FileInputStream fis = new FileInputStream(file);
            len = (int) file.length();
            ps.setString(1, nombre);//Nombre del Documento
            ps.setString(2, valor);//ruta al doc
            ps.setInt(3, id_movimiento);//id_movimiento            
            ps.setBinaryStream(4, fis, len);
            ps.executeUpdate();
            ps.close();
            salida = "OK";
        } catch (Exception e) {

Dagger 2

Inyección de dependencias con Dagger 2

Dagger 2 es un framework de inyección de dependencias que se diferencia de otros en que la inyección se hace en tiempo de compilación con código generado en vez de en tiempo de ejecución utilizando reflection, esto tiene como ventajar principal la mejora en el desempeño de la aplicación pero tambien tiene otros como una mejor trazabilidad en los stacktraces cuando algo sale mal ( en vez de solo ver Method.invoke, invoke por todos lados ) o que se puede obtener errores de dependencias durante la fase de compilación en vez de en runtime.

Aquí hay un video donde se explica que es, cómo se compara con otros ( Guice, Spring, Dagger 1) y los beneficios que tiene.

Ejemplo

Voy a hacer un ejemplo que espero me salga sencillo:

Digamos que tengo una app para buscar palabras en páginas web, lo componen tres clases:

- SearchApp contiene el main
- SearchInPage hace la búsqueda
- HttpClient obtiene el contenido de una página

Mostrar registro en jtable

Hola soy nueva en java, tengo muchas ganas de aprender y me estoy basando en algunos ejercicios de me he encontrado, pero algunas cosas no me han sido muy claras. Bueno, por el momento tengo una jtable y con el evento mouseclicked puedo insertar fechas de acuerdo a un calendario que muestro, ya casí todo me sale (guardo la fecha en la base de datos de acuerdo al renglón que selecciono); lo único que me hace falta es mostrar el registro que fue almacenado en ese renglón. Tal vez es sencillo, pero ya no tengo idea de como hacerlo... les dejo mi código para que me puedan entender. De antemano muchas gracias y si tienen algún libro o un tuto les estaré muy agradecida.

private void t_datosMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
h=new Herramientas(usr, 0);
h.session(sessionPrograma);

calendario cal =new calendario(new javax.swing.JFrame(), true);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
cal.setLocation((d.width/2)-(cal.getWidth()/2), (d.height/2)-(cal.getHeight()/2));
cal.setVisible(true);

Log4j para Creación de Eventos de Log

  • Log4j, un framework especializado para el logging o creación de bitácoras en las aplicaciones Java.
  • Log4j es un framework que ofrece una forma jerárquica de insertar sentencias de log dentro de una aplicación Java. Con él, se tienen disponibles múltiples formatos de salida, y múltiples niveles de información de log.
  • Los loggers pueden tener niveles asignados. Los niveles normales que puede tener un logger son, de menor a mayor prioridad:

  • TRACE: Se usa para información más detallada que el nivel debug.
  • DEBUG: Se utiliza para mensajes de información detallada que son útiles para debugear una aplicación.
  • INFO: Se utiliza para mensajes de información que resaltan el progreso de la aplicación de una forma general.
  • WARN: Se utiliza para situaciones que podrían ser potencialmente dañinas.
  • ERROR: Se usa para eventos de error que podrían permitir que la aplicación continúe ejecutándose.
  • FATAL: Se usa para errores muy graves, que podrían hacer que la aplicación dejara de funcionar.
  • Bueno crearemos un ejemplo sencillo de la utilización en una clase.

    OpenXava 5.3: Desarrollo rápido con Java

    OpenXava es un marco de trabajo Java para desarrollo rápido de aplicaciones web empresariales.

    Con OpenXava sólo has de escribir las clases del dominio con Java para obtener una aplicación web lista para producción.

    OpenXava 5.3 cuenta con gráficos generados automáticamente a partir de los datos de la lista, listas ordenables con "arrastrar y soltar", actualización a JPA 2.1 y Bean Validation 1.1 y mucho más.

    Distribuir contenido