Lição 3: Linguagens de programação
e componentes de desenvolvimento
e componentes de desenvolvimento
Agora que você já conhece os dispositivos móveis, os sistemas operacionais e as plataformas, chegou a hora de entender os conceitos por trás das linguagens de programação aplicadas ao desenvolvimento de programas, independentemente de eles serem programas para computador, web ou dispositivos móveis. Junto a esses conceitos, você também conhecerá os componentes de desenvolvimento.
Segundo Melo e Silva (2003), uma linguagem de programação é um conjunto de recursos que podem ser compostos para constituir programas específicos mais um conjunto de regras de composição que garantem que todos os programas podem ser implementados em computadores com qualidade apropriada.
Em resumo, o objetivo desta lição é apresentar as linguagens de programação usadas no desenvolvimento de aplicativos móveis e os componentes usados para esse trabalho. Ao final desta lição, você terá conhecido as linguagens de programação relevantes no mercado atual, estando apto(a) a analisar e a escolher, de acordo com a plataforma de desenvolvimento, a linguagem que proporcionará mais produtividade e qualidade, além dos componentes para esse desenvolvimento.
Após ter conhecimento das plataformas de desenvolvimento de aplicativos para dispositivos móveis, você já deve ter optado ou, pelo menos, ter certo favoritismo por uma delas, seja por desenvolvimento nativo, seja por desenvolvimento híbrido. Todavia, independentemente de sua opção, a estrada que te levará até um aplicativo pronto em seu dispositivo móvel é composta por uma linguagem de programação e um componente de desenvolvimento.
Como saber, mesmo após a escolha da plataforma, qual linguagem utilizar? Você já sabe que, independentemente da sua escolha, no mínimo, terá disponíveis duas linguagens de programação. Somente para relembrar, no desenvolvimento nativo Android, temos Java e Kotlin. Para o desenvolvimento nativo iOS, temos objective-c e swift. Para o desenvolvimento híbrido, temos o Javascript e seus frameworks.
Para a solução deste problema, cabe a você navegar pelos conceitos e pelas características dessas linguagens e de seus componentes, a fim de encontrar sua primeira linguagem! Sim, primeira, pois, certamente, quanto mais você for evoluindo, mais poliglota você desejará ser no mundo da programação. Vamos lá?
Para o case desta lição, temos a situação que ocorreu com o desenvolvedor fictício João, que entrou recentemente no mercado de trabalho. Ele optou pelo desenvolvimento nativo em Android, por já ter iniciado os estudos com a linguagem de programação Java durante alguns cursos de curta duração que havia feito em paralelo com a escola.
No primeiro dia, João conheceu a equipe com a qual iria trabalhar e já foi logo informando todos os cursos que já havia feito sobre a linguagem Java e suas bibliotecas. Na sequência, os colegas começaram a contar como era a estrutura dos projetos. Por um segundo, João ficou paralisado! Todos os projetos, era utilizada a linguagem de programação Kotlin. E agora?
“Fique tranquilo, João", disse uma das colegas. Ela continuou:
— Temos vários projetos que foram feitos em Java. Você terá muito trabalho e muito o que contribuir por aqui com a sua experiência. Aos poucos, você se capacitará na linguagem Kotlin para contribuir nos novos aplicativos.
Após essa primeira situação, no primeiro dia, João entendeu que, uma vez que entrou no mercado de programação, o estudo e o aperfeiçoamento fazem parte do dia a dia. Ele ficou feliz com a oportunidade de crescer no trabalho aprendendo mais uma linguagem de programação. Trata-se daquilo que o pessoal da nova equipe costuma chamar de “mais uma ferramenta para a caixinha de ferramentas”.
Antes de apresentar as características de cada uma das linguagens disponíveis para a criação de aplicações para dispositivos móveis, você deve conhecer algumas características que uma linguagem de programação pode ter.
Segundo Sebesta (2018) as linguagens de programação, normalmente, são divididas em quatro categorias: imperativas, funcionais, lógicas e orientadas a objetos. Dentre as linguagens que você tem disponível para o desenvolvimento para dispositivos móveis, com exceção do Java, que é classificada como puramente orientada a objetos, o restante (kotlin, objective-c e swift) se passa por mais de uma categoria. Assim, podem ser usadas como orientadas a objetos e funcionais. A linguagem JavaScript é a única que pode ser enquadrada mais para funcional do que para orientada objetos, uma vez que tem esse recurso. Entretanto, no fim das contas, é apenas para o desenvolvedor(a) que tem experiência com o paradigma se sentir à vontade, porque todo código é transpilado ou convertido para a linguagem funcional padrão.
Agora que você já conhece os paradigmas de programação, você estudará um pouco mais as linguagens disponíveis e amplamente usadas no mercado de desenvolvimento para dispositivos móveis.
O Java é uma das primeiras, senão a primeira linguagem de programação utilizada para o desenvolvimento para dispositivos móveis ainda no tempo dos antigos telefones celulares. Segundo Deitel e Deitel (2010), a empresa Sun anunciou o Java formalmente em uma conferência do setor em maio de 1995. O Java é utilizado para desenvolver aplicativos corporativos de grande porte em ambiente desktop, web e para dispositivos móveis. É uma linguagem totalmente orientada a objetos e tem, como principal característica, a verbosidade, que, inclusive, é uma das maiores críticas.
Mas, afinal, o que seria essa verbosidade? Em poucas palavras, é o fato de você ter que digitar muitos códigos para pequenas ações em relação às outras linguagens de mercado. Contudo, o Java é uma linguagem muito utilizada até hoje e, há pouco, deixou de ser a linguagem oficial sugerida pelo Android/Google.
O ecossistema da linguagem Java é um dos mais conhecidos na área de programação. Resumindo, você tem muitas bibliotecas e muitos frameworks para qualquer tipo de desenvolvimento que escolher.
Apesar de você ter lido agora há pouco que a empresa Sun criou o Java, desde meados de 2018, essa empresa foi comprada por outra grande empresa da área de tecnologia, a chamada Oracle, que ainda hoje mantém a linguagem.
A linguagem foi anunciada em uma conferência chamada “Google I/O”, em 2019. Trata-se de uma linguagem de programação expressiva e concisa que reduz erros comuns de código e se integra facilmente aos aplicativos existentes (ABORDAGEM..., 2022). A partir do anúncio, a Google (Android) passou a recomendar a linguagem como a principal para o desenvolvimento Android nativo.
Essa recomendação se deu pelo fato de a empresa analisar os feedbacks de desenvolvedores em conferências e outras pesquisas. Uma das principais vantagens para se aprender Kotlin é que, mesmo com uma sólida base em Java, os aplicativos podem ser construídos com as duas linguagens. Essa interoperabilidade acontece em decorrência do fato de que o Kotlin compartilha do código de máquina da linguagem Java. Em outras palavras, se você já é especialista em Java, não terá problemas para começar a estudar o Kotlin.
O Kotlin é uma linguagem de programação multiplataforma orientada a objetos e funcional. Apesar de ser amplamente difundida pela Google, não foi criada por ela, e sim pela empresa JetBrains. A empresa é a responsável por um Ambiente de Desenvolvimento Integrado (IDE) chamado IntelliJ, que é um IDE que suporta a linguagem Java e Kotlin, dentre outras, e que é a base para o IDE Android Studio, hoje, o principal IDE para desenvolvimento nativo android.
Segundo Fairbairn, Fahrenkrug e Ruffenach (2012), o Objective-c é um superconjunto estrito da linguagem C. Trata-se de uma linguagem de programação baseada em procedimentos. Ela estende a linguagem C oferecendo recursos orientados a objetos.
Uma característica específica dessa linguagem é o fato de que, diferentemente das linguagens C++ e Java, tem como premissa o envio de mensagens diretamente ao objeto, o que a torna mais simpática aos desenvolvedores de linguagens dinâmicas, como Ruby e Python.
Dentre as linguagens apresentadas, a linguagem Objective-C, até agora, é a mais antiga, tendo início na década de 1980 e licenciada em 1988 pela empresa NeXT. Atualmente, a única aplicação dessa linguagem se dá como uma linguagem de programação para dispositivos Apple.
Assim como foi com a linguagem Kotlin, segundo Lecheta (2018), a linguagem Swift foi anunciada em uma conferência, a Apple Worldwide Developers Conference, de 2014, com a premissa de ser uma linguagem com sintaxe simples e moderna.
De acordo com Lecheta (2018), o objetivo da linguagem Swift é deixar o desenvolvimento de aplicativos mais produtivo e, por ser mais simples que seja, também facilita o aprendizado de quem está começando. Um dos grandes recursos do Swift é a interoperabilidade com a linguagem Objective-C, ou seja, é possível chamar um código escrito em Objective-C a partir do Swift. Isso facilita muito o uso de bibliotecas e códigos já prontos e que, originalmente, foram escritos em Objective-c.
O que não se pode deixar de lado são as coincidências na criação de uma segunda linguagem e na abordagem dela quando se fala de Swift e Kotlin. Ambas têm o objetivo de manter os códigos antigos, também chamados de códigos legados, funcionando com uma abordagem mais simples no que diz respeito à codificação e à sintaxe.
Assim como foi visto no início desta lição, a linguagem Swift passa por mais de uma categoria, tendo, então, o(a) desenvolvedor(a), a “responsabilidade” em impor o próprio estilo de codificação. Contudo, a maioria do código escrito em Swift perpassa pela orientação a objetos e funcional, o que é mais uma similaridade com a linguagem Kotlin.
É possível afirmar que, independentemente do paradigma e do ambiente, seja ele web, desktop ou dispositivos móveis, a linguagem Javascript é considerada a linguagem mais “falada” no cenário de tecnologia, muito disso pelo crescimento das bibliotecas e dos frameworks dela e pela simplicidade da sintaxe dela.
Um fato curioso é que, segundo Flanagan (2013), o nome “JavaScript” é um pouco enganoso. Exceto pela semelhança sintática superficial, o JavaScript é completamente diferente da linguagem de programação Java. Na verdade, nem é mais uma linguagem de script e sim uma linguagem de uso geral robusta e eficiente.
Foi criada na Netscape na fase inicial da web e, oficialmente, a marca registrada da linguagem é ECMAScript, mas poucos se referem por esse nome. Provavelmente, você não deve conhecer a empresa Netscape, que, na verdade, deu origem a um dos primeiros navegadores da web. Sendo assim, a linguagem nasceu para web e interage perfeitamente com o HTML (Linguagem de Marcação de Hipertexto) e o CSS (Folha de Estilo em Cascata), o que, junto com algumas bibliotecas, também torna possível a utilização para o desenvolvimento de dispositivos móveis.
Assim, deixo formalizado que a utilização dessa linguagem para dispositivos móveis se dá em conjunto com outras bibliotecas e frameworks, o que caracteriza o desenvolvimento híbrido.
Uma vez que você tem conhecimento das linguagens de programação disponíveis para o desenvolvimento, independentemente de ele ser nativo ou híbrido, você conhecerá, agora, um pouco dos componentes de desenvolvimento que são usados no dia a dia.
Esse termo é utilizado para definir o código criado para tratar de operações que o usuário não visualiza. Como ele não visualiza? Sim, são os códigos que tratam do acesso aos códigos externos e da gravação de dados em um banco de dados e em outros sistemas, o que você também pode chamar de regra de negócio, que é o fluxo de operações às alterações que devem acontecer a partir de um clique de botão realizado pelo usuário na tela do dispositivo.
Em contraste ao componente backend, o frontend representa tudo aquilo que acontece, que o usuário tem interação e, sobretudo, visualiza. Não é um componente que apenas recebe informações do backend, pois tem certa inteligência no que diz respeito ao que se pode dar de resposta mais rápida ao usuário da aplicação. Usa-se para web a tríade HTML, CSS e Javascript, o que acontece também no desenvolvimento híbrido. Por exemplo, na plataforma nativa Android, são usados componentes já prontos e configurados a partir de outra linguagem de marcação chamada XML.
Mesmo que você já tivesse escolhido a plataforma de desenvolvimento para dispositivos móveis na lição anterior, poderia estar em dúvida em relação à linguagem de programação que deve utilizar. Agora, de posse dos conhecimentos estudados nesta lição, você tem as características e os formatos das linguagens para a sua escolha, que não precisa ser definitiva. A evolução é constante.
Considere a seguinte situação: você já tem o conhecimento em Java adquirido de disciplinas anteriores ou cursos pela web e de curta-duração em Java. Assim, você pode seguir tranquilamente com essa linguagem, mas tendo em mente a linguagem Kotlin. Assim como você pôde ver em nosso case, certamente, encontrará muitas vagas no mercado de trabalho como requisito principal. Aliás, no caso do desenvolvimento nativo em Android, será Java e o desejável Kotlin.
Isso não impede de ser um profissional diferenciado por ter o conhecimento em Kotlin, o que resulta em uma segunda situação. É a primeira vez que estou estudando o desenvolvimento nativo Android e não conheço Java. Diante disso, é mais viável que você inicie com Kotlin. A mesma situação relativa à plataforma nativa Android pode ser usada em relação à plataforma nativa iOS, aplicando às linguagens Objective-C e Swift.
No caso da plataforma híbrida, a escolha ficará mesmo entre os frameworks disponíveis para “empacotar” a sua aplicação para as plataformas Android e iOS, pois as tecnologias utilizadas serão basicamente HTML e CSS, para marcação e estilização do design da aplicação, e o JavaScript para interação, ou seja, “dar vida” ao código.
ABORDAGEM Kotlin do Android. Android Developer, 30 ago. 2022. Disponível em: https://developer.android.com/kotlin/first. Acesso em: 1 fev. 2023.
DEITEL, P.; DEITEL, H. Java: como programar. 8. ed. São Paulo: Pearson, 2010.
FAIRBAIRN, C. K.; FAHRENKRUG, J.; RUFFENACH C. Objective-C Fundamentals. São Paulo: Novatec, 2012.
FLANAGAN, D. JavaScript: o guia definitivo. 6. ed. Porto Alegre: Bookman, 2013.
LECHETA, R. R. Desenvolvendo para iPhone e iPad: aprenda a desenvolver aplicações utilizando o IOS SDK. 6. ed. São Paulo: Novatec, 2018.
MELO, A. C. V. de; SILVA, F. S. C. da. Princípios de linguagens de programação. São Paulo: Blucher, 2003.
SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018.