156
PROGRAMAÇÃO DE SISTEMAS I Professor Esp. Ronie Cesar Tokumoto GRADUAÇÃO Unicesumar

PROGRAMAÇÃO DE SISTEMAS I

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

PROGRAMAÇÃO DE SISTEMAS I

Professor Esp. Ronie Cesar Tokumoto

GRADUAÇÃO

Unicesumar

C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a Distância; TOKUMOTO, Ronie Cesar.

Programação de Sistemas I. Ronie Cesar Tokumoto.

Maringá-Pr.: UniCesumar, 2017. Reimpressão - 2018 135 p.“Graduação - EaD”. 1. Programação 2. Sistemas . 3. Engenharia 4. EaD. I. Título.

ISBN 978-85-459-0839-5CDD - 22 ed. 005

CIP - NBR 12899 - AACR/2

Ficha catalográfica elaborada pelo bibliotecário João Vivaldo de Souza - CRB-8 - 6828

Impresso por:

ReitorWilson de Matos Silva

Vice-ReitorWilson de Matos Silva Filho

Pró-Reitor de AdministraçãoWilson de Matos Silva Filho

Pró-Reitor Executivo de EADWilliam Victor Kendrick de Matos Silva

Pró-Reitor de Ensino de EADJanes Fidélis Tomelin

Presidente da MantenedoraCláudio Ferdinandi

NEAD - Núcleo de Educação a Distância

Diretoria ExecutivaChrystiano Minco�James PrestesTiago Stachon

Diretoria de Design EducacionalDébora Leite

Diretoria de Graduação e Pós-graduação Kátia Coelho

Diretoria de Permanência Leonardo Spaine

Head de Produção de ConteúdosCelso Luiz Braga de Souza Filho

Gerência de Produção de ConteúdoDiogo Ribeiro Garcia

Gerência de Projetos EspeciaisDaniel Fuverki Hey

Supervisão do Núcleo de Produção de MateriaisNádila Toledo

Supervisão Operacional de EnsinoLuiz Arthur Sanglard

Coordenador de ConteúdoFabiana de Lima

Design Educacional

Ana Claudia Salvadego, Isabela Agulhon Ventura

IconografiaAna Carolina Martins Prado

Projeto GráficoJaime de Marchi JuniorJosé Jhonny Coelho

Arte CapaArthur Cantareli Silva

EditoraçãoFernando Henrique Mendes

Revisão TextualSilvia Caroline Gonçalves

IlustraçãoBruno Cesar Pardinho

Viver e trabalhar em uma sociedade global é um grande desafio para todos os cidadãos. A busca por tecnologia, informação, conhecimento de qualidade, novas habilidades para liderança e so-lução de problemas com eficiência tornou-se uma questão de sobrevivência no mundo do trabalho.

Cada um de nós tem uma grande responsabilida-de: as escolhas que fizermos por nós e pelos nos-sos farão grande diferença no futuro.

Com essa visão, o Centro Universitário Cesumar assume o compromisso de democratizar o conhe-cimento por meio de alta tecnologia e contribuir para o futuro dos brasileiros.

No cumprimento de sua missão – “promover a educação de qualidade nas diferentes áreas do conhecimento, formando profissionais cidadãos que contribuam para o desenvolvimento de uma sociedade justa e solidária” –, o Centro Universi-tário Cesumar busca a integração do ensino-pes-quisa-extensão com as demandas institucionais e sociais; a realização de uma prática acadêmica que contribua para o desenvolvimento da consci-ência social e política e, por fim, a democratização do conhecimento acadêmico com a articulação e a integração com a sociedade.

Diante disso, o Centro Universitário Cesumar al-meja ser reconhecido como uma instituição uni-versitária de referência regional e nacional pela qualidade e compromisso do corpo docente; aquisição de competências institucionais para o desenvolvimento de linhas de pesquisa; con-solidação da extensão universitária; qualidade da oferta dos ensinos presencial e a distância; bem-estar e satisfação da comunidade interna; qualidade da gestão acadêmica e administrati-va; compromisso social de inclusão; processos de cooperação e parceria com o mundo do trabalho, como também pelo compromisso e relaciona-mento permanente com os egressos, incentivan-do a educação continuada.

Pró-Reitor de Ensino de EAD

Diretoria de Graduação e Pós-graduação

Seja bem-vindo(a), caro(a) acadêmico(a)! Você está iniciando um processo de transformação, pois quando investimos em nossa formação, seja ela pessoal ou profissional, nos transformamos e, consequentemente, transformamos também a sociedade na qual estamos inseridos. De que forma o fazemos? Criando oportu-nidades e/ou estabelecendo mudanças capazes de alcançar um nível de desenvolvimento compatível com os desafios que surgem no mundo contemporâneo.

O Centro Universitário Cesumar mediante o Núcleo de Educação a Distância, o(a) acompanhará durante todo este processo, pois conforme Freire (1996): “Os homens se educam juntos, na transformação do mundo”.

Os materiais produzidos oferecem linguagem dialógica e encontram-se integrados à proposta pedagógica, con-tribuindo no processo educacional, complementando sua formação profissional, desenvolvendo competên-cias e habilidades, e aplicando conceitos teóricos em situação de realidade, de maneira a inseri-lo no mercado de trabalho. Ou seja, estes materiais têm como principal objetivo “provocar uma aproximação entre você e o conteúdo”, desta forma possibilita o desenvolvimento da autonomia em busca dos conhecimentos necessá-rios para a sua formação pessoal e profissional.

Portanto, nossa distância nesse processo de cresci-mento e construção do conhecimento deve ser apenas geográfica. Utilize os diversos recursos pedagógicos que o Centro Universitário Cesumar lhe possibilita. Ou seja, acesse regularmente o AVA – Ambiente Virtual de Aprendizagem, interaja nos fóruns e enquetes, assista às aulas ao vivo e participe das discussões. Além dis-so, lembre-se que existe uma equipe de professores e tutores que se encontra disponível para sanar suas dúvidas e auxiliá-lo(a) em seu processo de aprendiza-gem, possibilitando-lhe trilhar com tranquilidade e segurança sua trajetória acadêmica.

AU

TOR

Professor Esp. Ronie Cesar Tokumoto

Pós-graduado em Gestão Escolar Integrada e Práticas Pedagógicas pela Faculdade Eficaz (2015), em tutoria em Educação a Distancia pela Faculdade Eficaz (2013), e em Docência no Ensino Superior pelo Centro Universitário Maringá (Unicesumar/2013). Bacharel em Informática pela Universidade Federal do Paraná (UFPR/2001). Atualmente é tutor mediador no EaD/Unicesumar e professor na rede estadual de ensino do Paraná, em Sarandi, e em cursos Técnicos Profissionalizantes. Tem experiência em Coordenação de Curso Técnico (2013), e em palestras e eventos organizados para o mesmo curso.

Para informações mais detalhadas sobre sua atuação profissional, pesquisas e publicações, acesse seu currículo, disponível no endereço a seguir:

http://lattes.cnpq.br/2653232632701400

SEJA BEM-VINDO(A)!

Caro(a) aluno(a), este material visa permitir que os conceitos fundamentais do desenvol-vimento de sistemas utilizando a linguagem de programação Java sejam conhecidos e compreendidos de forma simples e objetiva.

O mercado de trabalho para desenvolvedores Java está aquecido, dando sinais de que tende a crescer ou, pelo menos, de se manter forte por um bom tempo, devido à evo-lução da TI (Tecnologia da Informação) e das características favoráveis que a linguagem oferece.

A primeira unidade trata dos conteúdos básicos referentes à própria linguagem, como um resumo de sua história, características que a linguagem possui e oferece aos seus desenvolvedores, versões disponíveis de aplicações possíveis e de que forma são orga-nizados os chamados pacotes disponibilizados pela Oracle, atual proprietária da própria linguagem em si, criada pela Sun, a qual foi adquirida pela referida empresa há algum tempo.

Na segunda unidade, são tratados conceitos relativos à linguagem em si, como as cer-tificações oficiais sobre o desenvolvimento em linguagem Java, oferecidas pela Oracle, assim como os conceitos básicos sobre o processo de desenvolvimento de aplicações em Java, seu ambiente de desenvolvimento, plataforma de execução e formas de pro-gramação na linguagem. Também são tratados os conceitos do processo de compilação e execução de códigos em linguagem Java usando os utilitários do pacote JDK de de-senvolvimento.

Na terceira unidade, são vistos os conceitos de programação em linguagem Java, junta-mente com os princípios da programação envolvendo os conceitos de tipos de dados, variáveis, constantes e operadores. Também são vistos detalhes complementares ini-ciais como o uso de comentários e do utilitário de documentação do pacote JDK. O uso da identação para um correto alinhamento de instruções também é tratado.

Já na quarta unidade, são vistos os conceitos de fluxo de dados, juntamente com o uso de sua entrada e saída por meio de bibliotecas padrão Java. Também são vistos os con-ceitos de vetores e matrizes que representam importantes estruturas de dados.

Na última unidade, temos conteúdos relacionados ao tratamento de exceções que possam ocorrer em tempo de execução e que sejam previsíveis, além de um pequeno exemplo de aplicação para auxiliar na compreensão do conteúdo geral da disciplina e no entendimento da fase de testes.

Assim, por meio de todo esse conteúdo, aliado à disciplina complementar de Programa-ção de Sistemas II, será possível oferecer um material de aprendizado para uso futuro na carreira profissional.

APRESENTAÇÃO

PROGRAMAÇÃO DE SISTEMAS I

SUMÁRIO09

UNIDADE I

FUNDAMENTOS DA LINGUAGEM JAVA

15 Introdução

16 Histórico Resumido da Linguagem Java

18 Características da Linguagem Java

20 Segurança

22 Versões e Extensões em Java

25 Desenvolvimento de Software Em Java

27 Considerações Finais

31 Referência

32 Gabarito

UNIDADE II

PARTICULARIDADES DA LINGUAGEM JAVA

35 Introdução

36 Ambiente de Desenvolvimento Java

38 Plataformas Java

41 Formas de Programação em Java

42 Tipos de Aplicativos

44 Pacotes de Desenvolvimento

45 Compilação e Execução

SUMÁRIO10

50 Considerações Finais

54 Referências

55 Gabarito

UNIDADE III

INTRODUÇÃO À PROGRAMAÇÃO JAVA

59 Introdução

60 Fundamentos de um Programa Java

61 Instruções Básicas

72 Expressões

74 Identação e Espaçamento

77 Considerações Finais

83 Referências

84 Gabarito

UNIDADE IV

MANIPULAÇÃO DE DADOS

87 Introdução

88 Fluxo de Dados

89 Entrada de Dados

91 Saída de Dados

95 Vetores e Matrizes

SUMÁRIO11

100 Considerações Finais

104 Referências

105 Gabarito

UNIDADE V

COMPLEMENTOS E ESTUDO DE CASO

109 Introdução

110 Tratamento de Exceções

117 Exemplo de Aplicação

121 Fase de Testes

123 Atualizações e Novas Versões

129 Considerações Finais

133 Referências

134 Gabarito

135 Conclusão

UN

IDA

DE I

Professor Esp. Ronie Cesar Tokumoto

FUNDAMENTOS DA LINGUAGEM JAVA

Objetivos de Aprendizagem

■ Conhecer a história e conceitos básicos da linguagem Java.

■ Compreender os aspectos que tornam a linguagem segura.

■ Compreender as possibilidades de desenvolvimento de software em linguagem Java.

■ Compreender os conceitos de versão e extensão em Java.

■ Compreender como ocorre uma das formas de desenvolvimento de software.

Plano de Estudo

A seguir, apresentam-se os tópicos que você estudará nesta unidade:

■ Histórico resumido da linguagem Java

■ Características da linguagem Java

■ Segurança

■ Versões e extensões em Java

■ Desenvolvimento de software em Java

INTRODUÇÃO

Ao iniciar os estudos sobre a programação de sistemas utilizando a linguagem Java, temos uma grande ferramenta de trabalho para conhecer e explorar, de forma a construir uma base de conhecimento para preparar futuros profissio-nais da área de desenvolvimento, complementando o aprendizado obtido em outras disciplinas e linguagens, como a linguagem C.

Nesta primeira unidade, serão tratados os aspectos fundamentais do desen-volvimento de aplicações em Java, como sua história e demais detalhes referentes à poderosa e popular ferramenta de trabalho.

Iniciando os estudos por meio da história da linguagem, é possível com-preender o motivo de sua criação e de que forma ocorreu sua evolução, desde a implementação até as atuais modificações que mantêm a linguagem atual e aten-dendo às necessidades do mercado.

São expostas também algumas características da linguagem, citando-se a conexão com o desenvolvimento voltado à Internet e à forma pela qual são gera-das aplicações em Java.

Segurança é um requisito muito importante no desenvolvimento de apli-cações e a linguagem Java permite um bom nível de segurança pela forma de desenvolvimento e execução de suas aplicações.

Nesta unidade são apresentadas informações sobre como esse nível de segu-rança é garantido e de que forma isso ajuda na popularização da linguagem para o desenvolvimento de projetos para as mais diversas finalidades.

Também será trabalhada a versatilidade da linguagem na criação de diferen-tes tipos de aplicação para as mais diversas plataformas (sistemas operacionais).

Finalmente, a forma como pode ser desenvolvida uma aplicação é tratada para mostrar que existem diversas alternativas de softwares próprios para o desenvol-vimento de aplicações, chamados de ambientes integrados de desenvolvimento, capazes de oferecer diversos recursos de auxílio ao desenvolvimento de software.

Introdução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

15

FUNDAMENTOS DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IU N I D A D E16

HISTÓRICO RESUMIDO DA LINGUAGEM JAVA

Olá caro(a) aluno(a), neste primeiro tópico, é importante citar que a linguagem foi concebida durante a década de 1990, na Sun Microsystems. Seus idealizadores foram James Gosling, Patrick Naughton, Chris Warth, Ed Frank e Mike Sheridan. Inicialmente com o nome de Oak, o qual, posteriormente, foi alterado para Java em 1995 (MANZANO, 2011), seu propósito inicial não era a Internet, mas apa-relhos domésticos como linguagem para programação embarcada.

Com a popularização da World Wide Web, o propósito da linguagem ser independente de plataforma ou hardware impulsionou a evolução da linguagem para que pudesse se adequar às necessidades da programação web. Sua forma singular de programação e a forma como permitia que o uso da Internet fosse muito mais interativo e repleto de novas possibilidades garantiram essa onda de profissionais interessados em desenvolver aplicações com a nova linguagem.

Assim como a tecnologia e a Internet, a linguagem teve atualizações em ver-sões que foram sendo criadas para atender novas demandas e oferecer melhorias para o desenvolvimento web. A Sun desenvolvia novos pacotes para as novas versões, denominadas como J2SE, acrescidas de números indicativos da versão a partir 2, versões como J2SE 1.3, 1.4 e 5 foram surgindo e agregando funções ao desenvolvimento de programas. Conforme citado por Manzano (2011), a versão J2SE 5 representou uma segunda revolução na linguagem e, por isso,

Histórico Resumido da Linguagem Java

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

17

mudou o padrão de numeração definido pelas duas versões anteriores, pois além de melhorias no ambiente de desenvolvimento e alguns recursos importantes, a quinta versão reformulou certos aspectos da linguagem. Ela agregou recursos como os tipos genéricos, uma evolução no uso do laço de repetição for, uso de anotações, enumerações, uso de importação estática e argumentos em quanti-dades variáveis, por exemplo.

A versão seguinte, Java SE 6 (forma reduzida de Java Plataform, Standard Edition 6), gerou aprimoramentos nas bibliotecas APIs, novos pacotes e otimi-zações para a execução dos softwares desenvolvidos.

Na versão seguinte, Java SE 7, novos recursos foram adicionados, como mais incrementos em suas bibliotecas APIs, melhorias no tratamento de exceções e mudanças no uso da instrução switch.

Um ponto marcante da versão 7 foi o fato de ser uma primeira versão lançada após a aquisição da empresa Sun pela Oracle, em 2009, fato que, como sempre ocorre em negociações entre grandes companhias de tecnologia, cria muita apre-ensão no mercado. A Figura 1 mostra uma versão do mascote Duke utilizado oficialmente pela companhia para representar seu novo produto.

Figura 1- Mascote Duke criado para o projeto *7 de 1992Fonte: Oracle (2009, on-line)1.

DESCRIÇÃO DE IMAGENS

PÁGINA 17 – Figura 1- Mascote Duke criado para o projeto *7 de 1992

INÍCIO DESCRIÇÃO – A imagem apresenta o mascote Duke, criado para o projeto. Na figura existe uma imagem de um mouse animado, ele tem braços e mãos. FIM DESCRIÇÃO.

FUNDAMENTOS DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IU N I D A D E18

Em 2016, foi lançada a versão 8, que promete grandes mudanças, as quais incluem a transformação na ideia da programação embarcada para a tendência da “Internet das Coisas”, programação em nuvem, possibilidade do uso de objetos genéricos, melhoria no tratamento de exceções, lambdas e anotações. Parte das novas fun-cionalidades fará parte do escopo do livro por serem relevantes aos conteúdos do material, e os demais conteúdos podem ser buscados em outras fontes de pesquisa complementares sugeridas ao longo das unidades (ORACLE, [2017], on-line)2.

CARACTERÍSTICAS DA LINGUAGEM JAVA

Algumas características fundamentais da linguagem Java são a programação baseada no paradigma orientado a objetos que, diferentemente do paradigma estruturado, é baseia no conceito de classes instanciadas em objetos indepen-dentes para melhorar o reuso de código.

Além da reusabilidade, a portabilidade também é uma característica impor-tante da linguagem, a qual garante que um mesmo código possa ser compilado e

Características da Linguagem Java

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

19

executado em diferentes plataformas (“write once, run anywhere”). Essa carac-terística também melhora a possibilidade de divulgação de aplicações e sua distribuição, pois, sendo portátil, não é necessário criar versões específicas e, assim, toda aplicação acaba sendo multiplataforma. Possui recursos de rede por meio de bibliotecas para lidar com protocolos TCP/IP, HTTP e FTP, mantendo níveis de segurança aceitáveis pela restrição de execução.

Outra característica que ajudou a popularização da linguagem Java foi sua sintaxe baseada na linguagem C++ que já era popular há muito tempo, além da linguagem C++ conter uma grande quantidade de bibliotecas disponíveis para facilitar a codificação. A linguagem JAVA, assim como a linguagem C++, não se utilizam de ponteiros nem registros, pois ambos os elementos podem ser subs-tituídos por outros do paradigma orientado a objetos que permitem o uso de recursos que podem ser até superiores em termos de programação e resultados computacionais (desempenho, facilidade de implementação e controle). Além dessas características, algumas técnicas, como desalocação automática de memó-ria por meio de coletor de lixo e carregamento independente de componentes (classes) em tempo de execução.

Por ser uma linguagem com boa ortogonalidade (pouca redundância no desen-volvimento de código), acaba proporcionando facilidade no desenvolvimento e interpretação de código. Permite programação web através de APIs próprias para trabalho com protocolos TCP/IP, FTP e HTTP, além de possibilidade de integra-ção com linguagens próprias para web, como HTML e Javascript. Por ser uma linguagem fortemente tipada, os dados processados são mais precisos e passí-veis de validação, reduzindo a ocorrência de imprevistos em tempo de execução.

■ Realiza a inicialização básica automática de variáveis criadas facilitando a prevenção de erros decorrentes de dados indevidos já existentes na área reservada em memória para cada variável criada.

■ Permite programação de aplicações concorrentes que possam aproveitar recursos avançados de hardware por meio de técnicas como multithreads (processos podem responder solicitações concorrentemente ou simul-taneamente), e monitores (sincronia entre duas ou mais tarefas que compartilham recursos).

FUNDAMENTOS DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IU N I D A D E20

O código fonte JAVA é compilado e gerado o código bytecode, que posterior-mente se executado por uma JVM em tempo real. Esse processo reduz eficiência computacional, mas pela portabilidade proporcionada, acaba se tornando menos relevante para a maioria das aplicações atuais devido os melhores recursos de hardware e software.

SEGURANÇA

