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.

Capas en aplicacion Spring VS Java EE

He desarrollado en Java EE y Spring Boot.

como bien saben en gran variedad de empresas utilizas estas dos tecnologías,

Pero me surge una duda, que capas y tipos de clases pueden utilizarse en Ambas y cuales no?

Por ejemplo

En Java EE

En la capa de negocio he visto que utilizan el componente BO (Busines Object)

Mientras que en Spring Boot Service (@Service)

¿Es valido utilizar un MiClaseBO en Spring?
¿Es valido utilizar MiClaseService en Java EE?

Estas preguntas las hago por que últimamente he visto Service en Java EE y BO en Spring.

Me surge la duda de que tan valido sea utilizar estos componentes en las distintas tecnologías o es maña de los desarrolladores
de Java EE al pasarse a Spring seguir utilizando este tipo de componentes?

Por lo que entiendo ambos exponen Lógica de Negocio a la capa de Negocio.

ó se pueden usar ambos pero por ejemplo:

Controller invoca a Service
Service Invoca a DAO y BO
BO que tiene toda la logica de negocio.

¿Que tan buena practica puede ser esto?

Vavr Try.of

En el post anterior revisamos de forma rapida como hacer tipos que combinen monads para hacer cosas interesantes, como el evitar errores por posibles nulos, en los comentarios de @ezamudio nos podemos dar cuenta que Java ya implementa eso del fromNullable con Optional, pero deja de lado las excepciones y pues intente extender los tipos Right y Left para manejar y encadenar Excepciones.

Pero me encontré una librería, la cual es mejor estudiar en lugar de tratar de crear nuestros tipos una y otra vez, esta librería es vavr, tiene cosas muy interesantes entre ellas, manejo de excepciones de una forma funcional, precisamente lo que estaba tratando de hacer.

Vamos a ver como “esquivar” las excepciones con ayuda de programación funcional.

Supongamos que tenemos un archivo /opt/config.json que contiene la configuración del puerto tcp de nuestra app:

{
  "port": 8080
}

Heredar transacción de Java EE a Spring

Hola después de mucho tiempo, hace tiempo me topé con un problema, espero puedan ayudarme con un panorama más amplio y ver de que otras formas podría resolver este problema.

Teniendo una clase Java EE y un método donde se realizan dichas acciones, tengo la anotación @Transactional, que se utiliza para poder abrir y manejar una transacción en la cual se realiza una afectación a BD, pero en este proceso se requiere una dependencia que se realizó con Spring y que de igual manera utiliza transacción si ocurriera algún fallo, mi pregunta es, cómo puedo heredar las transacciones desde Java EE a Spring y viceversa para no perder el control en ninguna de las 2 partes?

Ya que si del lado de la dependencia Spring no falla, pero si falla del lado de Java EE, no podría avisarle a Spring que hubo un fallo y debe también aplicar RollBack, bueno espero puedan aportar con alguna idea.

Saludos!

Importar Certificados en Java

Cuando desarrollamos una aplicación en Java que va ha hacer uso de un recurso seguro (mediante un certificado), debemos asegurarnos que este certificado podrá ser validado por una entidad certificadora que reconozca Java.

Por defecto, la máquina virtual de Java dispone de las Entidades Certificadoras (CA) más comunes, Sin embargo, suele darse el caso, sobretodo en entornos de desarrollo, que necesitemos utilizar una Entidad Certificadora "de prueba". En este caso, debemos importar esta CA en el almacén de claves de la máquina virtual que estemos utilizando.

* Por ejemplo:

A mi me paso que cuando estaba tratando de llamar un servicio web, no me dejaba consultar la información ya que se había cambiado la infraestructura por lo tanto el certificado se había cambiado y por lo tanto no tenia los permisos necesarios para poder consumir el servicio para ello se me paso el archivo .cer que se importa de la siguiente manera.

Grails ... un ejemplo

ec564-shomecode4

