February 8

Programação - Mobile Coding

Objetivo da Disciplina

O principal objetivo desta disciplina é capacitar os alunos a desenvolverem aplicativos móveis eficientes e de alta qualidade utilizando o React Native, uma framework moderna que permite a criação de aplicativos nativos para iOS e Android usando JavaScript. Busca-se oferecer uma compreensão sólida dos princípios fundamentais do React Native, juntamente com uma abordagem prática que envolve a construção de um aplicativo do início ao fim. A disciplina visa não apenas transmitir conhecimento técnico, mas também estimular o pensamento crítico, a solução de problemas e a inovação no desenvolvimento de soluções móveis.

Objetivos Específicos

Compreender as Diferenças entre Desenvolvimento Nativo, Híbrido e Web: Os alunos deverão ser capazes de explicar as características, vantagens e desvantagens de cada abordagem de desenvolvimento móvel.

  1. Dominar os Fundamentos do React Native: Inclui o entendimento de JSX, componentes, estados, props, estilização, e o ciclo de vida dos componentes.
  2. Desenvolver Competências em JavaScript e ES6+: Reforçar o conhecimento em JavaScript, especialmente os aspectos e recursos mais modernos que são frequentemente utilizados no React Native.
  3. Implementar Navegação e Gerenciamento de Estado em Aplicativos: Capacidade de utilizar bibliotecas como React Navigation e Context API para criar fluxos de navegação complexos e gerenciar o estado da aplicação de forma eficaz.
  4. Integrar Aplicativos com APIs e Serviços Externos: Aprender a consumir dados de APIs RESTful e integrar serviços como armazenamento local e autenticação.
  5. Aplicar Boas Práticas e Padrões de Desenvolvimento: Incluir a escrita de código limpo, uso de padrões de projeto, e a aplicação de melhores práticas para a performance e manutenção do aplicativo.
  6. Realizar o Desenvolvimento Orientado por Componentes: Entender a importância da reutilização de componentes e como isso afeta a manutenção e escalabilidade de aplicativos React Native.

Habilidades e Competências

Ao final da disciplina, espera-se que os alunos tenham desenvolvido as seguintes habilidades e competências:

  • Habilidade Técnica em Desenvolvimento de Software: Capacidade de escrever, testar e depurar código em React Native, aplicando conhecimentos de JavaScript, React e ferramentas específicas da framework.
  • Resolução de Problemas: Aptidão para identificar, analisar e solucionar problemas complexos que surgem durante o desenvolvimento de aplicativos móveis.
  • Pensamento Crítico e Inovação: Habilidade de avaliar diferentes abordagens de design e implementação, inovar na criação de soluções e adaptar-se a novas tecnologias e tendências do mercado de desenvolvimento móvel.
  • Colaboração e Trabalho em Equipe: Desenvolver a capacidade de trabalhar efetivamente em equipe, comunicando-se claramente e colaborando na resolução de problemas e na divisão de tarefas.
  • Gerenciamento de Projetos: Compreensão dos princípios básicos de gerenciamento de projetos aplicados ao desenvolvimento de software, incluindo planejamento, execução e entrega de projetos de aplicativos móveis.


Visão Geral do Desenvolvimento Mobile: Nativo vs. Híbrido vs. Web

No universo do desenvolvimento de aplicativos móveis, existem três abordagens principais: desenvolvimento nativo, híbrido e web. Cada abordagem tem suas peculiaridades, vantagens e desvantagens, sendo crucial entender suas diferenças para selecionar a mais adequada para o seu projeto. Vamos explorar esses conceitos para fornecer uma base sólida para futuros desenvolvedores.

Desenvolvimento Nativo

O desenvolvimento nativo envolve a criação de aplicativos especificamente para uma plataforma, utilizando as linguagens e ferramentas recomendadas pelo fabricante do sistema operacional. Para iOS, isso significa usar Swift ou Objective-C com Xcode, enquanto para Android, Kotlin ou Java com Android Studio é o padrão.

Vantagens:

  • Performance: Aplicativos nativos são geralmente mais rápidos e responsivos, pois são otimizados para a plataforma específica.
  • Acesso a APIs e Recursos do Dispositivo: Eles podem acessar facilmente todos os recursos do dispositivo, como GPS, câmera, acelerômetro, proporcionando uma experiência rica e integrada.
  • Interface de Usuário e Experiência do Usuário: Permite criar interfaces e experiências altamente personalizadas, seguindo as diretrizes de design específicas de cada plataforma.

Desvantagens:

  • Custo e Tempo de Desenvolvimento: Desenvolver aplicativos nativos para múltiplas plataformas pode ser caro e demorado, pois requer a criação de aplicativos separados para iOS e Android.
  • Manutenção: A manutenção e atualização de várias bases de código para diferentes plataformas aumenta o esforço e o custo.

