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

Lenguajes & Frameworks

Adoptar ?

  • Cuando Apple presentó SwiftUI hace unos años, fue un gran paso para la implementación de interfaces de usuario en todo tipo de dispositivos fabricados por Apple. Desde el principio, nos gustó el enfoque declarativo, centrado en el código y el modelo de programación reactiva proporcionado por Combine. Sin embargo, nos dimos cuenta de que escribir muchas pruebas de vista, que todavía se necesitan con un patrón modelo-vista-modelovista (MVVM), no se alineaba realmente con el marco de automatización XCUITest proporcionado por Apple. Esta brecha ha sido cerrada por ViewInspector. Un último obstáculo era la versión mínima del sistema operativo requerida. En el momento del lanzamiento, sólo las últimas versiones de iOS y macOS podían ejecutar aplicaciones escritas con SwiftUI, pero debido a la cadencia regular de actualizaciones de Apple, las aplicaciones de SwiftUI ahora pueden ejecutarse en prácticamente todas las versiones de macOS y iOS que reciben actualizaciones de seguridad.

  • Tenemos suficiente experiencia en el uso de Testcontainers sobre la cual creemos que es por defecto la opción más adecuada para crear entornos confiables para la ejecución de pruebas. Es una librería que se puede usar en múltiples lenguajes y dockeriza las librerías de test más comunes (incluyendo varios tipos de bases de datos, tecnologías de encolamiento, servicios en la nube y dependencias de UI testing como navegadores) con la habilidad de ejecutar Dockerfiles personalizados cuando sea necesario. Funciona bien en frameworks de testeo como JUnit, es suficientemente flexible como para dejar que los usuarios gestionen el ciclo de vida y la conexiones de red de los contenedores para que rápidamente tengan seteado un entorno integrado de pruebas. Nuestros equipos la encuentran como una librería programable, ligera y una manera fácil de manejar contenedores para hacer de sus tests aún más confiables.

Probar ?

  • Cuando se construye una aplicación con React Native, a veces nos vemos en la necesidad de crear nuestros propios módulos. Por ejemplo, nos hemos encontrado con esta necesidad de crear una librería de componentes de UI para una aplicación React Native. Desarrollar módulos no es tan sencillo pero nuestros equipos han demostrado solvencia usando Bob para automatizar esta tarea. Bob proporciona una CLI para crear el andamiaje (scaffolding) para diferentes tipos de proyectos. El andamiaje no se limita a la funcionalidad base, sino que, opcionalmente, puede incluir código de ejemplo, linters, configuraciones de pipelines de construcción, etc.

  • Flutter es cada vez más popular para crear aplicaciones móviles multiplataforma, y ​​Unity es excelente para crear experiencias AR/VR. Una pieza clave en el rompecabezas para integrar Unity y Flutter es el widget de Flutter-Unity, que permite incorporar aplicaciones de Unity dentro de aplicaciones Flutter. Una de las capacidades clave que ofrece el widget es la comunicación bidireccional entre Flutter y Unity. Hemos encontrado que su rendimiento también es bastante bueno, y esperamos aprovechar Unity en más aplicaciones de Flutter.

  • Kotest (anteriormente llamado Kotlin Test) es una herramienta de testing independiente para el Kotlin ecosistema que continua ganando fuerza entre nuestros equipos a través de varias implementaciones de Kotlin - nativo, JVM o JavaScript. Las principales ventajas son que ofrece una gran variedad de estilos de testing para organizar los test suites y que viene con un amplio y completo conjunto de matchers, los cuales permiten tests ‘expresivos’ conjuntamente con una DSL interna elegante. Además de su soporte para property-based testing – una técnica que hemos destacado previamente en el Radar – a nuestros equipos les gusta el sólido plugin de IntelliJ y la creciente comunidad de soporte al rededor.

  • Algunos lenguajes de programación, especialmente los más nuevos, tienen una solución integrada para administración de paquetes y dependencias. Cuando fue presentado en 2014, Swift no venía con un administrador de paquetes, y entonces la comunidad de desarrolladores para macOS y iOS simplemente continuó usando CocoaPods y Carthage, las soluciones de terceros que habían sido creadas para Objective-C. Un par de años más tarde Swift Package Manager (SwiftPM) fue iniciado como un proyecto de código abierto oficial de Apple, y entonces tomó unos pocos años más antes que Apple pudiera añadir su soporte para Xcode. Incluso en ese punto, muchos equipos de desarrollo continuaban usando CocoaPods y Carthage, en su mayoría porque muchos paquetes simplemente no estaban disponibles a través de SwiftPM. Ahora que la mayoría de los paquetes pueden ser añadidos a través de SwiftPM y los procesos han sido simplificados tanto para creadores como consumidores de los paquetes, nuestros equipos están confiando cada vez más en SwiftPM.

  • Vowpal Wabbit es una una librería de uso general para aprendizaje automático (machine learning). Fue creada originalmente por Yahoo! Research hace más de una década, Vowpal Wabbit sigue implementando nuevos algoritmos de refuerzo del aprendizaje. Queremos resaltar que Vowpal Wabbit 9.0, ha publicado una nueva versión importante después de seis años, y alentarlos a planear la migración ya que tiene varias mejoras de usabilidad, nuevas reducciones y arregla varios defectos.

