No, it's speed enough in my experience. The main flaw is if on a slower system, the game loop keeps playing catch-up and it'll be always end up in playing catch up without any rendering. I am just skipping 5 frames even in my engine and my demo space invaders game gets almost 38 fps on my crappy old laptop with 512 MB of ram and running XP SP 1 with an integrated intel card of 24 MB of video memory. It is faster and getting 140 fps on my pc.

Two major problems. First the counter position is undefined. So it would be perfectly legal for straight after a cold boot of the OS and running your program for nanoTime to be return negative values. So you really want to be subtracting from some reference time-stamp. This has the added advantage that you can simply modify this reference time stamp to handle pauses. The much bigger problem is the division. You're throwing away important information in favor of the unimportant. The accuracy of any digital timer is +/-1 of its resolution and when you subtraction two to get a delta time, the errors compound to +/-2. Plus or minus 2 ms is long time. (Likewise you never want to accumulate deltas as they forever compound). My suggesting to to forget the divide.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org