Um ponto importante no desenvolvimento de programas em Java é que, o código é compilar na geração do software. Códigos maliciosos não são executados diretamente

Conhecer bem sua ferramenta de trabalho é fundamental e o mesmo vale na programação. Como se preparar para um mercado tão competitivo?

Segurança

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

21

sobre o sistema operacional, pois a interpretação dos arquivos intermediários Java (bytecode) e applets é restrita aos ambientes próprios para esses arquivos.

Assim, não tendo acesso livre fora do ambiente de interpretação de byteco-des, não há motivo para códigos maliciosos se infiltrarem nesses tipo de arquivo e acabarem não sendo efetivos.

Além da segurança embutida pelo próprio sistema de uso de aplicações em Java, existem diversas outras formas de aumentar o nível de segurança e da garantia de uma correta execução por meio de diversos mecanismos adicionais, na forma de outros softwares que tenham função de segurança agregados ao sistema ope-racional, como antivírus e ferramentas de proteção a invasões e perdas de dados.

Também existe a segurança que pode ser implementada na própria aplica-ção por meio de mecanismos de segurança programados como autenticação de usuários, tratamento de exceções, validação de dados, e recursos programados como backup automático, por exemplo.

FUNDAMENTOS DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IU N I D A D E22

VERSÕES E EXTENSÕES EM JAVA

Figura 2 - Tela de download do plugin Java para navegadores, versão 8Fonte: Java ([2017], on-line)2.

Em decorrência das contínuas evoluções da linguagem, mudanças ocorreram em sua forma de uso e nas aplicações desenvolvidas de acordo com as demandas do mercado. Assim, um recurso largamente utilizado até então - os chamados applets, que são aplicações criadas para serem executadas como elementos em páginas da Internet - perderam sua força devido às guerras travadas entre as empresas desenvolvedoras de software para web.

Estas resolveram utilizar os recursos oferecidos pelo Javascript e HTML 5, que acabaram por substituir estas aplicações feitas em Java devido à necessidade do uso de plugins adicionados aos navegadores, os quais geravam dependência das mudanças que muitas vezes mostravam incompatibilidades entre applets criados em diferentes implementações da linguagem e versões dos plugins.

A proposta da versão 8 da linguagem Java é oferecer melhores condições para a produção de software embarcado, podendo criar uma nova onda na área de Tecnologia da Informação.

DESCRIÇÃO DE IMAGENS

PÁGINA 22 – Figura 2 - Tela de download do plugin Java para navegadores, versão 8

INÍCIO DESCRIÇÃO – A imagem apresenta a tela de download do plugin Java para navegadores, versão 8. Contendo um cabeçalho em vermelho, do lado esquerdo com o logo em branco do java, sendo uma xícara. Também há escrito ao centro Fazer Download, Ajuda, e logo acima no canto superior direito uma barra de pesquisa. Abaixo, do lado esquerdo, obtemos um retângulo em cinza denominado de "Recursos da Ajuda, Usuários do Windows de 64 bits e Instalação Off-line", contendo as seguintes informações: Recursos da Ajuda » O que é o Java? » Remover Versões Mais Antigas » Desativar o Java » Mensagens de Erro » Solucionar Problemas do Java » Outro Tipo de Ajuda Usuários do Windows de 64 bits Você usa browsers de 32 bits e 64 bits? » Perguntas Frequentes sobre o Java para Windows de 64 bits Instalação Off-line Dificuldades para fazer download? Tente o instalador off-line

DESCRIÇÃO DE IMAGENS

Em seguida do lado direito obtemos as seguintes informações: Fazer Download do Java para Windows Recomendado Version 8 Update 111 (tamanho do arquivo: 721 KB) Data da release - 18 de outubro de 2016 Há também um quadro em amarelo, contendo a seguinte informação dentro: "No Windows 10, o browser Edge não suporta plug-ins e, portanto, não executará o Java. Alterne para outro browser (Firefox ou Internet Explorer 11) para executar o plug-in do Java. Selecione a opção Mais Ações localizada na parte superior do browser Edge e clique em Abrir com o Internet Explorer. Mais informações". Em seguida, um botão em vermelho denominado de "Concordar e Iniciar o Download Gratuito". Por fim, ao fazer o download do Java, você reconhece que leu e aceita os termos do Contrato de Licença do usuário final. Ao concluir a instalação do Java, pode ser que você precise reiniciar seu browser (feche todas as janelas do browser e abra novamente) para ativar a instalação do Java. FIM DESCRIÇÃO. Por Vitor

Versões e Extensões em Java

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

23

J2ME (MICRO-EDITION FOR PDAS AND CELL PHONES)

Pacote de desenvolvimento próprio para aplicativos para dispositivos móveis e embarcados, em que a forma como essas aplicações se comportam difere das demais plataformas devido às restrições físicas, como tamanho da tela e desem-penho de hardware (ORACLE, [2017], on-line)2.

Aplicações para smartphones, tablets, aparelhos GPS, e eletrônicos mais modernos em geral, que contenham sistemas embarcados como geladeiras, reló-gios e TVs do tipo Smart, os quais possuam recursos como acesso à Internet, baseiam-se na ideia de uma forte otimização no desenvolvimento de código para se adequar a recursos mais limitados de hardware em termos de memória tem-porária e permanente, principalmente. Alguns dispositivos são potentes, mas apenas uma porcentagem dos usuários desse tipo de tecnologia possui apare-lhos com grande poder computacional.

Em função dessa disparidade de equipamentos, códigos otimizados permi-tem que todos tenham acesso aos aplicativos desenvolvidos, independentemente do dispositivo que utilizado ou do potencial do hardware a ser usado; é possível ajustar o código para adequar o desempenho do software, permitindo que sof-twares sejam embarcados em dispositivos diversos.

Na onda da “Internet das coisas”, objetos antes capazes de funcionalidades bem específicas puderam adicionar novas funções com a inclusão de tecnologia e softwares embarcados capazes de adicionar novas funcionalidades aos obje-tos. Roupas inteligentes capazes de realizar monitoramentos e eletrodomésticos conectados à Internet são exemplos de como a tecnologia está sendo capaz de alterar a forma de utilização dos objetos.

Importa destacar a preocupação que há quanto à evolução tecnológica, a qual está sendo retardada pela falha na infraestrutura necessária para oferecer ser-viços de conectividade de qualidade, a fim de que os dispositivos possam estar conectados em qualquer lugar e com boa velocidade de transmissão e recepção de dados. Além da infraestrutura desequilibrada em todo planeta, não existem padronizações a produção desses dispositivos o que gera diferenças na produ-ção de software e suas etapas, desde o desenvolvimento até o uso.

FUNDAMENTOS DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IU N I D A D E24

J2SE (STANDARD EDITION)

Pacote padrão para desenvolvimento e execução de aplicações Java contendo o compilador Javac e a máquina virtual JVM, além das bibliotecas (API) da lin-guagem, e alguns utilitários como Javadoc (ORACLE, [2017], on-line)1.

J2EE (ENTERPRISE EDITION)

Pacote mais completo que o J2SE, pois além dos componentes citados neste pacote, são incluídas as funcionalidades para a produção de aplicações corpo-rativas (ORACLE, [2017], on-line)2.

JMX (JAVA MANAGEMENT EXTENSIONS)

Pacote para desenvolvimento de aplicações distribuídas, baseadas em web, imple-mentado para a versão 5 da linguagem, mantendo seu uso em versões posteriores (ORACLE, [2017], on-line)2.

O mercado de desenvolvimento em Java sofre alterações frequentes e tipos de aplicações que, em determinado momento, podem ser muito populares. Com o passar do tempo, pode praticamente desaparecer, como é o caso dos applets que, por mudanças nas políticas dos desenvolvedores de na-vegadores, estão deixando de manter a compatibilidade com plugins flash necessários para execução dos applets.

Esses plugins servem como máquinas virtuais Java integrados aos nave-gadores para executar os miniaplicativos desenvolvidos e que tiveram um auge recente como opções de marketing e entretenimento na Internet.

Fonte: o autor.

Desenvolvimento de Software Em Java

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

25

DESENVOLVIMENTO DE SOFTWARE EM JAVA

O desenvolvimento de software é uma das áreas mais importantes dentro do mercado de tecnologia da informação e depende diretamente de escolhas que são feitas durante o processo, desde a qualidade e quantidade de componentes da equipe para o projeto, até a escolha de quais linguagens poderão ser utiliza-das no desenvolvimento dos softwares. Aliado a isso, é fundamental que, além do sucesso dos projetos, os custos e tempo sejam minimizados e a qualidade do produto seja mantida em bons níveis para aceitação.

Usar a linguagem Java como alternativa para codificação faz com que o pro-gramador lide com uma forma diferente de trabalho e funcionamento, na qual o código fonte não gere um arquivo executável, a exemplo do que ocorre com as lin-guagens de programação compiladas para o desenvolvimento de software em geral.

Nesta linguagem, o código deve ser criado e salvo com extensão java em qualquer ambiente de desenvolvimento integrado (IDE) ou editor de textos sem formatação de tipo algum como nas demais linguagens de programação, pois não são considerados arquivos de texto como os arquivos do tipo doc utilizados na produção de documentos contendo formatações, imagens e outros elementos não utilizados em arquivos de código de quaisquer linguagens de programação.

Temos como exemplos de IDEs populares utilizados pelos profissionais de desenvolvimento de software a Netbeans ou Eclipse como opções muito populares entre os desenvolvedores, pelo fato de serem eficientes e gratuitas.

FUNDAMENTOS DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IU N I D A D E26

O desenvolvimento por meio de editores de texto simples, como o Bloco de Notas, que faz parte dos acessórios do sistema operacional Windows, é uma opção viável, pois por já fazer parte do sistema operacional, sabe-se que é total-mente compatível e que não depende da aquisição de softwares adicionais para o desenvolvimento. Isso aumenta o nível de segurança para o hardware a ser utili-zado pela não necessidade de buscas na Internet para download desses softwares com ambientes de desenvolvimento integrado. Nos livros de programação I e II, durante o desenvolvimento de exemplos em Java, foi utilizado como padrão o desenvolvimento sem o uso destes ambientes integrados para não tirar o foco da programação em si.

A forma com que se desenvolvem os códigos não influencia a qualidade dos softwares criados, mas pode influenciar o tempo de desenvolvimento e o modo de trabalho durante a codificação.

Para focar o estudo na linguagem em si, serão desconsiderados o uso de quais-quer ferramentas simplificadoras como IDEs (conforme citado) ou Frameworks, os quais trazem muita facilidade, pois eliminam etapas importantes do aprendizado.

Paralelamente ao estudo da disciplina, é normal que você busque outras fontes ou alternativas de desenvolvimento de códigos. Porém, para a disciplina em si, deve ser focado o desenvolvimento baseado no que é visto na mesma, desconsiderando alternativas pesquisadas, pois isto prejudica a avaliação dos conhecimentos.

Considerações Finais

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

27

CONSIDERAÇÕES FINAIS

Nesta unidade, foi possível observar que uma série de detalhes indica os moti-vos da grande popularidade da linguagem Java e servem de parâmetro para o início dos estudos da linguagem.

Tendo sua história inicialmente indicando uma finalidade distinta do atual uso da linguagem, seu uso para desenvolvimento de aplicações para diferentes sistemas operacionais e tendo forte ligação com a Internet, temos que a lin-guagem Java evolui de forma a acompanhar as mudanças que ocorrem com a Internet e sua rápida evolução.

Suas características indicam que, por ser uma linguagem com boa facilidade de aprendizado e bons níveis de segurança, tornou-se preferência entre os pro-fissionais desenvolvedores de sistemas em função da chamada portabilidade, a qual permitiu o desenvolvimento de uma única versão de uma aplicação para diferentes sistemas operacionais.

Outro ponto fundamental é a possibilidade de criação de uma variedade de aplicações por meio de diferentes pacotes de desenvolvimento disponibilizados e indi-cados para o desenvolvimento de aplicações para dispositivos móveis, por exemplo.

Também foram tratadas opções de desenvolvimento de aplicações por meio de ambientes integrados capazes de oferecer ferramentas facilitadoras do trabalho de programadores com recursos automatizados e de auxílio à construção de código.

Assim, é possível observar que a linguagem Java permite que sejam cria-das aplicações com tranquilidade, pois, além de recursos muito bons da própria linguagem, há ferramentas que auxiliam o processo de desenvolvimento e per-mitem que o profissional tenha ajuda no desenvolvimento de suas aplicações.

Dando continuidade, na segunda unidade, será focada a parte relativa ao ambiente e às plataformas de execução de aplicações, além das opções de aplica-ções que podem ser desenvolvidas para diferentes fins. Finalmente, é explanado o processo de compilação e execução de códigos.

28

CERTIFICAÇÕES

Existem certificações diversas que podem ser feitas para comprovar conhecimentos avançados em programação Java, além de proporcionar um incremento no currículo pessoal. Essas certificações são importantes para o mercado de trabalho, pois são com-provações que mostram o preparo do profissional dentro de uma especialidade e ser-vem de parâmetro para contratações.

Alguns tipos de certificações da Oracle para Java podem ser Oracle Certified Enterprise Architect (OCEA), Oracle Certified Mobile Application Developer (OCMAD), Oracle Certi-fied Developer For Java Web Services (OCDJWS), Oracle Certified Business Component Developer (OCBCD), Oracle Certified Web Component Developer (OCWCD), Oracle Cer-tified Java Developer (OCJD), Oracle Certified Java Programmer (OCJP), Oracle Certified Java Associate (OCJA) (ORACLE, [2017], on-line)2.

Cada certificação se presta a uma habilidade específica de uma plataforma e linguagem Java. Todos os testes são realizados por uma empresa chamada Person VUE, sendo acei-tos internacionalmente (ORACLE, [2017], on-line)2.

Observando as opções existentes de certificações, vemos que existe uma sequência ló-gica que pode ser seguida de forma que a construção do conhecimento seja gradativa e mais eficiente.

Ter diferencial no mercado de trabalho por meio de certificações diversas é muito im-portante, mas não adianta ter certificações e não ser capaz de aplicar o que é visto na teoria em prática com eficiência.

É preciso praticar muito os conceitos vistos para que sejam realmente úteis para o mer-cado de trabalho, pois na área de tecnologia, o saber notório é muito comum e por vezes suficiente para muitas empresas.

Mas os melhores empregos demandam exigências e responsabilidades maiores que jus-tificam maiores salários e cargos em empresas que tendem a crescer rapidamente, da mesma forma que podem também desaparecer, pois a área de tecnologia se modifica rapidamente.

Para o mercado, tanto a graduação quanto a certificação são diferenciais curriculares, assim como a experiência de trabalho. Para se destacar, é interessante acumular todos esses diferenciais.

Fonte: o autor.

29

1. A linguagem Java possui uma característica fundamental que é a programação baseada em um paradigma de programação específico. Com as novas imple-mentações, está agregando conceitos de outro paradigma. Quais os nomes desses dois paradigmas aos quais se refere o enunciado?

2. Uma das bases da implementação da linguagem Java foi a linguagem C++, que serviu de base para boa parte da sintaxe do Java. Diversos recursos de uma lin-guagem são utilizados na outra, mas existem dois que não estão presentes de-vido à forma como é programar em java e seu paradigma. Cite esses recursos importantes que são implementados de forma distinta em Java com rela-ção à linguagem C++.

3. Uma forte característica da linguagem Java é a sua portabilidade de código. O que vem a ser característica?

4. Para garantir esta portabilidade citada na questão anterior, um código em Java não é executado diretamente, como ocorre na interpretação de linguagens como HTML, mas por meio de passos. Um desses passos é a compilação do códi-go escrito em linguagem Java em um tipo de arquivo intermediário e compatí-vel com a plataforma a ser interpretada. Como se chama esse arquivo interme-diário gerado pelo compilador Java e como se chama o compilador?

5. Dentre os tipos de aplicações desenvolvidas em Java temos um chamado J2ME, voltado para um destes tipos. Descreva qual seria este tipo de aplicação e para qual tipo de uso.

MATERIAL COMPLEMENTAR

Java - Como Programar - 8. ed. 2010Paul J. Deitel e Dr. Harvey M. Deitel

Editora: Prentice HallSinopse: Já em sua oitava edição, este livro completo

aborda inúmeros conceitos associados à programação

em linguagem Java, abordando desde a programação

básica, teoria do paradigma orientado a objetos e

criação de interfaces grá� cas.

REFERÊNCIAS31

MANZANO, J. A. N. G. Java 7 - programação de computadores: guia prático de introdução, orientação e desenvolvimento. 1 ed. São Paulo: Érica, 2011.

ORACLE, University. JAVA SE. [on-line]; Disponível em: http://education.oracle.com/pls/web_prod-plq-dad/ou_product_category.getPage?p_cat_id=267. Acesso em 29 mai. 2017.

REFERÊNCIAS ON-LINE

1 Em: <https://www.java.com/pt_BR/download/win10.jsp> Acesso em: 29 mai. 20172 Em: <http://www.oracle.com/technetwork/articles/javaee/javaee6overview--part2-136353.html> Acesso em: 08 jun. 2017

GABARITO

1) Ponteiros e Registros.

2) Orientado a Objetos e Funcional.

3) Capacidade de um mesmo código poder ser executado em diferentes platafor-mas e sistemas operacionais sem a necessidade de alterações no código, tendo apenas que utilizar para cada plataforma a JVM compatível e adequada.

4) Bytecode gerado pelo compilador Javac.

5) É relativo às aplicações para dispositivos móveis com menor capacidade de hardware, normalmente como telas menores ou hardware menos potente em termos de processamento ou armazenamento temporário e permanente.

UN

IDA

DE II

Professor Esp. Ronie Cesar Tokumoto

PARTICULARIDADES DA LINGUAGEM JAVA

Objetivos de Aprendizagem

■ Complementar os conceitos iniciais vistos na unidade anterior.

■ Conhecer como se pode desenvolver software em Java tendo acesso a exemplos de plataformas e ambientes de desenvolvimento.

■ Saber como pode ocorrer o processo de programação em Java.

■ Conhecer quais são os tipos de aplicativos criáveis em Java.

■ Entender conceitos de pacotes de desenvolvimento e como ocorre a compilação e execução em Java.

■ Compreender como ocorre o processo de uso de uma aplicação desenvolvida.

Plano de Estudo

A seguir, apresentam-se os tópicos que você estudará nesta unidade:

■ Ambiente de desenvolvimento Java

■ Plataformas Java

■ Formas de programação em Java

■ Tipos de aplicativos

■ Pacotes de desenvolvimento

■ Compilação e execução

INTRODUÇÃO

Iniciamos uma nova etapa de estudos. Essa segunda unidade complementa a unidade anterior, em que vimos conceitos relacionados à história da linguagem Java, e detalhes mais técnicos como suas características e funcionalidades que permitiram à linguagem se tornar tão popular.

Nesta unidade, damos continuidade ao conhecimento de aspectos da lin-guagem Java, mencionando aspectos de como é o funcionamento de aplicações em linguagem Java, tratando de como estas aplicações necessitam de um sof-tware para interpretação das aplicações em cada diferente sistema operacional.

Comentaremos também como as evoluções tecnológicas afetam constan-temente o mercado de desenvolvimento, criando demandas e abrindo espaços para novas linguagens e oportunidades, fazendo com que constantes mudanças na implementação da linguagem Java sejam necessárias para manter sua atrati-vidade entre os profissionais.

As opções de aplicações diferentes possíveis de serem desenvolvidas também são retomadas para reforçar sua flexibilidade na criação de software e acrescentar pontos adicionais sobre tipos de aplicações e o uso de interfaces gráficas em projetos.

Recursos complementares, como bibliotecas com conteúdo pronto para uso em novos projetos são citados para mostrar, a exemplo do que ocorre em outras linguagens, que criar um banco de bibliotecas prontas pode facilitar e melhorar o processo de desenvolvimento.

Para o trabalho com Java, é preciso ter instalado na estação de trabalho um pacote de desenvolvimento de acordo com a plataforma instalada para realizar os procedimentos de compilação e execução de aplicações, além de outros recur-sos adicionais citados ao longo do livro.

