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).
Flutter
Table des matières
1.1. Dart
1.2. Atualidade
2. Principais funcionalidades e vantagens [Modifier]
2.1. Null safety, hot reload e hot restart
2.2. Dart Native
2.3. Codebase única
3.1. Poucas bibliotecas
3.2. Para além do mobile
4. Nichos e perspectivas futuras [Modifier]
4.2. Utilização na China
Andrey Cortez Rufino- 11819487
Bruna Azevedo Garcia - 11381789
Gustavo Hitomi da Silva - 11801202
Susy da Costa Dutra - 12694007
Daniel H. Lelis - 12543822
João Pedro Moura Diniz Araújo - 13671869
FLUTTER
Histórico [Modifier]
O Flutter foi inicialmente apresentado pela Google em 2015 na Conferência de Desenvolvedores Dart com o nome Sky, com novas versões de preview lançadas ao longo do tempo até o lançamento de sua primeira versão estável, 1.0, em 4 de dezembro de 2018. Com o passar do tempo, o projeto foi desenvolvendo novas versões, trazendo otimizações e expandindo sua lista de plataformas nativas alvo.
Flutter 2.0 lançado em 3 de março de 2021, trouxe suporte oficial para criação de aplicação web, com componentes específicos para a plataforma e o aprimoramento dos motores de renderização. No mesmo ano, a plataforma foi atualizada para uso da última versão do padrão de design da Google em Android, o Material Design, e dando suporte para a nova arquitetura da Apple, o Apple Silicon.
Dart
O Flutter utiliza a linguagem Dart, desenvolvida pela Google com o objetivo de mitigar as frustrações dos desenvolvedores da empresa ao lidar com as extensivas bases de código da empresa em Javascript, substituindo gradualmente o desenvolvimento de suas aplicações JS pela nova linguagem, tendo sua primeira versão estável lançada ao público em 2013. Contudo, apesar das tentativas por parte da empresa, o Dart não foi abraçado por desenvolvedores como a nova linguagem da web; porém, a linguagem acabou eventualmente se mostrando ideal para o uso no projeto Flutter, com sua flexibilidade de plataformas alvo, performance e sintaxe familiar, baseada em C e Javascript.
Atualidade
Flutter 3
A plataforma agora suporta aplicativos iOS, Android e web, bem como aplicativos de desktop Windows, macOS e Linux, tudo como parte da versão estável do Flutter. No macOS, isso inclui suporte para binários universais para que os aplicativos possam ser executados nativamente nos chips Intel e Apple Silicon. Para o Linux, o Google fez uma parceria com a Canonical do Ubuntu para “oferecer uma opção de desenvolvimento altamente integrada e de primeira linha”.
Nesse lançamento o Google anunciou o Casual Games Toolkit para o catálogo do Flutter. Esse conjunto de ferramentas é composto por um kit inicial para desenvolvimento de jogos mobile mais simples.
Web Assembly
O desenvolvimento do suporte de Flutter e Dart para Web Assembly ainda está em desenvolvimento, mas em 2023 já é possível compilar para WASM no Firefox e browsers baseados do Chrome.
Principais funcionalidades e vantagens [Modifier]
O framework em questão apresenta diversas funcionalidades que tornam a produtividade e a facilidade de desenvolvimento o foco do seu uso. Destas, destacam-se null safety, hot reload e hot restart, as bibliotecas de widgets, e, principalmente, o desenvolvimento cross-platform combinado ao desempenho de aplicação nativa.
Null safety, hot reload e hot restart
Por ser um framework para Dart, ele se beneficia dos recursos de null safety do Dart, promovendo um aplicativo muito mais resiliente a bugs e diminuindo drasticamente erros em tempo de execução. Já o recurso de hot reload e hot restart ajuda a acelerar o processo de desenvolvimento, permitindo visualizar mudanças lógicas e visuais sem precisar recompilar todo o aplicativo, apenas as bibliotecas alteradas.
Dart Native
A tecnologia do compilador do Dart permite que você execute o código de diferentes maneiras. Na plataforma nativa, o Dart inclui uma VM Dart com compilação just-in-time (JIT) e um compilador AOT (ahead-of-time) para produzir código de máquina, para apps destinados a dispositivos móveis e desktop. E na plataforma da web, seu compilador web traduz o Dart em JavaScript, compilando para fins de desenvolvimento ou produção.
Codebase única
O Flutter já inclui widgets nas linguagens de design Cupertino, Material Design e Fluent Design, da Apple, Google e Microsoft, respectivamente. Suas aplicações são compiladas para Web, iOS, Android e Windows nativamente, permitindo uma única code base para múltiplas plataformas. Por fim, essa code base não utiliza nenhuma camada de tradução ou virtualização, mas sim, gera aplicativos nativos para cada plataforma.
Utilização por empresas
Dessa forma, o desempenho de uma aplicação desenvolvida em Flutter é muito próximo quando comparado a aplicativos desenvolvidos com ferramentas específicas da plataforma, mas demandando equipes de desenvolvimento cada vez menores e mais eficientes. Cada vez mais, empresas como a NuBank, por exemplo, ou BMW, Ebay, Toyota e Alibaba, estão transpondo suas aplicações para Flutter devido às facilidades e benefícios.
Desvantagens [Modifier]
Apesar de todas as funcionalidades e vantagens apresentadas, hoje, ainda que largamente usado, o Flutter apresenta uma série de problemas, relacionados à sua proposta de desenvolvimento híbrido, seu tempo de existência e a diferenciação das etapas de desenvolvimento entre o foco em aplicações mobile e web.
Poucas bibliotecas
Hoje, apesar de contar com, aproximadamente, 19 mil bibliotecas (sendo a mais famosa delas a GetX, idealizada por um brasileiro), é considerado um framework com poucas opções quando comparado ao React, por exemplo, apesar disso estar diminuindo ano a ano. Um dos impactos disso é, exemplificando, as diversas dificuldades no aproveitamento de hardware, como no caso do Bluetooth.
Para além do mobile
O problema de adaptação se estende aos wearable devices e às plataformas de TV. São necessárias estratégias diferentes na interação com as interfaces, seja pela ausência de recursos ou, então, pela mudança do meio de entrada de informações. Para a versão Web, o problema costuma ser ainda maior, uma vez que, por não ser SEO friendly, a indexação de aplicações com Flutter são dificilmente indexadas.
Memória e documentação
Para além das questões de adaptação, as aplicações desenvolvidas em Flutter costumam ser relativamente maiores quando comparadas às desenvolvidas nativamente o que, em contextos onde recursos como memória e processamento são mais limitados, torna-se um problema. A documentação, por fim, ainda que muito bem desenvolvida, ainda não é tão extensa e carece de volume de dúvidas específicas de desenvolvedores.
Nichos e perspectivas futuras [Modifier]
Onipresença na Google
Por ser um Framework com suporte da Google, ele está presente em alguns serviços da empresa como o Google Ads, tornando rápida e prática a inserção das propagandas, o Google Pay e diversos outros aplicativos. Hoje, também está em execução nos serviços do Stadia, compondo tanto projetos já estabilizados quanto os novos projetos.
Utilização na China
Numa perspectiva mundial, o framework possui grande presença no mercado chinês, com 20% dos desenvolvedores atuais sendo da região. Há vários exemplos de grandes empresas chinesas que adotaram o Flutter, como a Tencent, do ramo de serviços WEB e jogos como League of Legends, a ByteDance, responsável pelo TikTok e a Alibaba, segundo maior serviço de compra e venda do país.
Desenvolvimento, foco e próximos anos
É evidente que os benefícios e a crescente utilização tornam o Flutter um dos frameworks mais promissores no desenvolvimento de aplicações, senão o mais promissor. Anualmente, no evento promovido pela Google com foco na comunidade de tecnologia e desenvolvedores, o Google I/O, são apresentadas novidades do Flutter e grandes iterações no ecossistema. Este ano não foi diferente, com a introdução do Dart 3 grandes avanços foram feitos, como uma melhoria no “null-safety” da linguagem, garantindo por completo que quando uma variável é declarada como não nula, ela jamais será nula. Além disso, foram introduzidas grandes novas funcionalidades a linguagem, como records, patterns, e class modifiers.
Referências [Modifier]
Dart (Documentação) https://dart.dev/overview
Dart (Wikipedia) https://en.wikipedia.org/wiki/Dart_(programming_language)
Dart Conference https://events.dartlang.org/2018/dartconf/
Flutter (Documentação) https://docs.flutter.dev/
Flutter (Wikipedia) https://en.wikipedia.org/wiki/Flutter_(software)
Google I/O 2023
https://io.google/2023/program/intl/pt/?q=flutter
Announcing Dart 3
https://medium.com/dartlang/announcing-dart-3-53f065a10635
Doutbox