Menu

Linguagens & Frameworks

Adote?

  • O React Hooks introduziu uma nova abordagem para gerenciar a lógica stateful. Como os componentes React sempre estiveram mais próximos das funções do que as classes, o Hooks adotou isso e trouxe estado para as funções, em vez de assumir as funções como métodos para o estado com classes. Com base em nossa experiência, o Hooks aprimora a reutilização da funcionalidade entre componentes e a legibilidade do código. Dadas as melhorias de testabilidade de Hooks, o uso de React Test Renderer e React Testing Library e seu crescente suporte na comunidade, os consideramos nossa abordagem de escolha.

    Histórico
  • O mundo do JavaScript se move muito rápido e, à medida que adquirimos mais experiência usando um framework, nossas recomendações mudam. A Biblioteca de Testes para React é um bom exemplo de framework que, com um uso mais profundo, ofuscou as alternativas para se tornar o padrão razoável para testar frontends baseados em React. Nossos times gostam do fato de que os testes escritos com esse framework são menos frágeis do que os de frameworks alternativos, como Enzyme, já que ele incentiva você a testar os relacionamentos dos componentes individualmente, em vez de testar todos os detalhes da implementação. Essa mentalidade é trazida pela Biblioteca de Testes da qual a Biblioteca de Testes para React faz parte, e que também fornece uma família inteira de bibliotecas para Angular e Vue.js, por exemplo.

    Histórico
  • Vue.js se tornou um dos frameworks JavaScript para frontend aplicados com sucesso, amados e confiáveis em nossa comunidade. Embora existam outras alternativas bem adotadas, como React.js, a simplicidade do Vue.js no design de API, sua clara segregação de diretivas e componentes (um arquivo por idioma do componente) e seu gerenciamento de estado mais simples o tornaram uma opção atraente entre outras.

    Histórico

Experimente?

  • Desde que mencionamos CSS em JS como uma técnica emergente em 2017, ela se tornou muito mais popular, e é uma tendência que também vemos em nosso trabalho. Com uma sólida experiência em produção, podemos agora recomendar CSS em JS como uma técnica a ser testada. Um bom ponto de partida é o framework de componentes com estilo, mencionado em nosso último Radar. Além de todos os aspectos positivos, porém, geralmente há uma desvantagem ao usar CSS em JS: o cálculo de estilos em tempo de execução pode causar um atraso perceptível para usuários finais. Com Linaria, agora estamos vendo uma nova classe de frameworks criados com esse problema em mente. Linaria emprega várias técnicas para mudar a maior parte da sobrecarga de desempenho para ganhar tempo. Infelizmente, isso vem com seu próprio conjunto de poréns, principalmente a falta de suporte a estilo dinâmico no IE11.

    Histórico
  • Com o uso prolongado de Kotlin, nossos times de desenvolvimento ganharam experiência com mais frameworks projetados especificamente para Kotlin, em vez de usar estruturas Java com Kotlin. Embora já exista há algum tempo, Exposed chamou nossa atenção como um mapeador leve de objeto relacional (ORM). Exposed possui dois tipos de acesso ao banco de dados: um DSL interno tipicamente seguro que envolve o SQL e uma implementação do padrão do objeto de acesso a dados (DAO). Ele suporta os recursos esperados de um ORM maduro, como manipulação de referências muitas-para-muitas, carregamento rápido e suporte para junções entre entidades. Também gostamos do fato de que a implementação funcione sem proxies e não dependa de reflexão, o que certamente é benéfico para o desempenho.

    Histórico
  • O GraphQL Inspector permite comparar alterações entre dois esquemas de GraphQL. Nós advertimos contra o uso de GraphQL no passado, e estamos felizes em ver algumas melhorias em ferramentas de GraphQL desde então. A maioria de nossos times continua usando GraphQL para agregação de recursos do lado do servidor e, integrando o GraphQL Inspector em pipelines de CI, conseguimos captar possíveis alterações que gerem incompatibilidade no esquema.

    Histórico
  • Dada a nossa experiência de que os testes são as únicas especificações de API que realmente importam, estamos sempre à procura de novas ferramentas que possam ajudar com testes. Karate é um framework de teste de API cuja funcionalidade exclusiva é que os testes são escritos com base na sintaxe do Gherkin, sem depender de uma linguagem de programação de uso geral para implementar o comportamento do teste. O Karate usa uma linguagem específica de domínio para descrever testes de API baseados em HTTP. Nossos times gostam da especificação legível obtida com essa ferramenta e recomendam manter os testes com Karate nos níveis superiores da pirâmide de testes, e não sobrecarregar seu uso fazendo declarações muito detalhadas.

    Histórico
  • Com Kotlin sendo cada vez mais usado tanto para o desenvolvimento móvel quanto do lado do servidor, o ecossistema associado continua a evoluir. Koin é um framework Kotlin que lida com um dos problemas rotineiros no desenvolvimento de software: a injeção de dependência. Embora você possa escolher entre uma variedade de frameworks de injeção de dependência para Kotlin, nossos times passaram a preferir a simplicidade do Koin. Ele evita o uso de anotações e injeta por meio de construtores ou imitando a inicialização preguiçosa de Kotlin, para que os objetos sejam injetados somente quando necessário. Isso contrasta com o framework de injeção compilada estaticamente Dagger para Android. Nossas pessoas desenvolvedoras gostam da natureza leve desse framework e de sua testabilidade interna.

    Histórico
  • A crescente popularidade do Node.js e de tendências como uso excessivo de Node.js levaram à aplicação do Node.js no desenvolvimento de aplicações de negócios. Frequentemente, vemos problemas como escalabilidade e manutenção em aplicações grandes baseadas em JavaScript. NestJS é um framework TypeScript-first que torna o desenvolvimento de aplicações Node.js mais seguro e menos propenso a erros. O NestJS é opinativo, vem com os princípios do SOLID e uma arquitetura inspirada em Angular pronta para uso. Ao criar microsserviços Node.js, o NestJS é um dos frameworks que nossos times costumam usar para habilitar as pessoas desenvolvedoras a criar aplicações testáveis, escaláveis, com baixo acoplamento e de fácil manutenção.

    Histórico
  • Nossos times continuam a usar e apreciar o framework de aprendizado de máquina PyTorch, e vários times preferem PyTorch a TensorFlow. O PyTorch expõe o funcionamento interno de ML que o TensorFlow oculta, facilitando a depuração, além de conter construções com as quais as pessoas programadoras estão familiarizadas, como ciclos e ações. As versões recentes melhoraram o desempenho do PyTorch, e o usamos com sucesso em projetos de produção.

    Histórico
  • Rust tem continuamente ganhado popularidade. Tivemos discussões acaloradas sobre o que é melhor, Rust ou C++/Go, sem um vencedor claro. No entanto, estamos felizes em ver que o Rust melhorou significativamente, com mais APIs integradas sendo adicionadas e estabilizadas, incluindo suporte assíncrono avançado, que foi mencionado no Radar anterior. Além disso, o Rust também inspirou o design de novas linguagens. Por exemplo, Move language no Libra usa a maneira do Rust de gerenciar a memória para gerenciar recursos, garantindo que os ativos digitais nunca possam ser copiados ou descartados implicitamente.

    Histórico
  • Sarama é uma biblioteca cliente Go para Apache Kafka. Se você estiver desenvolvendo suas APIs no Go, vai achar a Sarama muito fácil de configurar e gerenciar, pois não depende de nenhuma biblioteca nativa. Sarama possui dois tipos de APIs — uma API de alto nível para produzir e consumir mensagens facilmente e uma API de baixo nível para controlar bytes na transmissão.

    Histórico
  • A Apple deu um grande passo adiante com seu novo framework SwiftUI para implementação de interfaces de usuário nas plataformas macOS e iOS. Gostamos do fato de que o SwiftUI vá além da relação um tanto estranha entre o Interface Builder e o Xcode, e adote uma abordagem coerente, declarativa e centrada no código. Agora você pode visualizar seu código e a interface visual resultante lado a lado no Xcode 11, criando uma experiência de desenvolvimento muito melhor. O framework SwiftUI também se inspira no mundo do React.js, que dominou o desenvolvimento web nos últimos anos. Valores imutáveis nos modelos de exibição e um mecanismo de atualização assíncrona criam um modelo de programação reativa unificada. Isso fornece às pessoas desenvolvedoras uma alternativa totalmente nativa a frameworks reativos semelhantes, como React Native ou Flutter. O SwiftUI representa definitivamente o futuro do desenvolvimento da interface de usuário da Apple e, apesar de novo, demonstrou seus benefícios. Temos tido uma ótima experiência com ele — e sua curva de aprendizado superficial. Vale a pena notar que você deve conhecer o caso de uso do seu cliente antes de usar o SwiftUI, pois ele não suporta iOS 12 ou inferior.

    Histórico

