style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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.

Agregando estado

Estado en React

React es por asi decirlo, una maquina de estados, reacciona a cambios de estado y define todo un ciclo de eventos que suceden cada vez que cambia el estado, el proceso simple es que vuelve a renderizar el componente, es decir, crea el DOM virtual del componente hace la comparacion de diferencias y actualiza el DOM, esto lo hace a una velocidad mas que decente.

Hooks

Hablar de React despues del 06 Febrero del 2019 es hablar de Hooks, no podemos ser mas afortunados de por fin librarnos de ese mal concepto de Clases en javascript, que ni son clases reales porque son instancias y confunden mucho tanto a desarrolladores js como a los que no lo son.
Vamos a realizar un pequeno contador que muestre cuantos segundos han pasado desde que cargamos una pagina. Hooks nos ayudara a escribir el codigo en React.

Dependencias

- La unica dependencia es haber realizado el ejercicio del post anterior.

Actualizando el componente

Solo vamos a actualizar el archivo index.tsx, debera quedar asi:

import React, { useState } from 'react';
import ReactDOM from 'react-dom';

const Hello: React.SFC<{
  text: string

Hello Typescript React

Introduccion

Ya pregunte si se puede escribir sobre React, asi que vamos a empezar con ello, el primer ejemplo sera el clasico hello world pero con Typescript. Tampoco me agrada demasiado la idea de usar Typescript, de hecho sigo pensando que es mejor usar javascript normal, pero tampoco quiero caer en una postura de no usar typescript solo por puro gusto de javascript. Entonces haremos una serie de pequenas no tan pequenas aplicaciones en React con Typescript o al reves en Typescript con React.

Tambien incluiremos servicios Rest basicos sin seguridad ni monitoreo hechos en Kotlin, por ultimo, si nos da tiempo metemos algo de Kafka.

Ambiente de desarrollo

Para poder realizar los ejemplos vamos a necesitar Nodejs instalado, de preferencia una version lts mayor o igual a 6.

Dependencias

  • Parcel: Esta herramienta es un bundler que nos permite transpilar jsx, es6, ts y otros lenguajes a ES5, es un competidor de Webpack, lo usaremos porque no vamos a realizar configuraciones muy complicadas, nos queremos enfocar al desarrollo

Hello World x4

Hace poco estuve en un curso relativo a Kafka, la verdad la capacidad que tiene esa herramienta es muy fuerte, sobre todo cuando aplicamos programación funcional en medio. Aunque este post no es relativo a Kafka, si lo es relativo a la programación funcional y será bastante sencillo.

Haremos un ejemplo de curry f(x)(y) = f(x, y) en tres lenguajes Kotlin, Typescript y Javascript.

Kotlin

fun main() {
    val sendAll = { content: String ->
        { content2: String ->
            content + content2
        }
    }

    val a = sendAll("Hello")

    println(a(" World"))
}

Typescript

const sendAll = (content: string) =>
  (content2: string) => content + content2;

const a = sendAll("Hello”);

console.log(a(" World”));

Javascript

const sendAll = content => content2 => content + content2;

const a = sendAll("Hello”);

console.log(a(" World”));

Conclusiones

Docker

Los beneficios de Docker para los desarrollos cuál es la ventaja sobre las aplicaciones...???

Cómo leer registros de base de datos como un Stream de Java

He estado usando Spring desde la versión 1.0 y una de las clases que siempre me han resultado extremadamente útiles es JdbcTemplate. Esperaba que para la versión 5 integrara funcionalidad del API de stream de Java, pero no fue así.

Sin embargo a veces necesito realizar búsquedas en base de datos que devuelven miles o incluso millones de registros, y no puedo usar los métodos de JdbcTemplate que devuelven listas porque me quedo sin memoria. Los métodos que usan RowCallbackHandler son más apropiados, pero sería mucho más conveniente poder usar Streams de Java, particularmente si se pueden leer los resultados como objetos usando algún RowMapper.

Así que decidí hacer mi propio generados de Stream para usar con un JdbcTemplate. Al final, terminé con uno que es realmente más genérico y se puede usar con cualquier código que genere elementos ya sea de manera finita o infinita (aunque para streams infinitos existe una API mucho más simple). No es suficiente material como para generar una biblioteca, así que decidí publicarlo como un post.

@Transactional spring framework

Hola soy nuevo en Spring y tengo una duda acerca de @Transactional, tengo un método que llama a dos métodos anotados con @Transactional cada uno de ellos hace un insert en una base de dados diferente pero cuando ocurre un error no hace rollback en ambas bases de datos.

Este es el método:

@Transactional(readOnly=false)
public ResponseEntity<ResultVo<String>> modificaFechasVacaciones(@RequestBody RequestVacacionesVO request,HttpServletRequest http) throws ParseException{

                       // base de datos 1
                        this.vacacionesBO.modificaSolicitudes(request, usuarioFormat,diasSolicitados, diasExcedentes);
                       
                       // base de datos 2
                        this.vacacionesBO.updateDiasSolicitados(request, diasSolicitados);

                        // base de datos 3
                        this.vacacionesBO.updateDiasDisponiblesRechazo(request, diasDisponibles);

               
        }

Esta es la configuración de los txManager para las dos bases de datos:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
                xmlns:context="http://www.springframework.org/schema/context"
                xmlns:tx="http://www.springframework.org/schema/tx"

Play Framework vs Spring Framework

Buenas noches compañeros,

Les comento que en el trabajo, nuestro dia a dia es trabajar con Spring, practicamente todo el equipo de trabajo se siente bien con este framework.

El tema es que estan propopiendo un equipo externo empezar a trabajar con Play Framework, y ahi van mis preguntas: ¿Alguien tiene experiencia con Play Framework?, ¿ventajas y desventajas con respecto a Spring? ¿curva de aprendizaje? ¿Me conviene quedarme en Spring?.

Cualquier comentario es bienvenido.

Gracias de antemano.

Payara creando imagen productiva

La última parte de este pequeño ejemplo, es poner todo en conjunto y pues dejar la version que todo el mundo usará, para eso tendremos como dependencia a Docker. Asumo que ya lo tienes instalado. El proyecto web que creamos la vez anterior ya tiene un comando que nos permite crear los bundles finales tanto de css como de js. Desde la terminal y en la carpeta del proyecto Payara-client ejecutamos:

npm run compile

En la carpeta dist se crearan los archivos, se debe copiar todo el contenido incluido el html en la carpeta src/main/webapp del proyecto Payara-kotlin (importante: el proyecto Payara-kotlin usa localhost en la base de datos deberas actualizar la ip y puerto de la base en produccion). Ya que copiamos los archivos en la carpeta del proyecto Payara-kotlin desde la terminal ejecutamos:

gradle war

Ahora bien necesitamos una carpeta nueva desde donde vamos a construir nuestra imagen docker. En la carpeta ponemos nuestro war que sale de ejecutar gradle war y agregamos dos archivos Dockerfile y .dockerignore el contenido de Dockerfile sera el siguiente:

FROM payara/micro

Payara, Web content

Del post anterior pueden observar que tenemos 2 servicios que la idea es usarlos en al menos una pequeña aplicación web, esta estará creada con las siguientes dependencias:

  • Preact
  • Redux
  • Ramda
  • Less

Para ello tomaremos como base la plantilla que he creado para una aplicación React. https://github.com/betotto/react-template. Las instrucciones de como usarla están en el README de ese repo.

Configurando el ambiente de desarrollo

La plantilla usa webpack como herramienta de construcción del sitio, pero solo nos enfocaremos a la parte puramente web, los servicios no estarán en Nodejs sino en nuestra aplicación que desarrollamos en Payara, pero no vamos a estar haciendo dos cambios en el código compilando y desplegando para ver que el cambio funciona, ya tenemos los servicios, entonces los dejamos corriendo en el server como si fuera un servidor de servicios cualquiera y crearemos la aplicación con webpack-dev-server.

Pero oh sorpresa, dos cosas importantes:

- La primera es que el servidor Payara hace un binding a la ip del servidor en el que inicias la aplicación

Distribuir contenido

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">