Atividades Complementares – DeVry Metrocamp

Cursos: Ciência da Computação e Sistemas de Informação

Os alunos dos cursos de Ciência da Computação e Sistemas de Informação devem cumprir 100 horas de atividades complementares, durante a sua graduação.

O Prof. José Carlos Perini é o professor supervisor das atividades complementares dos cursos de CCO e BSI.

Os alunos devem enviar os certificados que comprovem as atividades para o professor no e-mail:

jperini@metrocamp.edu.br

Seguem abaixo links com os regulamentos dos dois cursos:

CCO_Regulamento Atividades Complementares

BSI_Regulamento Atividades Complementares

 

Material referente ao Estudo Dirigido de APC II – DeVry Metrocamp

Material para o Estudo Dirigido de APC II – DeVry Metrocamp.

Revisão de APC I:

APC II – Revisão de APC I

Apostila de Linguagem C – Prof. Kesede:

Linguagem C

Cronograma de encontros presenciais (aos sábados a partir das 8h30):

APC II – Cronograma de encontros presenciais

Lista de Exercícios 01 – Entregar no dia 29/04:

APC II – Lista de Exercícios 01

 

 

Estágio Supervisionado – DeVry Metrocamp

Cursos: Ciência da Computação e Sistemas de Informação

Prof. José Carlos Perini

Atenção alunos dos cursos de Ciência da Computação e Sistemas de Informação da Faculdade DeVry Metrocamp.

Segue abaixo um documento com as orientações sobre o estágio curricular supervisionado.

Orientações Estágio 2017

Muito importante: Não percam os prazos para entregar os documentos.

Estruturas de Dados em Java – Recursividade

Estruturas de Dados em Java – Recursividade

Vamos ver neste post, a definição de recursividade, com uma vídeo aula mostrando um exemplo com a linguagem Java.

A recursividade é uma técnica muito utilizada em programação. Ela consiste em uma função que chama a si própria para executar determinada tarefa.

Definição

A estrutura recursiva é uma técnica que consiste em aplicar uma função como parte da definição dessa mesma função.

A recursão é o princípio através do qual um programa ou (mais comumente) uma função chama a si mesma para executar uma tarefa.

A chave do seu funcionamento é a existência de uma condição que a  termine, ou  seja, a execução de uma tarefa não recursiva pela mesma função.

Elementos da recursão

Sempre precisamos identificar 2 elementos para definir um módulo recursivo:

  • O passo recursivo
  • A condição de parada

Exemplo:

return numero * fatorial(numero – 1);

Nesta função, a condição de parada é satisfeita quando numero=1.

As três regras da função recursiva

1.Saber quando parar.

2.Decidir como fazer a próxima ação.

3.Quebrar uma jornada recursiva em um passo mais uma jornada recursiva menor.

Vejam na vídeo aula abaixo um exemplo de recursividade: calculando o fatorial de um número.

Conclusão

A função recursiva é uma forma de programar que, quando o aluno está aprendendo programação, tem muita dificuldade em entender. A minha sugestão é que o aluno exercite bastante, faça todos os exercícios e exemplos, pois só assim começará a entender. Espero que tenham gostado.

Deixem seus comentários.

Abraços!

Comandos úteis do Eclipse

Comandos úteis do Eclipse

Disciplinas: Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Para quem está começando a trabalhar com o IDE Eclipse para desenvolver programas em Java, existem alguns comandos ou teclas de atalho que facilitam o trabalho. Segue abaixo alguns desses comandos:

1.       Digite Ctrl + Shift + F

  • O eclipse irá organizar o código, identando da forma correta. 

2.       Digite syso e em seguida Ctrl + espaço

  • O eclipse irá transformar o syso em System.out.println(); 

3.       Digite JOpt e em seguida Ctrl + espaço

  • O eclipse irá transformar o JOpt em JOptionPane, e irá inserir o import javax.swing.JOptionPane; no início do arquivo.

4.       Após a palavra JOptionPane, digite somente o caracter ponto (“.”).

  • O eclipse irá abrir uma caixa com as opções disponíveis do JOptionPane.
  • Digite após o JOptionPane. os caracteres sho. O eclipse irá filtrar a janela de opções com os comandos showXXX, conforme figura abaixo:

 

5. Para aumentar ou trocar a fonte no editor do Eclipse:

Window / Preferences / Appearance / colors and fonts

Java / Properties file editor text font (Edit…)

Livros relacionados:

Dominando Eclipse. Edson Gonçalves.

Eclipse IDE: Dicas e Truques. Edson Gonçalves.

Eclipse 3.1: Programando com Visual Editor. Ivan José de Mecenas Silva.

 

 

 

Funcionamento básico do Eclipse

 

Funcionamento básico do Eclipse para Programação Java

