Programação na internet

Olá pessoal, sou amador em programação java, faço algumas coisas mas sempre em volta de onde tenho conhecimento, e tenho interesse em entender sobre o modo com que a internet fuciona na programação java, de certo eu tenho estas dúvidas que me deixam um pouco perdido na hora de fazer o código:
Se no meu projeto é preciso conectar um dispositivo ao outro por meio da internet de um jeito que os dois dispositivos consigam enviar e receber dados, o que seria necessário, que bibliotecas ou com que recursos precisaria?.. uma questão que fica é eu teria de ter um endereço de site para servir de intermediário para conectar ao outro dispositivo? Bom estas são minhas dúvidas e se alguém poderia me recomendar algum livro sobre o assunto ficarei grato.

Isso depende muito.

Por exemplo, supondo que se trata de um app mais completo para prover algum serviço. Para que ele funcione, vc terá que desenvolver o app para o usuário interagir, o backend que irá tratar as requisições do app e gravar todos as informações num banco de dados.

Caso não seja um app, vamos imaginar que seja algum sistema web. A ideia é bem parecida, vc irá desenvolver as telas do sistema que irá interagir com um backend que irá se comunicar com o banco de dados.

Esse é um cenário bem comum, mas pode ter variações.

O que vc está pensando em fazer (ou estudar) exatamente?

Olá Lucas_Camara obrigado por me responder, bom estou tentando desenvolver um app bem semelhante aos de redes sociais que guarde informações dos usuário e permita troca de mensagens, porém neste app acontece também um jogo que os usuários jogam online entre si. Ai que está não apenas um servidor de dados mas também algo a mais que coloque os usuários online como uma partida. E também gostaria de especializar nestes assuntos porém não sei bem como procurar se puderem me indicar conteudos, livros, cursos…seria bem interessante para mim. Obrigado

@Denis4 estude sockets. Basicamente você connecta dois computadores, ao escrever algo em um lado você irá ler a informação no outro.
Depois que entender como isso funciona você pode usar protocolos, por exemplo, o HTTP para fazer seus programas se conversarem por mensagens REST.