Para começar, eu me certificaria de que o firewall (iptables) não seja um problema. Você pode confirmar com este comando no RPi:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Se o firewall parecer OK (como acima), inicie seu aplicativo Java e confirme com este comando que ele está escutando na porta correta:
$ netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:9090 0.0.0.0:* LISTEN 970/xbmc.bin
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 970/xbmc.bin
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 936/sshd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 1086/smbd
tcp 0 0 192.168.1.85:22 192.168.1.20:34971 ESTABLISHED 6762/0
tcp 0 0 :::53 :::* LISTEN 829/connmand
tcp 0 0 :::22 :::* LISTEN 936/sshd
tcp 0 0 :::445 :::* LISTEN 1086/smbd
Este comando mostra em qual endereço IP e porta cada daemon está escutando. Por exemplo, a seguinte linha:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 970/xbmc.bin
Mostra um processo (xbmc.bin), cujo ID do processo é 970, está escutando na porta 80, em todas as interfaces (0.0.0.0). O último bit "all interfaces" significa que, se houver várias interfaces de rede (ethernet, wifi, etc.), o daemon aceitará conexões de qualquer uma delas.
Se ele dissesse apenas um endereço IP como 192.168.1.10, o daemon só aceitaria conexões da interface que tinha esse endereço IP atribuído a ele.
Uma última coisa a notar, os tipos de conexões que o daemon acima aceitará são TCP. O outro tipo é o UDP, que este daemon não aceitaria.