Group Discussion: React, Vue and Others
Students will work in groups to create a Wiki comparing major client-side JavaScript frameworks: React, Vue and others. If you did not work before with Moodle Wikis, see this small video (3:36 min.) on the Wiki activity page.
Our goal here is to compare the three main client-side JavaScript frameworks, React, Vue, and two newcomers (Svelte or Flutter or Elm or Rust Yew or Blazor). There will be four groups, one for each framework. They will create a wiki with the following content:
- Framework name
- Student List (with name and USP id)
- Main Framework Features (Explain how to start an app)
- Framework Advantages
- Framework Disadvantages
- Main Application Niches
- Future Perspectives
They will also make a 22 minutes presentation of their work to the class.
Each group has to choose:
- Coordinator: To coordinate the discussions and group activities. He also has to control the time to make sure the group will post its results on time.
- Editor: To write down the group's contents to the wiki.
- Two or Three Presenters: To present the work to the class
A group may divide the work among subgroups, but, in this case, it is recommended that you plan some time to join the work of each subgroup.
Tip: If you use Google Docs or Slides to create your work, you may just link it to the group's wiki page. But remember to make it readable by everyone and copy its text to the wiki (just as a backup).
Rust Yew
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 a partir desta CLI.
2) Build
Digite wasm-pack build --target web a partir do diretório raiz do seu projeto para gerar os arquivos estáticos, como páginas HTML, imagens, arquivos CSS, JavaScript, etc.
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. (para fins de testes locais é possível utilizar algumas libs que instanciam um servidor HTTP básico. Esse módulo permite que você crie facilmente um servidor web para servir arquivos estáticos, como páginas HTML, imagens, arquivos CSS, JavaScript, entre outros. Para tal, utilizamos o módulo http.server do Python).
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.
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.