Disciplinas: Programação Orientada a Objetos e Estruturas de Dados Aplicadas

O Eclipse é uma IDE (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) muito utilizada para desenvolver programas em Java. Segue uma video aula que mostra o funcionamento básico do Eclipse para desenvolver programas Java.

Lembrando que, dependendo da velocidade da conexão, pode ficar parando o video, se isso acontecer, clique em pause, espere alguns minutos e depois clique em play novamente.

 

 

Livros relacionados:

Dominando Eclipse. Edson Gonçalves.

Eclipse IDE: Dicas e Truques. Edson Gonçalves.

 

 

 

 

 

 

Video aula para configurar as variáveis de ambiente no Java

Video aula para configurar as variáveis de ambiente no Java

Disciplina: Algoritmos

Segue abaixo a vídeo aula para ajudar meus alunos a configurarem as variáveis de ambiente para compilar e executar programas em Java através do prompt de comandos.

 

Lembrando que, dependendo da velocidade da conexão, pode ficar parando o vídeo. Se isso acontecer, clique em pause, espere alguns minutos e depois clique em play novamente.

 

 

 

 

 

 

 

Comandos de saída em Java

Veja neste artigo as formas mais comuns de apresentação de dados na linguagem Java 

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Toda linguagem de programação tem várias maneiras de apresentação de resultados. A linguagem Java não é diferente. E quem está iniciando os estudos nessa linguagem sempre tem dúvidas de qual maneira é melhor de utilizar. Neste artigo vou apresentar algumas sugestões. Neste momento será abordado apenas um comando de ambiente de interface gráfica (GUI – Graphical User Interface), da classe JOptionPane. É claro que, se estivermos utilizando esse ambiente, existem várias outras maneiras de apresentação de dados.    

1.   Métodos da classe System

A exibição de dados pode ser feita através dos métodos println() e print() do objeto out, disponível estaticamente por meio da classe System, que se encontra no pacote java.lang (portanto não é preciso importar essa classe para utilizar em nossos programas).

Segue o exemplo abaixo:

 

public class SaidaDeDados1 {

public static void main (String[] args) {

// Exemplo de saída com print e println:

String nome = “Jose Carlos Perini”;

int idade = 25;

float altura = 1.65f;

System.out.println(“Meu nome: “+ nome);

System.out.print(“Minha idade: “);

System.out.println(idade);

System.out.println(“Minha altura: ” + altura);

}

}

 

Abaixo, a compilação e execução do programa via prompt de comandos:

saidadedados1

 

 

 

 

 

 

 

 

Figura 1: Compilação e execução do programa no prompt

Vemos no exemplo que a diferença entre os comandos print e println é que o primeiro imprime na tela e não faz a quebra de linha. Já o comando println faz a quebra de linha após a impressão da mensagem.

Esses comandos de exibição de tela exibem no prompt de comandos. Caso esteja sendo utilizada uma IDE como o Eclipse, a exibição se dará no console.

2.   Método da classe JOptionPane

Uma das maneiras mais práticas de exibição de mensagens, mesmo para quem está começando a aprender a linguagem, é o método showMessageDialog da classe JOptionPane, que se encontra no pacote javax.swing (portanto, para a utilização dessa classe, devemos utilizar o comando import no início do programa).

Segue abaixo o mesmo exemplo utilizando esse tipo de exibição.

import javax.swing.JOptionPane;

public class SaidaDeDados2 {

public static void main (String[] args) {

// Exemplo de saída com print e println:

String nome = “Jose Carlos Perini”;

int idade = 25;

float altura = 1.65f;

JOptionPane.showMessageDialog(null,”Meu nome: ” + nome + “\n”+

“Minha idade: ” + idade + “\n”+

“Minha altura: ” + altura );

}

}

Abaixo, a compilação e execução do programa via prompt de comandos do novo exemplo:

saidadedados2

 

 

 

 

 

 

 

 

 

Figura 2. Compilação e execução do exemplo 2

Vemos no novo exemplo que a exibição é feita através de uma caixa de diálogo. Vemos também que foi utilizado um caractere de escape ‘\n’ para fazer a quebra de linha. Na chamada do método showMessageDialog utilizamos dois parâmetros. O primeiro indica a posição que a caixa de diálogo aparecerá (null significa que ficará no centro da tela). Se estivermos numa interface gráfica, no lugar de null colocamos em qual frame queremos que a mensagem seja apresentada.

O segundo parâmetro é exatamente o que queremos apresentar.

Como no primeiro exemplo, na mensagem nós concatenamos a mensagem com os valores das variáveis nome, idade e altura.

Esse método apresenta mais alguns parâmetros para podermos configurar, como mostra abaixo:

JOptionPane.showMessageDialog(null,”Meu nome: ” + nome + “\n”+

“Minha idade: ” + idade + “\n”+

“Minha altura: ” + altura, “Dados a meu respeito”, 2);

 

Dessa maneira, apresentará assim:

saidadedados3

 

 

 

 

 

Figura 3. Parâmetros do método showMessageDialog

O número 2 altera o ícone para sinal de alerta. As opções que temos são:

 

Propriedade

Descrição

Número correspondente

ERROR_MESSAGE Mensagem de erro 0
INFORMATION_MESSAGE Informação 1
WARNING_MESSAGE Alerta 2
QUESTION_MESSAGE Pergunta 3
PLAIN_MESSAGE Mensagem plana (sem ícone) Não tem número correspondente. Nesse caso, no lugar do número devemos colocar:JOptionPane.PLAIN_MESSAGE

Conclusão 

Nesse artigo mostramos as duas formas mais comuns de apresentação de dados na linguagem Java. O próximo artigo tratará das entradas de dados.

Comandos de entrada em Java – parte 2 (classe Scanner)

Veja neste artigo outra forma muito comum de entrada de dados na linguagem Java – a classe Scanner

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Prosseguindo o assunto entrada de dados na linguagem Java, vamos apresentar outras maneiras de input de informação para um programa Java.

1.    A classe Scanner

Scanner é uma classe que utilizamos para fazer a leitura de dados digitados no modo Console. A classe tem vários métodos, que recebem a String digitada e convertem para o tipo correspondente à variável que guardará essa informação.

A classe Scanner se encontra no pacote java.util. Por isso, para ser utilizada, devemos importá-la utilizando uma diretiva import.

A classe Scanner deve ser instanciada da seguinte forma:

Scanner entrada = new Scanner(System.in);

 

Métodos da classe Scanner:

– String nextLine() – Lê a próxima linha da entrada.

– String next() – Lê a próxima palavra da entrada (delimitada por um espaço em branco).

– int nextInt(), double nextDouble() e float nextFloat() – Lê a próxima sequência de caracteres que representa um número inteiro ou número de ponto flutuante.

Segue o exemplo abaixo:

entrada2Codigo

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 1: o código exemplo

Segue abaixo, a compilação e execução do programa via prompt de comandos:

entrada2

 

 

 

 

 

 

 

 

 

Figura 2: Entrada de dados com a classe Scanner

Vemos no exemplo que os dados são inseridos no console e atribuído às variáveis através dos métodos da classe Scanner. Observamos também que ao digitar a altura, devemos digitar com a vírgula em vez de ponto, como é comum no sistema decimal americano.

Se estivermos utilizando uma IDE como o Eclipse, a entrada dos dados será através da console. Segue abaixo o exemplo:

entrada2Eclipse

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figura 3: Utilizando a classe Scanner no Eclipse

 Conclusão

Nesse artigo mostramos como entrar com dados através da classe Scanner. É importante ressaltar que também essa forma é utilizada apenas em ambiente de desenvolvimento, para testar as funcionalidades do programa.

 

Formatando a saída de números decimais

Formatando a saída de números decimais em Java

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Nas minhas aulas os alunos me perguntam como tratar a saída de números decimais quando há muitas casas após a vírgula, ou até mesmo quando o resultado é uma dízima periódica. Há muitas maneiras de fazermos isso no Java, mas existem duas maneiras simples de resolvermos esse problema. Um deles é arredondando o número através do método Math.round().

A outra forma é criarmos uma máscara de formatação através de um objeto da classe DecimalFormat. Para explicar direito essas duas maneiras, eu criei uma video-aula. Segue abaixo:

Estruturas de Repetição em Java e C/C++

Veja neste artigo as estruturas de repetição que temos nas linguagens Java e C/C++

Disciplinas: Algoritmos, Programação Orientada a Objetos e Algoritmos e Programação de Computadores

O objetivo deste artigo é passar pelas estruturas de repetição nas linguagens Java e C/C++, uma vez que os comandos são iguais para as duas linguagens, só mudando os comandos de entrada e saída. Estruturas de repetição são blocos de comandos que são repetidos diversas vezes de acordo com determinadas condições.

  • Uma estrutura de repetição é um fluxo de controle utilizado para decidir quantas vezes determinado conjunto de comandos se repetirá dentro do programa.
  • Uma estrutura de repetição determina qual conjunto de comandos ou bloco será executado após uma condição ser avaliada.
  • Enquanto esta condição estiver retornando verdadeiro, o conjunto de comandos será executado, parando somente quando o resultado da avaliação da condição for falsa.

