De que se trata o artigo: Este artigo apresenta os conceitos da computação distribuída e nos fornece os passos a serem seguidos para a utilização de sockets na tecnologia Java, tornando possível a implementação de aplicações Java que necessitem se comunicar de forma acoplada, trabalhando em conjunto para a execução de operações a partir da troca de mensagens de diferentes tipos de dados.
Para que serve: Este artigo foi criado com o objetivo de introduzir os
desenvolvedores à tecnologia de sockets, possibilitando incorporar comunicação e troca de informações em
aplicações Java de maneira fácil e produtiva. Apesar de ser um artigo introdutório, aborda-se os principais
assuntos sobre a implementação de aplicativos em ambientes distribuídos.
Em que situação o tema é útil: Este artigo será útil para os
desenvolvedores que desejam aprender como implementar aplicações Java que, por meio de uma arquitetura
distribuída, possam trabalhar de modo cooperativo, dividindo processos e tarefas, trocando informações entre si
por meio de mensagens e descentralizando operações.
Resumo DevMan: A tecnologia Java nos fornece mecanismos para o desenvolvimento de aplicações distribuídas, permitindo a criação de aplicativos que se comuniquem e troquem os mais diversos tipos de informações, facilitando a execução de tarefas em diversas máquinas, descentralizando operações e processos.
Para a implementação de ambientes distribuídos, é possível utilizar dois modos de transmissão de dados: baseado em conexões e sem conexões. O primeiro modo (com conexões) é muito utilizado quando se deve estabelecer uma conexão, garantindo a entrega e a ordem das informações transmitidas, enquanto o segundo modo (sem conexões) é mais empregado em aplicativos onde não há a necessidade de garantir a entrega e a sequência dos dados transmitidos.
Utilizando-se classes e interfaces presentes no pacote java.net, desenvolvedores Java possuem as ferramentas necessárias para a implementação de aplicativos que executam processos junto a uma rede de computadores, permitindo a troca de informações por diversos protocolos como TCP e UDP.
Atualmente, a programação em redes de computadores tem se tornado uma regra, deixando de ser apenas uma tecnologia presente em poucos sistemas, mas que vem ganhando espaço nos mais diversos tipos de aplicações. A principal vantagem nesse modelo de programação é a capacidade, física e lógica, de distribuir operações computacionalmente pesadas e grandes quantidades de dados e informações entre diversas máquinas que, trabalhando em conjunto, ocasionam a descentralização de tarefas.
O modelo de programação distribuída, realizada através da separação de aplicações entre servidores (aplicações que fornecem serviços a serem consumidos) e clientes (aplicações que consomem serviços disponibilizados por outras máquinas), foi a principal arquitetura de distribuição nos anos de 1990. Por meio desta arquitetura, houve aumento na confiabilidade e redução de custos. A confiabilidade tornou-se um fator importante nesta arquitetura, pois, mesmo havendo falha durante um processo em uma determinada máquina, o sistema não se inviabilizava como um todo, e com a utilização de máquinas mais simples executando serviços isoladamente, houve uma grande diminuição nos custos para execução de operações por máquinas mais poderosas.
Os aplicativos de servidor e cliente são programas que, executados em diferentes máquinas, trocam informações por meio de redes de computadores. A aplicação cliente é capaz de realizar requisições de serviços que são providos pela aplicação servidora. Para isso, o consumidor (ou cliente) deve conhecer o fornecedor dos serviços (ou servidor) a partir de um endereço além de ter conhecimento sobre o protocolo pré-estabelecido utilizado para realizar a solicitação.
No entanto, pelo fato de haver a necessidade de trocas de mensagens entre as máquinas envolvidas no processo, há um custo e tempo adicional para efetivar essa troca.
Outra característica importante é que os dispositivos envolvidos na troca de mensagens devem utilizar a mesma linguagem ou protocolo. Em uma rede de computadores há diversos protocolos, organizando regras sobre o modo como são realizadas as comunicações entre as partes envolvidas em uma comunicação. Um dos principais conjuntos de protocolos na programação de redes de computadores é estabelecido pela arquitetura TCP/IP, operando por meio de um software oferecido pelo sistema operacional a partir de uma máquina ligada na rede.
A tecnologia Java suporta a troca de bytes entre um cliente e um servidor TCP através do estabelecimento de uma conexão entre eles. Pode-se entender uma conexão como uma ligação direta realizada entre dois processos, na qual dados podem fluir nos dois sentidos.
Para estabelecer uma conexão TCP, as extremidades das máquinas envolvidas nos processos de servidor e cliente devem ser identificadas. As extremidades dessa conexão são denominadas de sockets ou soquetes, identificados por um endereço de rede e um número de porta.
Neste artigo, você irá aprender os conceitos de computação distribuída por meio de sockets utilizando a tecnologia Java, bem como aplicar todo o conhecimento adquirido, facilitando assim o desenvolvimento e comunicação de aplicações cliente-servidor.
O que são sockets?
Socket ou soquete é apenas um conceito ou uma abstração. O termo socket é utilizado para representar um ponto de conexão para uma rede de computadores que utiliza o protocolo TCP/IP. Quando dois computadores necessitam manter uma comunicação, cada um deles utiliza um socket. Um computador, denominado server ou servidor, disponibiliza um socket e aguarda o recebimento de uma solicitação de conexão, enquanto outro computador, denominado client ou cliente, executa um socket para se comunicar à máquina servidora, conforme demonstrado na Figura 1. Para estabelecer uma nova conexão, é necessário apenas um endereço de destino e um número de porta.
Caso não ocorra nenhum problema, o servidor aceita a conexão gerando um novo socket em uma porta qualquer do seu lado, criando assim um canal de comunicação entre o cliente e o servidor. A Figura 2 demonstra esse canal de comunicação.
Cada computador em uma rede TCP/IP possui um endereço exclusivo. As portas representam conexões individuais dentro desse endereço, porém os dados transmitidos passam por um processo de roteamento dentro de cada computador a partir de um número da porta. Quando um socket é criado, ele necessita estar associado a uma determinada porta e deve haver apenas um socket associado a essa porta.
A principal característica de uma máquina servidora é a de receber e manipular conexões a partir de solicitações dos clientes, portanto, seu comportamento típico é o de permanecer em loop aguardando novas conexões e criando sockets com a finalidade de atender as requisições dos clientes, conforme demonstrado na Figura 3.
Sockets em Java
Assim como todas as outras funcionalidades fornecidas pela tecnologia Java, existe um pacote específico que contém os mecanismos necessários para se trabalhar com sockets: o pacote java.net.
O pacote java.net contém todas as classes necessárias para criar aplicações de rede. As classes ServerSocket e Socket também fazem parte desse pacote e são utilizadas para aplicações que fazem uso do protocolo TCP. Além dessas classes, também existem outras para conexão com servidores web, criação de secure sockets ou sockets seguros, entre outras funcionalidades.
...Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.