Evaluar ?

  • Android Gradle plugin Kotlin DSL ha agregado soporte para Kotlin Script como alternativa a Groovy para los scripts de compilación de Gradle. El objetivo de reemplazar Groovy con Kotlin es proporcionar un mejor soporte para la refactorización y una edición más simple en los IDE (Entorno de desarrollo integrado) y, en última instancia, producir código que sea más fácil de leer y mantener. Para equipos que ya usan Kotlin, también significa trabajar en la compilación en un lenguaje familiar. Hemos tenido un equipo con un script de compilación de 450 líneas de al menos siete años de antigüedad que migró en unos pocos días. Si tienen scripts de compilación de Gradle grandes o complejos, entonces vale la pena evaluar si Kotlin Script producirá mejores resultados para sus equipos.

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

  • Hemos estado discutiendo los méritos de las herramientas de desarrollo móvil multi-plataforma tanto tiempo como el que hemos llevado publicando el Radar Tecnológico. En 2011, nos dimos cuenta por primera vez de una nueva generación de herramientas cuando creamos el blip sobre plataformas multi-dispositivo. Aunque permanecimos escépticos al principio, estas herramientas se han perfeccionado y han sido adoptadas ampliamente a lo largo de los años. Y nadie puede discutir la popularidad duradera y la utilidad de React Native. Capacitor es la última generación de una línea de herramientas que comenzó con PhoneGap, y luego fue renombrada a Apache Cordova. Capacitor es una reescritura completa de Ionic que abraza el estilo de las aplicaciones web progresivas para aplicaciones independientes. Hasta ahora, a nuestras desarrolladoras les gusta que pueden conseguir crear aplicaciones web, iOS y Android con una única base de código y que pueden gestionar las plataformas nativas de forma separada con acceso a APIs nativas cuando es necesario. Capacitor ofrece una alternativa a React Native, que tiene muchos años de experiencia multi-plataforma a sus espaldas.

  • No solemos presentar nuevas versiones de lenguajes de forma rutinaria, pero queríamos destacar la nueva versión de soporte a largo plazo (LTS) de Java, la versión 17. Si bien hay nuevas funciones prometedoras, como la vista previa de búsqueda de patrones, es el cambio al nuevo proceso de LTS lo que debería interesar a muchas organizaciones. Recomendamos a las organizaciones que evalúen nuevas versiones de Java a medida que estén disponibles, asegurándose de adoptar nuevas funciones y versiones según convenga. Sorprendentemente, muchas organizaciones no adoptan nuevas versiones de lenguajes de manera rutinaria, a pesar de que las actualizaciones periódicas ayudan a mantener las cosas pequeñas y manejables. Con suerte, el nuevo proceso de LTS, junto con las organizaciones pasando a hacer actualizaciones periódicas, ayudará a evitar la trampa de “demasiado caro actualizar” que acaba con el software de producción ejecutándose en una versión de Java al final de su vida útil.

  • Android 12 ha traído cambios significativos en los widgets de las aplicaciones, las cuales han mejorado la experiencia del usuario final y del desarrollador. Para realizar aplicaciones de Android, hemos expresado nuestra preferencia por Jetpack Compose como una forma moderna de construir interfaces de usuario nativas. Ahora, con Jetpack Glance, el cual es construido sobre el Compose runtime, los desarrolladores pueden usar similares APIs declarativas de Kotlin para escribir widgets. Recientemente Glance ha sido extendido para soportar Tiles en Wear OS.

  • Hoy en día, Android tiene una gran variedad de APIs: Jetpack Media, también conocido como MediaCompat, JetpackMedia2 y ExoPlayer. Desafortunadamente, estas bibliotecas fueron desarrolladas independientemente, con distintos objetivos que sobreponen funcionalidades. Las personas que desarrollan con Android no solamente tenían que escoger qué biblioteca usar, sino que también tenían que encargarse de hacer adaptadores u otras medidas para poder usar distintas bibliotecas a la vez. Jetpack Media3 es un esfuerzo, actualmente en acceso anticipado, de crear una nueva API que contiene las funcionalidades comunes de las APIs que ya existen (incluyendo interfaz de usuario, playback y manejo de sesiones de multimedia) conbinándolas para crear una unida y refinada API. La interfaz de ExoPlayer también ha sido actualizada, mejorada y simplificada para ejercer como interfaz común para Media3.

  • MistQL es un pequeño lenguaje específico de dominio que sirve para hacer cálculos en estructuras similares a JSON. Originalmente construido para la extracción manual de funcionalidades de modelos de machine learning en front end, MistQL actualmente soporta una implementación en JavaScript para navegadores y una implementación en Python para casos de uso del lado del servidor. Nos gusta su limpia sintaxis componible y funcional. Animamos a evaluarlo basándose en sus necesidades.

  • Mientras que muchas herramientas se pueden usar en el mundo de desarrollo multipaquete de node.js, npm 7 añade soporte directo con npm workspaces. Gestionar paquetes relacionados en conjunto facilita el desarrollo, permitiéndote, por ejemplo, guardar multiples librerías relacionadas en un solo repositorio. Con npm workspaces, una vez hayas añadido una configuración en un package.json de alto nivel que haga referencia a uno o más archivos de package.json anidados, comandos como npm install trabajarán a través de multiples paquetes, enlazando simbólicamente los paquetes fuente dependientes en el directorio raíz node_modules. Otros comandos también estarán al tanto de los workspaces, permitiéndote, por ejemplo, ejecutar los comandos npm run y npm test a través de múltiples paquetes con un solo comando. Tener esta flexibilidad desde el primer momento reduce la necesidad de algunos equipos de llegar a usar otro gestor de paquetes.

  • Hemos sido testigos de la migración de renderizar sitios web desde el lado del servidor a una aplicación de una sola página dentro del navegador, ahora el péndulo del desarrollo web parece balancearse al medio de todo.Remix es uno de estos ejemplos. Es un framework fullstack para JavaScript. El framework provee una carga rápida para las páginas utilizando sistemas distribuidos y navegadores nativos en lugar de compilaciones estáticas ineficientes. Ha logrado algunas optimizaciones en enrutamientos anidados y en la carga de páginas, lo que hace que la representación de la página parezca especialmente rápida. Mucha gente comparará Remix con Next.js, que está similarmente posicionada. Nos complace ver a este framework combinar ingeniosamente el tiempo de ejecución del navegador con el tiempo de ejecución del servidor para dar una mejor experiencia de usuario.

  • Ejecutar una tarea programada una única vez en un cluster de procesadores distribuidos es un requerimiento relativamente común. Por ejemplo, la situación podría surgir cuando se ingesta un lote de datos, se envía una notificación o se ejecuta alguna actividad de limpieza periódica. Pero, este es un problema notablemente complicado. ¿Cómo es que un grupo de procesos cooperan de manera segura sobre redes lentas y poco confiables? Algún mecanismo de bloqueo es necesario para coordinar las acciones a través del cluster. Afortunadamente, una variedad de almacenamientos distribuidos pueden implementar un bloqueo. Sistemas como ZooKeeper y Consul, así como también bases de datos como DynamoDB o Couchbase poseen mecanismos subyacentes para administrar el consenso dentro del cluster. ShedLock es una pequeña biblioteca para aprovecharse de estos proveedores en tu código Java, si estás buscando implementar tus propias tareas programadas. Cuenta con un API para adquirir y liberar bloqueos, así como también conectores para una amplia variedad de proveedores de bloqueo. Si estás escribiendo tus propias tareas distribuidas pero quieres evitar la complejidad que implica una plataforma de orquestación como Kubernetes, vale la pena darle un vistazo a ShedLock.

  • SpiceDB es un sistema de base de datos inspirado en Zanzibar (creado por Google), para gestionar permisos en aplicaciones. Con SpiceDB, defines un esquema para modelar los requisitos y usas el cliente para aplicar el esquema a una de las base de datos soportadas, insertar permisos o pedir respuesta a preguntas del tipo “¿Tiene este usuario acceso a este rescurso?” o incluso al revés “¿Cuales son todos los recursos a los que este usuario tiene acceso?” Normalmente abogamos por la separación de las reglas de autorización y el código, pero SpiceDB va un paso más allá separando los recursos y las reglas almacenando como un grafo para responder eficientemente a consultas sobre autorización. Debido a esta separación, debes asegurarte que los cambios en los datos de tu aplicación principal se vean reflejados en SpiceDB. Entre otras implementaciones inspiradas en Zanzibar, creemos que SpiceDB es una herramienta a valorar para gestionar autorizaciones en tu aplicación.

  • sqlc es un compilador que genera código Go idiomático y con seguridad de tipos a partir de SQL. A diferencia de otros enfoques basados en un mapeo objeto-relacional (ORM), puedes seguir escribiendo sencillamente SQL para lo que necesites. Una vez invocado, sqlc comprueba la corrección del SQL y genera un código Go eficiente, que puede ser llamado directamente desde el resto de la aplicación. Con un soporte estable tanto para PostgreSQL como MySQL, merece la pena echarle un vistazo a sqlc y te animamos a que lo pruebes.

  • Desarrollar aplicaciones para iOS se ha convertido con el paso del tiempo en un proceso más eficiente, y SwiftUI migrando a Adopt es una señal de ello. Yendo más allá de la naturaleza general de SwiftUI y otros marcos de trabajo comunes, La Arquitectura Componible (LAC) es a la vez una librería y un estilo arquitectónico para construir aplicaciones. Fue diseñado en el transcurso de una serie de videos, y los autores han declarado que tenían en mente la composición, las pruebas y la ergonomía, basándose en ideas de La Arquitectura Elm y Redux. Como era de esperar, el ámbito reducido y el adoctrinamiento son a la vez la fortaleza y la debilidad de LAC. Sentimos que los equipos que no tienen mucha pericia escribiendo aplicaciones iOS, que a menudo son equipos que se encargan de múltiples códigos fuente relacionados con diferentes stacks tecnológicos, son los que más pueden beneficiarse de usar un marco de trabajo doctrinario como LAC, y nos gustan las opiniones expresadas en LAC.

  • WebAssembly (WASM) es el estándar W3C que provee capacidades para ejecutar código en el navegador. Soportado por todos los principales navegadores y compatible con sus versiones anteriores, es un formato de compilación binaria diseñado para ejecutarse en el navegador a velocidades casi nativas. Abre el rango de idiomas que se puede utilizar para escribir funcionalidades de front-end, con enfoque inicial en C, C++ y Rust, y es también un objetivo de LLVM compilation. Cuando se ejecuta en el sandbox, puede interactuar con JavaScript y compartir los mismos permisos y modelo de seguridad. Portabilidad y seguridad son capacidades clave, que habilitarán la mayoría de las plataformas, incluyendo mobile y IoT.

  • Zig es un nuevo lenguaje que comparte muchos atributos con C pero con un tipado más fuerte, asignación de memoria más fácil, soporte para espacios de nombres y una serie de otras características. Su sintaxis, sin embargo, recuerda a JavaScript más que a C, lo que algunos pueden reprocharle. El objetivo de Zig es proporcionar un lenguaje muy simple con una compilación sencilla que minimice efectos laterales y produzca una ejecución predecible y fácil de seguir. Zig también proporciona acceso a la capacidad de compilación cruzada de LLVM. Algunas de nuestras desarrolladoras han encontrado esta característica tan útil, que están utilizando Zig como un compilador cruzado incluso aunque no estén escribiendo código en Zig. Zig es un lenguaje novedoso e interesante de investigar para aplicaciones donde C está siendo considerado o ya está en uso, así como para aplicaciones de sistema de bajo nivel que requieren manipulación explícita de memoria.

Resistir ?

 
  • 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.

Radar

Descargar el Radar Tecnológico Volumen 26

 

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

Radar

Mantente informada sobre tecnología

 

Suscríbete ahora

Visita nuestro archivo para leer los volúmenes anteriores