No current hardware/operating system will give you anything near nanosecond precision, even millisecond precision doesn't usually happen. I guess they're just futureproofing the api, and it's kinda neat how they worked around the fact that a long can only represent a limited timespan in nanoseconds. I suppose this is
the recommended timing call (so long as you're commited to 1.5+, at least).
I'd be curious to know, though, the restraints around the "fixed but arbitrary time". Is it fixed across a single jvm (might fvck you up if you're timing distributed apps)? Is it fixed across a single compiled binary jvm (as in, they hardcoded it and will only change it when they release a new one)? Whatever they choose, it would be nice for developers to actually know what it means.
Edit: btw, I think we're talking about this:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#nanoTime()