Nas linguagens Java e C/C++, temos as seguintes estruturas de repetição: for, while e do… while.

 

  1. For
  • Uma estrutura de repetição for pode ser utilizada quando o algoritmo precisa ter definido a quantidade de vezes que um conjunto de comandos deve ser executado.
  • Neste caso, a variável de controle, sua inicialização e finalização bem como sua atualização fazem parte do cabeçalho da estrutura de repetição for e o conjunto de comandos dentro da estrutura é executado a quantidade de vezes determinada no cabeçalho desta estrutura.
  • Note que nesta estrutura de repetição, pode ocorrer do conjunto de comandos não ser executado nenhuma vez.

Exemplo da estrutura for:

Vamos supor que queremos somar 10 números inteiros digitados pelo usuário, e mostrar o total da soma e a média dos números digitados.

 

ExemploFor

Figura 1. Exemplo de for

 

Vemos neste exemplo o cabeçalho da estrutura for na linha 6. O cabeçalho se divide em três partes. A primeira parte é a inicialização da variável de controle i. É essa variável que controlará a quantidade de vezes que o bloco de comandos será executado. Na segunda parte está a condição para que o bloco de comandos seja executado. O bloco será executado sempre que essa condição (i < 10) for verdadeira. Na terceira parte encontra-se o incremento da variável de controle (i++ ou seja, i = i+1).

Nas linhas 7 e 8 está o bloco de comandos que será executado tantas vezes quanto a condição for verdadeira.

No exemplo da figura 1 foram digitados os números de 1 a 10. Dentro da estrutura os números foram somados e guardados na variável soma. Após a estrutura de repetição foi calculada a média dos números digitados, e em seguida apresentados os resultados da soma e da média. Veja abaixo o mesmo exemplo na linguagem C/C++.

ExemploForC

Figura 2. Exemplo de for em C/C++

Segue abaixo o teste de mesa do exemplo.

TesteMesaFor1

Figura 3. Teste de Mesa

O objetivo do teste de mesa é testar o algoritmo para verificar se está correto. A ideia é seguir os passos do programa como se estivesse executando.

 

  1. While

 

A estrutura while tem a mesma finalidade da estrutura for, com algumas características diferentes. O while não tem um cabeçalho como na estrutura anterior. Portanto, a inicialização da variável de controle deve ser feita antes da estrutura. E também o seu incremento deve ser feito após a execução do bloco de comandos e antes de fechar a chave da estrutura. Segue abaixo, o mesmo exemplo utilizando o while.

ExemploWhile

Figura 4. Exemplo de while.

No mesmo exemplo utilizando a estrutura while, verificamos que na linha 6 está a inicialização da variável de controle i. E na linha 10 está o incremento da variável (i++).

Percebemos, então, que o que fazemos com o for podemos fazer também com o while. Mas ambos têm as suas características bem peculiares. Quando sabemos qual a melhor estrutura para utilizar? O for é a melhor estrutura quando sabemos a quantidade de vezes que os comandos serão executados. Por exemplo, se quero somar 10 números, eu sei que será executado 10 vezes, tendo a variável i iniciando do 0 e terminando quando i chegar a 10. Veja abaixo o mesmo exemplo em C/C++.

ExemploWhileCFigura 5. Exemplo de while em C/C++

Mas e se eu quiser que o usuário vá digitando vários números inteiros para somar, e só parar quando digitar 0? Neste caso o while é mais apropriado. Segue abaixo um exemplo.

ExemploWhile2

Figura 6. Exemplo de while 2

Neste exemplo, a variável de controle não é mais o i, mas o número que está sendo digitado. Enquanto não digitar 0 o laço não encerrará. Nem precisaria do i se eu não quisesse calcular a média. Percebe-se que o while já inicia verificando se o n é diferente de zero. Então há a necessidade de atribuir um valor a esse variável, desde que não seja zero. No exemplo acima foram digitados os números 10, 15, 7 e 0.

ExemploWhile2C

Figura 7. Exemplo de while 2 em C/C++

Do … While

A estrutura do…while também tem a finalidade de repetir os comandos dentro de sua estrutura. A diferença entre esta e as outras estruturas vistas é que o teste da condição é feito ao final dos comandos. Segue abaixo o mesmo exemplo com a estrutura do…while.

ExemploDoWhile

Figura 8. Exemplo de do…while

Neste caso não há a necessidade de inicializar a variável n. A diferença básica entre o do…while e os dois anteriores é que, pelo menos uma vez o bloco de comandos é executado, pois a condição é testada após a execução dos comandos. Veja abaixo o exemplo em C/C++.

ExemploDoWhileCFigura 9. Exemplo de do..while em C/C++

  1. Controle dos laços

 Apesar dos laços terem a sua condição de parada, que é quando a condição testada for falsa, podemos utilizar alguns comandos para interromper essa iteração. Segue abaixo:

  • break