Para finalizar, o processo em si de compilação e geração do arquivo inter-mediário para execução é tratado na última parte da unidade, exemplificando de que forma proceder para realizar estas etapas do desenvolvimento e teste de aplicações.

Seguindo adiante, na próxima unidade serão tratados os fundamentos da programação na linguagem Java e os primeiros aspectos como tipos de dados e instruções básicas já poderão ser conhecidos.

Introdução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

35

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E36

AMBIENTE DE DESENVOLVIMENTO JAVA

Olá, caro(a) aluno(a). É importante citar que neste primeiro tópico, indepen-dentemente da opção de editor ou ambiente de desenvolvimento utilizado para criar programas em Java, um arquivo contendo código na linguagem Java com extensão “java” é convertido para criar arquivos bytecode com extensão “class” através de um compilador Javac, por exemplo.

Em um ambiente de desenvolvimento, o compilador Javac é componente pré--instalado ou que pode ser adicionado no caso de ambientes que podem aceitar mais de uma linguagem de programação diferentes. Este ambiente é capaz de compilar o código Java para geração do arquivo bytecode e interpretar o código em tempo real para testes de execução de dentro do próprio ambiente de desen-volvimento (MANZANO, 2011).

Bytecodes são interpretados e executados por meio de máquinas virtu-ais chamadas de Java Virtual Machine (JVM), que funcionam como um tipo de software que emula um ambiente padrão para execução de código bytecode próprio para cada plataforma na qual seja executado. Esse arquivo intermediá-rio bytecode elimina incompatibilidades entre um programa Java codificado e as diversas plataformas em que pode ser executado, pois a máquina virtual Java tem versão própria para cada plataforma (MANZANO, 2011).

A JVM carrega o arquivo bytecode para memória principal do hardware, verifica o arquivo na busca de possíveis ameaças ao próprio sistema operacio-nal em que será executado, e, por fim, o programa é executado de forma híbrida entre interpretação e compilação Just-in-Time (JIT) (MANZANO, 2011).

Ambiente de Desenvolvimento Java

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

37

Basicamente, no processo de execução de bytecodes em uma JVM, o compi-lador converte partes essenciais destes arquivos bytecode utilizados com maior frequência em código de máquina para melhorar o tempo de execução, e os demais componentes do bytecode são interpretados de acordo com a execução em função de não serem elementos prioritários à execução.

A Figura 1 mostra um diagrama simplificado do processo completo que ocorre na linguagem Java, desde a criação do código até a execução do software compilado. É importante observar que o diagrama não se altera para as diversas plataformas em que seja desenvolvido.

Figura 1 - Diagrama simplificado da criação de software com JavaFonte: o autor.

Programar em linguagem Java oferece uma vantagem muito interessante, que influenciou em sua grande popularização - chamada de portabilidade -, na qual um mesmo código pode ser utilizado em diferentes sistemas operacionais. Por meio da portabilidade, códigos criados em linguagens que contemplam esta característica reduzem o tempo de desenvolvimento de softwares por não serem necessárias ver-sões diferentes para cada plataforma em ques serão executados (MANZANO, 2011).

Na área de desenvolvimento de software, a redução de tempo não é a única vantagem, pois a portabilidade facilita a contratação de mão de obra especiali-zada, e a mesma necessita de um menor tempo de desenvolvimento devido a não necessidade de desenvolver mais de uma versão do mesmo software.

Muitos profissionais da programação dizem que aplicações em Java são len-tas e as descartam em situações com exigência de desempenho. Mas então, por que existem equipamentos que rodam com Java?

DESCRIÇÃO DE IMAGENS

PÁGINA 37 – Figura 1 - Diagrama simplificado da criação de software com Java

INÍCIO DESCRIÇÃO – A imagem apresenta um diagrama simplificado da criação de software com Java, contendo cinco retângulos na horizontal com informações dentro sendo: Edição de arquivo.java; Compilação com Javac; Arquivo bytecode.class; JVM executa arquivo.class; E Execução do software. FIM DESCRIÇÃO. Por Vitor

DESCRIÇÃO DE IMAGENS

PÁGINA 46 – Figura 6 - Exemplo de janela para buscar o caminho do compilador JAVAC

INÍCIO DESCRIÇÃO – Figura 6 Exemplo de janela para buscar o caminho do compilador JAVAC. A figura exibe uma janela do Windows que mostra o caminho até localizar o compilador JAVAC dentro da pasta do próprio programa Java. FIM DESCRIÇÃO.

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E38

PLATAFORMAS JAVA

Aplicações desenvolvidas em Java permitem forte portabilidade, o que é comen-tado diversas vezes em qualquer literatura sobre a linguagem, já que representa um de seus grandes trunfos, que permitiram a rápida e enorme popularização da linguagem.

No caso da linguagem Java, é usado um software emulador chamado de máquina virtual (JVM) e as chamadas API Java (Java Application Programming Interface), que são compostas por coleções de componentes de software prontos, contendo classes e métodos prontos para manipulação de estruturas de arquivos ou construção de aplicações gráficas, por exemplo (MANZANO, 2011).

Esta forma de desenvolvimento permite que cada sistema operacional dife-rente, chamado de plataforma dentro do aprendizado neste livro, possua uma JVM adaptada ao seu sistema e permita que um mesmo código desenvolvido em Java possa ser executado em qualquer plataforma sem a necessidade de alte-rações no código, salvo em casos em que algum recurso for inexistente ou não contemplado pela própria linguagem para determinada plataforma.

Figura 2 - Ilustração sobre plataformas de execução de aplicações

DESCRIÇÃO DE IMAGENS

PÁGINA 38 – Figura 2 - Ilustração sobre plataformas de execução de aplicações

INÍCIO DESCRIÇÃO – A imagem apresenta a Ilustração sobre plataformas de execução de aplicações. Na figura existem 4 imagens ilustrativas. A primeira imagem da esquerda para a direita é de um robô, ele representa o sistema android. A segunda imagem é de uma maçã com um pedaço faltando do lado direito, a maçã representa o sistema IOS. A terceira imagem é a de um pinguim sentado, ele representa o sistema Linux e a quarta imagem é de uma janela dividida em 4 partes, que representa o sistema windows. FIM DESCRIÇÃO.

Plataformas Java

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

39

Cada API é como um arquivo contendo classes, métodos e interfaces agrupa-das em pacotes, mas estes conceitos serão abordados no decorrer do livro em momentos oportunos e se necessário.

Tendo forte atuação no mercado de aplicativos para a plataforma Android da Google, conseguiu muito de sua popularidade por meio da Internet, tendo aplicativos desenvolvidos em uma quantidade absurda por grandes empresas desenvolvedoras e programadores independentes.

No caso da plataforma Android, o desenvolvimento de aplicações permitiu que a linguagem se popularizasse e muitos bons programadores saíssem do ano-nimato para reconhecimento quase instantâneo, por meio de aplicativos muito bem sucedidos. Em outras plataformas, como Linux e Windows, também acabou sendo muito utilizada a linguagem devido à portabilidade e capacidade de, além do desenvolvimento de softwares completos, pequenos plugins chamados Applets, que foram populares por muito tempo para dinamizar a navegação na Internet.

É possível perceber que a grande comunidade de desenvolvedores Java continua criando componentes e aplicações o tempo todo, incentivando cons-tantemente grandes evoluções na linguagem, devido à gama de profissionais de desenvolvimento de diversos tipos de software que utilizam a linguagem Java e se adaptam às evoluções e necessidades do mercado da tecnologia da Informação.

Atualmente, com a evolução da Internet das Coisas, a qual permitiu que o hardware estivesse cada vez mais próximo do usuário em dispositivos antes igno-rados em termos de software (como relógios), a linguagem se adapta às novas necessidades de aplicações e, assim, mantém-se forte no mercado.

Pode ocorrer de alguma linguagem mais recentes no mercado, como as lin-guagens Go da Google, Hack do Facebook, ou Swift da Apple, desbancarem o reinado das linguagens C, C++ e Java no mercado de desenvolvimento. Mas ainda parece algo pouco provável, por motivos de portabilidade reduzida ou inexis-tente, ou menor flexibilidade no desenvolvimento de diferentes tipos de software.

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E40

Linguagens de programação têm o poder de criar software, mas a correta escolha entre as linguagens é baseada em diversos aspectos, já que muitas linguagens são específicas para certos sistemas operacionais e plataformas, ou para desenvolver tipos específicos de aplicação.

Além disso, aspectos como popularidade e recursos que a linguagem possui para facilitar o desenvolvimento também são importantes na definição da ferramenta de trabalho.

Conhecer mais de uma linguagem de programação amplia a oferta de op-ções de trabalho, mas é bom sempre ter uma linguagem principal, sobre a qual o desenvolvedor possua um maior domínio e seja capaz de produzir aplicações mais complexas.

A dúvida persiste em relação a qual linguagem focar e qual a primeira a aprender. É interessante buscar as linguagens líderes em popularidade e com maior volume de desenvolvedores que a utilizam, pois a chance de a linguagem durar um tempo maior é grande. Mas é preciso levar em conside-ração a forma como o desenvolvedor queira trabalhar e o tipo de software que desejo programar.

Fonte: o autor.

Formas de Programação em Java

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

41

FORMAS DE PROGRAMAÇÃO EM JAVA

A linguagem Java é bastante versátil e permite a criação de diversos tipos de sof-tware, sendo que estes podem ser utilizados em diferentes fi nalidades, desde que sejam executados pelas JVM adequadas para cada sistema operacional em desk-tops comuns, notebooks ou equipamentos como dispositivos móveis, por exemplo.

Outra forma bastante comum é a criação de “miniaplicativos” ou applets, que são executados como complementos para navegadores utilizando appletviews para implementar funções adicionais a páginas web como jogos ou anúncios interativos, como já mencionado.

Um ponto a ser observado é que estes appletviews precisam ser compatíveis e estarem disponíveis nos navegadores, permitindo atualizações constantes por parte de seus desenvolvedores. No entanto, isso pode causar um inconveniente, pois algumas aplicações prontas e funcionais podem não ser totalmente compa-tíveis com as atualizações dos appletviews e podem gerar erros em sua execução ou falhas repentinas (MANZANO, 2011).

A criação de bibliotecas é uma excelente forma de divulgação do profi ssio-nal e de contribuição para a comunidade de desenvolvedores, espalhados ao redor do mundo, pois proporciona contato com profi ssionais que podem vir a ser grandes parceiros de trabalho.

Aplicativos para dispositivos móveis e soft wares de maior porte, como jogos, também são responsáveis por boa parte dos profi ssionais da área de desenvol-vimento, permitindo a estes ganhos fi nanceiros diretos com a venda destes aplicativos, ou ganhos com itens para estas aplicações como ocorre com grande quantidade de jogos, os quais, muitas vezes, são até disponibilizados gratuita-mente, mas possuem diversos itens pagos.

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E42

Sistemas complexos podem ser desenvolvidos na linguagem Java por meio do agrupamento de diversas classes nos chamados “pacotes”, os quais permi-tem que aquelas que estejam ali incluídas possam se comunicar e funcionar conjuntamente.

É interessante observar que o dia a dia mostra novas oportunidades, e que o contato com empresas e comunidades pode gerar inúmeras formas de trabalho com a linguagem, no desenvolvimento de variados softwares com finalidades específicas.

TIPOS DE APLICATIVOS

Além de possibilitar formas de programação diferenciadas de acordo com o tipo de software a ser desenvolvido, é possível criar dois tipos básicos diferentes de software. O primeiro é voltado a sistemas que necessitam de melhor desem-penho em detrimento de uma interface amigável, ou, de forma alternativa, que sejam executados em terminais simples ou servidores em modo texto, chama-dos de softwares de modo console (MANZANO, 2011).

Estes softwares não apresentam o tipo de interface gráfica padrão dos atu-ais sistemas operacionais, mas são adequados para softwares que rodam em segundo plano ou que não necessitem de interface gráfica para facilitar seu uso,

Tipos de Aplicativos

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

43

permitindo uma aparência simples, porém capaz de atender às necessidades para as quais foram desenvolvidos.

Outra categoria de software é a desenvolvida para modo gráfico, que gera códigos maiores, de menor desempenho em geral, mas com uma interface muito mais amigável, própria para uso constante em sistemas operacionais gráficos como Windows, Linux, Android e OSX. Estas aplicações oferecem vantagens em troca da perda de desempenho como melhor aparência e experiência para usuários quando conectados ou não à Internet, e são responsáveis pela popu-larização dos softwares, computadores e dispositivos móveis principalmente.

Com a inclusão de interfaces gráficas, a gama de aplicações aumenta e é pos-sível pensar em aplicativos para desktops com sistemas operacionais de modo gráfico como Windows, Linux, IOS e Android, por exemplo, usando ou não conexão em rede ou Internet.

Por meio das conexões possíveis, vemos que é possível criar aplicações Cliente/Servidor, comerciais ou não, como sistemas empresariais ou jogos, e aplicações que possam usufruir dos benefícios da Internet, como aplicações para e-busi-ness, que podem conter funções de e-commerce também.

Também é possível aproveitar a Internet e a forte divulgação que ela promove para oferecer aplicativos (APPs) diversos para dispositivos móveis que possam ter as mais diversas utilidades e com ou sem custos. Bibliotecas próprias e com-ponentes para aplicações de maior porte também são formas de trabalho com grande potencial, pois as comunidades de desenvolvedores costumam estar sem-pre de olho em soluções prontas para partes de seus projetos (MANZANO, 2011).

Também podemos nos deparar com melhores implementações de soluções desenvolvidas por um profissional que consulte uma comunidade em busca de aperfeiçoamento profissional e de otimizações para suas aplicações.

A variedade e quantidade de opções de desenvolvimento na área de progra-mação em geral é vasta, variando com as inovações e tendências do mercado de tecnologia da informação. Entretanto, cabe ao profissional a busca por estas ino-vações ou permanecer no campo de atuação ao qual já esteja adaptado.

Existem várias opções disponíveis de ferramentas para a produção de códi-go em Java, com seus pontos positivos e também negativos. Sendo assim, com um conhecimento prévio das mesmas, qual a melhor ferramenta para se utilizar?

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E44

PACOTES DE DESENVOLVIMENTO

Da mesma forma que surgem diferentes implemen-tações da linguagem Java, surgem os pacotes de desenvolvimento para profissionais chamados de JDK (Java SE Development Kit). Tais pacotes são distri-buídos gratuitamente pela Internet, atualmente em sites com a logo Oracle, e são fundamentais para o desenvolvimento do aprendizado dos conteúdos deste material (ORACLE, [2017], on-line)1.

Complementarmente, temos diversas alternativas úteis para o desenvolvimento de aplicações, sabendo que a combinação de diferentes softwares pode ofere-cer recursos para programação mais abrangente em termos de tipos de aplicações possíveis.

O ambiente Netbeans criado pela Sun é um dos mais utilizados, assim como o JDeveloper da Oracle, que atualmente é a plataforma de desenvolvimento ofi-cial para a linguagem Java. Para uso de serviços agregados a Bancos de Dados há a instalação de softwares como o HypersonicSQL, que é totalmente voltado para uso de aplicações Java, Apache Derby que faz parte do pacote de distribui-ção Java sob o nome de JavaDB, e PostGreeSQL, que concorre diretamente com outro servidor MySQL (ORACLE, [2017], on-line) 1.

Para a criação de servidores web para Java, duas opções populares são o Jetty, concorrente do Apache Tomcat, que possui uma versão customizada chamada JBossWeb, disponibilizado pela JBoss.

Compilação e Execução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

45

COMPILAÇÃO E EXECUÇÃO

Existem ambientes de desenvolvimento para Java, mas independentemente de qual seja utilizado, o resultado final pode ser o mesmo, pois a lógica envolvida no código e o correto uso de palavras reservadas, classes e seus métodos é que realmente determinam a funcionalidade da aplicação a ser criada.

Usando o ambiente do PROMPT DE COMANDO (CMD na busca do Windows), é preciso observar que o local em que se encontra armazenado o compilador Java e seus componentes em seu disco, precisa estar contemplado como parte do caminho padrão do sistema para acesso a aplicativos (PATH). A Figura 7 mostra um exemplo de PATH já contendo o caminho para o compi-lador JAVAC na máquina e, caso não esteja, é preciso buscar pela pasta em que esteja localizado o compilador, como no exemplo da figura 7.

Pode-se selecionar o caminho indicado como indicado na figura 7 para copiar e colar este caminho no comando PATH, após incluir um sinal de ponto de vírgula (;) adicional no final do caminho PATH já existente, como ficou na figura 7 (;C:\Program Files\Java\jdk1.8.0_77\bin).

Assim, temos que o comando PATH mostra como estão os caminhos padrões para localização de aplicações e um comando similar a:

PATH=C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E46

C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Java\jdk1.8.0_77\bin.

Ajusta quais são as pastas e discos válidos como padrões.As Figuras 6 e 7 ajudam no processo de ajuste do caminho para simplificar o

uso dos recursos do pacote JDK de desenvolvimento Java indicando como obter o caminho para a pasta em que estão os recursos e como conferir pelo Prompt de Comando do sistema operacional Windows, por exemplo.

Figura 6 - Exemplo de janela para buscar o caminho do compilador JAVACFonte: o autor.

Figura 7 - Exemplo de Prompt indicando o caminho padrão com o comando PATHFonte: o autor.

DESCRIÇÃO DE IMAGENS

PÁGINA 46 – Figura 7 - Exemplo de Prompt indicando o caminho padrão com o comando PATH

INÍCIO DESCRIÇÃO – Exemplo de prompt indicando o caminho padrão com o comando PATH. A figura exibe a janela com fundo preto e letra branca do prompt de comando e nela mostra o caminho para saber onde está localizada a pasta desejada utilizando o comando PATH. Sendo o código: C:\>path PATH-C:\ProgramData\OraclezJavazjavapath;C:\WINDOWS\system32;C:WINDOWS; C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\ C:\> FIM DESCRIÇÃO. Por Vitor

Compilação e Execução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

47

Após o ajuste do ambiente de trabalho, é possível incluir o código em um editor simples qualquer como o Bloco de Notas do Windows, confome mostra a Figura 8.

Figura 8 - Exemplo de código Java digitado em editor de texto simples Fonte: o autor.

Depois de digitar o código, grave-o em local adequado para seus estudos como uma pasta exclusiva para os códigos do livro e outros para exercício da linguagem, lem-brando que todo arquivo Java será gravado com o nome da classe principal (seguindo as regras de nomenclatura do sistema operacional), e a extensão java como na figura 9.

Observe que, no caso do Bloco de Notas, é interessante indicar o tipo como Todos os arquivos para que a gravação não corra o risco e crie um arquivo do tipo TXT ao invés de java. Sem esta opção, poderia ser criado um arquivo seme-lhante a Ex1.java.txt, o que não seria compreendido pelo compilador javac.

A Figura 9 mostra a tela de gravação de arquivos, na qual podemos escolher o local para gravação, em que é indicado respeitar uma organização de locais de gravação para as diferentes aplicações desenvolvidas, e a indicação do nome para o arquivo fonte, respeitando a regra de este nome ser igual ao da classe con-tida no código.

DESCRIÇÃO DE IMAGENS

PÁGINA 47 – Figura 8 - Exemplo de código Java digitado em editor de texto simples

INÍCIO DESCRIÇÃO – Exemplo de código Java digitado em editor de texto simples. A figura exibe uma janela de bloco de notas com código digitado em Java, sendo este o código: import java.util.Scanner; public class Ex1{ public static void main (String[] args) { Scanner input = new Scanner (System.in); int x,y; x = input.nextInt(); y = x * x; System.out.printf("Quadro de %d é %d", x, y); } } FIM DESCRIÇÃO. Por Vitor

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E48

Esta é mais uma precaução do que uma ação obrigatória, pois para outras situações ou sistemas operacionais, pode acontecer do editor usar todo o nome digitado “Nome.java” como nome do arquivo.

Figura 9 - Exemplo de gravação no aplicativo Bloco de Notas Fonte: o autor.

Após a correta gravação do arquivo, pode-se utilizar o prompt de comando para compilar o código Java e depois executar o aplicativo criado, confome mostra a Figura 10, na qual temos a sequência de todos os passos para realizar esta tarefa.

