Java
O Java Developer Kit (JDK) é um conjunto de ferramentas para
programação na linguagem Java.
As mais importantes são
o javac que compila os programas e
o java que lança as aplicações.
javac e java são suficientes para construir pequenos programas,
mas para programas de maior dimensão,
é muito útil ter:
-
Uma ferramenta que dê suporte a todas as tarefas de forma integrada,
incluíndo a gestão de dependências - Maven;
-
Um ambiente que apoie o programador em todas as tarefas - Eclipse;
-
Bibliotecas para sistematizar os testes - JUnit - e
para simular objectos durante os testes - JMockit.
A tabela seguinte resume as utilizações mais comuns do JDK, Maven, e Eclipse:
Maven
A ferramenta Maven é, talvez,
a mais importante logo a seguir ao próprio JDK
(sim, é mais importante que o Eclipse).
A utilização do Eclipse é opcional,
mas o Maven é considerado obrigatório.
O Maven desempenha o papel muito importante de
explicitar dependências de outros programas e
de automatizar toda a construção.
Todos os programas devem ter a configuração Maven
- pom.xml -
para que possam ser (re)construídos de forma repetível.
-
Exemplo de aplicação Java simples
- utiliza o Maven para compilar e executar
-
Estudar o código fonte e o ficheiro pom.xml.
-
Compilar e executar o programa,
seguindo as instruções no ficheiro readme.txt.
Experimente através da linha de comando mvn ...
Eclipse
O Eclipse pode ser configurado por cima do JDK (Eclipse/JDK),
ou então por cima também do Maven (Eclipse/Maven/JDK).
-
Voltar ao exemplo de aplicação Java simples:
-
Configurar o projecto no Eclipse,
seguindo as indicações no ficheiro readme.txt.
-
Experimente executar através da linha de comando mvn ... e
executar através do Eclipse (opção "run").
-
Experimente também executar através do Maven dentro do Eclipse
(m2eclipse): "Run As", "Maven Build"
-
Experimente as funcionalidades de depuração:
- Criar um breakpoint no programa e
fazer debug.
- Alterar os argumentos do programa e
inspeccionar as variáveis durante a execução.
Sockets
Um socket é uma extremidade de uma ligação através de uma rede de computadores.
Atualmente,
a comunicação entre computadores faz-se quase sempre com IP (Internet Protocol).
Os sockets mais comuns usam TCP (Transmission Control Protocol),
que estabelecem uma ligação entre cliente e servidor.
Um endereço de socket é composto por um endereço IP e
por um número de porto.
O Java disponibiliza uma biblioteca de sockets que
está disponível no pacote java.net.
O exemplo seguinte
- servidor e cliente -
ilustra a comunicação entre dois programas usando esta biblioteca.
Os sockets estão na base da programação da comunicação na World Wide Web.
O porto 80 é reservado para comunicação com o HTTP
(HyperText Transfer Protocol).
Exercício a resolver até ao fim da aula
- Obter o exemplo de sockets TCP/IP.
Neste caso temos dois programas que colaboram entre si.
-
Configurar os projectos no Eclipse
-
Estudar o código fonte e
os ficheiros pom.xml do servidor e do cliente.
-
Compilar e executar o servidor e cliente,
seguindo as instruções no ficheiro readme.txt
Problemas?
-
Analisar o output do Maven,
em especial as linhas começadas por [WARNING]:
-
Qual foi a causa da exceção?
-
Que exceção é que foi lançada?
-
Em que linha do código do cliente é que foi lançada a exceção?
- Ou será um problema na configuração dos argumentos?
- Compilar e executar o servidor até funcionar sem erros.
-
Em casos mais complicados,
pode usar-se o depurador (debugger):
-
Criar um breakpoint no servidor,
na linha desejada
-
Inspeccione o valor das variáveis relevantes
Problema resolvido?
Sim!
Retomar o exercício:
-
Modificar os programas para que o servidor
responda ao cliente com uma mensagem de confirmação.
-
... o resto do enunciado será entregue no início da aula.
Entrega da solução
A solução do exercício desta aula não conta para a avaliação,
mas deverá ser entregue da forma descrita abaixo.
Fénix, Avaliação, Projetos, mini Exercício 0
A solução completa deverá ser submetida no Fénix
antes do fim da sua aula de laboratório.
Trabalhos submetidos depois da hora de fim da aula não serão considerados.
Ter atenção ao seguinte:
- Só serão aceites trabalhos de estudantes que estiveram presentes no laboratório.
- Assegure-se que a solução é enviada em formato ZIP e
que não contém código compilado.
(faça mvn clean antes de zipar)
- Deverá incluir um ficheiro respostas.txt
com as respostas (breves) às perguntas do enunciado do exercício.
- Deverá também incluir um ficheiro instrucoes.txt
com resumo da funcionalidade implementada e
com instruções para colocar o programa a funcionar como esperado.
Por exemplo:
- A funcionalidade pedida foi total/parcialmente implementada ...
- O servidor deve executar com o comando:
mvn package exec:java
- O cliente deve executar com o comando:
mvn compile exec:java
Vai valer a pena regressar a esta aula mais tarde e
aprender mais.