Voltar

Rust Yew

Visualizando versão #6 da página
(Restaurar esta versão) 

Modificado: 31 maio 2023, 12:07 PM   Usuário: Samuel Rubens Souza Oliveira  → Samuel Rubens Souza Oliveira

LINK PARA O DOCS: https://docs.google.com/document/d/1V_rReS5Nj2VWEMqZvlRnIJwQESE9cmQvj-5yp8QD3Jw/edit?usp=sharing

RUST YEW


Student List (with name and USP id):

Arthur Pin - 12691964 

Maria Júlia Soares De Grandi - 12542501

Gabriel Barbosa de Amorim Perão- 12677874

Thaís Ribeiro Lauriano - 12542518

Vinicius Kazuo Fujikawa Noguti - 11803121

Bruno Berndt Lima - 12542550

Thiago Shimada - 12691032

José Pedro Cioni do Carmo - 12623988

Jonathan Sanchez Minaya - 11333691

Samuel Figueiredo Veronez - 12542626

Fernando Gonçalves Campos - 12542352

Samuel Rubens Souza Oliveira - 11912533 (COORDENADOR)

Igor Antunes Boson Paes - 11200571 (EDITOR)

Sample Code Example Repository


Main Framework Features (Explain how to start an app)

As principais features que vêm com o Rust Yew, explicitadas pelo próprio site do framework, são:

1. Baseado em Rust: Rust é uma linguagem moderna de alto desempenho, que também traz benefícios de segurança e confiabilidade.

2. Component-based: A arquitetura do Rust Yew é baseada em componentes, o que permite que componentes sejam reutilizados durante o desenvolvimento da interface do usuário, o que facilita a modularização e manutenção do projeto.

3. Compilação para WebAssembly: O código da aplicação é compilado em WebAssembly, ou seja, a aplicação roda direto no navegador, o que permite maior desempenho e uma experiência mais responsiva para o usuário.


Como iniciar um aplicativo (Hello World). Primeiro é necessário instalar os pré-requisitos: 

Rust, a linguagem base do framework, que pode ser baixado a partir do site oficial

WebAssembly target. O Rust consegue compilar códigos-fonte para diferentes “targets”. O target de compilação do WebAssembly pode ser instalado no ambiente de desenvolvimento com um comando no terminal:

1) Instale Rust e wasm-pack
Siga as instruções em https://www.rust-lang.org/tools/install e siga o link de instalação em wasm-pack.
Que será utilizado para buildar a aplicação com o comando

2) Build
Digite wasm-pack build --target web a partir do diretório raiz do seu projeto.
https://www.rust-lang.org/tools/install e siga o link de instalação em wasm-pack. 2) Construir Digite wasm-pack build --target web a partir do diretório raiz do seu projeto." data-crosslingual-hint="" data-location="2" data-enable-toggle-playback-speed="true" data-results-count="1" data-result-index="1" jscontroller="JNcm2e" jsmodel="WCciof" jsname="Xk9Utf">

3) Deploy
Acesse seus artefatos de construção gerados, bundle.js e yew_wasm_pack_minimal_bg.wasm, em ./pkg a partir do diretório raiz do seu projeto.

Framework Advantages

Entre as vantagens de usar a linguagem de programação Rust e o framework Yew, podemos citar:


  • Segurança de Memória: Rust foi projetada com um foco forte na segurança de memória. Ela elimina erros comuns de programação, como referências nulas, estouro de buffer e corridas de dados, por meio de verificações rigorosas em tempo de compilação. Isso garante que as aplicações Yew construídas com Rust sejam robustas e menos propensas a falhas e vulnerabilidades de segurança causadas por problemas relacionados à memória.


  • Desempenho: As características de desempenho do Rust fazem dele uma excelente escolha para o desenvolvimento web. Ele fornece controle de baixo nível sobre os recursos do sistema, permitindo que você escreva código eficiente. Isso é especialmente benéfico para aplicações web que exigem alto desempenho, como painéis em tempo real, ferramentas de visualização de dados ou aplicações interativas.


  • Concorrência: O modelo de propriedade do Rust e o conceito de empréstimo tornam mais fácil escrever código concorrente sem os habituais problemas de corrida de dados e deadlocks. Isso pode ser vantajoso ao construir aplicações web responsivas que precisam lidar com várias interações de usuários simultaneamente.


  • Suporte ao WebAssembly: O Rust tem excelente suporte ao WebAssembly (Wasm), um formato de bytecode de baixo nível que permite a execução de aplicações de alto desempenho na web. O Yew aproveita o suporte do Rust ao Wasm, permitindo que você compile seu código Rust em módulos Wasm e os integre perfeitamente às suas aplicações web. Isso abre oportunidades para aproveitar bibliotecas Rust existentes ou até mesmo reutilizar código entre aplicações servidor e cliente.


  • Arquitetura baseada em componentes: Yew é um framework web moderno que adota uma arquitetura baseada em componentes, semelhante a frameworks como React ou Vue.js. Ele fornece uma forma limpa e estruturada de construir componentes de interface de usuário reutilizáveis, promovendo a reutilização de código e a manutenibilidade. Os componentes do Yew são escritos em Rust, aproveitando seu sistema de tipos e garantias do compilador.


  • Tipagem forte: O sistema de tipos estáticos do Rust ajuda a detectar erros em tempo de compilação, reduzindo as chances de erros em tempo de execução. O Yew aproveita esses benefícios, permitindo que você escreva aplicações web com tipos seguros. Isso resulta em um código mais robusto, melhores capacidades de refatoração e maior produtividade do desenvolvedor.


  • Ecossistema e Comunidade: Rust possui um ecossistema crescente de bibliotecas e ferramentas, facilitando a busca por componentes reutilizáveis e a integração com outros sistemas. O próprio Yew possui uma comunidade ativa e solidária, com atualizações regulares, documentação e recursos impulsionados pela comunidade disponíveis.

