Resumen de Desarrollar una Aplicación que Soporte Alta Concurrencia

Luego de un diciembre super activo generando contenido para la iniciativa del Calendario de Adviento (https://github.com/JavaDominicano/jvm-advent) de la comunidad Java de República Dominicana, enero fue un mes muy pasivo. Tratando de romper la inercia esta será mi primera publicación del año y vamos a resumir la charla realizada por Carlos Camacho (https://twitter.com/ccamachog) en JConf Dominicana 2023 y luego en una sesión de JDK Fundamental Talks, El camino de desarrollar una aplicación de alta concurrencia y no morir en el intento.

Resumen de logros personales y actividades del 2023

A final de cada año me gusta tomar un momento para reflexionar y hacer un resumen sobre todo lo acontecido durante el año, lo que pasó, lo que salió bien, lo que se puede mejorar y realizar planes para el nuevo año.

Resumen JakartaOne Hispano 2023

El jueves 9 de noviembre de 2023, 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 tercera edición totalmente en español, con el apoyo de miembros de Jakarta EE y la comunidad Java de habla hispana.

Resumen del Barcamp RD 2023

El pasado sábado 11 de Noviembre del 2023 se realizó la XI versión del Barcamp RD en el campus de Santiago de la Pontificia Universidad Católica Madre y Maestra. El Barcamp RD consiste en una serie de desconferencias sobre temas relacionados con tecnología y desarrollo de software.

Explorando algunas funcionalidades de Java 21

Java 21 fue liberado el pasado 19 de septiembre de 2023, ésta nueva versión incluye nuevas funcionalidades de las cuales algunas tendrán un tremendo impacto en la forma de escribir código Java. La comunidad de usuarios Java de República Dominicana organizó un evento virtual para conocer algunas de las funcionalidades de Java 21 y medir su impacto en la forma en que desarrollamos aplicaciones Java. En esta publicación vamos a hacer un resumen de los temas tratados en dicho evento.

Resumen JConf Dominicana 2023

Los días 21 y 22 de julio de 2023 se celebró JConf Dominicana 2023. El primer día se realizaron talleres prácticos de 4 horas de duración y el sábado 22, charlas durante todo el día. En esta publicación vamos a resumir los aspectos más destacados de JConf Dominicana 2023.

Resumen del Global JUG Leaders Summit & DevNexus 2023

Del 04 al 06 de abril del 2023 se llevó a cabo el Global JUG Leaders Summit y Devnexus 2023 en Atlanta, Georgia. El Global JUG Leaders Summit 2023 fue el cuarto encuentro mundial de líderes de grupos de usuarios Java. Devnexus es la mayor conferencia de Java en los Estados Unidos. A continuación, presentaremos los aspectos más destacados de esta conferencia.

Resumen conversatorio cómo gestionar la deuda técnica en el desarrollo de software

La deuda técnica hace referencia al costo implícito del trabajo adicional causado por decisiones anteriores que se tomaron para ahorrar tiempo o dinero al implementar sistemas nuevos o mantener los existentes.Al igual que la deuda financiera, la deuda técnica devenga intereses, cuanto más se acumula la deuda técnica o la lista de problemas ignorados, más costoso se vuelve su rectificación.Alguna vez te has preguntado, ¿Quién debe pagar la deuda técnica? ¿Cuales técnicas puedes utilizar para mitigar la deuda técnica?.En esta publicación vamos a hacer un resumen sobre el conversatorio "Cómo gestionar la deuda técnica en el desarrollo de software".

Resumen de Charla sobre Novedades de Spring Boot 3

Spring Boot 3 se lanzó el 24 de noviembre, con él, muchas mejoras y el tan esperado soporte para compilación nativa. En esta publicación vamos a hacer un resumen de la charla Novedades de Spring Boot 3 impartida por Abel Salgado Romero, Ingeniero de Software en VMWare en el equipo Spring Commercial.

Resumen de logros personales y actividades del 2022

A final de cada año me gusta tomar un momento para reflexionar y hacer un resumen sobre todo lo acontecido durante el año, lo que pasó, lo que salió bien, lo que se puede mejorar y realizar planes para el nuevo año.

Panel:Javeras Tricolor, Debuggeando Estereotipos

En esta publicación queremos presentar el panel "Javeras Tricolor: Debuggeando Estereotipos" realizado durante JConf Dominicana 2022, donde se analizó la presencia de las mujeres en el uso de tecnología Java en República Dominicana.

Panel:Especial Líderes Técnicos

En esta publicación vamos a resaltar los puntos más importantes sobre el panel "Q&A: Especial Líderes Técnicos" donde se analizaron las habilidades que debe tener un líder técnico y cómo nosotros podemos escalar hasta esa posición partiendo el viaje desde un nivel Junior. Dicho panel fue realizado en el cierre de JConf Dominicana 2022.

Apache Maven 101: Explicando la magia detrás de un archivo pom.xml

Apache Maven es la herramienta por excelencia para la gestión y construcción de proyectos Java. Maven facilita el proceso de compilación, empaquetado, generación de documentación, correr los test, publicación de los artefactos, etc. Hace unos años publicamos el artículo Primeros Pasos con Apache Maven, una introducción al manejo de proyecto usando Apache Maven, ésta publicación es una versión extendida donde pretendemos explicar de forma más detallada el uso de Apache Maven en tus proyectos Java.

El alto costo de no actualizar Java en tu empresa

Con los nuevos releases de Java sucediendo cada 6 meses y la tecnología avanzando tan rápido, es muy fácil quedarnos rezagados y esto supone un costo que puede ser muy alto y si no es atendido a tiempo podemos incurrir en una deuda que puede cobrar altos intereses.En esta publicación vamos a destacar los puntos más importantes de la charla "El alto costo de no actualizar Java en tu empresa" realizada por José Eugenio Durán durante su participación en JConf Dominicana 2022.

Resumen Panel de Preguntas y Respuestas sobre Spring Framework

Spring es uno de los frameworks de desarrollo de aplicaciones más populares en Java. En esta publicación vamos a hacer un resumen sobre el conversatorio que sostuvimos con dos expertos ingenieros de software en VMWare, la compañía responsable del desarrollo de Spring Framework. Josh Long y Alberto C. Ríos conversaron sobre el presente y futuro de dicho framework.

Hablemos del protocolo HTTP y Arquitectura Web

El protocolo HTTP ha estado vigente por más de 30 años y es la base de cualquier intercambio de datos en la Web. Su estructura cliente-servidor, junto con la capacidad para usar cabeceras (headers), permite a este protocolo evolucionar con las nuevas y futuras aplicaciones en Internet. En esta publicación queremos explicar los aspectos básicos de este protocolo con el objetivo de que sirva de referencia para entender algunas tecnologías y/o arquitecturas más recientes que se derivan del uso de HTTP.

RegEx 101: Guía de supervivencia para entender y usar expresiones regulares

Las expresiones regulares son patrones utilizados para encontrar una determinada combinación de caracteres dentro de una cadena de texto. Las expresiones regulares proporcionan una manera muy flexible de buscar o reconocer cadenas de texto. En ésta publicación abordaremos los aspectos básicos que necesita saber para trabajar con expresiones regulares.

Resumen JConf Dominicana 2022

Los días 22 y 23 de Julio del 2022 se celebró JConf Dominicana 2022. En esta ocasión fue realizada en formato híbrido, talleres presenciales (Santiago / Santo Domingo) y el sábado 23, charlas virtuales durante todo el día. En ésta publicación vamos a resumir los aspectos más destacados de JConf Dominicana 2022.

Resumen Global JUG Leaders Summit & DevNexus 2022

Del 12 al 14 de abril del 2022 se llevó a cabo el Global JUG Leaders Summit y Devnexus 2022 en Atlanta, Georgia. El Global JUG Leaders Summit 2022 fue el tercer encuentro mundial de líderes de grupos de usuarios Java. Devnexus es la mayor conferencia de Java en los Estados Unidos. Devnexus 2022 fue la edición número 18 y la primera edición presencial luego de la pandemia del covid-19. A continuación, presentaremos los aspectos más destacados de esta conferencia.

Comunidades de Latinoamérica conversan sobre el presente y futuro de Java

Para celebrar el cumpleaños 27 de Java se realizó una desconferencia sobre el presente y futuro de Java con la participación de las comunidades Java de Nicaragua, Bogotá, Bolivia, Medellín, México, Mérida, Ecuador, Buenos Aires, Guadalajara y República Dominicana.

Mejorando habilidades Java en tiempos de cuarentena 2021

Continuando con las sesiones para mejorar nuestras habilidades Java en tiempos de cuarentena, el 2021 inició con una sesión sobre Tareas Asíncronas en Java, luego de esta primera sesión, iniciamos una serie de presentaciones sobre los principios SOLID y Patrones de Diseño..

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.