• Resumen JakartaOne Hispano 2021

    El viernes 1 de octubre 2021, más de 350 entusiastas de Java de habla hispana se reunieron para discutir las tendencias, tecnologías y desafíos actuales relacionados con Jakarta EE. Este evento fue la segunda edición totalmente en español, con el apoyo de miembros de Jakarta EE y la comunidad Java de habla hispana.


  • Resumen JConf Dominicana 2021

    El sábado 31 de Julio del 2021 se celebró JConf Dominicana 2021. Debido a la pandemia de covid-19 se realizó en modalidad virtual.En esta publicación vamos a resumir los aspectos más destacados de JConf Dominicana 2021.


  • Resumen Global JUG Leaders Summit & DevNexus 2021

    Después del éxito del primer Global JUG Leaders Summit en 2020, Atlanta JUG decidió organizar un JUG Leaders Summit de forma virtual debido a la pandemia del covid-19.Del 16 al 17 de febrero del 2021 se llevó a cabo el Global JUG Leaders Summit y Devnexus 2021.


  • Resumen de logros personales y actividades del 2020

    El 2020 fue un año atípico, donde la humanidad fue puesta a prueba en todos los sentidos y nos tomará años poder superar las secuelas de la pandemia. Especialmente en un año como el 2020, es saludable y de mucha utilidad recordar todas las cosas que sucedieron y los logros que hemos alcanzado.


  • Mejorando habilidades Java en tiempos de cuarentena 2020

    Las medidas establecidas a causa de la pandemia del Covid-19 motivó a mover los eventos a modalidad virtual. Las comunidades de desarrolladores de software buscaron diferentes alternativas para poder continuar realizando reuniones, ahora en modalidad virtual. En mayo de 2020, las comunidades de Medellín y República Dominicana se reunieron para evaluar una propuesta de trabajar juntos reuniones virtuales que fueran interactivas y que no necesiten mucha inversión de tiempo para la preparación de la misma. De esa reunión nació una serie de reuniones virtuales denominada "Mejorando habilidades Java en tiempos de cuarentena".


  • Resumen JakartaOne Hispano 2020

    El 12 de octubre del 2020 se realizó la conferencia virtual JakartaOne en Español (JakartaOne Livestream en Español). Una conferencia sobre Jakarta EE que une a los países de habla hispana.


  • Resumen Global JUG Leaders Summit & DevNexus 2020

    Del 19 al 21 de febrero del 2020 se llevó a cabo el Global JUG Leaders Summit y Devnexus 2020 en Atlanta, Georgia. Dicho evento fue realizado en el Georgia World Congress Center (GWCC) de Atlanta, Georgia, un lugar gigante y con una gran cantidad de salones y excelente ubicación. A continuación, presentaremos los aspectos más destacados de esta conferencia.


  • Introducción a Rest Assured

    Rest Assured es una librería Java para la validación de servicios REST a través de un DSL amigable (lenguajes específicos del dominio) que describe una conexión a un punto final HTTP (Endpoint HTTP) y los resultados esperados. En este artículo vamos a mostrar como realizar pruebas a los endpoints de los servicios REST utilizando Rest Assured


  • Resumen JConf Colombia 2019

    Los días 5 y 6 Julio se celebró JConf Colombia 2019 en la ciudad de Medellín, Colombia.Conferencistas de renombre internacional, líderes de grupos de usuarios Java, empresas, estudiantes y profesionales asistieron a este gran evento. Estuve presente en este evento como charlista y como uno de los representantes de la comunidad de usuarios Java de República Dominicana (JavaDominicano). Además de participar en la conferencia, realizamos un recorrido por varios lugares de Medellín y Bogotá.


  • Resumen JConf Dominicana 2019

    El sábado 29 de junio del 2019 se celebró la primera edición de JConf Dominicana. Una conferencia sobre tecnologías Java que contó con la participación de profesionales, líderes de comunidades y conferencistas de reconocimiento internacional. En este artículo contaremos aspectos destacados de JConf Dominicana 2019.


  • Introducción a Spring Boot

    Spring Boot proporciona una forma más sencilla y rápida de inicializar, configurar, ejecutar aplicaciones simples y aplicaciones web complejas en Java. En este artículo vamos a conocer las principales bondades que nos brinda Spring Boot.


  • Introducción a la Programación Web en Java

    Una aplicación web presenta contenido adaptado dinámicamente en función de parámetros de la petición, los comportamientos de los usuarios y consideraciones de seguridad. A continuación vamos a explorar las principales herramientas para desarrollo de aplicaciones Web en Java.


  • Servicios REST en Java

    Los servicios web (en inglés, Web service) son utilizados para intercambiar datos entre aplicaciones. Esto conlleva la utilización de un conjunto de estándares y protocolos. En la década de 2000s, surgió una nueva forma de crear servicios web, a esta arquitectura se le denominó REST (Representational State Transfer). Dicha arquitectura utiliza los métodos del protocolo HTTP (GET, POST, PUT, DELETE, etc) para realizar diferentes operaciones entre la aplicación que ofrece el servicio web y el cliente. En este artículo nos vamos a enfocar en cómo desarrollar Servicios REST en Java.


  • Consumiendo Servicios REST en Java

    JAX-RS 2.0 (JSR 339) no solo define el API para construir un servicio web REST sino que también mejora la API del lado del cliente para facilitar el proceso de escritura de un cliente para un servicio REST. En este artículo vamos a explorar como utilizar el cliente de JAX-RS para consumir servicios REST.


  • Control de Versiones con Git Parte II

    En el artículo anterior (Control de Versiones con git Parte I), hicimos una introdución sobre el uso de git y algunas operaciones básicas, a continuación vamos a presentar operaciones más avanzadas que podemos realizar mientras hacemos contronl de versión de nuestro código fuente.


  • Control de Versiones con git Parte I

    En artículos anteriores presentamos varias opciones para el manejo y administración de código fuente utilizando sistemas de control de versiones de código abierto. En esta ocasión vamos a presentar como realizar control de versiones usando Git.


  • Debugging Lambdas and Streams [EN]

    Streams provide a high level abstraction. This is good for making code clear and easy to understand, but it is bad for debugging. But the peek() method can be used to find what is happening between methods.

    A simple example :

    List<String> list = Arrays.asList(
    "BarCamp", "MongoDB", "10Gen", "TokuMX", "Nagios", "PUCMM", "Ruby", "JSON",
    "JSON");
    
    List<String> newList1 = list
    .stream()
    .filter(s -> (s.length() % 2)==1)
    .map(String::toLowerCase)
    .peek(System.out::println)
    .collect(Collectors.toList());
    

    Also, you can use the peek method to put a breakpoint while you are debugging with your favorite IDE.

    List<String> newList1 = list
    .stream()
    .filter(s -> (s.length() % 2)==1)
    .map(String::toLowerCase)
    .peek(s -> s.toString())
    .collect(Collectors.toList());
    

    The breakpoint must be set in the peek method.


  • Giving back little gifts of code for Christmas [EN]

    You don’t have to hack alone this Christmas!. 24 Pull Requests is a yearly initiative to encourage developers around the world to send 24 pull requests between December 1st and December 24th.


  • The problem with anonymous lambda based functions [EN]

    I was practicing an algorithmic concept called Recursion. At first, I write a recursive method for calculating
    Factorial.

    A simple solution:

    
    import java.util.Scanner;
    public class RecursionFactorial {
     public static void main(String[] args) {
      try (Scanner in = new Scanner(System.in)) {
      int n = in.nextInt();
        if(n >=2 && n <=20){
          System.out.println(factorial(n));
        }
      }
    }
    public static int factorial(int n){
      if(n == 1){
        return 1;
      }else {
        return n * factorial(n-1);
        }
      }
    }
    

    The above code satisfied the requirements, but I try to do the same using anonymous lambda based functions
    and the problem began.

    import java.util.Scanner;
    import java.util.function.Function;
    public class RecursionFactorialJava8 {
    public static void main(String[] args) {
      try (Scanner in = new Scanner(System.in)) {
      int n = in.nextInt();
      Function<Integer, Integer> factorial = x -> x==1? x : x * factorial.apply(x - 1);
      if (n >= 2 && n <= 20) {
        System.out.println(factorial.apply(n));
      }
      }
      }
    }
    

    However, this will not work and will produce a compiler error:

    The local variable factorial may not have been initialized

    Lambdas are most often used to define anonymous functions. A recursive function must call itself. An
    anonymous lambda can’t call itself since it has no name, so it can’t be recursive.
    The problem above is that we are referencing a variable while initializing it. So it is not yet initialized.
    After spending a lot time trying to resolve the above error, I found the solution here.

    import java.util.Scanner;
    import java.util.function.Function;
    public class RecursionFactorialJava8 {
      static final Function<Integer, Integer> factorial = x -> x==1? x : x *
      RecursionFactorialJava8.factorial.apply(x - 1);
      public static void main(String[] args) {
      try (Scanner in = new Scanner(System.in)) {
          int n = in.nextInt();
        if (n >= 2 && n <= 20) {
          System.out.println(factorial.apply(n));
        }
        }
      }
    }
    

    I just want to let you know about some problems with recursive and Lambdas in Java 8


  • Expresiones Lambdas en Java

    Java SE 8, liberado en marzo del 2014, es la plataforma que incluye la actualización más grande para el modelo de programación Java desde el lanzamiento de la plataforma en 1996. Incluye nuevas funcionalidades e incorpora las características de los lenguaje funcionales, tales como de lambdas o closures. ¿Todavía no te atreves a probar Java 8?


  • Línea de comando Linux (Parte II)

    Este es nuestro segundo artículo sobre "Línea de comando Linux". En esta oportunidad vamos a descubrir el verdadero potencial de Linux utilizando la línea de comando.


  • Línea de comando Linux (Parte I)

    En ésta ocasión vamos a realizar una introdución a la "Línea de comando Linux", donde vamos a conocer las características más importantes de la línea de comando y a descubrir el verdadero potencial de Linux utilizando la línea de comando.


  • Particiones en Linux: Uso y mantenimiento del disco

    En artículos anteriores, Introducción a Linux, Entendiendo el sistema de archivo de Linux y Gestión de paquetes en Linux, presentamos los términos más comunes alrededor de Linux, las tres grandes familias de distribuciones disponibles en la comunidad Linux, como está organizado el sistema de archivo de Linux y herramientas para la gestión de paquetes en Linux.A continuación vamos a tratar el tema “Particiones en Linux: Uso y mantenimiento del disco”, donde presentaremos los tipos de particiones, cuantas son necesarias para hacer una instalación en Linux, así como también, algunas herramientas básicas para el mantenimiento del disco y otros medios de almacenamiento.


  • Gestión de paquetes en Linux

    En artículos anteriores, Introducción a Linux y Entendiendo el sistema de archivo de Linux presentamos los términos más comunes alrededor de Linux, las tres grandes familias de distribuciones disponibles en la comunidad Linux y como está organizado el sistema de archivo de Linux. En está oportunidad vamos a presentar herramientas para la gestión de paquetes en Linux.


  • Java cumplirá 20 años !

    El próximo 23 de mayo del 2015, Java estará celebrando 20 cumpleaños de su lanzamiento oficial.


  • Entendiendo el sistema de archivo de Linux

    En ésta publicación vamos a explorar como está organizado el sistema de archivo de Linux. Dando a conocer los aspectos más relevantes.


  • Introducción a Linux

    En este artículo ofrecemos una breve introducción a Linux, + haciendo enfásis en los términos más comunes alrededor de Linux y las tres grandes familias de distribuciones disponibles en la comunidad de Linux.


  • Hablemos de Astive Toolkit

    ¿Qué es Astive Toolkit?

    Astive es un conjunto de herramientas y servidor para Java que proporciona una arquitectura extensible para el desarrollo, mantenimiento y despliegue de aplicaciones de telefonía sobre Asterisk.

    Principales características:

    • Servidor y Kit de desarrollo Java
    • Orientado a eventos
    • Multi-Aplicaciones
    • Distribuido
    • Open Source

    ¿Porqué Asterisk?

    • Flexibilidad
    • Es el motor de telefonía Open Source más ampliamente usado.
    • Constante evolución.
    • Startup-friendly.

    ¿Porqué Java?

    Java parece ser el estándar de facto en cuanto a lenguajes de programación en telecomunicaciones.
    Abre la posibilidad de usar otros lenguajes basados en la JVM(ie.: Scala, Groovy, Clojure, JRuby)
    Según estadísticas Java está en el “top 3” en cuanto a uso, y sigue en incremento.
    Nos gusta Java :)

    ¿Qué lo hace diferente?

    • Servidor de aplicaciones (start, stop, deploy, undeploy)
    • Embebido o Standalone
    • Modular
    • Multi-idioma
    • Orientado a Eventos
    • API’s del alto nivel (Menu, VoiceComposer)
    • Distribuido

    Ideas para aplicaciones de voz

    • Servicios de recordatorio
    • Click2Call
    • Games
    • Trivia
    • Horóscopo
    • Teleconferencia
    • Control remoto
    • Servicios de Telemercadeo
    • Encuestas

    Descargar e instalar Astive Toolkit

    ATK está disponible para descargar en uno de los siguientes formatos: código fuente, archivos pre-empaquetado y la documentación.

    Si desea ir directamente a ver cómo funciona, puedes obtener el servidor y el kit de desarrollo en la sección de descargas. Adicionalmente puedes descargar los ejemplos incluidos en la lista.

    También puedes compilar ATK de la siguiente forma:

     git clone https://github.com/psanders/astivetoolkit.git
     cd astivetoolkit
      ./assembly
    

    Qué esperar en futuras versiones

    • Soporte para lenguajes que corren sobre la VM de Java (Scala, Clojure, Groovy, Ruby vía JRuby)
    • Non-linear IVR (Tipo Siri)
    • AXML -> Lenguaje marcas para navegación
    • Más API’s
    • Soporte para FreeSWITCH
    • Mejor soporte para Text2Speech y Speech2Text
    • Integración con WebRTC
    • Mejor integración entre AGI y AMI

    Sitio Oficial:
    http://astivetoolkit.org

    Astive Toolkit en la red
    Twitter: @astivetoolkit
    Google Groups: @astive-toolkit

    ¿Desea obtener más información?

    Leer mis presentaciones en :

    Hablemos de Astive Toolkit


  • Control de versiones usando Subversion

    En artículos anteriores presentamos varias opciones para el manejo y administración de código fuente utilizando sistemas de control de versiones de código abierto. En esta ocasión vamos a presentar como realizar control de versiones usando Subversion.


  • Primeros Pasos con Apache Maven

    Si has trabajado alguna vez en la plataforma Java, o tienes pensado hacerlo, te presentamos la herramienta Apache Maven, mejor conocido entre los programadores como Maven. En esta publicación pretendemos introducir el manejo de proyecto usando Maven, así como también, conocer los valores inmediatos que Maven puede ofrecer a muchos usuarios y organizaciones, ya que funciona igual para proyectos pequeños y grandes.


  • Sistemas de Control de Versiones de Código Abierto

    En la publicación anterior sobre Sistemas de Control de Versiones, hablamos de como funcionan y cuales son las principales ventajas de los sistemas de control de versiones, a continuación un listado de los principales sistemas de control de versiones de código abierto.


  • Sistemas de Control de Versiones

    Los programadores a través del tiempo han usado diversos métodos para compartir su código fuente en un ambiente de desarrollo colaborativo. Si alguna vez ha colaborado con otras personas en un proyecto, usted sabe la frustración de constante intercambio de archivos. En el siguiente artículo trataremos los sistemas de control de versiones, explicando como funcionan y sus principales características.