Enable javascript in your browser for better experience. Need to know to enable it? Go here.

Lenguajes & Frameworks

Adoptar ?

  • Nuestros equipos que desarrollan en TypeScript están encontrando io-ts inestimable, en especial al interactuar con APIs que en última instancia crean objetos de tipos específicos. Cuando se trabaja con TypeScript, obtener datos dentro de los límites del sistema de tipos (es decir, de las APIs anteriormente mencionadas) puede conducir a errores en tiempo de ejecución que pueden ser difíciles de encontrar y depurar. io-ts cierra la brecha entre la verificación de tipos en tiempo de compilación y el consumo de datos externos en tiempo de ejecución al proveer funciones de codificación y decodificación. Dadas las experiencias de nuestros equipos y la elegancia de su enfoque, creemos que vale la pena adoptar io-ts.

  • Kotest (previamente KotlinTest) es una herramienta de testing independiente para el ecosistema Kotlin la cual es ampliamente usada entre nuestros equipos en múltiples implementaciones de Kotlin - nativo, JVM o JavaScript. Sus ventajas clave residen en que ofrece una amplia variedad de estilos de testing a fin de estructurar test suites, así como un exhaustivo conjunto de matchers, que permiten llevar a cabo tests expresivos en un elegante DSL interno. Además de su soporte a testing basado en propiedades testing, a nuestros equipos les encanta el sólido plugin de IntelliJ y su comunidad de soporte. Muchos de nuestros desarrolladores lo consideran su primera opción y recomiendan migrar a Kotest a aquellos que siguen usando JUnit en Kotlin.

  • En el pasado, hemos avisado acerca de la sobrecarga de Node, y todavia somos cautelosos sobre las razones para escogerlo. Sin embargo, en escenarios adecuados donde Node.js sea requerido para construir aplicaciones back-end, nuestros equipos reportan que NestJS Es una buena opción para permitir que los desarrolladores creen aplicaciones empresariales testeables, escalables, poco acopladas y fáciles de mantener. NestJS es un framework TypeScript que inicialmente hace que el desarrollo de aplicaciones Node.js sea mas seguro y menos proclive a errores. NestJS es dogmático y viene con los principios SOLID y una arquitectura inspirada en Angular por defecto.

  • React Query es frecuentemente conocida como la biblioteca de consulta de datos que faltaba para React. Un requisito habitual en muchas aplicaciones React es la consulta, sincronización, almacenamiento en caché y actualización del estado del servidor y a pesar de que dichos requisitos están claros, lograr la implementación correcta es notablemente difícil. React Query ofrece una sencilla solución utilizando hooks (ganchos), que trabajan mano a mano con librerías de consulta asíncrona como axios, Fetch y GraphQL, dado que todas están construidas en base a promesas. Como desarrollador de aplicaciones, simplemente basta con pasar una función que resuelve los datos y dejar todo lo demás al framework (marco de trabajo). Nos gusta que si bien ofrece múltiples opciones de configuración, éstas no son necesarias para hacerla funcionar. Las herramientas de desarrollador, si bien aún no están disponibles para React Native, también ayudan a los desarrolladores nuevos a entender cómo funciona el framework. Para React Native pueden utilizarse plugins para las herramientas de desarrollo de terceros como Flipper. En nuestra experiencia, la versión 3 de React Query ha traído la estabilidad necesaria para ser usada en producción por nuestros clientes.

  • Cuando se introdujo en 2014 Swift no incluía administrador de paquetes. Más tarde Swift Package Manager fue creado como un proyecto de código abierto oficial de Apple y desde entonces ha continuado desarrollándose y madurando. Nuestros equipos confían cada vez más en SwiftPM debido a que la mayoría de los paquetes pueden ser incluídos a través de este, y los procesos tanto para creadores como consumidores de paquetes se han agilizado. En el anterior Radar recomendamos probarlo, pero ahora creemos que tiene sentido seleccionarlo por defecto para comenzar nuevos proyectos. Para proyectos existentes que utilicen herramientas como CocoaPods or Carthage, puede merecer la pena hacer un experimento rápido para estimar el nivel de esfuerzo requerido para migrar y comprobar si todas las dependencias están disponibles.

  • Se ha demostrado que los algoritmos de tipo de datos replicados libres de conflictos (CRDT, conflict-free replicated data type) son capaces de distribuir y fusionar automáticamente los cambios entre pares sin conflictos. Pero en la práctica, incluso para datos lo suficientemente pequeños, estos algoritmos generalmente requieren una cantidad significativa de memoria para rastrear todos los cambios realizados por diferentes pares, lo que los hace poco prácticos. Yjs es una implementación CRDT cuidadosamente optimizada que mantiene el consumo de memoria a un nivel razonable para grandes conjuntos de datos y millones de modificaciones. También proporciona bindings para editores de texto populares, lo que reduce en gran medida el coste de crear herramientas colaborativas.

