2. Sockets Meio pelo qual aplicações Java acessam serviços pela rede; Podem ser usados para transferência de dados usando TCP ou UDP; É possível escrever clientes (que fazem conexões) e servidores (que aceitam conexões);
3. Sockets clientes São criados através da classe Socket, usando um host e porta na qual o socket deve se conectar; São canais de comunicação bidirecional, onde o código pode escrever e ler informações ao mesmo tempo;
4. Sockets servidores Funcionam abrindo uma porta no host onde estão executando e aceitando conexões nessa porta. Apenas um único servidor pode fazer o “bind” numa porta para cada placa de rede, não é possível ter vários servidores em uma única porta; Quando aceitam conexões, essas conexões são Sockets comuns para os clientes;
5. Threads e programação concorrente Poder de processamento não deve aumentar no longo prazo; Computadores com múltiplos cores são uma necessidade real; Threads e programação concorrente são a saída para o uso desses recursos disponíveis;
6. Threads –oldstyle Pegue um recurso específico; Crie barreiras de acesso pra ele (synchronized); Faça N threads utilizarem esse recurso;
7. Threads – new style Pegue um conjunto de informações; Quebre elas em pedaços que falam sentido; Quebre cada pedaço em uma unidade de computação; Execute as unidades de computação e depois reúna os resultados;
8. Programação concorrente... ...não é sobre contenção de dados; ...não é sobre compartilhar informações; ...não é sobre manter estado em objetos; …nãoésobrefazertudoficarmaisrápido;
9. Quando não usar threads? Quando o seu problema não for “quebrável” em pequenos pedaços; Quando não for possível executar os vários pedaços de forma concorrente (eles dependem uns dos outros); Quando tudo o que você precisa fazer deve ser sincronizado;
10. Criando um par cliente/servidor de chat em Java Usando sockets, threads, XML, arquivos...