Ethereum has a Go implementation. The Java argument is BS obivously. The protocol needs to be valid, not a single implementation.
The problem with multiple implementations is that if there is a tiny difference in behavior between them, you can only find out after damage has been done to the network via a split/fork.