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.

¿Eres nuevo? ¿Cómo hacer que tus preguntas tengan mas posibilidades de ser respondidas?

Es normal que un usuario al tener un problema con algún programa quiera obtener ayuda de la comunidad y se disponga a escribir en algunos de los foros. Pero, ¿Que pasa cuando al crear el tema este queda como si hubiera sido escrito por un niño de 5 años?
Aquí daré unos tips sobre como hacer que tu pregunta tenga mas chance de ser respondida, mas rápido y con mas ganas de ayudarte por parte de la comunidad.
El mismo propósito de este tema puede parecer innecesario y/o inservible, por varias razones. Pero hay un motivo que me impulsa a hacerlo: me he dado cuenta de que la mayoría de las personas no saben como redactar una pregunta.

Opiniones acerca de Groovy

Hola a todos,

Tengo una inquietud, toda mi vida he estado trabajando con java y sus diferentes frameworks, spring, hibernate, etc, pero en mi empresa me asignaron a un proyecto con Groovy y servicios rest básicamente, con el cual no había trabajado y es algo para un buen tiempo.

Mi inquietud es acerca de que tan rentable es aprender este lenguaje? Me refiero a nivel laboral si se encuentran buenas propuestas? Este lenguaje va para rato?

He leído opiniones en algunos foros unas no muy buenas otras sí.

Gracias de antemano por cualquier opinión.

Saludos.

Meetup JVM MX de Noviembre 2017, Ciudad de México

Como algunos saben, el equipo de JVM MX realiza un meetup cada mes con charlas relacionadas a la Java Virtual Machine y/o la tecnología Java.

El meetup de este mes fue anunciado hace unos momentos y el contenido es excelente.

La agenda es la siguiente:

  • Bienvenida por Enrique Zamudio
  • Presentación "Desplieque de aplicaciones con Docker Swarm" por Carlos Cavazos
  • Presentación "Más allá de REST con gRPC" por Domingo Suárez
  • Presentación "Realizando pruebas con Spock" por Andrés Almiray
  • Cerveza / Pizza / Networking

¡El cupo es limitado a 60 personas y tiene cuota de recuperación de $100 MXN!

Si les interesa reserven su lugar cuanto antes.

Fecha y hora: 27 de noviembre, 7 a 10 pm.
Lugar: Oficinas de Globant. Av. Insurgentes Sur 859, Piso 15, Ciudad de Mexico.

Registro aquí: https://www.eventbrite.com/e/jvm-mx-noviembre-2017-tickets-39778840583

Comparar fechas

       Un pequeño aporte a Luz Jasso. Mie, 08/02/2017 - 13:26        

        //fechas de ejemplo
        String fecha_ini = "2007-11-08";
        String fecha_fin = null;
        //hojas de ejemplo
        String hr_ini    = "02:00";
        String hr_fin    = "02:30";
        //declaracion de variables
        double diff, min, hrf;
        Date   result1, result2;
       
        SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm");
       
        try {
            result1 = formater.parse(fecha_ini+" "+hr_ini);
            result2 = formater.parse(fecha_fin+" "+hr_fin);
            //
            diff = result2.getTime() - result1.getTime();
            long tiempoMensual =0;
            tiempoMensual += diff;
            min=((diff%3600000)/60000)/60;
            hrf=diff/3600000;            
        } catch (ParseException ex) {
            //Escriba aqui los valores de retorno al ocurrir error
            min=0;hrf=0;
        }

Se lo robaron

Buenos días comunidad,

Hace mucho tiempo, años, leí aquí una entrada que básicamente decía "Read The Fucking Stack Trace", esto aunque parezca menor, desde hace mucho cuando empezaba a trabajar con alguien que va aprendiendo, lo ponía a leer dicha entrada, era la iniciación. Hoy llegó alguien no tan nuevo, pero igual al ver un error en el que pidió ayuda, mi respuesta iba a ser la entrada al blog, pero desapareció, tal vez sea alguna tontería, pero si se pudiera recuperar, estaría chingon.

Saludos.

Curiosidades programando Java

Hoy les voy a mostrar algunas curiosidades que se pueden hacer con código Java que puede que algunas sirvan y algunas pues solo para divertirse:

1.- Crear en línea una colección mediante una clase anónima y un bloque inicializador de instancia en lugar de hacerlo con Arrays.asList:

public static void main(String[] args) {
       
        List<Integer> lista = Arrays.asList(7,9,1);
        lista.add(3);
        System.out.println(lista);
}