Primeiramente, usa-se o comando E: para seguir ao disco desejado, no qual esteja gravado o arquivo de extensão java, lembrando que cada programador organiza seus arquivos em disco como achar melhor, podendo, inclusive, gra-var tudo referente aos estudos em um pendrive vazio. Em seguida, é usado o comando CD para seguir até a pasta de trabalho. O comando DIR permite lis-tar os arquivos contidos na pasta escolhida.

Assim, estando no local correto e tendo encontrado o arquivo com o código desejado, é possível realizar a compilação por meio do JAVAC, indicando o nome do arquivo com o programa (Ex1.java por exemplo). Depois, caso não ocorram

DESCRIÇÃO DE IMAGENS

8 – Figura 9 - Exemplo de gravação no aplicativo Bloco de Notas

INÍCIO DESCRIÇÃO – Exemplo de gravação no aplicativo de Bloco de Notas. A figura exibe uma tela de “Salvar Como” do Bloco de Notas para salvar o bloco de notas digitado no lugar desejado. É possível visualizar o nome do bloco de notas e sua extensão, que nesse caso é mostrado: Ex1.java. FIM DESCRIÇÃO.

Compilação e Execução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

49

erros, um arquivo do tipo CLASS é gerado contendo a conversão de linguagem Java para Bytecode, que pode ser interpretada e executada pelo JAVA confome a Figura 10.

Figura 10 - Exemplo de acesso ao arquivo JAVA, sua compilação e execução Fonte: o autor.

Com isso, encerrando a unidade, vemos que a proposta do material é de ensi-nar os fundamentos da linguagem Java e da programação orientada a objetos, sem depender de ambientes integrados e receitas prontas.

DESCRIÇÃO DE IMAGENS

PÁGINA 49 – Figura 10 - Exemplo de acesso ao arquivo JAVA, sua compilação e execução

INÍCIO DESCRIÇÃO – Exemplo de acesso ao arquivo JAVA, sua compilação e execução. A figura exibe a tela do prompt de comando mostrando código de Java sendo compilado e executado. Sendo o código: C:\Users\Ronie>h: H:\>cd java H:\Java>cd livro H:\Java>Livro>javac EX1.java H:\Java>Livro>javac EX1 5 Quadrado de 5 é 25 H:\Java>Livro> FIM DESCRIÇÃO. Por Vitor

PARTICULARIDADES DA LINGUAGEM JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIU N I D A D E50

CONSIDERAÇÕES FINAIS

Nesta unidade foram vistos diversos conceitos complementares à unidade ante-rior, sendo possível conhecer mais aspectos da linguagem e compreender o motivo de sua popularidade e eficiência.

O ambiente em que são desenvolvidas as aplicações é muito importante, pois mostra de que forma linguagem Java, a qual possui uma forma um pouco diferente da maioria das demais linguagens de programação, desenvolve suas aplicações para garantir uma forte portabilidade entre as diferentes plataformas utilizadas em diferentes meios de execução de aplicações, como computadores e dispositivos móveis.

Complementando o ambiente de desenvolvimento, são citados os diferen-tes sistemas operacionais que oferecem diversas plataformas de execução para as aplicações criadas e que, independentemente dessas diferenças, permitem que um mesmo código em Java possa ser executado em diferentes plataformas, devido a sua portabilidade.

Seguindo os conceitos tratados na unidade, há comentários sobre as formas de programação que destacam tipos diferentes de soluções com os quais um determinado desenvolvedor pode se especializar indicando se inclusive, áreas já ultrapassadas no mercado, mas que ainda apresentam situações de uso que já garantiram o trabalho de muitos profissionais.

Assim, as diferentes formas de criar software em linguagem Java são descritas oferecendo possibilidades diversas e indicando soluções mais simples para fins específicos, como software para máquinas sem necessidade de interface gráfica, sendo mais leve e eficiente, ou soluções mais complexas com interface gráfica para equipamentos como dispositivos móveis.

Finalizando a unidade, são tratados os pacotes utilizados para o desenvol-vimento de software e o processo de compilação e execução de aplicações em diferentes plataformas.

Com esse preparo, já é possível ingressar em uma nova unidade, contem-plando os primeiros pontos a serem vistos em relação à linguagem Java e seus conceitos iniciais de desenvolvimento de aplicações.

51

Em Linux, para preparar o ambiente para programação em Java é preciso instalar o pa-cote Java JDK, seguindo os passos indicados a seguir. Vale lembrar que tais passos po-dem ser alterados devido às novas versões e à descontinuidade do pacote indicado no conteúdo a seguir.

Abrir uma janela terminal para, em seguida, usar o comando “su” para entrar em modo super usuário inserindo a senha necessária para tal.

Em seguida, entrar na pasta Downloads, com o comando “cd downloads”, e finalmente, o comando de instalação “rpm –jvh jdk-7-linux-i586.rpm”.

Depois de baixado o pacote, usar “mkdir/usr/java/jdk1.7.0/jre/classes” para criar uma pasta Classes para trabalho e remover o arquivo de instalação com o comando “rm jdk--7-linux-i586.rpm”.

Após instalado, é preciso que o Java seja visível em toda extensão do ambiente Linux e, para isso, é preciso manipular variáveis de ambiente do sistema operacional.

Siga a sequência de comandos a seguir para servir de guia para o processo, iniciando com “cd /etc/profile.d” para acessar a pasta indicada, digitando em seguida, “touch /etc/profile.d/java.sh”.

Depois, use novamente “cd /etc/profile.d”, seguido do comando “joe” para poder editar as variáveis de ambiente, como indicado a seguir:

#!/bin/sh

JAVA_HOME=”usr/java/jdk1.7.0”

CLASSPATH=”.:$CLASSPATH:$JAVA_HOME/jre/classes”

PATH=”$JAVA_HOME/bin:$PATH”

export JAVA_HOME CLASSPATH PATH

Finalmente, utilize [CTRL+K] seguido de [X] para gravar o arquivo como “java.sh”.

Assim, temos uma das possíveis formas de se instalar e preparar o ambiente Java em Linux, lembrando que, em caso de falha no processo, a Internet oferece diversas varia-ções em que é possível encontrar atualizações regulares do ambiente Java.

Fonte: o autor.

52

1. Um bom profissional de desenvolvimento de software se prepara para garantir uma melhor qualificação em termos de conhecimento e experiência profissio-nal. Iniciantes não possuem a experiência ainda, mas podem se preparar através de que recursos?

2. A JVM é por meio por interpretar e executar arquivos bytecode gerados pelo compilador Javac. Esta chamada máquina virtual aceita arquivos compilados com uma extensão específica gerada por meio do arquivo de código gravado com outra extensão específica. Cite as duas extensões.

3. Existem duas formas essenciais de desenvolvimento de aplicações em Java. Uma delas se da por meio da linha de comandos para compilar e executar programas através de utilitários próprios para tais tarefas inclusas no pacote JDK. Como se chama a alternativa de desenvolvimento que oferece alguns recursos adi-cionais, além dos oferecidos pelo compilador e JVM de linha de comando?

4. A linguagem C++ gera aplicações por meio do seu processo de compilação, o qual serve para criar arquivos que podem ser executados, independentemente de outros softwares. No caso da linguagem Java, isso não ocorre e a aplicação precisa da JVM pa-ra ser executada. Qual o motivo desta diferença?

5. É possível desenvolver aplicações de tipos diferente, e com funções distintas em Java. Este é um exemplo da versatilidade da linguagem. Um destes tipos se cha-ma applet e aos poucos está sendo descontinuado. Por que esta situação está ocorrendo?

Material Complementar

MATERIAL COMPLEMENTAR

Java Para Iniciantes: crie, compile e execute programas Java rapidamente - 6 ed. 2015Herbert Schildt

Editora: BookmanSinopse: Conheça os fundamentos da programação

Java com Herbert Schildt, autor best-seller de

publicações sobre programação. O livro aborda

recursos avançados e básicos de forma muito bem trabalhada.

REFERÊNCIASREFERÊNCIAS54

MANZANO, J. A. N. G. Java 7 - programação de computadores: guia prático de introdução, orientação e desenvolvimento. 1 ed. São Paulo: Érica, 2011.

ORACLE, University; Java SE. [on-line] Disponível em: <http://education.oracle.com/pls/web_prod-plq-dad/ou_product_category.getPage?p_cat_id=267>. Aces-so em 30 mai. 2017.

REFERÊNCIAS55

1) Cursos livres ou técnicos, Graduações, Especializações e Certificações na área. Participação em eventos e palestras também ajudam no conhecimento, além de proporcionar a criação de uma rede de contatos.

2) .JAVA e CLASS.

3) IDE (Ambiente Integrado de Desenvolvimento).

4) As aplicações em Java não são executáveis como em C++ devido à premissa de todo código Java ser portátil independentemente da plataforma, sendo que o arquivo bytecode de uma aplicação pode ser executado em várias plataformas, ao passo que na linguagem C++ é preciso recompilar o programa após corrigir as incompatibilidades da linguagem com cada versão de sistema operacional.

5) Os navegadores, aos poucos, estão descartando o uso de plugins que não pos-sam ser incluídos no próprio código deles e necessitam de terceiros para de-senvolver as mas atualizações esse. Assim, aos poucos, os navegadores estão deixando de ser compatíveis com este tipo de aplicativo.

GABARITO

UN

IDA

DE III

Professor Esp. Ronie Cesar Tokumoto

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Objetivos de Aprendizagem

■ Conhecer os conceitos básicos da programação Java.

■ Compreender como elaborar instruções comuns.

■ Saber identificar operadores e suas regras de uso.

■ Compreender a elaboração de expressões na linguagem.

Plano de Estudo

A seguir, apresentam-se os tópicos que você estudará nesta unidade:

■ Fundamentos de um programa Java

■ Instruções básicas

■ Expressões

■ Identação e espaçamento

INTRODUÇÃO

Nas unidades anteriores, foram apresentados os aspectos fundamentais da lin-guagem Java e a forma pela qual ela permite a criação de diferentes tipos de software, por meio de um processo particular de compilação e execução de apli-cações, no qual uma máquina virtual adaptada a cada plataforma de execução se encarrega de interpretar o projeto e manter a portabilidade do código sem que, geralmente, haja a necessidade de alterações.

Nesta unidade, são iniciados os estudos da linguagem em si, mostrando os conceitos fundamentais da linguagem Java em relação a todos os aspectos ini-ciais que devem ser conhecidos.

Dentro das instruções básicas, será tratada a questão documental de um código, por meio de comentários e documentação gerada por um utilitário con-tido no pacote de desenvolvimento.

Os tipos de dados mais importantes da linguagem também são citados, mos-trando diferenças entre eles e indicando, a partir de exemplos, como devem ser utilizados em variáveis e constantes. É válido destacar que variáveis são pontos fundamentais da programação e não poderiam deixar de ser citadas devido a sua expansão para o título de atributos dentro da programação em Java orien-tada a objetos.

Os chamados “tipos de dados” associados a estas variáveis representam a base de toda a funcionalidade de uma aplicação, já que, em geral, todo software se baseia no fundamento de servir como meio para que ocorra o processamento de dados de entrada, gerando dados de saída que podem representar informa-ções mais complexas.

Atrelado à ideia de tipo de dado, será tratado o uso de operadores, os quais permitem realizar modificações em conteúdos de variáveis, podendo também ser utilizados em diversas outras funções, como cálculos que podem utilizar, inclusive, valores definidos para constantes.

Complementando os conteúdos da unidade, temos os conceitos de criação de expressões, utilizando operadores, e da chamada identação de código, que permite uma melhor leitura e compreensão de códigos.

Introdução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

59

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E60

FUNDAMENTOS DE UM PROGRAMA JAVA

Daremos início a mais uma unidade, caro(a) aluno(a). Neste primeiro tópico, é importante citar que toda a construção de código Java segue regras, as quais pre-cisam ser respeitadas de forma que, além da sintaxe, a semântica de um código possa ser validado pelo compilador da linguagem para que um arquivo byte-code válido possa ser gerado.

O uso do paradigma de orientação a objetos é uma destas regras essenciais e, sem ela, não é possível criar programas em Java válidos para um compilador (ORACLE, [2017], on-line)1. Temos basicamente dois tipos de arquivos usa-dos na programação Java: um corresponde ao código escrito em si, gravado em arquivo do tipo JAVA, e outro que é gerado pelo compilador em formato byte-code do tipo CLASS, como citado anteriormente.

Como o arquivo JAVA é um arquivo texto comum, não é preciso utilizar recurso especial além de um editor de textos simples para codificar programas em Java, assim como em outras linguagens compiláveis.

Existem diferentes formas de programação em Java, nas quais é possível criar softwares aplicativos no modo console, em que não existe interface gráfica e a programação não é fundamentada na web.

Pode-se criar software para o modo gráfico utilizando pacotes próprios para uso de recursos, como janelas e desenho de forma geral, amplamente voltado para plataformas com interface gráfica como Windows e Linux, além de amplo uso em plataformas web como Android.

Instruções Básicas

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

61

INSTRUÇÕES BÁSICAS

Um programa criado em qualquer que seja a linguagem de programação tende a utilizar certos recursos básicos comuns a diversas linguagens e também na maioria dos problemas a serem resolvidos.

A seguir, serão apresentados alguns destes recursos, os quais devem ser com-preendidos para se formar uma base de conhecimento inicial que dará suporte para o aprendizado futuro de conceitos mais avançados ou inovações que venham a complementar os contidos neste material.

COMENTÁRIOS

O processo de programação exige muito mais trabalho intelectual em rela-ção ao trabalho manual de digitação, e cada profissional possui sua forma de implementar código. Assim, todo o ciclo de vida de um software envolve o desen-volvimento de código, mas também envolve a manutenção do mesmo enquanto estiver sendo utilizado.

Alguns softwares chegam a ser utilizados por décadas, mesmo que ocorram evoluções tecnológicas de hardware e software, pois mudanças em certos siste-mas são inviáveis devido ao seu tamanho e complexidade. Softwares em geral sofrem manutenções esporadicamente e estes softwares legados também, mas independentemente de qual seja o software, muitas vezes é preciso adicionar novas funcionalidades ou adequar outras já existentes.

Para facilitar o trabalho de manutenção, o uso de comentários dentro do código facilita a interpretação do que foi logicamente implementado e permite que, além do próprio programador que gerou o código, outros possam com-preender e realizar a manutenção necessária no mesmo com maior facilidade.

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E62

É preciso ter em mente que um software pode ter um ciclo de vida mais longo que o responsável pela sua criação dentro da empresa responsável pelo desen-volvimento e/ou manutenção do mesmo por tempo indeterminado.

Importa observar que os comentários não são obrigatórios em programas; seu uso não influencia a lógica do código, até porque qualquer comentário colo-cado dentro de um código é descartado já no processo de compilação e geração do arquivo bytecode por não ter função na execução do software.

Podemos utilizar // ou /** e */ para delimitar comentários, sendo a primeira forma para comentários de linha única, e a outra forma para delimitar blocos de comentários como indicado nos exemplos a seguir:

//código1 // Comentário de linha única. /* Início de bloco de comentário Que pode seguir por linhas abaixo até que seja encontrado O símbolo de fim do bloco de comentários */

Uma instrução pode ser colocada na mesma linha, desde que antes do símbolo indicador de comentário para não perder sua função por transformar-se em parte do texto do comentário. Já no bloco de comentários, quaisquer instruções colocadas entre o espaço delimitador de início e fim do comentário perde sua função, pois estando dentro de um comentário, qualquer conteúdo é descartado pelo compilador (DEITEL, 2010).

Instruções Básicas

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

63

JAVADOC

O chamado comentário de documentação inicia com o indicador /** e termina com o outro indicador */, permitindo que as informações sejam adicionadas dentro desses blocos de comentários, podendo, posteriormente, ser utilizados pelo utilitário Javadoc e faz parte do pacote JDK, para inserir tais comentários em arquivos HTML. É uma boa forma de documentar programas e, por meio de tags que representam os comandos da sintaxe para o Javadoc, podem extrair do código o texto que possa ser utilizado (FLANAGAN, 2006).

Em geral, essas tags iniciam com o símbolo @ e possuem funções diversas, que serão resumidas para que sejam úteis durante o processo de desenvolvi-mento de código Java (FLANAGAN, 2006).

■ A tag @author serve para identificar a autoria do código, assim como @since indica a versão onde alterações ocorreram no código, e @version serve para especificar versões de classes.

■ {@code} é utilizada para que trechos de código possam ser colocados den-tro do código real a ser compilado sem que o compilador enxergue esse código como compilável e o ignore como um comentário de texto qualquer.

■ A tag @deprecated pode servir para anotações em trechos de código não mais utilizados e que são mantidos para fins de retorno de versão de código ou alterações que possam ser desfeitas no futuro, por exemplo.

■ Para melhorar o controle sobre as tags @deprecated, podemos usar as tags @see ou {@link} que indicam pontos do código que podem ser conside-rados relacionados ou substitutos do código indicado por @deprecated.

■ A tag {@docRoot} indica o caminho para o local em disco em que esteja armazenada a documentação Javadoc.

■ Usando @param é possível documentar parâmetros utilizados em um código, assim como @return serve para documentar valores de retorno de métodos de classes.

Existem outras tags mais capazes de oferecer demais funcionalidades a essa fer-ramenta de documentação. Algumas das principais tags utilizadas pelo utilitário Javadoc na confecção de documentação estão listadas na Tabela 1.

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E64

Tabela 1 - Lista de tags reconhecidas pelo utilitário Javadoc

TAG SIGNIFICADO

@author Indica o autor de uma classe ou do método.

@deprecated Identifica classes ou métodos já ultrapassados. É interessante informar nessa tag os métodos ou classes que podem ser usa-das como alternativas mais recentes.

@link Indica um link para outro documento através de um URL.

@param Mostra parâmetros passados a um método.

@return Mostra o tipo de retorno de um método.

@see Indicação das referências de classes ou métodos para auxiliar a compreensão.

@since Indica quando classes ou métodos foram incluídos no projeto da aplicação.

@throws Indica tipos de exceções que podem ser tratados por métodos na aplicação.

@version Informa a versão de uma classe em um projeto.

Fonte: SCHILDT (2013, p. 594).

No exemplo do código 2 é possível observar de que forma pode ser colocado um comentário estilo Javadoc em um código Java qualquer.

DESCRIÇÃO DE IMAGENS

NA 64 – Tabela 1 - Lista de tags reconhecidas pelo utilitário Javadoc

INÍCIO DESCRIÇÃO – A imagem apresenta uma tabela de Lista de tags reconhecidas pelo utilitário Javadoc, contendo duas colunas denominadas de "TAG e SIGNIFICADO" e nove linhas, contendo as seguintes informações: @author: Indica o autor de uma classe ou do método. @deprecated: Identifica classes ou métodos já ultrapassados. É interessante informar nessa tag os métodos ou classes que podem ser usadas como alternativas mais recentes. @link: Indica um link para outro documento através de um URL. @param: Mostra parâmetros passados a um método. @return: Mostra o tipo de retorno de um método. @see: Indicação das referências de classes ou métodos para auxiliar a compreensão. @since: Indica quando classes ou métodos foram incluídos no projeto da aplicação. @throws: Indica tipos de exceções que podem ser tratados por métodos na aplicação. @version: Informa a versão de uma classe em um projeto. FIM DESCRIÇÃO. Por Vitor

Instruções Básicas

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

65

//código2 Import java.io.*;/** * Classe genérica para soma * @author Tokumoto * @version 1.0*/public class calcula { public double soma (double valor1, double valor2) {/** * Soma dois valores recebidos como argumentos * @param valor1 e valor2 representam valores do tipo double * @return a soma dos parâmetros é o resultado retornado*/ return (valor1 + valor2); }}

VARIÁVEIS E CONSTANTES

Nomes aceitos com um ou mais caracteres alfanuméricos, sendo que o primeiro obrigatoriamente precisa ser alfabético. A linguagem é case sensitive e nomes podem incluir o caractere _.

Por ser uma linguagem tipada, toda declaração de variável precisa da declara-ção do tipo associado de valor aceito e se, antes da declaração do tipo for incluída a palavra final, a variável não poderá ter seu valor inicialmente atribuído modi-ficado e esta se torna uma constante.

