With all the great capabilities that IPv6 offers, you naturally might want to try it out. You face three obstacles: operating systems, networks, and languages. But Linux and most other current operating systems actually support IPv6 right out of the box. With others, you may have to add support.
The next obstacle is the network itself. IPv6 is becoming very popular in Asia and Europe, so if you live in those countries you're in luck. However, the United States has not jumped completely onto the bandwagon. U.S. network routers still use the older protocols and don't even support dual stacks (coupling IPv4/IPv6 together, making processing seamless to the program). If you're in an area that has very limited access to IPv6 support, you can hook in with IPv6-over-IPv4 (or 6bone). The name 6bone is a spinoff of Mbone (the multicast virtual backbone) and means IPv6 virtual network backbone. Your operating system may attach to 6bone without your intervention.
The last obstacle in programming IPv6 is language support. Most programming languages don't support it. Java has a very good networking package, but it doesn't yet include the needed class interfaces. Sun's web site implies support in the future, but makes no promises. C is really the only language that includes the structures and system calls; and since C++ is built on top of C, it tacitly includes support as well.