Question: If I connect with Java to MySQL on my localhost server, I access instantaneously.  

But if I connect outside of the localhost, from a network PC (192.168.1.100), it is very slow (4-5 seconds).  

And, if I connect from a public IP to my MY SQL server, it is also very slow (6 seconds or more).

Answer: 
It will always take longer to make a connection across the network than to make the same connection locally. However, assuming you have a fairly typical local network, 4-5 seconds sounds a bit extreme. My guess (and it is just a guess) would be that the majority of the extra time is being consumed by network name resolution (i.e. DNS and/or netbios). 

I would suggest that you try the connection using a numeric IP address, rather than a name.
4 seconds on connecting could be a DNS problem and cannot be just a pure network latency.
Try starting MySQL server with "skip-name-resolve" parameter to skip resolving client's IP into hostname. Prior to that, make sure your grant tables are based on IPs and 'localhost' instead of symbolic names.