Além de variáveis, é possível bloquear outros elementos com a palavra-chave final, como classes que se tornam privadas e métodos que não permitem mais sua modificação por classes que herdem a mesma por meio de uma técnica da orientação a objetos chamada polimorfismo e que será vista na segunda disci-plina nas Unidades I e II.

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E66

Tendo como sintaxe básica a forma [final] <tipo> nome [<= valor>]; podemos ilustrar a declaração de algumas variáveis de tipos diferentes através do código 3.

//código3import java.lang.String; public class Variaveis{ public static void main(String[] args) { int a; int b, c; int d = 0; double e; char f; char g = ‘ ‘; String h; }}

TIPOS DE DADOS

Tipos de dados são fundamentais na linguagem Java por ela ser fortemente tipada e exigir que toda estrutura de dados criada tenha tipos para os dados aceitos pelas mesmas, definido para a devida alocação de memória durante o processo de execução.

A Figura 1 mostra os tipos básicos mais utilizados no desenvolvimento, indi-cando também a quantidade de bits ocupados em memória, delimitando valores limite para armazenamento nessas estruturas de dados.

Instruções Básicas

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

67

Quadro 1 - Ilustração dos tipos básicos de dados aceitos.

Nome e bits ocupadosbyte (8 bits)short (16 bits)int (32 bits)long (64 bits)float (32 bits)double (64 bits)char (16 bits)boolean (1 bit)

DescriçãoNúmeros inteiros (128 a 127)Números inteiros (-32768 a 32767)Números inteiros (-2147483648 a 2147483647)Números inteiros (-9,22 . 10-17 a 9,22 . 1017)Números reais de ponto flutuanteNúmeros reais de ponto flutuanteCaracteres Unicode UTF-16 de ‘\u0000’ a ‘\zffff’Valores 0 e 1 representativos para falso e verdadeiro

Fonte: o autor.

Todos os tipos têm usos indicados de acordo com a maneira como serão utiliza-dos os dados coletados durante a execução de um programa em variáveis usadas para armazenar idade, peso ou altura, por exemplo. Cada variável é declarada com o tipo de dado que seja adequado ao seu propósito no programa como, por exemplo, a idade que utiliza números inteiros, ou em peso e altura, que necessi-tam de números do tipo ponto flutuante (MANZANO, 2011).

Além dos tipos básicos, algumas bibliotecas (APIs), oferecem tipos adicionais de dados para facilitar o desenvolvimento de novos programas que necessitem de dados mais específicos. Um tipo bem conhecido se chama string, contido na Classe String de uma API bastante utilizada no desenvolvimento, em que cadeias de caracteres podem ser armazenadas nesse tipo de dado.

Toda variável tem a função de armazenar dados, assim como constantes que também utilizam espaços de memória para tal finalidade. No entanto, uma dife-rença fundamental é que as constantes têm, como princípio básico, a ideia de que um valor atribuído a ela não será alterado em tempo de execução. No caso das vari-áveis, sendo elas fortemente tipadas ou não, a função se mantém, variando a forma como ocorre esse armazenamento de dados, pois, para cada dado a ser alocado em uma variável, existe uma quantidade adequada de memória necessária a ser alocada.

No caso de linguagens fortemente tipadas, essa quantidade de memória é determinada pela escolha do tipo de dado que será aceita pela variável. Porém, em linguagens fracamente tipadas, a alocação é feita de forma diferente, pois não há como garantir sempre, antes da execução, qual tipo de valor será alocado à variável, alterando em tempo de execução a quantidade de memória que seria necessária para esse dado (MANZANO, 2011).

DESCRIÇÃO DE IMAGENS

PÁGINA 67 – Quadro 1 - Ilustração dos tipos básicos de dados aceitos

INÍCIO DESCRIÇÃO – A imagem apresenta um quadro de ilustração dos tipos básicos de dados aceitos, com duas colunas denominadas de "Nome e bits ocupados e Descrição", contendo as seguintes informações: Nome e bits ocupados: byte (8 bits); Descrição: Números inteiros (128 a 127). Nome e bits ocupados: short (16 bits); Descrição: Números inteiros (-32768 a 32767). Nome e bits ocupados: int (32 bits); Descrição: Números inteiros (-2147483648 a .2147483647). Nome e bits ocupados: long (64 bits); Descrição: Números inteiros (-9,22 . 10-17 a 9,22 . 1017) Nome e bits ocupados: float (32 bits); Descrição: Números reais de ponto flutuante. Nome e bits ocupados :double (64 bits); Descrição: Números reais de ponto flutuante. Nome e bits ocupados: char (16 bits); Descrição: Caracteres Unicode UTF-16 de ‘\u0000’ a ‘\zffff’. Nome e bits ocupados: boolean (1 bit); Descrição: Valores 0 e 1 representativos para falso e verdadeiro. FIM DESCRIÇÃO.Por Vitor

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E68

OPERADORES ARITMÉTICOS

Na programação, os operadores são fundamentais, pois permitem que valores sejam trabalhados para gerarem novos valores desejados dentro da lógica do programa. Os operadores mais simples e de uso mais frequente são os aritmé-ticos, utilizados para realizar cálculos matemáticos em geral, sendo que alguns dos símbolos usados são diferentes daqueles aprendidos nas escolas, conforme citado por Manzano (2011).

■ O operador de som (+) pode ter duas funcionalidades. Como operador unário de sinal, indicando a positividade de um valor numérico, e como operador de soma, o qual realiza o cálculo a partir de dois valores para gerar um terceiro valor de resultado.

■ O mesmo ocorre com o operador subtração (-), que também serve como operador unário de indicação de sinal para números negativos e como operador para subtração de dois valores, gerando também um terceiro valor resultante da operação.

■ A multiplicação representada pelo asterisco (*) é um operador apenas para a realização do cálculo entre dois valores numéricos, resultando um terceiro valor, assim como o operador para divisão aritmética indicada pela barra (/), que também se utiliza de dois valores para gerar um ter-ceiro valor de resultado.

■ O operador de resto indicado pelo símbolo de porcentagem (%), realiza um cálculo não convencional da matemática. O chamado resto da divisão é o valor que sobra após a divisão entre dois valores numéricos, podendo valer zero, em caso de divisões perfeitas, ou valores maiores, quando o primeiro valor não é múltiplo do primeiro.

■ Os operadores unários de incremento (++) e decremento (--), são utili-zados para alterar valores de variáveis realizando um cálculo simples em que é acrescentada ou reduzida uma unidade do valor da variável a qual se aplica algum desses operadores.

Existem também métodos que realizam a função de operadores não padrões da linguagem, que são incluídos à programação a partir de bibliotecas especí-ficas como Math. Exemplos de métodos dessa API so Math.pow, que realiza a

Instruções Básicas

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

69

potenciação por meio de parâmetros passados a ele, representando os valores de base e expoente necessários para a realização do cálculo, assim como o método Math.sqrt, que recebe um valor como parâmetro para realizar o cálculo da raiz quadrada desse valor.

OPERADORES RELACIONAIS E LÓGICOS

Outro tipo de operador é o relacional, o qual não realiza cálculos, sendo utilizado para comparações em expressões lógicas para desvios condicionais, por exemplo.

Os operadores maior (>), menor (<), maior ou igual (>=), e menor ou igual (<=) são também utilizados na matemática com a diferença para os símbolos ≥ e ≤, que não existem como caracteres no teclado e foram substituídos por combina-ções de símbolos existentes em todos os modelos de teclado (MANZANO, 2011).

Os operadores de igualdade (==) e diferença (!=) também são representa-dos por símbolos diferentes, mas mantêm o significado igual ao da matemática, como sinais de = e ≠ respectivamente. Eles são essenciais para elaborações de condições em desvios de fluxo e laços de repetição.

Os operadores lógicos E (&), OU (|), Negação (!) e OU Exclusivo (^) são importantes na construção de expressões lógicas por permitirem a construção de expressões lógicas maiores e mais complexas, em que são avaliadas múltiplas condições, se necessário.

Existem variações disponíveis para os operadores OU e E que, em certos casos, podem aumentar o desempenho do programa durante a execução, já que funcionam de forma distinta por avaliarem de uma forma particular uma expres-são, sendo chamados de operadores de curto-circuito || (OU curto-circuito), e && (E curto-circuito).

Operadores de curto-circuito só avaliam a segunda opção caso valer à pena, pois AND precisa de dois V para ser verdadeiro e OR pelo menos o primeiro V já seria suficiente.

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E70

OPERADOR DE ATRIBUIÇÃO

O símbolo de igualdade (=) usado na matemática (e que foi substituído na lin-guagem Java por uma dupla igualdade ==), tem uma função muito importante, chamada atribuição.

A atribuição é a forma pelo qual é possível atribuir dores diretamente a uma variável, alocando o valor na posição de memória previamente reservada a ela, de acordo com o tipo de dado atribuído no momento de sua declaração. Durante esse processo, pode ocorrer uma conversão automática de tipos quando o tipo a ser atribuído for compatível com o tipo receptor esse que seja superior àquele do valor a ser atribuído (MANZANO, 2011).

Pode-se usar o sistema de coerção “cast” para forçar tipos incompatíveis a acei-tarem uma atribuição forçada, independentemente do tipo que automaticamente seria usado ou se for uma conversão permitida pelo compilador naturalmente. Por exemplo, a coerção pode ser utilizada seguindo a sintaxe (tipo) <expres-são>, na qual é indicado o tipo para forçar a mudança de tipo, lembrando que funciona apenas se o valor contido na variável for compatível com o tipo dese-jado (DEITEL, 2010).

Um exemplo poderia ser escrito como y= (int) x; no qual, caso estivesse toda a instrução dentro do esperado em termos de valores e tipos, seria y uma vari-ável que deveria aceitar valores inteiros convertidos de x.

Operadores lógicos podem servir como operadores bit a bit para realizar deslocamento de bits como & e |, e isso pode ser confundido com operado-res lógicos. Cuidado.

Instruções Básicas

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

71

PRECEDÊNCIA ENTRE OPERADORES

Dada a existência de muitos operadores, é importante conhecer a ordem na qual são realizadas as operações em uma expressão, pois essa ordem afeta diretamente os resultados caso não seja observadas e devidamente utilizada.

Expressões simples da matemática são fortemente influenciadas pela ordem em que as operações são colocadas nas expressões, e qualquer mudança de opera-dores e valores em relação ao seu posicionamento numa expressão normalmente muda a resolução.

Observe a Figura 5 e perceba como pequenas mudanças em uma expressão afetam seu resultado. Em cada variação da expressão, temos diferentes resultados, e podemos observar na mudança da expressão 1 para a expressão 2 que a passa-gem da multiplicação para o início da expressão já tem influência no resultado.

Na passagem da expressão 1 para a expressão 3, na mesma Tabela 2, tam-bém é obtido um resultado diferente pela mudança de posição dos símbolos na expressão, mostrando a influência de uma correta elaboração de uma expressão. Tabela 2 - Exemplo de expressões matemáticas

EXPRESSÃO 1 EXPRESSÃO 2 EXPRESSÃO 3

5 * 2 + 3 2 + 3 * 5 5 + 2 * 3

10 + 3 2 + 15 5 + 6

13 17 11

Fonte: o autor.

A seguir, temos uma lista com a ordem de precedência de operadores, con-forme a Tabela 3, indicando a ordem do operador com maior prioridade para o operador com menor prioridade, mostrando aqueles que naturalmente seriam utilizados antes em um expressão.

DESCRIÇÃO DE IMAGENS

PÁGINA 71 – Tabela 2 - Exemplo de expressões matemáticas

INÍCIO DESCRIÇÃO – A imagem apresenta uma tabela de Exemplo de expressões matemáticas, com três colunas denominadas de "EXPRESSÃO 1, EXPRESSÃO 2 e EXPRESSÃO 3" com três linhas, contendo as seguintes informações: EXPRESSÃO 1 5 * 2 + 3 10+3 13 EXPRESSÃO 2 2 + 3 * 5 2 + 15 17 EXPRESSÃO 3 5 + 2 * 3 5 + 6 11 FIM DESCRIÇÃO. Por Vitor

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E72

Tabela 3 - Ordem de precedência de operadores

++, -- (pós fixo) Incremento e decremento após o uso de uma variável.

++, --, ~, !, +(unário),-(unário), (cast)

Incremento e decremento antes do uso de uma variá-vel, negação, sinais de positivo e negativo

*, /, % Multiplicação, divisão e resto

+, - Soma e subtração

>>, >>>, << Deslocamento de bits (direita, direita sem sinal, e esquerda)

>, >=, <, <=, instanceof Operadores relacionais maior, maior ou igual, menor, menor ou igual, operador de instância de objetos

==, != Igualdade e diferença lógica

& Operador E lógico

| Operador | lógico

&& Operador E lógico de curto-circuito

|| Operador | lógico de curto-circuito

?: Operador condicional

=, op= Atribuição ou atribuição com cálculo (+, -, *, /, &)

Fonte: o autor.

EXPRESSÕES

Expressões representam todo tipo de instrução relacionada à manipulação de valores e englobam desde a atribuição de valores a variáveis até expressões mate-máticas mais complexas, contendo operadores diversos e conversões de valores. Operadores, variáveis e literais são componentes de expressões. Pode ocorrer a conversão de tipos em uma expressão, mas precisam ser todos compatíveis (FLANAGAN, 2006).

A atribuição é a forma mais comum de expressão, pois todo valor de entrada em um programa depende da sua atribuição a um atributo ou parâmetro, por exemplo. Expressões matemáticas podem ser simples, utilizando apenas um

DESCRIÇÃO DE IMAGENS

NA 72 – Tabela 3 - Ordem de precedência de operadores

INÍCIO DESCRIÇÃO – A imagem apresenta uma tabela de ordem de precedência de operadores, com duas colunas e treze linhas, contendo as seguintes informações: ++, -- (pós fixo): Incremento e decremento após o uso de uma variável. ++, --, ~, !, +(unário),-(unário), (cast): Incremento e decremento antes do uso de uma variável, negação, sinais de positivo e negativo. *, /, %: Multiplicação, divisão e resto. +, -: Soma e subtração. >>, >>>, <<: Deslocamento de bits (direita, direita sem sinal, e esquerda). >, >=, <, <=, instanceof: Operadores relacionais maior, maior ou igual, menor, menor ou igual, operador de instância de objetos. ==, !=: Igualdade e diferença lógica. &: Operador E lógico. |: Operador | lógico. &&: Operador E lógico de curto-circuito. ||: Operador | lógico de curto-circuito. ?: :Operador condicional. =, op=: Atribuição ou atribuição com cálculo (+, -, *, /, &). FIM DESCRIÇÃO. Por Vitor

Expressões

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

73

operador, conter cálculos mais elaborados, bem como podem utilizar funções contidas em bibliotecas exter-nas ao conjunto básico de comandos da linguagem.

No código4, temos um exemplo de código que rea-liza alguns cálculos simples, e que consegue, por meio da biblioteca MATH, obter o valor da constante matemá-tica PI para utilizá-la em um dos cálculos. Temos também uma expressão simples de conversão de valor absoluto em porcentagem utilizando uma variável inteira inicializada com valor 100 para a realização do cálculo.

//código4 import java.lang.Math;class Expressoes{public static void main(String[] args){ int porcentagem = 100; System.out.println(“0,5 equivale a “ + 0.5*porcentagem + “%”); System.out.println(“O valor de PI é “, Math.PI); System.out.println(“Para calcular a área de um círculo, usa-se a fórmula PI x (RAIO x RAIO)”);System.out.println(“Um círculo de raio 10 tem área igual a “ + Math.PI * (10*10));}}* 0.5 ao invés de 0,5 na fórmula** concatenação de strings com sinal + ao invés de vírgula*** O mesmo nas linhas abaixo

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E74

IDENTAÇÃO E ESPAÇAMENTO

A identação serve para organizar um código em níveis e auxilia a leitura e compre-ensão de um código, sem influenciar sua lógica ou funcionamento na linguagem Java, diferentemente do que pode ocorrer em outras linguagens. O espaçamento também não prejudica a codificação em Java, ajudando apenas a leitura e com-preensão de códigos, principalmente, em expressões longas e instruções com muitos parâmetros.

Algumas linguagens podem inclusive se basear na identação para indicar o aninhamento de instruções contidas em outras, como ocorre em blocos de ins-truções pertencentes a estruturas condicionais e laços de repetição. Sem uma correta identação, padrões de codificação em empresas são perdidos e a manu-tenção em códigos já criados se torna mais custosa pela dificuldade de se ler, compreender e procurar pontos específicos a serem alterados em um código sem o espaçamento.

No exemplo do código5, podemos observar bem a importância da identação já em exemplos pequenos de código, em que quanto mais à esquerda, mais o ele-mento deve representar uma estrutura primária como uma classe, por exemplo. Já elementos mais à direita representam elementos que fazem parte de elemen-tos como classes e métodos, assim como estruturas de desvios e laços, os quais podem conter entre os símbolos de { e }, blocos de instruções e estruturas iden-tadas mais à direita para indicar que estejam dentro do escopo da estrutura ao qual estejam associados (MANZANO, 2011).

No código5, podemos observar um exemplo do mesmo código, visto ante-riormente, sem a identação, mostrando como sua leitura e compreensão podem

Identação e Espaçamento

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

75

ser prejudicados, lembrando que sua lógica e funcionamento não são alterados em função de falta de espaçamento na linguagem Java.

//código5import java.lang.Math;class Expressoes{public static void main(String[] args){int porcentagem = 100;System.out.println(“0,5 equivale a “ + 0.5*porcentagem + “%”);System.out.println(“O valor de PI é “ + Math.PI);System.out.println(“Para calcular a área de um círculo, usa-se a fórmula PI x (RAIO x RAIO)”);System.out.println(“Um círculo de raio 10 tem área igual a “ + Math.PI * (10*10));}}* 0.5 ao invés de 0,5 na fórmula** concatenação de strings com sinal + ao invés de vírgula*** O mesmo nas linhas abaixo

O desenvolvimento de software é algo complexo, sendo necessário muito empenho para se criar bons programas. Entretanto, a manutenção associada a estes pode demandar maior esforço. Isso ocorre devido a fatores como a falta de documentação do software, ou, pelo menos, a existência de comentários no mesmo, auxiliando a sua interpretação.

Outro ponto é a falta de identação correta, que facilita a leitura organizada do código, mostrando onde iniciam e finalizam blocos de instruções e estruturas maiores de ele-mentos, como métodos e classes.

É bom lembrar que, em muitos casos, a manutenção de um software não é realizada pelo mesmo profissional ou equipe de desenvolvimento que criou a aplicação, e isso pode gerar demora extra na manutenção.

Fonte: o autor.

INTRODUÇÃO À PROGRAMAÇÃO JAVA

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IIIU N I D A D E76

Ao final desta unidade, é possível perceber quais são os elementos essenciais para se iniciar os estudos da linguagem, como tipos e operadores, sem os quais pou-quíssimos códigos podem ser produzidos.

Considerações Finais

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

77

CONSIDERAÇÕES FINAIS

Nesta terceira unidade, foram explicados os aspectos iniciais da linguagem Java, contemplando aspectos básicos de programação comuns a todas as linguagens, mas que, por especificidades de cada uma delas, devem ser discutidos.

Iniciando com a parte de documentação, foram tratadas tanto a forma de como comentar o próprio código quanto o uso de um utilitário chamado Javadoc, o qual faz parte do pacote de desenvolvimento JDK para uma documentação externa ao código.

Em seguida, a unidade tratou de citar e explanar vários aspectos de como são utilizados e organizados os dados dentro da programação em Java, defini-dos como tipos de dados. Estes se referem a dados simples de diversos tipos, os quais são armazenados em variáveis e constantes para uso dentro das aplicações nas mais diversas situações.

Um uso muito comum para variáveis é o simples armazenamento dinâ-mico de dados, mas estes podem ser manipulados por instruções ou expressões que podem envolver cálculos matemáticos ou não. Para criar estas expressões, são utilizados operadores de diferentes tipos e com funções específicas defini-das por símbolos, os quais podem ser utilizados em diferentes situações dentro da programação e permitir que cálculos e tomadas de decisões ocorram dentro de aplicações desenvolvidas.

