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.
- Dominar os Fundamentos do React Native: Inclui o entendimento de JSX, componentes, estados, props, estilização, e o ciclo de vida dos componentes.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
Métodos de Avaliações
Aulas
React Native - Intro — Teletype
Progressive Web Apps (PWAs): Transformando Projetos Web em Aplicativos Avançados — Teletype
https://teletype.in/@professor.rangel/0lBrsWpJ5Pc
https://teletype.in/@professor.rangel/9f90563d07
https://teletype.in/@professor.rangel/gszH5BbVeOC
https://teletype.in/@professor.rangel/P0uxaMQikcX
Projetos
PWA Disciplinas: https://teletype.in/@professor.rangel/S66u3cxSEN0
Atividade I (AV2): https://teletype.in/@professor.rangel/ktlCKWZ67lZ
Conteúdo para AV1: https://teletype.in/@professor.rangel/iHwrdr3O2tP
https://teletype.in/@professor.rangel/AJzKXsjcI0T
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>