In Java, You could use
InetAddress.getByName(IP)
and then check for exceptions thrown by this for validating IPv6 addresses
You could also use Sun Propreitary API if thats oK to you. THis will not perform a DNS lookup. ( They might change it/remove it without notice since its their propreitary API.This is a warning that will come when compiling a code using this )
boolean sun.net.util.IPAddressUtil.isIPv6LiteralAddress(String IP)