Os operadores utilizados em situações variadas foram divididos em catego-rias para organizá-los estes como operadores aritméticos, relacionais e lógicos, formando conjuntos de operadores para cada situação específica.

Complementando a unidade, temos a parte relacionada - a identação -, res-ponsável por facilitar a leitura e interpretação +de código devido à disposição em blocos alinhados.

Na sequência do livro, a Unidade 4 trará conceitos relacionados à continui-dade dos estudos da linguagem, tratando de meios de o usuário se comunicar com a aplicação.

78

JAR

A extensão JAR se refere a compactação de classes Java, de forma a criar um pacote de classes representando ou não uma aplicação completa, por meio de um utilitário que faz parte do pacote JDK de desenvolvimento Java.

Com a popularização da linguagem, outras ferramentas de compactação acrescentaram em seus algoritmos de compactação o padrão JAR e também são capazes de gerar estes arquivos.

Todo arquivo jar possui um arquivo manifesto na pasta META-INF/MANIFEST.MF. Este arquivo manifesto contém as definições de uso do conteúdo compactado e funcionam como arquivos executáveis, tendo uma de suas classes determinadas como a responsá-vel por iniciar a execução da aplicação.

Main-Class:Aplicacoes.Classe é uma entrada possível para este arquivo manifesto cria-do na compactação. Usando o comando java -jar exemplo.jar, podemos executar a aplicação direto do arquivo JAR. Isto permite maior segurança do conteúdo do arquivo compactado.

Como exemplo, podemos imaginar que temos uma aplicação que contenha os seguin-tes componentes: Teste.class, audio/som1.au, audio/som2.au, images/foto1.gif, e images/foto2.gif.

Com o comando jar cvf Teste.jar Teste.class audio images, podemos adicionar a classe Teste e as pastas audio e imagem no arquivo JAR compactado.

A execução do utilitário irá mostrar o progresso de sua compactação indicando todos os arquivos adicionados e compactados, mostrando o grau de compactação atingida naquele arquivo em porcentagem sobre o tamanho do conteúdo original como aparece a seguir.

//código6

adding: Teste.class (in=9999) (out=9999) (deflated 50%)

adding: audio/ (in=0) (out=0) (stored 0%)

adding: audio/som1.au (in=4032) (out=3572) (deflated 11%)

adding: audio/som2.au (in=2566) (out=2055) (deflated 19%)

adding: images/ (in=0) (out=0) (stored 0%)

adding: images/foto1.gif (in=157) (out=160) (deflated -1%)

adding: images/foto2.gif (in=158) (out=161) (deflated -1%)

79

O arquivo JAR, como citado anteriormente, contém, além das classes e arquivos comple-mentares, a indicação do conteúdo compactado em arquivo manifesto.

//código7

META-INF/MANIFEST.MF

foto1.gif

foto2.gif

som1.au

som2.au

Para executar uma classe em forma de plugin em um navegador, por exemplo, basta utilizar a tag <applet> para acionar o arquivo que contém a classe desejada, além de outros parâmetros como tamanho da janela, etc.

A seguir, podemos ver um exemplo de como poderia ser implementado o código HTML para chamar esta applet criado anteriormente em uma página html.

//código8

<applet code=Teste.class

width=”100” height=”100”>

</applet>

Um ponto importante é que como a classe está dentro de um arquivo JAR, é preciso in-dicar este detalhe dentro da tag de chamada da classe, assim como mostrado no código 9.

//código9

<applet code=Teste.class

archive=”Teste.jar”

width=”100” height=”100”>

</applet>

É possível indicar a localização do arquivo, exibindo dentro da tag, o caminho completo para acesso ao arquivo compactado como indicado no código a seguir.

80

//código10

<applet code=Teste.class

archive=”applets/Teste.jar”

width=”100” height=”100”>

</applet>

Podemos também executar um arquivo JAR como aplicação independente de um na-vegador por meio do utilitário java que ativa a JVM usando um comando semelhante a java -jar Teste.jar” ou “java -jar App1\Teste.jar para indicar o caminho completo da aplicação.

Fonte: o autor.

81

1. O chamado Javadoc foi tratado dentro da unidade e se refere a algo muito inte-ressante ofertado pela linguagem Java. Descreva o que seria Javadoc.

2. Dentre os diversos tipos de dados disponíveis, existem dois tipos chamados de int e double. Explique a diferença entre ambos.

3. Temos duas simbologias para indicar comentários dentro da linguagem Java que podem ser utilizadas livremente sem afetar a lógica de um código. Quais são?

4. Operadores são divididos em categorias para melhor organização e compre-ensão de suas funções. Cite quais são os operadores relacionais usados em Java.

5. Existem diversos operadores na linguagem Java. Qual a diferença entre os operadores = e ==?

MATERIAL COMPLEMENTAR

Java Para Games: o tutorial para sua grande aventuraHelder Henrique do Nascimento Peres

Editora: VienaSinopse: livro indicado para programadores Java que desejam iniciar estudos para desenvolvimento

de jogos 2D.

DEITEL, P. J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.

FLANAGAN, D. Java: o guia essencial. 5. ed. Porto Alegre: Bookman, 2006.

MANZANO, J. A. N. G. Java 7 programação de computadores: guia prático de in-trodução, orientação e desenvolvimento. São Paulo: Érica, 2011.

SCHILDT, H. Programação com Java. Sáo Paulo: Mcgraw Hill Education, 2014.

REFERÊNCIAS83

1) É um utilitário de geração de documentação que acompanha o pacote de de-senvolvimento JDK.

2) int se refere a um tipo de dado para números inteiros, enquanto que double se refere a um conjunto maior de números contendo os números inteiros e núme-ros com casas decimais.

3) // e /* */

4) > maior, < menor, >= maior ou igual, <= menor ou igual, == igualdade e != diferença.

5) = se refere ao operador de atribuição, e o sinal == se refere a igualdade nos operadores relacionais.

GABARITO

UN

IDA

DE IV

Professor Esp. Ronie Cesar Tokumoto

MANIPULAÇÃO DE DADOS

Objetivos de Aprendizagem

■ Compreender a teoria relacionada ao fluxo de dados.

■ Conhecer alguns dos recursos existentes para entrada de dados em Java.

■ Conhecer alguns dos recursos existentes para saída de dados em Java.

■ Compreender como são estruturas de dados do tipo vetor e matriz para dados.

Plano de Estudo

A seguir, apresentam-se os tópicos que você estudará nesta unidade:

■ Fluxo de dados

■ Entrada de dados

■ Saída de dados

■ Vetores e matrizes

INTRODUÇÃO

Após uma unidade introdutória aos conceitos fundamentais da programação em linguagem Java, na qual foram tratados aspectos iniciais sobre documentação, tipos de dados e seu uso em variáveis, foi possível iniciar o caminho para com-preender o trabalho do desenvolvedor de software em Java.

Complementando os conceitos vistos anteriormente, essa unidade traz a ideia de como ocorre a interação homem-máquina dentro do papel do usuário e a maneira pela qual é realizada a entrada e saída de dados que compõem a fun-ção das aplicações em geral, juntamente com o processamento.

Iniciando com o conceito base de fluxo de dados que representa um dos fun-damentos da linguagem Java, é possível compreender como ocorre o uso desses fluxos dentro da ideia da linguagem Java.

Na sequência, é tratada a entrada de dados em Java, que tem a finalidade de servir de porta de entrada para dados na aplicação, em geral, por meio da inte-ração do usuário que informa dados ao sistema.

Posteriormente, a saída de dados demonstra o lado inverso, em que dados processados geram novas informações, que são devolvidas ao usuário por men-sagens no monitor, por exemplo. Esta saída de dados pode também ocorrer como o armazenamento desses dados processados em um arquivo físico permanente ou meio de transmissão de dados.

Em Java, como existem diversos complementos denominados de bibliote-cas, os quais contêm métodos já implementados para tratar ações específicas, com a finalidade de realizar as tarefas de entrada e saída, é possível escolher a forma decodificar essas ações.

Finalmente, um tipo especial de dado é utilizado para declarar as estruturas que agrupam maiores quantidades de dados que variáveis, chamadas de vetores ou matrizes com linhas e colunas de dados.

Assim, com os conteúdos dessa unidade, será possível avançar para novas etapas do estudo na última unidade desse livro e do material da disciplina de Programação de Sistemas II.

Introdução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

87

MANIPULAÇÃO DE DADOS

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IVU N I D A D E88

FLUXO DE DADOS

A linguagem Java se baseia em fluxos para processos de entrada e saída de dados em seus programas. Sendo assim, é preciso compreender como funcionam tais fluxos antes de explicar de que forma utilizá-los dentro da linguagem.

A passagem de dados entre os métodos das classes de uma aplicação se dá pelas chamadas mensagens e tem uma ideia diferente da passagem de dados em programação estruturada, uma vez que, devido às características da orientação a objetos, esta passagem é mais restrita e com pouca visibilidade entre os com-ponentes da aplicação (MANZANO, 2011).

Mensagens são passadas de um objeto a outro por meio de seus métodos que manipulam dados recebidos e os retransmitem para outros métodos que possam dar sequência aos eventos na execução da aplicação. As mensagens em si podem representar tipos de dados simples ou compostos de acordo com as necessida-des na aplicação e respeitando limitações da linguagem.

É importante perceber que o chamado fluxo é o trabalho de processamento gerado por demandas de uma aplicação que podem resultar a partir de dados que precisam circular pelo sistema.

Tais dados podem ser obtidos a partir da interação de usuários ou de outras fontes que geram esses processamentos para depois retornarem outras informa-ções enviadas por meio de canais de saída como monitores e impressoras.

Sistemas de bancos de dados são exemplos típicos de aplicações que geram grandes quantidades de fluxos de dados em função da enorme demanda de con-sultas a bases de dados para gerar relatórios e atualizações de dados.

Entrada de Dados

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

89

ENTRADA DE DADOS

Como a linguagem Java se baseia no fluxo de dados (stream) para controlar entrada de dados, tendo como padrão, o teclado. O método InputStreamReader() serve de parâmetro para o construtor BufferedReader do tipo Unicode para receber caracteres em geral, mas pode-se usar outros métodos além deste para a mesma função (DEITEL, 2010).

No caso de números, é possível utilizar dois métodos da classe Integer para receber tipos específicos de valores com o método parseint() para a entrada de valores inteiros, e parsefloat() da classe Float para valores de ponto flutuante (com casas decimais).

Outra possibilidade de trabalhar a entrada de dados é por meio da classe Scanner, que tem uma forma mais simples de uso e, dentro dos exemplos deste material, será a mais usual.

A entrada de dados pode ocorrer de diversas formas e existem bibliote-cas indicadas para cada tipo de atividade, mas pode ser necessária a criação de bibliotecas novas de acordo com as particularidades que uma aplicação especí-fica necessite.

MANIPULAÇÃO DE DADOS

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IVU N I D A D E90

De qualquer maneira, é importante que, sempre que precisar de algum tipo de entrada de dados, verifique se já existe uma biblioteca que trabalhe com o tipo de atividade desejada e que contenha até métodos mais completos e melho-res do que os inicialmente esperados e desejados.

Todo tipo de entrada de dados permite que uma aplicação receba dados para utilizar ou não em algum processamento e, por meio deste, poder também gerar ou não algum tipo de dado de saída que gere informações ao usuário, por exemplo.

A digitação direta de dados pelo usuário é uma forma bastante comum de entrada de dados, mas em sistemas, esta é apenas uma das etapas desta alimen-tação de dados. Depois de o sistema ter sido alimentado com dados em volume suficiente para que possa acionar seus mecanismos de gerenciamento destes dados, a aplicação já pode usar estes próprios dados como entrada sem a necessidade de interação de um usuário em diversos processos, como ocorre em processos automáticos como backups e geração de relatórios pré-programados em siste-mas de banco de dados.

Outro tipo de entrada pode vir de arquivos de dados gravados em disco que podem alimentar processos de uma aplicação, como no caso de consultas a bases de dados.

Também existe o acesso a dados remotos por meio de redes corporativas ou pela nuvem da Internet, em que é possível que um sistema possa colher dados diversos da rede mundial para através de buscas refinadas, gerar novos dados que tragam diferentes tipos de dados não antes obtidos diretamente através de entradas de dados por usuários ou consultas a bases de dados locais (MANZANO, 2011).

Um processo que utiliza ideia semelhante é o chamado Big Data, o qual tra-balha dados já existentes de consultas a produtos de interesse na Internet para formular publicidades mais otimizadas de acordo com ofertas que sejam dentro daquilo que o usuário costuma procurar, e assim, tendo maior chance de êxito em sua função de gerar vendas onl-ine.

Saída de Dados

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

91

SAÍDA DE DADOS

Para a saída de dados, a linguagem Java possui o monitor como dispositivo padrão de saída de fluxo de dados e os métodos da classe System print e println são alguns dos mais utilizados seguindo a sintaxe System.out.print() e System.out.println(). A saída de dados também segue a forma de trabalho da entrada de dados e depende de bibliotecas, mas existem certos tipos de entradas de dados não contempladas pelas saídas de dados e vice-versa (MANZANO, 2010).

Existe um dispositivo padrão, tanto para saída, quanto para entrada de dados, e isso já mostra a necessidade e a provável preexistência de uma biblioteca ade-quada a cada necessidade em relação a entrada ou saída de dados.

MANIPULAÇÃO DE DADOS

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IVU N I D A D E92

//código1 Exemplo de Entrada e Saída de Dadosimport java.io.*;...try { System.out.println(“Exemplo de Entrada e Saída de Dados”); BufferedReader br = new BufferedReader (new

InputStreamReader(System.in)); varTexto = br.readLine(); BufferedReader br = new BufferedReader (new

InputStreamReader(System.in)); varNumero = Integer.parseInt (br.readLine ()); System.out.println (“Texto: “ + varTexto); System.out.println (“Número: “ + varNumero);}catch (Exception e) { varTexto = “”; varNumero = 0;} ...

A seguir, um exemplo de uso da classe Scanner para receber dados pelo teclado, assim como feito no exemplo anterior para receber texto e depois valor numérico.

//código2 import java.util.Scanner;... Scanner s = new Scanner (System.in); System.out.print (“Nome: “); varTexto = s.nextLine();...

Pode-se usar além de nextLine(), nextInt(), nextFloat(), nextByte(), nextLong(), nextDouble(), e nextLine().charAt(0). por exemplo, para os tipos específicos

Saída de Dados

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

93

desejados, nos quais o compilador se encarrega de averiguar as entradas de dados fornecidas para cada método desses.

É possível fixar ainda um formato para valores de ponto flutuante utilizando a classe DecimalFormat, comforme exemplo de trecho de código a seguir:

//código3import java.text.DecimalFormat;...DecimalFormat df = new DecimalFormat (); df.applyPattern (“0.00”); System.out.println (“Valor formatado: “ + df.format (varNumero));...

Como um segundo exemplo, é apresentado um código Java para o cálculo da potência de um número com expoente 2 em um código simples e sem recursos especiais gráficos:

//código4import java.util.Scanner;public class Teste { public static void main(String[] args) { Scanner input = new Scanner (System.in); int x,y; x = input.nextInt(); y = x * x;System.out.printf(“Quadrado de %d é %d\n”, x,y); }}* 0.5 ao invés de 0,5 na fórmula** concatenação de strings com sinal + ao invés de vírgula*** O mesmo nas linhas abaixo

MANIPULAÇÃO DE DADOS

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IVU N I D A D E94

A exemplo do que ocorre na entrada de dados, a saída pode oferecer diferentes formas de executar-se em função de processamentos que podem ocorrer na forma de exibição de dados em uma saída padrão, conforme mostrado nos exemplos.

Além disso, podem ser armazenados dados em um arquivo gravado em disco, alimentando bancos de dados ou arquivos simples de dados em aplicações com menor volume de dados, ou para destinos remotos por meio da Internet, por exemplo.

Existem bibliotecas prontas contendo diversos tipos de opções de métodos para gerar saídas de dados, mas não é preciso conhecer todos já em uma etapa inicial de estudos, pois, pela grande quantidade de opções, é algo inviável.

É interessante conhecer opções e, de acordo com a necessidade, aumentar a gama de bibliotecas que se utiliza na confecção de novos projetos, por meio de pesquisas sobre alternativas que possam atender cada demanda que um novo projeto possa gerar.

Trabalhar com entrada e saída de dados é fundamental no desenvolvimento de aplicações, pois normalmente toda a funcionalidade de uma aplicação depende de sua interação com usuários e dados.

Algumas técnicas são importantes para lidar com essa funcionalidade e são tratadas no decorrer das duas disciplinas de Programação de Sistemas, como o tratamento de exceções e interface com o usuário.

O tratamento de erros melhora a experiência de uso da aplicação e solucio-na falhas que podem ocorrer devido a problemas na lógica ou em situações indesejáveis, mas que podem ser evitadas.

Já a interface pode ser textual ou gráfica. Entretanto, independentemente da opção de escolha do desenvolvedor, deve ser confortável ao uso, con-tendo informações claras e com o mínimo de pontos que criem confusão durante o uso.

Fonte: o autor.

Vetores e Matrizes

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

95

VETORES E MATRIZES

Variáveis são estruturas de dados extremamente úteis, utilizadas em pratica-mente todos os programas criados em Java. O problema é que cada variável pode armazenar apenas um valor de um tipo específico por vez. Para melhorar a cria-ção de programas que necessitem conter maior quantidade de valores de um mesmo tipo, uma saída é utilizar estruturas mais complexas, capazes de arma-zenar maior quantidade de valores. Por meio de vetores ou matrizes podemos armazenar grandes quantidades de valores, utilizando uma estrutura de dados identificada por um nome único.

Existem outras formas de realizar ações de entrada ou saída de dados com a programação Java, mas cabe ao programador adotar a maneira que atenda as suas necessidades e seja mais agradável de programar.

MANIPULAÇÃO DE DADOS

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IVU N I D A D E96

É importante lembrar que os elementos contidos em um vetor ou matriz precisam ser todos de um mesmo tipo e que sua organização dentro da estru-tura de dados ocorre por meio de índices da posição na qual determinado dado deve estar armazenado nessa estrutura.

Foi citado que os elementos são de um mesmo tipo, mas não necessariamente são tipos simples, como números inteiros ou caracteres. Podem ser atribuídos a vetores ou matrizes elementos mais complexos como objetos, por exemplo.

Para definir um vetor, temos que compreender antes a forma pelo qual ele é estruturado, pois sua declaração e uso dependem da compreensão da diferença entre os dois tipos de estrutura.

Vetores são listas de valores com apenas uma dimensão, ou seja, seus valo-res contêm apenas um índice para referência e busca dentro da estrutura. Mas matrizes podem conter mais dimensões, sendo que cada uma necessita do uso de um índice diferente para apontar a posição de valores dentro da estrutura (MANZANO, 2011).

Assim, podemos declarar um vetor por meio de uma sintaxe semelhante à indicada no exemplo a seguir:

//código5 tipo[] vetor = new int[quantidade]; Um exemplo para essa declaração de vetores pode ser dado por meio da

declaração indicada no código a seguir, no qual é declarado um vetor chamado lista para depois ser instanciado como um vetor de 10 posições.

//código6 int[] lista = new int[10]; Aqui, temos um vetor com capacidade de armazenamento de até 10 valo-

res numéricos inteiros, com índices variando de 0 a 9 para a identificação dos dados dentro da estrutura.

Vetores e Matrizes

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

97

Podemos atribuir valores a vetores de duas formas distintas, proporcionando maior flexibilidade na codificação e atendendo a um maior número de situações possíveis. Uma delas é através da atribuição direta de um valor a uma posição específica do vetor usando, por exemplo, uma instrução como a mostrada no exemplo a seguir, em que é atribuído o valor 50 à quinta posição do vetor.

//código7 lista[5] = 50; Outra forma é por meio da atribuição de uma lista de valores a diversas posi-

ções do vetor diretamente, sem a necessidade da indicação de cada posição a ser preenchida com estes valores indicados, como mostra o código 8, no qual são passados dez valores para completar todo o vetor.