Probar ?

  • Para quienes prefieren un lenguaje más natural que JSON para el código de la infraestructura, Azure Bicep es un lenguaje específico del dominio (DSL) que utiliza una sintaxis declarativa y admite plantillas parametrizadas reutilizables para definiciones de recursos modulares. Una Visual Studio Code extensión proporciona seguridad de tipo instantánea, intellisense y comprobación de sintaxis, mientras que el compilador permite la transpilación bidireccional hacia y desde plantillas de Azure Resource Manager (ARM). El DSL orientado a los recursos de Bicep y la integración nativa con el ecosistema de Azure lo convierten en una opción convincente para el desarrollo de la infraestructura de Azure.

  • Desde la última vez que lo mencionamos Camunda, hemos visto que muchos de nuestros equipos y clientes usan la plataforma, lo que la convierte en uno de nuestros motores de flujo de trabajo preferidos en los casos en que un motor de flujo de trabajo es un buen ajuste para el dominio. Camunda ofrece motores de flujo de trabajo y de decisión que pueden ser integradas como una librería a tu código Java. Esto facilita los flujos de trabajo de pruebas, versionamiento y la refactorización, aliviando algunas de las desventajas de otros motores de flujo de trabajo de bajo código. Incluso hemos visto a Camunda ser utilizada en entornos con requisitos de alto rendimiento. A los equipos también les gusta lo fácil que es integrarse con Spring Boot y su agradable interfaz de usuario.

  • Anteriormente ya emitimos un blip sobre el DSL (lenguaje específico de dominio) en Kotlin para el plugin de Gradle para Android, o lenguaje específico de dominio en Kotlin para Gradle (Gradle Kotlin DSL, en inglés), que añadía soporte para scripts en Kotlin como alternativa a Groovy para proyectos Android que utilizan scripts de construcción de Gradle. El objetivo de reemplazar Groovy con Kotlin es proporcionar un mejor soporte para el refactoring, una edición más simple en IDEs y finalmente producir código que sea más fácil de leer y mantener. Para equipos que ya estén usando Kotlin, también significa trabajar en la construcción en un lenguaje ya conocido. Sugerimos ahora probar el DSL en Kotlin como un lenguaje alternativo a Groovy para proyectos de Gradle en general, especialmente si tenemos scripts de construcción de Gradle que sean grandes y complejos. Muchos IDEs incluyen ya soporte para la migración de proyectos existentes. Sugerimos comprobar previamente en la documentación los detalles más actualizados, incluyendo los prerrequisitos. Uno de nuestros equipos que tenía un script de construcción de al menos 7 años de antigüedad y 450 líneas de código, consiguió migrarlo exitosamente en unos pocos días.

  • Android ha tenido múltiples APIs para multimedia: Jetpack Media, también conocido como MediaCompat, Jetpack Media2 y ExoPlayer. Desafortunadamente esas librerías fueron desarrolladas de forma independiente, con diferentes objetivos, pero con funcionalidades solapadas. Los desarrolladores Android no sólo han tenido que elegir qué librería usar sino que también han tenido que programar adaptadores o conectores cuando se requerían funcionalidades de varias APIs. Jetpack Media3 es una API que toma áreas de funcionalidad común de esas APIs existentes — incluyendo UI, reproducción y gestión de sesiones multimedia — y se combinan en una API agregada y refinada. La interfaz del reproductor de ExoPlayer también ha sido actualizada, mejorada y simplificada para funcionar como la interfaz de reproducción común de Media3. Tras una fase inicial de acceso limitado, ahora Media3 está en beta. Aunque su primera versión está aún por llegar, ya hemos tenido experiencias positivas usándola en aplicaciones.

  • A medida que Storybook fue creciendo en popularidad, se fue convirtiendo cada vez más en un gigante. Si lo que realmente te interesa es aislar y probar tus componentes UI en React, entonces Ladle es la alternativa. Ladle es compatible con la mayoría de las API de Storybook (los archivos MDX aún no son compatibles) y puede ser usado como un reemplazo directo. Es liviano y tiene una mejor integración con Vite. También provee API simples y limpias que se pueden integrar fácilmente con otros frameworks de prueba.

  • Hemos escuchado que nuestros equipos basados en Kotlin están buscando alternativas a los frameworks de Java como GSON cuando manejan JSON. Apesar de que existe desde hace un tiempo, Moshi se ha convertido recientemente en uno de los frameworks preferidos para muchos de estos equipos. Es fácil migrar desde GSON y Moshi brinda soporte nativo para parámetros predeterminados y de tipo que no aceptan valores nulos. Moshi hace que trabajar con JSON sea más rápido y sencillo. Si actualmente estás usando un framework de Java con Kotlin para manejar JSON, te recomendamos probar Moshi.

  • Entre los frameworks de componentes web, Svelte se destaca al mover la reactividad fuera del navegador, hacia dentro del compilador. En lugar de optimizar las actualizaciones DOM usando un DOM virtual y trucos de optimización del navegador, Svelte compila tu código dentro de un código vainilla JavaScript framework-less que, quirúrgicamente, actualiza el DOM directamente. Esto, adicional a los beneficios de rendimiento en tiempo de funcionamiento, también permite a Svelte optimizar la cantidad de código que el navegador tiene que descargar sin tener que sacrificar herramientas para los desarrolladores; de hecho, está comprobado que es eficiente y compatible con ahorro de batería para aplicaciones web móviles debido a que menos código tiene que ejecutarse en el propio navegador. Dejando de lado los beneficios de eficiencia, nuestros equipos han apreciado la amistosa curva de aprendizaje y los beneficios de mantenimiento que vienen de escribir menos código. Svelte por sí mismo es solamente el framework de componente, pero SvelteKit añade herramientas para construir aplicaciones web completas.

