A lot of this java development comes from book writing where developing the book also provides a lot of applications for general consumption. URLs specify the exact location of a resource. The idea of a URN is to name a resource without telling you exactly where to find it. When you try to access the named resource, all of that tracking is done under the hood. Somehow, both have to be turned from some abstract representation into a concrete item, all of which takes place under the hood.
URNs are quite an interesting beast.
I'm working within the Internet Engineering Task Force URN Working Group developing URNs into a tool for all applications. As part of this, I have released a Java implementation of the whole URI family that replaces the java.net package. While still in early development, it may be of use to you to explore what these powerful tools. I've been using JSDT and it's predecessor JSDA since mid 1997 when it was first released. During that time I've been active in not only testing and deploying applications based on the API but also improving the capabilties available through close associations with the Sun development team.