O break quebra o laço antes que a condição seja satisfeita. Por exemplo, no exemplo acima eu poderia verificar se o n é igual a 0. Se acaso positivo, dou um comando break. Este comando simplesmente interrompe o laço naquele momento.

  • continue

O comando continue interrompe a iteração em que está e continua o laço. Por exemplo, no programa anterior, vamos supor que eu quero somar todos os números digitados menos o número 10. Eu posso verificar se n é igual a 10. Se for, dou o comando continue antes de somar.

 

Conclusão

 

Nesse artigo mostramos as estruturas de repetição e suas particularidades nas linguagens de programação Java e C/C++. O mais importante no aprendizado de qualquer linguagem de programação é exercitar bastante o que aprendemos. Programação se aprende com bastante exercício e bastante prática. Bons estudos!

Convenções de Código Java

Convenções de Código para Programação Java

Disciplinas: Algoritmos, Programação Orientada a Objetos e Estruturas de Dados Aplicadas

Muitos alunos, quando começam a aprender Java dizem que a linguagem é muito difícil, por ser case-sensitive, isto é, diferencia maiúsculas de minúsculas. Eu digo que, se a gente aprender e se acostumar com as convenções de código, isto é, as regras para desenvolver os programas, não terá mais esse problema, saberá o que deve ser maiúscula e o que deve ser minúscula. Segue abaixo essas regras.

Classes e interfaces: A primeira letra deve ser maiúscula e, se várias palavras forem escritas juntas para formar o nome, a primeira letra de cada palavra interna deve ser maiúscula (um formato chamado em inglês de “camelCase”). Para classes, os nomes devem normalmente ser substantivos. Exemplos: Cliente,  ContaCorrente Para interfaces, os nomes devem normalmente ser adjetivos. Exemplo: Runnable – Executável

Métodos: A primeira letra deve ser minúscula, e depois as primeiras letras das outras palavras devem ser maiúsculas.

Por exemplo: getNome, setNumero, calculoMedia 

Variáveis: Como nos métodos, começando com a letra minúscula. A Sun recomenda usar nomes curtos e significativos. Exemplos: mediaBim, nota, nome 

Constantes: As constantes Java são criadas marcando-se variáveis como static e final. Elas devem ser nomeadas usando-se letras maiúsculas com caracteres underscore como separadores. Exemplos: ALTURA_MINIMA, ALIQUOTA  O restante da codificação Java (palavras reservadas, declaração de tipos primitivos) deve ser tudo minúsculo. 

 

Fonte: SCJP Certificação Sun para Programador Java 6 – Kathy Sierra, Bert Bates – Alta Books

Prof. Perini – Programação Java

Prof. Perini – Programação Java

Email: jcperini@uol.com.br

 

 

JavaServer Faces – Configuração e introdução

Veja neste artigo o que é o framework JSF, como configurar e iniciar um projeto

Objetivo do artigo

O objetivo desse artigo é apresentar o framework JavaServer Faces como uma ferramenta poderosa de desenvolvimento Java para a plataforma JEE (Java Enterprise Edition). Serão realizadas a sua instalação e configuração para iniciar o desenvolvimento e os passos necessários para a criação de um projeto dinâmico baseado em JSF utilizando uma página simples.

Framework

Entre as linguagens de programação utilizadas atualmente, principalmente as linguagens com o paradigma de orientação a objetos, são muito utilizados os frameworks. A palavra framework tem várias definições, embora nenhuma definição entre em contradição com as demais. A minha definição é a seguinte: é um conjunto de classes que atendem a diversas funcionalidades para um tipo de aplicação específica. O framework atende ao conceito de orientação a objetos, que é a reutilização de código. Portanto cada framework tem uma série de códigos já prontos que vão nos ajudar em nossos projetos.

Os frameworks trazem alguns benefícios importantes para o desenvolvimento de uma aplicação ou projeto: são modulares, reusáveis e extensíveis, assumindo o controle da execução invocando métodos da aplicação quando necessitados.

JavaServer Faces

O JavaServer Faces (JSF) é a especificação de um framework de componentes para desenvolvimento web em Java. Pelo fato do JSF ser uma especificação do JCP (Java Community Process), onde grandes empresas participaram de sua definição e desenvolvimento, tornou-se um padrão de mercado, e as melhores ferramentas de desenvolvimento comportam perfeitamente suas especificações.

Algumas características importantes do JSF:

– Modelo de programação orientado a eventos.

– É um framework de componentes, portanto visa abstrair o desenvolvimento de interfaces

– Implementa o padrão MVC (Model-View-Controller) de desenvolvimento.

– É apenas uma especificação, não possui um produto concreto. Para utilizá-lo, precisamos recorrer a uma implementação do JavaServer Faces.

Algumas novidades importantes do JavaServer Faces 2.0:

– Utilização de Ajax para integração.

– Facelets – utilização do xhtml no lugar do JSP (30% mais rápido).

– Suporte a anotações para configurações (não precisa escrever no documento XML algumas configurações do projeto).

– Novos escopos dos beans (a parte C do MVC).

– Navegação implícita e condicional.

– Criação de componentes customizados.

Baixando e instalando os arquivos

Vamos deixar de lado as definições e teorias e vamos partir para a prática. Para o nosso exemplo de aplicação com JSF vamos baixar alguns arquivos que utilizaremos no projeto. Muitas literaturas e cursos referentes a esse assunto ensinam a utilização do framework sem a utilização de ferramentas de desenvolvimento (as chamadas IDE’s, como Eclipse ou NetBeans). Esse estudo é importante para aprendermos como as coisas funcionam a um nível mais baixo, utilizando comandos no prompt. Mas como eu sou da opinião que as ferramentas estão aí para nos ajudar (como o próprio JSF), vamos utilizar uma ferramenta. Mesmo porque, é o que se está utiliza no mercado.

Para o nosso exemplo vamos fazer o download dos arquivos que serão utilizados. Sugiro que criemos uma pasta chamada softwares e coloquemos os arquivos ali.

JDK

O JDK (Java Development Kit) é o pacote de programas utilizado para desenvolver programas Java. Ele instala o JVM (Máquina Virtual Java), que é utilizado para desenvolver os programas. No Kit está incluso o JRE (Java Runtime Environment), que é utilizado para executar os programas Java.

Para fazer o download do JDK, vamos ao site da Oracle: http://www.oracle.com.

Clicamos em Downloads e escolhemos Java for Developers.

oracle1

Figura 1: Tela de download do JDK

 

A seguir clicamos no botão Java Download. No momento deste artigo estamos na versão Java 7 Atualização 45.

Oracle2

Figura 2: 2ª tela para o download do JDK

 

Em seguida devemos aceitar as condições da licença de uso e escolher o sistema operacional que vamos trabalhar. Como o sistema operacional do meu computador é o Windows 32 bits, vou escolher o JDK referente a esse sistema operacional (Windows x86).

Oracle3

Figura 3: 3ª tela de download do JDK

 

Eclipse

O Eclipse é uma IDE de desenvolvimento com as seguintes características: é leve, gratuito, largamente utilizado, expansível com o uso de plugins e com suporte à tecnologia Java.

Vamos entrar no site do Eclipse para fazer o download do programa mais recente. O endereço é www.eclipse.org/downloads. Escolhemos a opção Eclipse IDE for Java EE Developers, para Windows 32 bits como é mostrado na figura a seguir. Essa opção é escolhida por estar preparada para desenvolvimento de aplicações para web.

Eclipse Tela1

Figura 4: Tela de download do Eclipse

 

Em seguida, clicar no botão de download da aplicação.

Eclipse Tela2

 

Figura 5: 2ª tela de download do Eclipse

 

A versão mais recente no momento desse artigo é o Eclipse Kepler. Mais adiante será feita a instalação do Jboss Tools que será utilizado no projeto exemplo.

JavaServer Faces 2

O framework JavaServer Faces que será utilizado é o 2.2.4 do Projeto Mojarra. Para o seu download vamos ao site HTTP://javaserverfaces.java.net. É só clicar em Download 2.2.4 Now!

JSF2

Figura 6: Página de download do JavaServer Faces

 

Apache Tomcat 7.0

É um servidor web Java, que funciona como container de servlets. Tem suporte a JSF 2.2 e servlets 3.0.

A versão a ser utilizada é a 7.0. Vamos entrar no site HTTP://tomcat.apache.org e vamos efetuar o download do arquivo compactado. (zip). Vamos escolher a versão 7.0, conforme figura a seguir.

Tela Apache

Figura 7: Primeira tela do download do Tomcat

 

Apache Tela 2

Figura 8: Escolhendo o arquivo zip

 

Os downloads acima mostram os caminhos e sites disponíveis no momento em que este artigo está sendo escrito. Esses caminhos podem ser alterados com o decorrer do tempo, mas, basicamente, a ordem de busca desses arquivos não se alteram, o que pode alterar é o layout dos sites e o local onde encontraremos o link correspondente ao arquivo procurado.

Instalação dos arquivos

Feitos os downloads, vamos para as instalações dos programas.

JDK – dar um duplo-clique no arquivo de instalação. É claro que essa instalação é só para quem ainda não tem a JDK instalado. Se tiver, mas for uma versão anterior que a versão 7 aconselho a substituir por essa versão. A instalação é simples, do tipo next-next.

Eclipse – O Eclipse não é instalável. É um arquivo “zipado”. É só descompactar, que estará pronto para ser utilizado, com seus arquivos distribuídos em pastas, como mostra a imagem seguinte. É só clicar no ícone do eclipse, que abrirá o programa.