El inconveniente de usar Arrays.asList es que debido a que la lista se genera desde la raiz de un arreglo, estos por naturaleza tienen un tamaño definido y no puede redimensionarse por lo tanto la lista generada no soporta la operación add o alguna otra que intente modificar el tamaño y devuelve UnsupportedOperationException.

public static void main(String[] args) {
       
        List<Integer> lista = new ArrayList() {{ add(7); add(9); add(1)}};
        lista.add(3);
        System.out.println(lista);
        System.out.println(lista.getClass());
}

La Fundación Eclipse será el nuevo hogar de la plataforma Java EE


Hace algunas semanas Oracle anunció la iniciativa de buscar un nuevo hogar para la plataforma Java EE. En busca de que la evolución de la misma sea más ágil, flexible y abierta.

El día de hoy se dio a conocer que después de platicar con varias organizaciones, la
a Fundación Eclipse resultó seleccionada para albergar el proyecto y plataforma Java EE.

El repositorio de código de Java EE ahora está en Github: https://github.com/javaee

Aquí el anuncio oficial de Oracle: https://blogs.oracle.com/theaquarium/opening-up-ee-update

**Update**

Anuncio oficial de Red Hat: http://middlewareblog.redhat.com/2017/09/12/java-ee-moves-to-eclipse/

Concurrencia Web Service REST ibatis Spring

Buen día a todos les comento mi problema. Tengo un proyecto web donde se hacen peticiones a los web service entre tantas de la peticiones hay una en particular que me esta dando muchos problemas y es el siguiente: Tengo una query que busca el máximo id de una columna + 1, en el método donde hago varias cosas al final mando a llamar esa query y justo después hago un insert a la base de datos con ese id que me devuelve la primer query. el problema es que hay ocasiones donde parece que se hace una peticion al mismo tiempo hora y segundo y en le asigna el (id + 1) a dos usuarios totalmente distintos cuando yo esperaria que sea el cosecutivo, eh utlizado varias notaciones en el método como este: @Transactional(rollbackFor = ServiceException.class, propagation = Propagation.NESTED, isolation = Isolation.READ_UNCOMMITTED) pero aun así el problema persiste.

Agradecería sus comentarios.

Gracias!!

Spring MVC ... primer ejemplo (Rest)

Para este ejemplo crearemos una base de datos (yo uso postgresql) llamada proyecto, agregaremos una tabla usuario con los siguientes campos: id, nombre, password, logeado y area.

CREATE TABLE public.usuario
(
    id INTEGER NOT NULL,
    nombre CHARACTER VARYING NOT NULL,
    password CHARACTER VARYING  NOT NULL,
    logeado BOOLEAN,
    area CHARACTER VARYING,
    CONSTRAINT usuario_pkey PRIMARY KEY (id)
);

Ahora agregaremos unos datos:

INSERT INTO public.usuario(
        id, nombre, password, logeado, area)
        VALUES (1, 'Antony Yung', '00T$@l12', TRUE, 'sistemas'),(2, 'Adrian Uribe', '3EvBb00', FALSE, 'administracion'),
    (3,'Ernestina Pedroza','@22GgHQll',TRUE,'recursos humanos');

Una vez creado la base de datos y su correspondiente tabla nos enfocaremos a crear el ejemplo con Spring MVC.

¿Qués es lo que ncesitaremos?

  1. Archivo: build.gradle , para configurar las dependencias necesarias

Error al guardar Backups MySQL en Java

Buen día,
Tengo un formulario en Java que tiene dos botones: Seleccionar y Guardar. Estos ejecutan un código para seleccionar el destino y guardar el archivo.sql, respectivamente. La cosa es que el archivo.sql solo lo guarda en Escritorio y en Documentos y en el disco C, en otros destinos como carpetas que yo tengo en escritorio o carpetas que tengo en mi partición D, no lo guarda; no me da error el código, voy a mirar la carpeta donde guardé y no está el archivo. ¿ A qué se deberá esto?
Mi código de Seleccionar es:

JFileChooser jfc = new JFileChooser();
        jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int select0 = jfc.showSaveDialog(this);
        if (select0 == JFileChooser.APPROVE_OPTION) {
            String ruta = jfc.getSelectedFile().getPath();
            jTextField1.setText(ruta);
        }

El de Guardar:

String ruta = jTextField1.getText();
        String nombre = "\\RespaldoBD.sql";
        String backus = "";
        if (ruta.trim().length() != 0) {
            try {
Distribuir contenido