//código8 lista = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} Caso fosse informada uma lista com menor quantidade de valores, seriam

preenchidas apenas as posições necessárias do vetor, para acomodar todos os valores pedidos e, caso a lista de valores informada seja maior que a capacidade do vetor, os valores restantes são descartados.

No caso de uma matriz, muda-se apenas a parte sintática da instrução de declaração desta estrutura, incluindo uma quantidade adequada de índices para comportar todos os elementos desejados de forma organizada.

Um ponto interessante de imaginar é que podemos criar matrizes com duas, três ou mais dimensões, gerando um pouco de dúvida em relação a como imagi-nar a estrutura fisicamente. Por ser algo lógico e não físico, a linguagem suporta tranquilamente diversas dimensões, bastando apenas que a forma de organização dos dados dentro dela seja compreendida pelo programa durante a codificação.

A sintaxe básica para a declaração de uma matriz segue o modelo ilustrado na Figura 9, na qual são utilizados, como de costume, termos genéricos para ele-mentos que possam assumir diferentes nomes ou valores.

MANIPULAÇÃO DE DADOS

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IVU N I D A D E98

//código9 tipo[]...[] matriz = new tipo[quantidade]...[quantidade]; O uso das reticências foi adequado pelo fato de podermos criar matrizes

com duas ou mais dimensões, sendo que cada uma é representada por um par []. Um exemplo de matriz de duas dimensões é ilustrado no exemplo do código a seguir, em que é declarada uma matriz de caracteres.

//código10 char[][] = new char[3][3]; Caso seja desejada maior quantidade de dimensões, basta adicionar mais

[] (colchetes) com a indicação da quantidade de índices para cada dimensão. A seguir, temos um pequeno exemplo ilustrativo para demonstrar o uso de um vetor contendo valores e que são exibidos com a ajuda de algumas instruções, as quais fazem parte do estudo de Java dentro da disciplina.

//código11public class Vetor{ public static void main(String[] args) { final int limite = 3; int[] vetor = { 1, 2, 3 }; for (int i = 0; i < limite; i++) { System.out.println(“Valor “ + i + “: “ + vetor[i]); } }}

Vetores e Matrizes

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

99

Assim, por meio destes vários exemplos, foi possível compreender um pouco mais desta linguagem de programação cheia de recursos, moderna e capaz de ser utilizada juntamente com muitas das tecnologias de ponta dentro da área de TI.

MANIPULAÇÃO DE DADOS

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

IVU N I D A D E100

CONSIDERAÇÕES FINAIS

Nesta unidade, com os avanços no estudo da programação em Java, foi possível conhecer mais conceitos da linguagem Java, por meio de exemplos que auxi-liam na compreensão destas ideias, permitindo a formação de conhecimento base para o aprendizado da linguagem.

Iniciando a unidade com conceitos de fluxo de dados, foi possível compre-ender como o funcionamento da comunicação de dados dentro da programação orientada a objetos.

Na sequência de conteúdos, foi vista a parte que cita o mecanismo de entrada de dados dentro da aplicação por usuários, sabendo que podem ocorrer entradas por meios, como a leitura de dados em um arquivo, e via rede local ou Internet.

O mais importante é saber o conteúdo base para depois encaminhar os estu-dos sobre os demais conceitos da linguagem e compreender, também, além do método de entrada, o de saída, que é semelhante àquele, mas em caminho inverso.

Foram apresentados exemplos de saída de dados, mostrando a versatilidade da biblioteca, a qual permite que sejam realizadas tarefas de diferentes manei-ras na linguagem Java. Também foram tratados os detalhes de como estruturas de dados mais complexas que variáveis são utilizadas na linguagem Java, com exemplos para melhor aprendizado e conceitos diversos.

Exemplos demonstram variações no uso destas estruturas e servem para introduzir todos ao conteúdo, mas não a dizer que é programador e já sabe tudo, precisando, inclusive, de computadores para estas atividades. Vetores que repre-sentam linhas de dados, enquanto que matrizes são consideradas de agrupamentos de vetores, só que estas duas estruturas de dados devem ser consideradas como estruturas semelhantes dentro de seus conceitos e aplicações.

Finalmente, na quinta unidade, serão tratados temas complementares ao que é trabalhado nesta disciplina e na disciplina referente à segunda parte das disciplinas do curso.

101

Vetores e matrizes são estruturas de dados muito úteis que permitem a solução de di-versos problemas de armazenamento temporário de dados em memória de forma or-ganizada e prática.

Imaginando seu uso em uma aplicação prática de programação, é possível usar matrizes em jogos diversos, como no caso de caça-palavras, jogo da velha, damas, xadrez, batalha naval e outros que necessitem de elementos dispostos em linhas e colunas.

Utilizando a ideia de alguns desses exemplos, podemos ter que, um tabuleiro de damas ou xadrez possui 8 linhas e 8 colunas. Assim, teríamos que criar uma matriz 8x8 para comportar elementos de um jogo de xadrez.

No caso de um jogo da velha, temos 3 linhas e 3 colunas para a inclusão dos símbolos “X” e “O” para cada jogador na partida, tendo, então, que utilizar uma matriz 3x3 como base para o jogo.

Jogos como caça-palavras e batalha naval podem ter tamanhos variados e necessitam de matrizes com dimensões MxN, sendo M a quantidade de linhas e N a de colunas para formar o tabuleiro para esses jogos.

Poderíamos, então, declarar matrizes diversas para servir como base para os jogos cita-dos, utilizando instruções como as dos exemplos a seguir:

//código11

int tabuleiro [8][8];

char jogoDaVelha [3][3];

int batalhaNaval [M][N];

Um detalhe dos exemplos do código 11 são M e N, que seriam variáveis ou constantes com valores inteiros para definir as dimensões para linhas e colunas da matriz.

Após essa análise, pode surgir a dúvida em relação a como seriam utilizadas essas matri-zes, sendo que os jogos lidam com representações gráficas para peças de tabuleiro ou elementos utilizados para cada jogo.

A matriz seria apenas uma referência para o de posicionamento de elementos do jogo e para a análise da lógica e funcionamento do mesmo, sendo que os valores contidos na matriz seriam base para a associação com os elementos gráficos de cada tipo a serem exibidos graficamente no tabuleiro gráfico caso o jogo tenha interface gráfica.

Fonte: o autor.

102

1. O fluxo de dados representa uma das características do paradigma orientado a objetos. Descreva o que seria esse fluxo de dados.

2. A entrada de dados representa uma forma de uma aplicação ter acesso a dados. Cite uma biblioteca capaz de oferecer métodos capazes de realizar essa ta-refa.

3. O processo de saída de dados é muito utilizado na interface entre o usuário e o sistema. Dê um exemplo de linha de código capaz de exibir a mensagem “Exemplo de Saída de Dados”.

4. Qual o nome da biblioteca Java capaz de oferecer recursos de entrada de dados para a seguinte instrução:

x = input.nextInt();

5. Dê exemplos de instruções de declaração para as seguintes estruturas de dados:

5.1. vetor de inteiros para armazenar idades de 100 pessoas.

5.2. matriz de números capazes de armazenar até 50 pesos e alturas.

Material Complementar

MATERIAL COMPLEMENTAR

Java - Uma Abordagem Sobre Programação JavaGeraldo Cesar Cantelli

Editora: VienaSinopse: livro que abrange o desenvolvimento de

aplicativos e serviços para diversas plataformas de forma evolutiva e bem estruturada.

REFERÊNCIASREFERÊNCIAS104

DEITEL, P.J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.

MANZANO, J. A. N. G. Java 7 - programação de computadores: guia prático de introdução, orientação e desenvolvimento. São Paulo: Érica, 2011.

REFERÊNCIAS105

GABARITO

1) Passagem de dados entre métodos e classes de uma aplicação.

2) Java.io.

3) System.out.println(“Exemplo de Saída de Dados”).

4) Scanner.

5.1. int idade[100].

5.2. double valores[2][50].

UN

IDA

DE V

Professor Esp. Ronie Cesar Tokumoto

COMPLEMENTOS E ESTUDO DE CASO

Objetivos de Aprendizagem

■ Conhecer métodos de detectar e criar mecanismos para prevenir erros.

■ Compreender aspectos teóricos por meio da visualização de um exemplo.

■ Compreender algumas etapas da codificação de software em testes.

■ Compreender algumas etapas da codificação de software como manutenção, atualizações e liberação de novas versões.

Plano de Estudo

A seguir, apresentam-se os tópicos que você estudará nesta unidade:

■ Tratamento de exceções

■ Exemplo de aplicação

■ Fase de testes

■ Atualizações e novas versões

INTRODUÇÃO

Na unidade anterior, vimos que recursos de entrada e saída de dados muito bons são disponibilizados por classes diversas para uso na linguagem Java, e estas diversas alternativas mostram um pouco da variedade de opções tanto internas à linguagem quanto externas, por meio de bibliotecas que podem ser importa-das durante a codificação em linguagem Java.

Inicialmente, para complementar a ideia do uso de métodos para entrada e saída de dados, é introduzido o conceito do tratamento de exceções que se refe-rem a métodos para prevenção e correção de falhas em código. O tratamento preventivo de erros é a melhor forma de se obter uma aplicação eficiente e capaz de reduzir ao máximo a ocorrência de situações indesejadas, as quais podem comprometer a funcionalidade ou a experiência de uso de software.

Além do tratamento preventivo, o tratamento de erros, os quais podem vir a acontecer durante a execução, devido a processamento incorreto ou entradas de dados inválidas não tratadas, é um inconveniente maior, pois muitas vezes são detectados apenas durante o uso cotidiano, gerando demandas emergenciais de manutenção de software.

Completando a unidade, é criado um exemplo de aplicação simples, o qual serve para unificar conteúdos tratados no livro e para complementar os estudos com a visualização de um problema completo a ser resolvido.

Desde a verificação das funcionalidades que a aplicação deva contemplar, é preciso imaginar como será a interface de uso e como ocorrerá a interação do usuário com o software.

Um código é proposto como solução para o problema, atendendo os requi-sitos mínimos e não apresentando erros diretos no seu funcionamento. Porém, é preciso fazer uma verificação por meio de testes para impedir que os inconve-nientes - os quais podem ser tratados previamente - sejam identificados apenas pelos usuários finais.

Assim, os testes poderão verificar se existem falhas ou pontos a serem melho-rados na aplicação para que seja entregue uma melhor experiência aos seus usuários.

Introdução

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

109

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E110

TRATAMENTO DE EXCEÇÕES

Consideremos exceções como eventos (esperados ou não), que possam ocorrer em tempo de execução, podendo ser estes esperados ou não, e de forma que sejam previstos durante o projeto do software. Alguns comandos são próprios para lidar com situações desse tipo, capturando valores de retorno referentes a diferentes erros, e permitindo que o programador possa lidar com esses valores no próprio código.

Caso a exceção não possa ser tratada por algum motivo

pelo próprio software, o sistema operacional também possui recursos para o tra-tamento de diversos tipos de erros. Sabendo-se que podem ocorrer casos em que nem o próprio sistema operacional possa lidar com estes e tenha problemas em man-ter sua estabilidade, podendo chegar ao ponto de ocorrer travamento do mesmo.

O comando try é capaz criar uma situação controlada de funcionamento do código de forma que seja possível a captura de erros com o comando catch, e seu devido tratamento quando possível. Complementando o tratamento de erros, temos o comando finally que é responsável por realizar o bloco de comandos em caso de erros não ocorrerem e a execução do programa poder seguir nor-malmente seu fluxo (DEITEL, 2010).

Tratamento de Exceções

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

111

//código1try { <instrucoes>}catch (Erro1 <valor) { <Instrucoes de tratamento>}catch (Erro2 <valor) { <Instrucoes de tratamento>}finally { <Instrucoes normais>}//código2System.out.println (“X: “);try { BufferedReader br = new BufferedReader (new InputStreamReader(System.

in)); Altura = float.parseFloat (br.readline());}catch (Exception e) { altura= 0;}

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E112

//código3public void BuscaVetor(int i){ try { // Tentativa de busca de elemento em vetor System.out.println(lista[i]); } // Comando que captura o erro retornado pela busca no vetor catch(ArrayIndexOutOfBoundsException erro) { System.out.println(“Busca falhou”); } // Captura erro não ligado a busca no vetor catch(Excecao erro) { System.out.println(“Erro inesperado”); } // Comando que encerra o tratamento de erros finally { System.out.println(“executou finally”); }}

É possível implementar tratamentos de exceções de acordo com a necessidade do software por meio do comando extend, que amplia a flexibilidade do tra-tamento de exceções e permite maior personalização de feedbacks ao usuário (DEITEL, 2010).

Tratamento de Exceções

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

113

//código4public class BuscaSemSucesso extends Excecao{ // Sobrecarga de método Excecao para ampliação das exceções tratadas public String getMessage() { return “Índice indicado não encontrado na lista”; }}

Após a criação de novas opções de tratamentos realizada pelo comando extend, é possível utilizar dentro do restante do código os novos métodos livremente para situações nas quais se aplique o mesmo tipo de exceção.

//código5public void OutraBusca(int i){ try { System.out.println(lista[i]); } catch(BuscaSemSucesso erro) { System.out.println(erro.getMessage()); }}

Em alguns casos, é possível antecipar exceções e criar mecanismos para realizar o tratamento de erros previsíveis e reduzir a chance de falhas do software, que poderiam ser evitadas por meio de um bom conjunto de métodos para o trata-mento de exceções.

Aqui, temos o controle da faixa de valores que podem ser buscados no vetor utilizado, pois sendo um vetor de tamanho pré-definido, parâmetros que tragam

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E114

valores fora da faixa aceita para o índice de busca podem ser verificados antes mesmo da tentativa de busca no vetor.

//código6public void OutraBusca (int i) throws BuscaSemSucesso{ if(i>-1 && i<50) { throw new BuscaSemSucesso (); } else { System.out.println(lista[i]); }}

Existem métodos diversos para uso com o tratamento de exceções, podendo ser encontrados na biblioteca classe java.lang.Throwable, na qual métodos como printStackTrace() e getMessage() podem ser úteis e largamente usados.

O método printStackTrace() mostra informações de depuração da exceção, como tipo de exceção, linha, método e classe na qual foi gerada.

Já o método getMessage() traz apenas uma mensagem padrão da exceção gerada. Na codificação de novas exceções é possível personalizar textos a serem retornados ao usuário.

Tratamento de Exceções

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

115

//código7 public class BuscaEmLista{static public void main(String[] args){ new BuscaEmLista (); } BuscaEmLista () { Sistema s = new Sistema(); try { s. OutraBusca(); } catch(AlunoInexistente erro) { System.out.println(erro.getMessage()); } catch(Exception erro) { erro.printStackTrace(); } finally { s = null; } }}

O tratamento de erros é algo rotineiro para programadores; alguns deles ocorrem regularmente devido às imperfeições na lógica ou com parâmetros que possam ser passados a métodos sem que possam ser previamente analisados e descar-tados se forem indevidos.

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E116

Erros matemáticos, como divisões por zero (ArithmeticException), de acessos a dados, como aqueles ocorridos por índices indevidos ou negativos, ou, ainda, valores nulos passados como referências (NullPointerException ou NegativeArraySizeException), índices com valores fora de limites em vetores (ArrayIndexOutOfBoundsException), ou erros mais fortes, como tentativas de acesso a recursos protegidos pela JVM (SecurityException).

Observe os trechos de código a seguir para compreender um pouco des-sas formas indevidas de codificação que provavelmente gerariam exceções em tempo de execução de softwares Java.

//código8 valor = -1;Image[] imagens = new Image[10]; System.out.println(imagens[valor]); // Tentativa de índice negativo System.out.println(imagens[10]); // Vetor conta de 0 a 9 neste caso

O tratamento de erros está intimamente ligado à percepção de bom ou mau software pelo cliente, e esta deve ser explorada de forma a oferecer ao usu-ário a melhor experiência possível de uso.

Exemplo de Aplicação

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

117

EXEMPLO DE APLICAÇÃO

Para complementar os estudos, é interessante elaborar um pequeno projeto prá-tico voltado a melhor compreensão dos conteúdos abordados e também para que se possa visualizar uma aplicação completa, por mais simples que seja. Os exemplos, em geral, trazem trechos de código ou classes avulsas que mostram como é a aplicação de conceitos da programação Java, mas não mostram a tota-lidade do que é uma aplicação muitas vezes (MANZANO, 2010).

Assim, imagine a situação na qual seja necessária a criação de uma aplica-ção capaz de receber dados de um formulário usando uma interface gráfica e trabalhe esses dados para convertê-los de forma a atender as funcionalidades padrão da aplicação.

Essa aplicação deve funcionar como uma calculadora, em que terá uma inter-face capaz de simular a parte visual, receber valores e trabalhá-los de forma a permitir a realização de cálculos matemáticos simples, retornando os resulta-dos em um campo próprio para tal função.

Depois de concluída a aplicação, fica em aberta a possibilidade de o aluno modificar e incrementar a mesma da forma como achar conveniente para aper-feiçoar sua experiência de uso e funcionalidades.

A Figura 1 mostra uma ilustração de como pode ser digitado o código para o arquivo Calculadora.java que será compilado no Prompt do Windows em seguida para gerar o arquivo bytecode Calculadora.class.

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E118

Figura 1 - Ilustração de como preparar o código Fonte: o autor.

A Figura 2 mostra a aparência da calculadora, bem simples, pois o foco da ati-vidade é a parte lógica e de estrutura de código na linguagem Java para fins de estudo, mas facilmente é possível alterar sua aparência utilizando a API Swing, por exemplo. Na figura é mostrado que, após estar na pasta em que se encon-tra o código fonte da aplicação, é usado o utilitário JAVAC para a verificação de erros e compilação do código para gerar o arquivo bytecode.

Em seguida, o utilitário JAVA que representa a máquina virtual é usado para interpretar e executar o arquivo bytecode que não precisa ter sua extensão adi-cionada na linha de comando.

DESCRIÇÃO DE IMAGENS

PÁGINA 118 – Figura 1 - Ilustração de como preparar o código