Desenvolvimento Híbrido

Aplicativos híbridos são desenvolvidos usando tecnologias web (HTML, CSS e JavaScript) e são embalados como aplicativos para distribuição em plataformas móveis. Frameworks como Cordova ou React Native permitem que o mesmo código base seja usado para criar aplicativos para iOS e Android.

Vantagens:

  • Desenvolvimento Cruzado: Permite o desenvolvimento de aplicativos para várias plataformas a partir de um único código base, economizando tempo e recursos.
  • Acesso a Recursos do Dispositivo: Com plugins específicos, aplicativos híbridos também podem acessar recursos do dispositivo, embora possa haver limitações em comparação com aplicativos nativos.
  • Atualizações Mais Fáceis: Atualizar o aplicativo pode ser mais simples, pois as mudanças são implementadas de uma vez para todas as plataformas.

Desvantagens:

  • Performance: Embora tenham melhorado significativamente, aplicativos híbridos podem não oferecer a mesma performance e fluidez de aplicativos nativos, especialmente em dispositivos mais antigos ou em funcionalidades que exigem alto desempenho.
  • Experiência do Usuário: A experiência do usuário pode não ser tão refinada quanto a de aplicativos nativos, devido às diferenças nas diretrizes de design de cada plataforma.

Desenvolvimento Web (Progressive Web Apps - PWAs)

PWAs são aplicativos web projetados para funcionar de maneira semelhante a aplicativos móveis nativos. Eles são acessíveis através de navegadores móveis e oferecem funcionalidades como trabalho offline, notificações push e acesso rápido através da tela inicial do dispositivo.

Vantagens:

  • Compatibilidade e Acessibilidade: Funcionam em qualquer dispositivo com um navegador web, facilitando o acesso por uma ampla gama de usuários.
  • Manutenção Simplificada: Como são baseados na web, a atualização e manutenção são realizadas no servidor, sem necessidade de submeter atualizações através de lojas de aplicativos.
  • Desenvolvimento e Lançamento Rápidos: PWAs podem ser desenvolvidos e lançados mais rapidamente do que aplicativos nativos ou híbridos.

Desvantagens:

  • Acesso a Recursos do Dispositivo: Embora estejam avançando, PWAs ainda têm limitações em termos de acesso aos recursos do dispositivo quando comparados a aplicativos nativos.
  • Dependência de Conexão: Apesar de trabalharem offline, recursos atualizados e algumas funcionalidades podem depender de uma conexão com a internet.

Conclusão

A escolha entre desenvolvimento nativo, híbrido e web depende de vários fatores, incluindo o público-alvo, orçamento, prazos e objetivos específicos do aplicativo. Enquanto o desenvolvimento nativo oferece a melhor performance e experiência do usuário, o desenvolvimento híbrido e web apresentam vantagens significativas em termos de custo e eficiência de desenvolvimento cruzado. Entender as características de cada abordagem permite aos desenvolvedores tomar decisões informadas que melhor se alinham aos requisitos do projeto e às expectativas dos usuários.


Avaliações

04 de Abril de 2024 - Avaliação I

06 de Junho de 2024 - Avaliação II

Métodos de Avaliações


Aulas

React Native introdutório:

React Native - Intro — Teletype

PWAs:

Progressive Web Apps (PWAs): Transformando Projetos Web em Aplicativos Avançados — Teletype

LocalStorage e JSON:

https://teletype.in/@professor.rangel/0lBrsWpJ5Pc

JS Essencial:

https://teletype.in/@professor.rangel/9f90563d07

States:

https://teletype.in/@professor.rangel/gszH5BbVeOC

Props:

https://teletype.in/@professor.rangel/P0uxaMQikcX


Projetos

PWA Disciplinas: https://teletype.in/@professor.rangel/S66u3cxSEN0
Atividade I (AV2): https://teletype.in/@professor.rangel/ktlCKWZ67lZ


Provas - AV1

Conteúdo para AV1: https://teletype.in/@professor.rangel/iHwrdr3O2tP


Trabalho - AV1

https://teletype.in/@professor.rangel/AJzKXsjcI0T


Atividade 02 AV2

Contexto: https://forms.office.com/r/grt2xPrZaT

Utilidades

<svg viewBox="0 0 24 24">
    <path d="M2 9.1371C2 14 6.01943 16.5914 8.96173 18.9109C10 19.7294 11 20.5 12 20.5C13 20.5 14 19.7294 15.0383 18.9109C17.9806 16.5914 22 14 22 9.1371C22 4.27416 16.4998 0.825464 12 5.50063C7.50016 0.825464 2 4.27416 2 9.1371Z"/>
</svg>