Avalie?

  • Com o objetivo de melhorar o desempenho no código, as ferramentas de criação de perfil são muito úteis para identificar gargalos ou atrasos de difícil identificação no código, especialmente em operações assíncronas. Clinic.js Bubbleprof representa visualmente as operações assíncronas nos processos do Node.js., desenhando um mapa de atrasos no fluxo da aplicação. Gostamos dessa ferramenta porque ajuda as pessoas desenvolvedoras a identificar e priorizar com facilidade o que pode ser melhorado no código.

    Histórico
  • Ainda existem algumas lacunas em ferramentas ao se aplicar boas práticas de engenharia de software na engenharia de dados. Tentando automatizar verificações de qualidade de dados entre diferentes etapas em um pipeline de dados, um de nossos times se surpreendeu ao encontrar apenas algumas ferramentas nesse espaço. O consenso foi Deequ, uma biblioteca para escrever testes que se assemelham a testes de unidade para conjuntos de dados. Deequ foi desenvolvida com base no Apache Spark e, mesmo sendo publicada pela AWS Labs, pode ser usada em ambientes diferentes da AWS.

    Histórico
  • Na edição anterior do Radar, incluímos o BERT — que é um marco importante no cenário de PLN. No ano passado, a Baidu lançou o ERNIE 2.0 (representação aprimorada pela integração do conhecimento, ou Enhanced Representation through kNowledge IntEgration), que superou o BERT em sete tarefas GLUE de compreensão de linguagem e em todas as nove tarefas de PLN chinesas. O ERNIE, assim como o BERT, fornece modelos de linguagem pré-treinados não-supervisionados, que podem ser ajustados com a adição de camadas de saída para criar modelos de ponta para uma variedade de tarefas de PLN. O ERNIE difere dos métodos tradicionais de pré-treinamento, pois é uma estrutura de pré-treinamento contínuo. Em vez de treinar com um pequeno número de objetivos de pré-treinamento, ele pode introduzir constantemente uma grande variedade de tarefas de pré-treinamento para ajudar o modelo a aprender com eficiência as representações da linguagem. Estamos muito otimistas com os avanços em PLN e esperamos experimentar o ERNIE em nossos projetos.

    Histórico
  • MediaPipe é um framework para construção de pipelines de aprendizado de máquina aplicadas, multimodais (como vídeo, áudio, dados de séries temporais etc.), multiplataforma (por exemplo, Android, iOS, Web e dispositivos de borda). Ele fornece vários recursos, incluindo detecção facial, rastreamento de mãos, detecção de gestos e detecção de objetos. Embora o MediaPipe seja implantado principalmente em dispositivos móveis, ele começou a figurar em navegadores graças ao WebAssembly e à biblioteca de inferência XNNPack ML. Estamos explorando o MediaPipe em alguns casos de uso de realidade aumentada e gostamos do que vemos até agora.

    Histórico
  • As ferramentas e frameworks de CSS oferecem componentes predefinidos para resultados rápidos. Após algum tempo, no entanto, podem complicar a personalização. Tailwind CSS propõe uma abordagem interessante, fornecendo classes CSS de utilitário de nível inferior para criar blocos de construção sem estilos opinativos e visando fácil personalização. A amplitude dos utilitários de baixo nível permite evitar a criação de classes ou CSS por conta própria, o que leva a uma base de código mais sustentável a longo prazo. Aparentemente, CSS Tailwind oferece o equilíbrio certo entre reutilização e personalização para criar componentes visuais.

    Histórico
  • Se você precisar inserir dados de bancos de dados relacionais em um tópico do Kafka, considere o Tamer, que se autodefine como "um conector de fonte JDBC domesticado para Kafka". Apesar de ser um framework relativamente novo, achamos o Tamer mais eficiente que o conector Kafka JDBC, especialmente quando há grandes quantidades de dados envolvidas.

    Histórico
  • A comunidade Golang teve sua parcela de pessoas céticas com injeção de dependência, em parte porque confundiram o padrão com frameworks específicos, e pessoas desenvolvedoras com experiência em programação de sistemas naturalmente não gostam da sobrecarga de tempo de execução causada pela reflexão. Então, veio o Wire, uma ferramenta de injeção de dependência em tempo de compilação que pode gerar código e conectar componentes. Wire não possui sobrecarga de tempo de execução adicional, e é mais fácil pensar no gráfico de dependência estática. Quer você escreva manualmente seu código ou use frameworks, recomendamos o uso de injeção de dependência para incentivar designs modulares e testáveis.

    Histórico
  • Já apresentamos várias bibliotecas de gerenciamento de estado no Radar, mas XState adota uma abordagem um pouco diferente. É um framework simples de JavaScript e TypeScript para criar máquinas de estados finitos e visualizá-las como grafos de estado. Ele se integra aos frameworks JavaScript reativos mais populares, (Vue.js, Ember.js, React.js e RxJS) e é baseado no padrão W3C para máquinas de estado finito. Outro recurso notável é a serialização de definições de máquina. Uma coisa que achamos útil ao criar máquinas de estados finitos em outros contextos (principalmente ao escrever a lógica) é a capacidade de visualizar estados e suas possíveis transições. Gostamos do fato de ser realmente fácil fazer isso com o visualizador do XState.

    Histórico

Evite?

  • Nós nem sempre movemos ferramentas descontinuadas para o anel Evite no Radar, mas nossos times sentem que a Enzyme foi substituída na construção de testes de unidade de componentes UI do React pela Biblioteca de Testes React. Os times usando Enzyme acham que seu foco nos testes de componentes internos leva a testes frágeis e insustentáveis.

    Histórico
Não encontrou algo que você esperava achar?

Cada edição do radar inclui blips que refletem nossas experiências nos seis meses anteriores. Talvez já tenhamos falado sobre o que você procura em um radar anterior. Às vezes, deixamos coisas de fora simplesmente porque há muitas a serem abordadas. Também pode estar faltando um tópico específico porque o radar reflete nossa experiência, não se baseando em uma análise abrangente do mercado.

Novo,Modificado,Sem alteração