En este post crearemos un mini sistema para la gestión de tickets de soporte técnico.

¿Qué necesitamos?

  1. Tener instalado el JDK 8
  2. Tener instalado Grails
  3. Tener una BD (usaremos PostgreSQL en este ejemplo)

Tenemos los departamentos o áreas ).

areas

Se levantan los tickets

tickets

El encargado de dar soporte técnico responderá a las peticiones.

respuesta

Java safe null

Todos tenemos a nuestros maestros en temas de desarrollo, personas que seguimos, quienes siempre están buscando cambiar lo cotidiano, quienes tienen tienen una gran idea o quienes pueden compartir su pasión por algo en particular, por el momento estoy siguiendo al Profesor Frisby, en estas cosas de programación funcional y composición de funciones. Tiene un curso completo de este tema gratuito (como dice mi esposa del verbo “nel no pago”) para javascript, Esta es la liga: Professor Frisby Introduces Composable Functional JavaScript.

Porque como se darán cuenta no soy muy bueno para explicar, pero el si :), y si quieren tener mas detalles del porque los pequeños bloques de código que ultimamente he estado poniendo, en ese curso podran entenderlo mejor o confundirse mas, a saber de cada quien :P.

Java Magic Box

Y siempre si se pudo, me costo mas trabajo del que pensaba, pero pude escribir la version de la Caja que en Javascript me parece muy simple en Kotlin parece que estoy escribiendo marciano y en Java, pues ni se diga, la verdad es que no parece java :P, pero lo importante y tal vez me haga regresar a escribir java, es que el soporte funcional es bueno (obvio no es un lenguaje puramente funcional, si no, se me enojan los clojurianos).

Pero si puedo escribir codigo como este, para servicios REST y otras moneria ya me imagino las posibilidades, bueno les dejo el codigo:

import java.util.function.Function;

class Box<T>  {

    private T x;

    public Box(T x) {
        this.x = x;
    }

    <R> Box<R> map(Function<T, R> f) {
        return new Box(f.apply(this.x));
    }

    <R> R fold(Function<T, R> f) {
        return f.apply(this.x);
    }

    public String toString() {
        return "Box(" + this.x != null ? x.toString() : x + ")";
    }

}

public class Main {

    public static void main(String... args) {

        Box<Integer> num = new Box<String>("  64  ")
                .map(x -> x.trim())

Kotlin Magic Box

Un monad es una tecnica que nos permite crear tipos propios, extender funcionalidades de una meanera limpia y hacer tranformaciones entre tipos. Me gusto mucho en kotlin porque elimina el estar escribiendo tantos tipos todo el tiempo que a veces me parecen inecesarios (esto opinion muy personal), en este caso vamos a escribir una clase Caja que nos permite aplicar funciones de una forma continua (encadenada), manteniendo un solo closure (parcialmente, en kotlin no he hecho pruebas de rendimiento para ver cuanta memoria usa, pero en javascript el incremento en memoria es minimo).

En el ejemplo podemos ver como cambiamos de un numero en String para despues limpiarlo y convertirlo a su equivalente en carácter, lo anterior de una manera limpia, sin hacer uso mas que de una sola variable.

En el archivo Main.kt colocamos lo siguiente:

class Box<T>(private val x: T) {

    fun <R> map(f: (x:T) -> R): Box<R> {
        return Box(f(x))
    }

    fun <R> fold(f: (x:T) -> R): R {
        return f(x)
    }

    fun inspect(): String {
        return "Box($x)"
    }

}

Firmado de Documentos Digitales

Buen día, disculpen a todos me podrían recomendar alguna librería para poder firmar documentos digitalmente?, la llave privada que tengo tiene el standard PKCS8 en formato DER, y un certificado con estandar x509 en formato DER.

Saludos.

Microsoft compra Github

No es ningún fake o broma.

En el blog de Github pueden ver el anuncio oficial:
https://blog.github.com/2018-06-04-github-microsoft/

Distribuir contenido