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!

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.

    Hola a todos...

    Hola a todos,
    Soy Armel Peña, Colombiano y programador 100% con una experiencia de mas 25 años; He decidido unirme a esta comunidad por tres razones: 1. iniciativa propia 3. recibir ayudas 3. y por que quiero también aportar un poco de mis conocimientos y experiencias como programador a aquellos que como en algún momento, tenemos dudas en las experiencias, que como programador Dios nos ha dado.

    Fuí programador, por muchos años de lenguajes de programación como Fortran, Cobor, Visual Basic, Fox Prow, C, Clipper, Flipper y "Access" entre otros; Pero el mundo evoluciona y el conocimiento propio debe hacer lo mismo. Tomé la decisión de programar en Java, después de investigar, consultar, probar, investigar, investigar y sigo investigando; Pero la decisión ya está tomada; Estoy programando en Java 100% desde hace dos años: 1 año lo dedique a investigar, estudiar y profesionalizarme en el lenguaje; Actualmente estoy terminando una carrera técnica como Programador Profesional de Dispositivos Móviles y estoy desarrollando una Aplicación Cliente / Servidor, la cual llevo un año en desarrollo.

    Tengo dudas como todos, pero también interesantes experiencias y hallazgos con el lenguaje que en la medida estaré compartiendo con la comunidad.

    Armel Peña Rangel

    Obtener la version del JDK utilizada en la compilación

    Hoy fue uno de esos días en que tuve que lidiar con un proyecto legacy el cual está construido con Java 5, la sorpresa que tuve cuando comencé a compilar fue que varias bibliotecas (JAR) estaban compiladas con una version superior. Como necesitaba saber exactamente cuales eran las que necesitaba hacer Downgrade de versión y eran bastantes los JAR's escribí este script que después pensé que seria util para la comunidad.

    Básicamente lo que hace es tomar cada archivo y lo descomprime en una carpeta X y obtiene el primer archivo *.class y se ejecuta el comando javap para obtener la version, como eso retorna algo similar a   version: 52 entonces quité lo que no es numero para asignarlo a la variable $v y utilizando arrays asociativos es que se mapea el valor para obtener la versión.

    TO_DO:
    Mejoraría bastante el performance si se descomprimiera solo el primer archivo *.class que encuentre.

    #!/bin/bash
     
    LIB_HOME=/path/to/lib/*.jar
     
    version['45.3']=1.1
    version['46']=1.2
    version['47']=1.3
    version['48']=1.4
    version['49']=5
    version['50']=6
    version['51']=7
    version['52']=8
     
    for JAR_FILE in $LIB_HOME
    do
    Distribuir contenido