Labs SD >
The course project is developed by relying on the following tools: Java (programming language and platform), Maven (build), and a Java IDE (development environment).
This page presents an introductory text to each of these tools and a programming exercise.
Before you start, make sure to have installed the required software.
O JDK (Java Developer Kit) é 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.
Os javac e java são suficientes para construir pequenos programas. No entanto, para programas de maior dimensão, é muito útil ter:
A tabela seguinte resume as utilizações mais comuns do JDK, Maven, e Eclipse:
A programação em Java para Sistemas Distribuídos deve ter em conta a concorrência e sincronização, uma vez que os servidores costumam tratar pedidos de vários clientes em simultâneo.
O tratamento de exceções é também um aspeto muito importante, e que irá ser especialmente importante para lidar com problemas de comunicação.
A ferramenta Maven é a mais importante logo a seguir ao próprio JDK. A utilização do Maven é obrigatória em SD para permitir a construção dos projetos de forma automática na linha de comandos.
O Maven desempenha o papel muito importante de automatizar toda a construção do código e de explicitar dependências de outros programas. Todos os programas devem ter a configuração Maven no ficheiro pom.xml para que possam ser (re)construídos de forma repetível. Os programas devem ter também um ficheiro README com instruções de construção e de execução.
Tanto o Eclipse quanto o IntelliJ podem ser configurados em cima do JDK ou do Maven.
Uma tomada (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 estabelece uma ligação entre cliente e servidor. Um socket é identificado 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.
Os sockets definem uma interface de programação, mas não definem o conteúdo e significado das mensagens que vão ser trocadas. Para isso é necessário um protocolo de comunicação. Um protocolo é um sistema de regras que define uma convenção para permitir que diferentes entidades troquem informação de forma não ambígua. Assim tem que ser na comunicação em sockets. É preciso "dizer" como é enviado um pedido, quando termina o pedido, quando chega a resposta, quando já foi recebida, e assim por diante.
Um exemplo de protocolo é o HTTP (HyperText Transfer Protocol) que está na base da comunicação na WWW (World Wide Web).
Pode consultar também a Secção 1.6 do livro da cadeira sobre a World Wide Web e Sockets.
O ponto de partida para o exercício ilustra a comunicação entre dois programas Java usando a biblioteca de sockets:
Java Sockets
Problemas? Observar atentamente as exceções produzidas.
Problema resolvido?
Sim ou
Não :)
Retomar o exercício:
© Docentes de Sistemas Distribuídos,
Dep. Eng. Informática,
Técnico Lisboa