Framework Disadvantages

O Yew apresenta uma curva de aprendizado significativa. É necessário ter um conhecimento sólido de Rust e desenvolvimento web para utilizá-lo efetivamente, o que pode ser desafiador, especialmente para desenvolvedores que não estão familiarizados com a linguagem. Uma desvantagem do Yew é a imaturidade do seu ecossistema. Por ser um projeto relativamente novo, pode haver menos recursos, bibliotecas e ferramentas disponíveis em comparação com frameworks mais estabelecidos, como React, Angular ou Vue.js. 

Além disso, o Yew utiliza WebAssembly para executar o código no navegador, o que pode resultar em um tamanho de binário maior em comparação com frameworks tradicionais baseados em JavaScript. Esse tamanho maior do binário pode afetar o tempo de carregamento da aplicação, especialmente em conexões de internet mais lentas. É importante considerar esse aspecto, principalmente se a otimização do tempo de carregamento for uma preocupação significativa para o projeto.

Outra desvantagem do Yew é a dependência do suporte do navegador para a execução de WebAssembly. Embora a maioria dos navegadores modernos suporte WebAssembly, pode haver diferenças sutis na implementação e suporte entre diferentes navegadores. Isso pode resultar em problemas de compatibilidade e exigir testes adicionais para garantir que a aplicação funcione corretamente em diferentes ambientes de navegador. Além disso, devido ao fato de o Yew ter uma comunidade menor em comparação com frameworks mais estabelecidos, como React ou Angular, pode ser mais difícil encontrar soluções para problemas específicos, obter suporte da comunidade ou encontrar recursos educacionais.

Main Application Niches

Como podemos ver, o framework Rust Yew é uma ferramenta poderosa para o desenvolvimento de interfaces de usuário web utilizando a linguagem Rust, devido a essas características pode ser aplicado em uma variedade de contextos, porém existem alguns nichos de aplicação em que o Rust Yew se destaca:


  • Aplicativos de alta performance: O Rust Yew oferece um desempenho excepcional devido à sua compilação para WebAssembly e à segurança de memória garantida pela linguagem Rust. Isso o torna uma ótima escolha para aplicativos que exigem alta velocidade e eficiência, como jogos web, visualizações de dados complexas e aplicativos de realidade virtual ou aumentada.


  • Aplicativos de segurança crítica: A linguagem Rust é conhecida por sua forte garantia de segurança de memória e ausência de erros de acesso a dados. Ao usar o Rust Yew, é possível desenvolver aplicativos web com uma camada adicional de segurança, o que pode ser crucial para setores como finanças, saúde e IoT (Internet das Coisas), onde a segurança é uma prioridade.


  • Aplicativos que compartilham código com o backend: Uma vantagem do Rust Yew é a possibilidade de compartilhar código entre o frontend e o backend. Isso é particularmente útil em cenários onde a lógica de negócios precisa ser consistente entre o cliente e o servidor, evitando duplicação de código e facilitando a manutenção. Aplicações como painéis administrativos, aplicativos de gerenciamento de conteúdo e aplicativos de colaboração podem se beneficiar dessa capacidade.


  • Projetos de médio a grande porte: O Rust Yew é especialmente adequado para projetos de médio a grande porte, nos quais a escalabilidade, a organização do código e a manutenibilidade são importantes. Com o Rust e o Yew, é possível escrever código modular e reutilizável, facilitando a criação de aplicativos complexos e de longa duração.


  • Projetos que exigem uma base técnica forte: O Rust Yew é uma escolha ideal para desenvolvedores e equipes técnicas que desejam aproveitar os benefícios da linguagem Rust, como segurança de memória e baixo nível de controle, ao mesmo tempo em que desenvolvem interfaces web. Se você está familiarizado com Rust ou deseja aprender uma linguagem com forte ênfase em segurança e desempenho, o Rust Yew pode ser uma opção interessante.


Embora esses sejam nichos de aplicação em que o Rust Yew pode se destacar, é importante considerar as necessidades específicas do projeto e a experiência da equipe antes de decidir usar o framework. Cada projeto tem requisitos diferentes, e uma avaliação cuidadosa das vantagens e desvantagens é essencial para uma escolha bem fundamentada.

Future Perspectives

É possível obter perspectivas acerca do futuro do framework com base em tendências que podem afetar o Rust Yew, tais como:


  • Crescimento de popularidade

  • Expansão de seu ecossistema

  • Melhorias na estabilidade e no desempenho - constante evolução

  • Suporte a Web Assembly


A partir desses tópicos, pode-se traçar uma perspectiva interessante para o framework, já que o cenário, como um todo, mostra-se favorável a ele - cada vez mais usuários, evolução rápida e regular, com suporte a tecnologias que estão em alta.

Ou seja, apesar da sujeição de previsões a mudanças, atualmente, espera-se que o Rust Yew tenha um futuro promissor, a depender, principalmente, da concorrência com outros frameworks, para que sua popularidade continue alta e, assim, novas atualizações e evoluções sejam proporcionadas.