INÍCIO DESCRIÇÃO – Ilustração de como preparar o código. A figura exibe a tela do bloco de notas com código digitado em Java, sendo o código: import java.util.Scanner; public class MinMax2{ public static void main(String[] args) { Scanner sc = new Scanner (System.in); int n1, n2, n3; System.out.print("Entre com o primeiro inteiro: ");

DESCRIÇÃO DE IMAGENS

n1 = sc.nextInt(); System.out.print("Entre com o segundo inteiro: "); n2 = sc.nextInt(); System.out.print("Entre com o terceiro inteiro: "); n3 = sc.nextInt(); int mínimo; int máximo; if (n1 > n2) { if (n1 > n3) { if (n2 > n3) { mínimo = n2; } else { mínimo = n3; } máximo = n1; } else { if (n1< n2) { mínimo = n1; } else { mínimo = n2; } máximo = n3; } else { if (n2 > n3) { if(n1 < n3) { mínimo = n1; } else { FIM DESCRIÇÃO. Por Vitor

Exemplo de Aplicação

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

119

Figura 2 - Ilustração do processo de compilação e execuçãoFonte: o autor.

Veja como seria a aparência desejada para essa calculadora e como seria seu uso por meio das imagens exemplo nas Figuras 2 e 3. Na Figura 3, um teste de exe-cução é realizado para verificar se a funcionalidade da aplicação ocorre como desejada.

Figura 3 - Ilustração de execução da calculadoraFonte: o autor.

Agora veja como ficaria o código em linguagem Java para desenvolver essa apli-cação no código a seguir, lembrando que poderia ser feita de outras maneiras, e em outras linguagens diferentes de programação, como C, C++, C#, PHP, etc.

DESCRIÇÃO DE IMAGENS

PÁGINA 119 – Figura 2 - Ilustração do processo de compilação e execução

INÍCIO DESCRIÇÃO – Exemplo da imagem da janela de execução do código, onde a calculadora é exibida na tela para o usuário utilizá-la, tendo um título, os números e operadores para depois então poder interagir realizando operações. Contendo as seguintes informações no pompet de comando: H:\Java|Calculadora>java Menu +-----------------+ | Calculadora | +-----------------+ | 7 8 9 | | 4 5 6 | | 1 2 3 | +-----------------+ | + - * / | +-----------------+ FIM DESCRIÇÃO. Por Vitor

DESCRIÇÃO DE IMAGENS

PÁGINA 119 – Figura 3 - Ilustração de execução da calculadora

INÍCIO DESCRIÇÃO – Exemplo da imagem da janela de execução do código, onde a calculadora é exibida na tela para o usuário utilizá-la, tendo um título, os números e operadores. Na sequência é mostrado como exemplo a operação 5 + 5 e como resultado, a mensagem SOMA: 10. Contendo as seguintes informações no pompet de comando: H:\Java|Calculadora>java Menu +-----------------+ | Calculadora | +-----------------+ | 7 8 9 | | 4 5 6 | | 1 2 3 | +-----------------+ | + - * / | +-----------------+ 5 + 5 +-----------------+ Soma: 10.0 +-----------------+ FIM DESCRIÇÃO. Por Vitor

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E120

//código9 public class Menu { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double n1, n2, resp; char opcao; System.out.println (“+-----------------+”); System.out.println (“| Calculadora |”); System.out.println (“+-----------------+”); System.out.println (“| 7 8 9 |”); System.out.println (“| 4 5 6 |”); System.out.println (“| 1 2 3 |”); System.out.println (“+-----------------+”); System.out.println (“| + - * / |”); System.out.println (“+-----------------+”); n1= sc.nextDouble(); opcao = sc.next().charAt(0); n2= sc.nextDouble(); System.out.println (“+-----------------+”); switch (opcao) { case ‘+’ : resp = n1+n2; System.out.println (“Soma: “ + resp); break; case ‘-’ : resp = n1-n2; System.out.println (“Subtração: “ + resp); break; case ‘*’ : resp = n1*n2; System.out.println (“Multiplicação: “ + resp); break; case ‘/’ : resp = n1/n2;

Fase de Testes

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

121

System.out.println (“Divisão: “ + resp); break; default : System.out.println (“Operação Inválida”); } System.out.println (“+-----------------+”); }}

Observe que nessa primeira versão do código temos uma calculadora bem simples que poderia ter sido implementada em qualquer outra linguagem de programação, mesmo num paradigma estruturado ou funcional. Não existem especificidades como a obrigatoriedade da orientação a objetos pela ausência de herança, ou qualquer outra característica própria desse paradigma.

Também não existe interface gráfica nem recursos especiais de acesso a ser-vidores, bancos de dados ou aplicação web que requerem outros recursos que uma linguagem ou outra já não suportaria.

FASE DE TESTES

Os chamados testes de Caixa Branca e Caixa Preta servem para que um produto possa ser verificado em suas funcionalidades e erros diversos possam ser descobertos durante o desenvolvimento, sem que o usuário final seja prejudicado por estes. Quando é testada apenas a funcionalidade da aplicação, sem levar em consideração seu código e como foi implementada, este é chamado de teste da Caixa Preta.

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E122

Tendo o código em mãos, toda a lógica e a correta codificação do programa podem ser testadas inclusive com auxílio de ferramentas automáticas capazes de apontar diversos tipos de problemas com o código da aplicação por meio dos testes de Caixa Branca. Como o código está disponível, os dois tipos de testes podem ser realizados e, assim, pontos a serem verificados tanto no uso quanto no código e sua lógica podem ser observados (FLANAGAN, 2006).

Como forma de testar a aplicação, é interessante realizar todas as funciona-lidades possíveis da aplicação de maneira a constatar se não há erros na lógica ou na construção do código não verificadas pelo compilador.

Além disso, um erro que poderia ter ocorrido seria se, ao invés do uso do tipo double para as variáveis, fosse utilizado o tipo int, por exemplo. Na ope-ração de divisão, erros ocorreriam frequentemente. Por meio desses testes, é possível verificar que um tipo de tratamento de erros deve ser realizado para evitar o que ocorre na Figura 4, em que uma mensagem de erro é exibida em função da divisão por zero.

Figura 4 - Exemplo de erro de execuçãoFonte: o autor.

O tratamento do erro indicado na Figura 4 também não é contemplado, mas poderia ser facilmente codificado esse acréscimo em uma atualização do código com certa facilidade.

É possível tratar o erro depois que ele ocorra, ou, de forma preventiva, poderia ser criado um meio de assegurar o uso apenas de valores válidos para a divisão,

DESCRIÇÃO DE IMAGENS

PÁGINA 122 – Figura 4 - Exemplo de erro de execução

INÍCIO DESCRIÇÃO – Exemplo da imagem da janela de execução do código, onde a calculadora é exibida na tela para o usuário utilizá-la, tendo um título, os números e operadores. Na sequência é mostrado como exemplo, a operação 4 / 0 e como resultado, a mensagem SOMA: Infinity. Contendo as seguintes informações no pompet de comando: H:\Java|Calculadora>java Menu +-----------------+ | Calculadora | +-----------------+ | 7 8 9 | | 4 5 6 | | 1 2 3 | +-----------------+ | + - * / | +-----------------+ 4 / 0 +-----------------+ Soma: Infinity +-----------------+ H:\Java|Calculadora>java Menu FIM DESCRIÇÃO. Por Vitor

Atualizações e Novas Versões

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

123

excluindo a possibilidade do uso do valor zero para o segundo operador n2.O trecho de código a seguir mostra a alteração que pode ser realizada den-

tro da estrutura case, modificando o caso da divisão para incluir o tratamento do possível erro de cálculo constatado.

//código10 case ‘/’ : if (n2 == 0) System.out.println (“Operação inválida. Divisão por

zero”); else { resp = n1/n2; System.out.println (“Divisão: “ + resp); } break;

ATUALIZAÇÕES E NOVAS VERSÕES

A Figura 5 mostra o resultado da alteração no código, agora realizando o tra-tamento da divisão por zero e mostrando a mensagem de retorno para o usuário, informando a impossibilidade de realização do cálculo desejado.

É possível observar uma perda na aparência simples da aplica-ção que mantinha a exibição de mensagens contida dentro de um layout simples usando caracteres comuns. Isso faz parte do teste de Caixa Preta, em que é revisada a execução da aplicação e não sua construção, contribuindo, assim, com detalhes na aparência e funcionalidades propostas pelo software (MANZANO, 2010).

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E124

Também é possível fazer o tratamento desses erros estéticos para manter o padrão da execução, aumentando o tamanho de todo layout da aplicação para conter a mensagem de maior tamanho possível, ou adicionar a exceção que atenda esse caso específico.

Figura 5 - Ilustração da execução com tratamento de erro Fonte: o autor.

O código a seguir traz uma variação do código da Figura 4 já contemplando as duas modificações propostas e criando, assim, uma nova versão da aplicação que ,por não implementar grandes modificações na aplicação original, poderia receber a numeração 1.1 para essa versão.

DESCRIÇÃO DE IMAGENS

124 – Figura 5 - Ilustração da execução com tratamento de erro

INÍCIO DESCRIÇÃO – Exemplo da imagem da janela de execução do código, onde a calculadora é exibida na tela para o usuário utilizá-la, tendo um título, os números e operadores, e na sequência é mostrado como exemplo, a operação 5 / 0, e como resultado, a mensagem Operação inválida. Divisão por zero. Contendo as seguintes informações no pompet de comando: H:\Java|Calculadora>java Menu +-----------------+ | Calculadora | +-----------------+ | 7 8 9 | | 4 5 6 | | 1 2 3 | +-----------------+ | + - * / | +-----------------+ 5 / 0 +-----------------+ Divisão por Zero +-----------------+ H:\Java|Calculadora>java Menu FIM DESCRIÇÃO. Por Vitor

Atualizações e Novas Versões

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

125

//código11 import java.util.Scanner;public class Calculadora { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double n1, n2, resp; char opcao; System.out.println (“+-----------------+”); System.out.println (“| Calculadora |”); System.out.println (“+-----------------+”); System.out.println (“| 7 8 9 |”); System.out.println (“| 4 5 6 |”); System.out.println (“| 1 2 3 |”); System.out.println (“+-----------------+”); System.out.println (“| + - * / |”); System.out.println (“+-----------------+”); n1= sc.nextDouble(); opcao = sc.next().charAt(0); n2= sc.nextDouble(); if (n2 != 0) System.out.println (“+-----------------+”); else System.out.println (“+-----------------------------------+”); switch (opcao) { case ‘+’ : resp = n1+n2; System.out.println (“Soma: “ + resp); break; case ‘-’ : resp = n1-n2; System.out.println (“Subtração: “ + resp); break; case ‘*’ : resp = n1*n2;

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E126

System.out.println (“Multiplicação: “ + resp); break; case ‘/’ : if (n2 == 0) System.out.println (“Operação inválida. Divisão por zero”); else { resp = n1/n2; System.out.println (“Divisão: “ + resp); } break; default : System.out.println (“Operação Inválida”); } if (n2 != 0) System.out.println (“+-----------------+”); else System.out.println (“+-----------------------------------+”); } }

Como resultado, a estética volta ao normal e, assim, a nova versão da calculadora apresenta melhorias em sua funcionalidade, além da estética já mencionada, ofe-recendo melhor experiência ao usuário, conforme mostra a Figura 6.

Atualizações e Novas Versões

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

127

Figura 6 - Execução da versão modificada da calculadoraFonte: o autor.

É importante observar que todas as modificações implementadas devem ser recompiladas para depois serem executadas e terem suas funcionalidades nova-mente testadas. Assim, é possível comprovar a importância de uma fase de testes em aplicações criadas, a fim de reduzir ao máximo a chance de entrega de produtos incompletos ou com defeitos diversos, que podem ser previamente descobertos e resolvidos dentro da própria desenvolvedora.

Em uma terceira versão, é possível incrementar a forma pela qual é desenvol-vida a aplicação, separando classes para ações do código, como receber os dados e realizar os cálculos, gerando uma nova versão já mais refinada.

Em uma nova versão, poderiam ser incluídas as classes MATH e SWING, para acrescentar recursos matemáticos mais complexos e uma interface gráfica em forma de formulário, o que já agregaria muitas modificações importantes à aplicação e, assim, a nova versão poderia ser identificada como 2.0 devido à mudança mais profunda em todos os aspectos.

DESCRIÇÃO DE IMAGENS

INÍCIO DESCRIÇÃO – Exemplo da imagem da janela de execução do código da imagem, onde a calculadora é exibida na tela para o usuário utilizá-la, tendo um título, os números e operadores, e na sequência é mostrado como exemplo, a operação 5 / 0 e como resultado, a mensagem SOMA: Infinity. Contendo as seguintes informações no pompet de comando: H:\Java|Calculadora>java Menu +-----------------+ | Calculadora | +-----------------+ | 7 8 9 | | 4 5 6 | | 1 2 3 | +-----------------+ | + - * / | +-----------------+ 5 / 0 +-----------------+ Soma: Infinity +-----------------+ H:\Java|Calculadora>java Menu FIM DESCRIÇÃO. Por Vitor

COMPLEMENTOS E ESTUDO DE CASO

Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.

VU N I D A D E128

Finalizando essa unidade, é perceptível a boa contribuição do uso de um estudo de caso para exemplificar de que forma ocorre a aplicação dos conhecimentos estudados em uma simples situação de simulação do dia a dia do profissional da área de desenvolvimento.

De acordo com o ranking divulgado pela Tiobe, empresa especializada em qualidade de software, temos nas três primeira posições da lista de popula-ridade de linguagens de programação uma soma de cerca de 25% do mer-cado de linguagens ocupados por Java, C e C++ em ordem de ranking, e mais cerca de 6% das variantes da linguagem C, como C# e Objective-C.

Uma linguagem que está em posição respeitosa e vem crescendo gradati-vamente dentre os profissionais é a Phyton, com cerca de 3,5%, ocupando a quarta posição. Além de Javascript, que também surge com grande fatia de mercado na sétima posição, com cerca de 3%.

Interessante analisar que Visual Basic.NET ocupa a sexta posição, com cer-ca de 3,4%, e Assembly com aproximadamente mais 2,8%, observando que antes estava na décima segunda posição, mostrando seu crescimento em virtude da demanda por programação de hardware.

Aparecem também na lista, as linguagens PHP, que cairem muito nos últi-mos tempos, Ruby e Perl. Somando essas três, temos cerca de 6,5%.

Fonte: adaptado de Tiobe ([2017], on-line).1

Considerações Finais

Repr

oduç

ão p

roib

ida.

Art

. 184

do

Códi

go P

enal

e L

ei 9

.610

de

19 d

e fe

vere

iro d

e 19

98.

129

CONSIDERAÇÕES FINAIS

Nesta unidade, foi trabalhado um conceito muito importante, o qual complementa a unidade anterior: trata-se do controle da funcionalidade de uma aplicação, verificando-se principalmente entradas e saídas que possam ocorrer durante a execução e que possam gerar erros.

O tratamento de exceções é uma forma muito útil de prevenção e trata-mento de falhas que uma aplicação pode ter, em função da interação do sistema com agentes externos, ou de serem causados pelo próprio processamento na aplicação. Esse tratamento pode ser preventivo, para verificar erros na entrada de dados com valores inválidos ou escolhas de opções inválidas em menus de opções, por exemplo.

Nas saídas de dados podem ser verificados formatos e a aparência de dados gerados, além de resultados indesejados por meio da criação de mecanismos que verifiquem os resultados antes de retorná-los ao usuário.

Depois, um exemplo completo de aplicação simples ajuda na compreensão do conteúdo visto, reunindo diversos aspectos tratados durante o transcorrer das unidades do livro. Em um primeiro momento, é apresentada a ideia do sof-tware e seu código base para atender às necessidades e funcionalidades previstas na definição do problema a ser resolvido.

Em seguida, foram sugeridos testes na aplicação para verificar a existên-cia de inconsistências e problemas diversos que possam afetar seu uso durante a manipulação por usuários em geral. Verificadas as inconsistências, é possível pensar em meios de contornar esses problemas para melhorar a qualidade do software e atender de melhor forma as demandas do projeto para gerar atuali-zações de código.

Finalizando o material, é deixada a sugestão de que você tente implementar novas alterações funcionais ou de aparência na aplicação, para gerar uma nova versão mais completa da aplicação.

130

JAVA 9 SAINDO DO FORNO EM BREVE

Uma das preocupações da equipe de desenvolvimento da nova versão é a disponibili-zação do pacote JDK de desenvolvimento, pois, com a evolução da linguagem e suas bi-bliotecas, esse pacote foi crescendo em quantidade de elementos e tamanho, gerando não só uma maior demora em sua aquisição, mas também uma perda de desempenho para se carregar e inicializar uma aplicação.

Assim, está sendo desenvolvido um pacote mais “inteligente”, que trabalhe de forma modular, em que apenas as classes relativas à aplicação tenham que ser carregadas jun-to às classes básicas desenvolvidas no código Java, melhorando muito seu desempenho durante a inicialização do software.

Chamado inicialmente de Jigsaw (quebra-cabeça), o projeto sendo desenvolvido pela Oracle prevê suas primeiras entregas oficiais para 2017, qual algumas implementações são muito aguardadas.

Uma delas refere-se a um termo conhecido na comunidade de desenvolvedores, a REPL (Read Eval Print Loop), a qual permitirá testar expressões escritas em Java na própria li-nha de comando, sem a necessidade de se implementar o código completo com classes e métodos.

Outra novidade será o chamado JMH (Java Microbenchmarking Harness), que permi-tiraá que aplicações sejam criadas, executadas e testadas em termos de desempenho pelo chamado benchmark, que avalia o desempenho de software em geral, só que es-pecífico para aplicações Java, de forma a otimizar o teste e não poluir resultados com o tempo de carga da aplicação, por exemplo.

Outras Mudanças serão vistas também no sistema de gerenciamento de memória para valores superiores a 4GB, incluindo o chamado coletor de lixo, que já existe na lingua-gem, mas que será modificado para melhorar o funcionamento da JVM.

Também são aguardadas mudanças que visam o suporte de recursos web HTTP 2.0 e gerenciamento de processos dos sistemas operacionais que ainda dependem de cha-madas ao próprio sistema, o que gera um grande tempo de espera pelo retorno da re-quisição.

Fonte: o autor.

131

1. Dentro dos conteúdos tratados no material, existem testes citados no livro que contemplam a verificação de erros em uma aplicação. Quais foram os testes citados?

2. Uma das palavras reservadas da linguagem Java utilizada para o tratamento de exceções é responsável por iniciar um ambiente controlado de execução do tre-cho de código para permitir o tratamento de exceções. Como se chama esse comando?

3. Erros e exceções podem ocorrer a todo momento em um programa, mas esses podem ser previamente observados. O que seria criar um mecanismo de tra-tamento preventivo de exceções?

4. Viu-se um exemplo de código para a geração de uma aplicação completa nesta unidade. Foi utilizada alguma biblioteca na criação do código? Qual?

5. Um código criado não pode ser considerado definitivo. No caso de haver modi-ficações no código utilizado neste livro para gerar uma nova versão da mesma aplicação, qual poderia ser esse motivo?

MATERIAL COMPLEMENTAR

Programação de Computadores com Java - Série EixosJosé Augusto Navarro Garcia Manzano e Roberto Aff onso da Costa Júnior,

Editora: Editora ÉricaSinopse: livro voltado ao mercado de trabalho, podendo ser

amplamente utilizado em cursos técnicos devido ao seu caráter didático.

REFERÊNCIAS133

DEITEL, P.J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.

MANZANO, J. A. N. G. Java 7: programação de computadores - guia prático de intro-dução, orientação e desenvolvimento. São Paulo: Érica, 2011.

REFERÊNCIAS ON-LINE

1 Em: <https://www.tiobe.com/tiobe-index/>. Acesso em: 31 mai. 2017.

REFERÊNCIAS

1) Teste da Caixa Preta e teste da caixa Branca.

2) Try.

3) Verificar situações que poderão produzir, falhas na execução, como entradas inválidas de dados, por exemplo, e trata-las para que a execução da aplicação possa, por si só, tratar o erro e não seja afetada.

4) Sim. A biblioteca java.util.Scanner.

5) Foi criado um mecanismo para evitar a ocorrência de divisão por zero e ajustar a aparência da aplicação para o caso tratado como exceção.

GABARITO

CONCLUSÃO135

Neste material da disciplina de Programação de Sistemas I, foi possível conhecer parte dos conceitos essenciais da programação em linguagem Java por meio de explicações simples e com trechos de código para complementação dos conheci-mentos, sendo construídos em conjunto com a segunda parte da disciplina.

Nas cinco unidades foram trabalhados elementos como os fundamentos da lingua-gem e da forma pela qual ocorre o desenvolvimento de código. Conforme a evo-lução das unidades, a linguagem em si foi sendo apresentada para permitir que o estudante fosse, aos poucos, se aprofundando nos conceitos.

Iniciando com uma introdução ao estilo de desenvolvimento proporcionado pela linguagem Java, em que um mesmo código é utilizável em diversos sistemas opera-cionais diferentes como Windows, Android e Linux.

Este conceito relacionado à portabilidade de código inicia um estudo que envol-ve o processo de compilação e execução de aplicações que são interpretadas por máquinas virtuais instaladas e adequadas a cada um destes sistemas operacionais diferentes, permitindo esta portabilidade de código.

Conceitos fundamentais como a forma que os dados seguem regras de uso em situ-ações diversas como expressões ou estruturas de comandos para realizar diferentes processamentos.

Desvios de fluxo na execução de aplicações e laços de repetição de blocos de ins-truções são alguns dos principais assuntos deste material, sendo que ambos são muitas vezes utilizados em conjunto dentro de um mesmo código.

Outro ponto fundamental no desenvolvimento de aplicações em Java é o chamado tratamento de exceções que permite softwares melhor desenvolvidos, contendo re-cursos para reduzir a ocorrência de erros em tempo de execução, sendo que quanto mais mecanismos de controle houve, mais estáveis serão as aplicações.

O mais importante é lembrar que a disciplina não é única e através de seu estudo conjunto com Programação de Sistemas II, lembrando que apenas parte dos concei-tos da linguagem são tratados.

CONCLUSÃO