Evaluar ?

  • Ciertamente no hay una escasez de frameworks para construir aplicaciones web en JavaScript/TypeScript. Hemos presentado varios de ellos en el Radar, pero lo que hace destacar a Aleph.js sobre el resto en este grupo tan nutrido, es que está diseñado para ser ejecutado en Deno, el nuevo entorno de ejecución del lado del servidor creado por el desarrollador original de Node. Esto sitúa a Aleph.js sobre una base moderna que aborda varios de los defectos y problemas con Node. Aleph.js es aún nuevo — se acerca el lanzamiento de su versión 1.0 en este momento — pero ya ofrece una sólida experiencia de desarrollo, incluyendo el reemplazo de módulos en caliente. Estando Deno actualmente muy por delante de su versión 1.0, Aleph.js es una opción moderna para aquellos proyectos que puedan asumir el riesgo.

  • Es difícil de creer pero en 2022, la comunidad de desarrolladores sigue produciendo nuevos e interesantes frameworks para la creación de aplicaciones web. Astro es un nuevo framework, de código abierto, para aplicaciones multipágina que renderiza HTML en el servidor y minimiza la cantidad de JavaScript transferido. Astro parece especialmente adecuado para sitios web orientados a albergar contenidos que se nutren de múltiples fuentes. Nos gusta el hecho de que, aunque Astro fomenta el envío sólo de HTML, también permite -cuando es necesario- seleccionar componentes activos escritos en el framework front-end JavaScript de tu elección. Esto es posible gracias a su arquitectura de islas. Estas islas son regiones interactivas dentro de una misma página donde el JavaScript necesario para su funcionamiento sólo se descarga cuando se necesita. Astro es relativamente nuevo pero parece estar dando soporte a un ecosistema creciente de desarrolladores y código. Hay que seguir supervisando su desarrollo.

  • BentoML es un framework basado en python para servir modelos de aprendizaje automático en entornos de producción escalables. Los modelos que provee son agnósticos al entorno; todos los artefactos, código y dependencias son encapsuladas en un formato auto-contenido llamado Bento. Es como tener tu modelo "como un servicio". Piensa en BentoML como Docker para modelos de aprendizaje automático: genera imágenes virtuales con APIs pre-programadas listas para ser implementadas e incluye funcionalidades que facilitan la prueba de estas imágenes. BentoML puede ayudar a acelerar el esfuerzo de desarrollo inicial al facilitar el inicio de los proyectos, razón por la cual lo incluimos en Assess.

  • Cuando se trata de reducir la huella de carbono de una aplicación — las emisiones de dióxido de carbono causadas indirectamente por el funcionamiento del software — la atención suele dirigirse a hacer que el software sea más eficiente. La idea es clara: un software más eficiente necesita menos electricidad y menos servidores, reduciendo las emisiones de la generación de electricidad y la fabricación de los servidores. Una estrategia adicional es hacer que la aplicación sea carbon aware. Esto se debe a que la misma carga de trabajo no siempre tiene la misma huella de carbono. Por ejemplo, cuando la ejecución se realiza en un centro de datos con un clima más frío, se requiere menos energía para el aire acondicionado; o, cuando la ejecución se realiza en un momento en que hay más energía renovable disponible (más luz solar, vientos más fuertes), se necesita menos electricidad procedente de fuentes basadas en el carbono. Con el Carbon Aware SDK, los ingenieros de software pueden consultar determinadas fuentes de datos para encontrar opciones menos intensivas en carbono para una determinada carga de trabajo y a continuación, trasladarla a otra ubicación o ejecutarla en otro momento. Esto tiene sentido para grandes cargas de trabajo que no son sensibles al tiempo ni a la latencia, como el entrenamiento de un modelo de machine-learning. Aunque el SDK y las fuentes de datos disponibles aún no son muy completos, creemos que es hora de empezar a estudiar cómo podemos hacer que nuestros sistemas sean conscientes del carbono.

  • Cloudscape es un sistema de diseño de código abierto que no sólo tiene un completo set de componentes, también tiene 35 patrones de interacción y representación de contenido. Además utiliza design tokens para aplicar temas y provee de wrappers de elementos para todos los componentes, lo que simplifica notablemente el testeo unitario. Esto lo hace destacar sobre otros sistemas de diseño que existen.

  • Connect es una familia de librerías para crear APIs HTTP compatibles con navegadores y gRPC. De manera similar a gRPC, escribes un esquema de Protocol Buffer, implementas la lógica de la aplicación, y Connect genera código para manejar la serialización, enrutamiento, compresión y negociación del tipo de contenido. Sin embargo, Connect intenta mejorar gRPC de varias maneras. Esto incluye soporte nativo para gRPC-Web sin un proxy de traducción; interoperabilidad con enrutadores o middleware de terceros, porque connect-go está construido sobre net/http (a diferencia de grpc-go); y genera clientes con tipado seguro y con la ergonomía del código hecho a mano. En su mayoría preferimos REST, y no somos muy fanáticos del enfoque RPC para crear APIs. Dicho lo cual, Connect parece abordar algunas de nuestras preocupaciones con los RPC, y te alentamos a que lo evalúes.

  • A medida que los dispositivos inteligentes siguen introduciéndose en nuestras vidas, empezamos a ver que surgen nuevos casos de uso en múltiples dispositivos. El ejemplo clásico es un texto que empezamos a leer en un teléfono pero preferimos terminar en una tablet. Otros ejemplos son el trazado de una ruta ciclista en una computadora y luego transferir los datos a una computadora para bicicletas para una navegación más fácil o utilizar un teléfono móvil como cámara web. Tales casos de uso requieren algunos tipos de características muy específicas, como descubrir dispositivos cercanos, comunicaciones seguras o sesiones multi-dispositivo. Apple empezó introduciendo tales características hace tiempo en sus propios SDKS, y ahora Google ha lanzado la primera vista previa de su SDK multi-dispositivo. Aunque esta vista previa tiene varias limitaciones (por ejemplo, sólo los teléfonos y tablets están soportados y sólo dos dispositivos a la vez) la tecnología es emocionante y puede ser utilizada conforme se despliega con el tiempo.

  • Cypress Component Testing proporciona un banco de pruebas para componentes testeables que permite construir y probar componentes de interfaz de usuario rápidamente. Puedes escribir pruebas de regresión de componentes de interfaz de usuario con el mismo API con el que escribes pruebas end-to-end (E2E) sobre la interfaz de usuario. A pesar de que aún está en beta, las pruebas de componentes será la función más importante de Cypress 10.

  • JobRunr es una biblioteca en Java para procesamiento de tareas en segundo plano, y una alternativa al planificador Quartz. Nuestros equipos han disfrutado usando el cuadro de mando integrado de JobRunr, el cual no sólo es fácil de usar, sino que también que permite monitorear y planificar tareas en segundo plano. JobRunr es de código abierto y gratis para uso comercial; sin embargo, para funcionalidades como migración de jobs y recuperación de tareas, es necesario obtener una licencia pagada.

  • Million es una nueva librería de DOM virtual para JavaScript. Similar a Svelte, aprovecha el compilador, Vite, para crear pequeños paquetes de JavaScript con un rendimiento de renderizado excepcional. La librería Million se presenta como un único paquete NPM con varios módulos, incluidos router, jsx-runtime y un módulo de Compatibilidad con React para crear aplicaciones de página única. Aunque React popularizó el DOM virtual hace una década, es fascinante ver nuevas innovaciones en este ámbito.

  • Soketi es un servidor de WebSockets de código abierto. Si tu aplicación es compatible con el protocolo Pusher, Soketi se puede conectar directamente ya que implementa por completo la versión 7 del protocolo pusher. Consideramos que el soporte beta para Cloudflare Workers es especialmente interesante ya que abre la puerta a utilizar WebSockets en la frontera de red.

  • El programa DALL·E de OpenAI llamó la atención por su capacidad de crear imágenes a partir de indicaciones de texto. Ahora, Stable Diffusion ofrece la misma capacidad pero, sobre todo, es de código abierto. Cualquiera que tenga acceso a una tarjeta gráfica potente puede experimentar con el modelo, y cualquiera que disponga de suficientes recursos informáticos puede recrear el modelo por sí mismo. Los resultados son asombrosos, pero también plantean cuestiones importantes. Por ejemplo, el modelo se ha entrenado con pares de imagen-texto obtenidos a través de un amplio rastreo de Internet y, por tanto, reflejará sesgos sociales, lo que significa que podría producir contenidos ilegales, molestos o, como mínimo, indeseables. Stable Diffusion incluye ahora un clasificador de seguridad basado en la IA; sin embargo, dada su naturaleza de código abierto, la gente puede desactivar el clasificador. Por último, los artistas han señalado que, con las indicaciones adecuadas, el modelo es capaz de imitar su estilo artístico. Esto plantea cuestiones sobre las implicaciones éticas y legales de una IA capaz de imitar a un artista.

  • Bóveda de Datos Sintéticos o Synthetic Data Vault (SDV) es un ecosistema de librerías para generación de datos sintéticos que puede aprender la distribución de un conjunto de datos para generar datos sintéticos con el mismo formato y las mismas propiedades estadísticas que la fuente. En el pasado, hablamos sobre las desventajas de usar datos de producción en entornos de prueba. Sin embargo, los matices de la distribución de datos en producción es muy difícil de reproducir manualmente, resultando en defectos y sorpresas. Creemos que SDV y otras herramientas similares pueden abordar esa brecha creando datos similares a los de producción para datos en tabla simple, tablas múltiples complejas y series multivariables cronológicas. Aunque SDV no es nuevo, nos gusta bastante y decidimos destacarlo.