Eclipse instalado

Figura 9: Pastas do Eclipse

 

Tomcat Apache – O arquivo que temos também não é instalável, basta descompactar e estará pronto. Após descompactar o arquivo, podemos testar o servidor, dando duplo-clique no programa startup que se encontra na pasta bin.

pasta bin do apache

Figura 10: arquivo que inicializa o tomcat (startup)

 

apache startado

Figura 11: tomcat inicializado

 

JSF – O JSF é um arquivo jar que será incluído dentro do projeto, portanto não é instalável. Apenas devemos deixá-lo em um local fácil de ser encontrado. Eu sugiro que seja copiado em uma pasta chamada Bibliotecas.

Entrando no Eclipse e instalando o plug-in do Jboss Tools

Vamos entrar no Eclipse e instalar o Jboss Tools que utilizaremos para criar as páginas xhtml e utilizar paletes de componentes do JSF. Não é obrigatória a utilização do Jboss Tools, mas vamos fazer essa instalação para mostrar como buscar e instalar um plug-in através da opção Marketplace do Eclipse.

Com o Eclipse aberto e a Internet conectada, vamos escolher no menu a opção Help e em seguida Eclipse Marketplace. Em find, escrever: Jboss Tools e dar ‘enter’. Procurar entre os programas que encontrar o Jboss Tools para sua versão do Eclipse (no nosso caso, o Kepler) e clicar em Install. Ele encontrará o plug-in procurado e pedirá confirmação. Ao confirmar, pedirá para aceitar os termos de uso. É só aceitar, que será instalado. A instalação demora um pouco, mas enquanto instala pode-se fazer outras coisas. Após a instalação, será pedido para reiniciar o Eclipse.

Jboss

Figura 12: Instalação do Jboss Tools

 

Exemplo de aplicação

Criando um projeto dinâmico

Vamos criar um projeto dinâmico e configurá-lo para utilizar JavaServer Faces. Em File escolher New / Dynamic Web Project. Se não tiver na lista apresentada, ir a Other / Web que encontrará lá. Na próxima tela, configurar conforme a figura abaixo e clicar em Next / Next.

Projeto Dinâmico tela 1

Figura 13: Tela de criação de Projeto Dinâmico

 

Na tela Web Module marcar a opção Generate web.xml deployment descriptor e clicar em Next.

Na tela JSF Capabilities será configurada a biblioteca do JSF e será incluído o arquivo jar que obtivemos do JSF 2. Em Type selecionar User Library. Clicar no ícone Manage librarys…, na tela User Libraries clicar em New e criar a biblioteca JSF2. Em seguida clicar em Add External Jars e buscar o arquivo jar do JSF. Clicar em OK, que voltará para a tela anterior. Em seguida, marcar a biblioteca que foi criada. Em URL Mapping Patterns, remover o que está e adicionar *.xhtml, como mostra a figura abaixo. Em seguida clicar em Finish. O projeto está criado.

Projeto Dinâmico Tela 2

Figura 14: Tela JSF Capabilities

 

Na pasta Webcontent/WEB-INF do projeto encontra-se o arquivo web.xml, que contém as configurações do projeto. Artigos posteriores entrarão em maiores detalhes. Para esse exemplo, vamos abrir esse arquivo e na tag <welcome-file-list> deixaremos apenas a welcom-file índex.xhtml, como mostra a seguir.

webxml

Figura 15: Arquivo web.xml do projeto dinâmico

 

Criando um Managed-bean

Um managed-bean é uma classe em Java que contém propriedades (atributos) que trabalhará na camada C do padrão MVC. Vamos criar uma classe que contém um atributo mensagem para podermos chamá-la numa página xhtml.

ControlePrincipal

Figura 16: Managed-bean do projeto

 

Na figura acima temos um bean (com um atributo, o construtor e o o getter e setter).

As anotações das linhas 6 e 7 servem para evitar sejam feitas no arquivo de configurações faces-config.xml.

@ManagedBean(name=”controlePrincipal”) tem como função declarar que a classe é um ManagedBean. O atributo name não é obrigatório, ele indica o nome com que esse bean será chamado nas páginas do projeto. Se não tiver esse atributo, será chamado pelo nome da classe.

@RequestScoped tem como função indicar que o tempo de vida desse bean é apenas durante a requisição que a chama.

Criando a página index.xhtml

Para criar a página índex.xhtml, clicar com o botão direito em cima de WebContent do projeto, como mostra a figura abaixo.

criandoXhtml

Figura 17: Tela New XHTML Page

 

