Um Sistema Web, voltado para a execução na Internet, pode...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: D - Java RMI permite que um objeto cliente invoque um método de um objeto servidor remotamente.
Para entendermos o porquê dessa alternativa ser a correta, precisamos nos aprofundar um pouco no conceito de Java RMI (Remote Method Invocation). O RMI é uma API que permite a execução de métodos de maneira remota, isto é, em diferentes máquinas ou processos. Quando utilizamos RMI, estamos adotando um modelo de programação distribuída, onde os objetos não precisam estar no mesmo espaço de memória para interagir entre si.
O que torna a alternativa D correta é que o principal propósito do Java RMI é justamente fornecer essa funcionalidade de invocação remota de métodos. Um objeto cliente (em uma JVM - Java Virtual Machine) pode chamar métodos de um objeto servidor (em outra JVM, potencialmente em outra máquina) como se fossem chamadas locais. O Java RMI cuida de toda a complexidade de comunicação de rede, serialização de objetos, entre outras operações necessárias para que essa interação remota ocorra de maneira transparente para o desenvolvedor.
Essa capacidade elimina a necessidade de se preocupar com detalhes de baixo nível da comunicação entre os objetos em diferentes sistemas ou redes, focando no desenvolvimento da lógica de negócio e funcionalidades da aplicação.
Vamos entender porque as outras alternativas não são corretas:
- A - Java RMI de fato utiliza o protocolo TCP/IP para realizar a comunicação entre os objetos, mas a questão diz que as aplicações são dependentes do protocolo de rede da camada de transporte (UDP/TCP), o que não é verdade, já que RMI abstrai esses detalhes para o desenvolvedor.
- B - RMI pode ser utilizado no desenvolvimento de aplicações P2P, no entanto, a afirmação de que métodos invocados remotamente são automaticamente replicados em dois ou mais servidores é incorreta. Essa característica não faz parte do RMI em si, mas poderia ser implementada pelo desenvolvedor se desejado.
- C - A passagem de objetos em Java RMI exige que os mesmos sejam serializáveis, ou seja, o objeto precisa implementar a interface
java.io.Serializable
. A ideia de um "local pointer" não se aplica neste contexto. - E - Java RMI não utiliza o protocolo SOAP, que é baseado em XML e é uma especificação diferente usada para serviços web. RMI utiliza uma própria implementação para a transferência de objetos e chamadas de métodos.
Portanto, a alternativa D é a correta porque reflete exatamente a capacidade que o Java RMI fornece aos desenvolvedores de sistemas distribuídos: realizar invocações de métodos de objetos remotos de maneira simples e direta.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
a) Não tenho certeza, alguém mais pode contribuir, mas acho que essa questão está errada porque RMI usa o JRMP (Java Remote Method Protocol) sob TCP/IP e por isso depende apenas desse ultimo. Se alguém mais puder contribuir...
b) Essa "replicação automática" não existe de forma nativa.
c) Objetos precisam ser serializados e portanto implementar a interface Serializable.
d) Correta. Essa é a definição do RMI, ou Remote Method Invocation. A interface distribuída no cliente e no servidor determina e garante o que pode ser chamado pelo cliente.
e) Errada. RMI usa uma um canal de comunicação "raw" para transmissão de mensagens. É possível definir um protocolo mas isso precisa ser feito pelo programador.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo