Programação distribuída em Java

Entre os atrativos de Java está a facilidade que essa linguagem oferece para desenvolver aplicações para execução em sistemas distribuídos. Já em sua primeira versão, Java oferecia facilidades para o desenvolvimento de aplicações cliente-servidor usando os mecanismos da Internet, tais como os protocolos TCP/IP e UDP.

Se o cliente na aplicação distribuída precisa acessar um servidor de banco de dados relacional, Java oferece uma API específica para tal fim, JDBC. Através das classes e interfaces desse pacote é possível realizar consultas expressas em SQL a um servidor de banco de dados e manipular as tabelas obtidas como resultado dessas consultas.

Em termos de desenvolvimento voltado para a World-Wide Web, Java oferece o já clássico mecanismo de applets, código Java que executa em uma máquina virtual no lado do cliente (tipicamente um navegador) Web. O mecanismo de servlets permite associar o potencial de processamento da plataforma Java a servidores Web, permitindo construir assim aplicações com arquitetura de distribuição de três camadas baseadas no protocolo HTTP e em serviços implementados em Java.

Aplicações distribuídas mais elaboradas podem ser desenvolvidas usando uma arquitetura de objetos distribuídos, onde aplicações orientadas a objetos lidam diretamente com referências a objetos em processos remotos. Java oferece duas alternativas nessa direção, RMI (Remote Method Invocation), uma solução 100% Java, e Java IDL, esta uma solução integrada à arquitetura padrão CORBA. Um passo adiante na evolução desse tipo de sistema é a utilização do conceito de agentes móveis, onde não apenas referências a objetos são manipuladas remotamente mas os próprios objetos -- código e estado -- movem-se pela rede.