La meilleure solution est celle qui existe ^^,
le problème est qu'à mon avis tout ce qui est ethernet est gérer directement par le system d'exploitation, je penses que celui-ci fournit les fonctions socket à java (via la machine virtuelle), donc l'adresse mac n'est sans doute pas accessible nativement par java.
Donc si il n'existe pas de fonction native java fournissant des adresses mac, il faut forcement faire autrement, et comme java ne contrôle pas directement ce qui sort de la carte réseau (du moins je penses)...
Sinon pour connaître un adresse mac d'après une ip, il faut faire une requete arp sur le réseau, (et on reçoit l'adresse mac du premier routeur vers cette adresse, mais si toutes les machines sont derrières des hub switch, pas de problème).
[ Lien ]