Java Facil
268 pág.

Java Facil


DisciplinaProgramação II444 materiais6.958 seguidores
Pré-visualização50 páginas
null");
}
System.out.println("Fim da execucao com sucesso");
}
}
2) Teste o código anterior, mas usando synchronized ao adicionar na coleção:
public void run() {
for (int i = comeco; i < fim; i++) {
synchronized(sqls) {
sqls.add(&quot;SQL&quot;+i);
}
}
}
3) Sem usar o synchronized teste com a classe Vector (que é uma Collection).
4) Novamente sem usar o synchronized, teste usar HashSet e ArrayList, em vez de Vector. Faça vários
testes, pois as threads vão se entrelaçar cada vez de uma maneira diferente, podendo ou não ter um efeito
inesperado.
No capítulo de Sockets usaremos threads para solucionar um problema real de execuções paralelas.
Capítulo 17 - Programação Concorrente e Threads - Exercícios avançados de programação concorrente e locks - Página 217
CAPÍTULO 18
E agora?
\u201cA primeira coisa a entender é que você não entende.\u201d
\u2013 Soren Aabye Kierkegaard
Onde continuar ao terminar os exercícios de \u2018Java e Orientação a Objetos\u2019.
18.1 - Praticando Java e usando bibliotecas
A melhor maneira para fixar tudo o que foi visto nos capítulos anteriores é planejar e montar pequenos
sistemas. Pense na modelagem de suas classes, como e onde usar herança, polimorfismo, encapsulamento e
outros conceitos. Pratique o uso das APIs mais úteis do Java integrando-as ao seus sistemas.
O curso FJ-16 é um laboratório que além de demonstrar o uso diversas APIs e boas práticas, vai mostrar
diversos design patterns e seus casos de uso. Para quem é aluno da Caelum, a apostila do FJ-16 está disponível
para download e pode ser baixada em: http://aluno.caelum.com.br/
18.2 - Web
Um dos principais focos de Java, hoje em dia, é onde a maior parte das vagas existem: programando para
a web. Entram aqui tecnologias como Servlets, JSPs e ferramentas famosas do mercado, como o Struts.
A Caelum oferece o curso FJ-21, onde você pode estudar os tópicos necessários para começar a trabalhar
com Java na web usando as melhores práticas, design patterns e tecnologias do mercado. Essa apostila
também está disponível para download.
18.3 - Certificação
Vimos com profundidade diversos tópicos da linguagem Java, mas entrar em detalhes nos assuntos contidos
até agora, iriam no mínimo tornar os capítulos quatro vezes maior do que já são.
Os tópicos abordados (com a adição e remoção de alguns) constituem boa parte do que é cobrado na
certificação oficial para programadores da Oracle/Sun.
Para maiores informações sobre certificações, consulte a própria Sun, o javaranch.com ou o guj.com.br,
que possui diversas informações sobre o assunto. A Caelum oferece um curso de preparação para a prova
de certificação como programador em Java pela Oracle/Sun, o FJ-19. O objetivo desse curso vai além da
certificação, pois vai se aprofundar bastante na linguagem sem ter de decorar regras, e sim entendendo como
e por que a sintaxe é desta maneira.
218
Material do Treinamento Java e Orientação a Objetos
18.4 - Revistas
Diversas revistas no Brasil e no exterior estudam o mundo java como ninguém, e podem ajudar o iniciante a
conhecer muito do que está acontecendo lá fora nas aplicações comerciais.
18.5 - Grupos de Usuários
Diversos programadores com o mínimo ou máximo de conhecimento se reúnem online para a troca de
dúvidas, informações e idéias sobre projetos, bibliotecas e muito mais. São os grupos de usuários de java.
Um dos mais importantes e conhecidos no Brasil é o GUJ: http://www.guj.com.br
18.6 - Falando em Java - Próximos módulos
O \u2018Falando em Java\u2019 não pára por aqui. A Caelum oferece uma grande variedade de cursos que você pode
seguir. Alguns dos mais requisitados:
FJ-19: Preparatório para Certificação Java
FJ-21: Java para desenvolvimento Web
FJ-16: Laboratório Java com Design Patterns, XML e Testes
FJ-25: Persistência com JPA2 e Hibernate
FJ-26: Laboratório Web com JSF2 e CDI
FJ-28: Desenvolvimento ágil para Web 2.0 com VRaptor, Hibernate e AJAX
FJ-31: Enterprise JavaBeans (EJB)
FJ-57: Desenvolvimento móvel com Google Android
FJ-91: Arquitetura e Design de Projetos Java
RR-71: Desenvolvimento ágil para Web 2.0 com Ruby on Rails
RR-75: Ruby e Rails avançados: lidando com problemas do dia a dia
Consulte mais informações no nosso site e entre em contato conosco.
Capítulo 18 - E agora? - Revistas - Página 219
CAPÍTULO 19
Apêndice - Sockets
\u201cOlho por olho, e o mundo acabará cego.\u201d
\u2013 Mohandas Gandhi
Conectando-se a máquinas remotas.
19.1 - Motivação: uma API que usa os conceitos aprendidos
Neste capítulo, você vai conhecer a API de Sockets do java pelo pacote java.net.
Mais útil que conhecer a API, é você perceber que estamos usando, aqui, todos os conceitos e bibliotecas
aprendidas durante os outros capítulos. Repare, também, que é relativamente simples aprender a utilizar uma
API, agora que temos todos os conceitos necessários para tal.
Lembre-se de fazer esse apêndice com o javadoc aberto ao seu lado.
19.2 - Protocolo
Da necessidade de dois computadores se comunicarem, surgiram diversos protocolos que permitissem tal
troca de informação: o protocolo que iremos usar aqui é o TCP (Transmission Control Protocol).
Através do TCP, é possível criar um fluxo entre dois computadores - como é mostrado no diagrama abaixo:
É possível conectar mais de um cliente ao mesmo servidor, como é o caso de diversos banco de dados,
servidores Web, etc.
220
Material do Treinamento Java e Orientação a Objetos
Ao escrever um programa em Java que se comunique com outra aplicação, não é necessário se preocupar
com um nível tão baixo quanto o protocolo. As classes que trabalham com eles já foram disponibilizadas para
serem usadas por nós no pacote java.net.
A vantagem de se usar TCP, em vez de criar nosso próprio protocolo de bytes, é que o TCP vai garantir a
entrega dos pacotes que transferirmos e criar um protocolo base para isto é algo bem complicado.
19.3 - Porta
Acabamos de mencionar que diversos computadores podem se conectar a um só, mas, na realidade, é
muito comum encontrar máquinas clientes com uma só conexão física. Então, como é possível se conectar a
dois pontos? Como é possível ser conectado por diversos pontos?
Todas as aplicações que estão enviando e recebendo dados fazem isso através da mesma conexão física,
mas o computador consegue discernir, durante a chegada de novos dados, quais informações pertencem a qual
aplicação. Mas como?
Assim como existe o IP para identificar uma máquina, a porta é a solução para identificar diversas aplicações
em uma máquina. Esta porta é um número de 2 bytes, varia de 0 a 65535. Se todas as portas de uma máquina
estiverem ocupadas, não é possível se conectar a ela enquanto nenhuma for liberada.
Ao configurar um servidor para rodar na porta 80 (padrão http), é possível se conectar a esse servidor
através dessa porta que, junto com o ip, vai formar o endereço da aplicação. Por exemplo, o servidor web da
caelum.com.br pode ser representado por: caelum.com.br:80
19.4 - Socket
Mas se um cliente se conecta a um programa rodando na porta 80 de um servidor, enquanto ele não se
desconectar dessa porta, será impossível que outra pessoa se conecte?
Acontece que, ao efetuar e aceitar a conexão, o servidor redireciona o cliente de uma porta para outra,
liberando novamente sua porta inicial e permitindo que outros clientes se conectem novamente.
Capítulo 19 - Apêndice - Sockets - Porta - Página 221
Material do Treinamento Java e Orientação a Objetos
Em Java, isso deve ser feito através de threads e o processo de aceitar a conexão deve ser rodado o mais
rápido possível.
19.5 - Servidor
Iniciando um modelo de servidor de chat, o serviço do computador que funciona como base deve, primeiro,
abrir uma porta e ficar ouvindo até alguém tentar se conectar.
1 import java.net.*;
2
3 public class Servidor {
4 public static void main(String args[]) throws IOException {
5
6 ServerSocket