Se não tiver o Jboss Tools instalado, não terá essa opção. Deverá então escolher HTML File e alterar sua extensão para XHTML. Em seguida, colocar o nome índex.xhtml e clicar em Next. Na próxima tela, devemos escolher o XHTML template (Blank JSF Page).

XHTML Template

Figura 18: Escolha do template

indexxhtml

 

Figura 19: índex.xhtml

Nas linhas 3 a 5 estão as taglibs que serão utilizadas no código. O template JSF já traz essas indicações. Portanto em todas as páginas JSF estarão essas linhas. O atributo xmlns indica a biblioteca que estará disponível no arquivo (namespace).

Na linha 9 estamos utilizando uma tag de HTML (h:outputText) que está na biblioteca indicada na linha 3.

O atributo value está buscando a mensagem que está no managed-bean ControlePrincipal. É importante dizer que a propriedade mensagem está encapsulada, portanto está sendo chamado aí o seu getter (getMensagem).

Executando o projeto

Para executar essa página, podemos clicar com o botão direito do mouse em cima do nome do projeto, e escolher a opção Run As / Run on Server.

Execução 1

Figura 20: Executando o projeto

 

Na próxima tela será pedido para configurar o servidor que será utilizado. Na pasta Apache, vamos escolher a versão 7.0.

Execução 2

Figura 21: Configurando o servidor Tomcat v7.0

 

A seguir podemos clicar em Finish. Será executada a página índex.xhtml, que foi configurada para ser a primeira página do projeto. Se copiarmos o endereço http://localhost:8080/PrimeiroProjetoJSF/ e colarmos no browser, ele deverá executar também.

Execução 3

Figura 22: Tela de execução

 

Conclusão

Vimos nesse artigo, passo a passo, como instalar os programas, configurar e iniciar a execução de um projeto simples utilizando o JavaServer Faces 2 e o Jboss Tools através do Eclipse, com o Apache Tomcat 7.0. Artigos posteriores mostrarão com detalhes os componentes das taglibs html e core que constam no framework JSF.

 

Referências Bibliográficas

Décio Heinzelmann Luckow e Alexandre Altair de Melo. Programação Java para a Web, Novatec Editora, 2010.

Jorge Luis Boeira Bavaresco. Curso Online de JSF (JavaServer Faces)  Devmedia Cursos, 2013/2014. http://www.devmedia.com.br/curso/curso-online-de-jsf-java-server-faces/393

 

Comandos de entrada em Java – parte 1

Veja neste artigo uma das formas mais comuns de entrada de dados na linguagem Java – a entrada por argumentos

Outro dia eu escrevi um artigo mostrando algumas formas de apresentar resultados na linguagem Java. O objetivo deste artigo seria mostrar algumas formas de entrada de dados. Mas como eu vi que o artigo ficaria muito extenso, vou dividir e criar um artigo para cada tipo de entrada de dados. Neste artigo mostrarei como utilizar a entrada por argumento.

Entrada de dados por argumentos

A entrada de dados por argumento é bem básica. Os dados são inseridos no programa na hora em que damos o comando para executá-lo. Esses dados são recebidos através de um vetor de strings que é criado na lista de argumentos do método main.

Segue o exemplo abaixo:

public class EntradaDeDados1 {

public static void main (String[] args) {

// Exemplo de entrada de dados por argumento

String nome = args[0];

int idade = Integer.parseInt(args[1]);

float altura = Float.parseFloat(args[2]);

System.out.println(“Seu nome: “+ nome);

System.out.println(“Sua idade: ” + idade);

System.out.println(“Sua altura: ” + altura);

}

}

Segue abaixo, a compilação e execução do programa via prompt de comandos:

entrada1

 

 

 

 

 

 

Figura 1: Entrada de dados por argumento

Vemos no exemplo que os dados são inseridos em forma de argumentos, no momento da chamada do programa. Nesse momento é criado na memória, um vetor de strings chamado args com 3 elementos, onde o nome é guardado no índice 0 do vetor, a idade no índice 1 e a altura no índice 2.

Ao recuperarmos os valores do vetor para guardar nas variáveis correspondentes, no caso de idade e altura, é preciso fazer a conversão para os seus tipos de dados. Por isso usamos Integer.parseInt (método parseInt da classe Integer) que converte de String para int, e Float.parseFloat (método parseFlot da classe Float) que converte de String para float.

Caso estejamos utilizando uma IDE como o Eclipse, os argumentos serão inseridos conforme figura abaixo.

entrada1Eclipse

 

Figura 2: Entrando com argumentos pelo Eclipse

 

Para chegar a essa tela, é só escolher: Run / Run configurations…

Conclusão

Nesse artigo mostramos como entrar com dados por argumento. É importante ressaltar que nós só usamos essa forma de entrada em ambiente de desenvolvimento, para testar as funcionalidades do programa.