Resistir ?

  • Estamos observando cierto interés por el lenguaje de programación conocido como Carbon. Esto no nos sorprende debido a que cuenta con el respaldo de Google y se presenta como sucesor natural de C++. En nuestra opinión C++ no puede ser reemplazado lo suficientemente rápido, tal y como han demostrado los ingenieros de software durante las últimas décadas: escribir código seguro y libre de errores en C++ es extremadamente difícil y costoso en tiempo. Si bien Carbon es un concepto interesante enfocado a la migración desde C++, a falta de un compilador operativo, es evidente que aún queda un largo camino por recorrer antes de que sea utilizable, además de que existen otros lenguajes de programación modernos que son una buena opción para migrar desde C++. Todavía es muy pronto para determinar si Carbon se convertirá en el sucesor natural de C++, pero desde la perspectiva que tenemos hoy, les recomendamos a los equipos considerar Rust y Go en lugar de posponer la migración mientras esperan la llegada de Carbon.

 
  • languages-and-frameworks quadrant with radar rings Adoptar Probar Evaluar Resistir Adoptar Probar Evaluar Resistir
  • Nuevo
  • Modificado
  • Ningún cambio

¿No encontraste algo que esperabas ver?

 

Cada edición del Radar presenta noticias que reflejan lo que hemos encontrado durante los seis meses anteriores. Es posible que ya hayamos cubierto lo que busca en un Radar anterior. A veces seleccionamos cosas simplemente porque hay demasiadas de las que hablar. También es posible que falte algún dato porque el Radar refleja nuestra experiencia, no se basa en un análisis exhaustivo del mercado.

¿No encontraste algo que esperabas ver?

 

Cada edición del Radar presenta noticias que reflejan lo que hemos encontrado durante los seis meses anteriores. Es posible que ya hayamos cubierto lo que busca en un Radar anterior. A veces seleccionamos cosas simplemente porque hay demasiadas de las que hablar. También es posible que falte algún dato porque el Radar refleja nuestra experiencia, no se basa en un análisis exhaustivo del mercado.

Descargar el Radar Tecnológico Volumen 27

 

English | Español | Português | 中文

Mantente informada sobre tecnología

 

Suscríbete ahora

Visita nuestro archivo para leer los volúmenes anteriores