This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
No, the opposite, really. Regular expressions -- which didn't exist in Java when StringTokenizer was designed -- are more powerful than the kind of character-based tokenizing that StringTokenizer does.
There are a few possible advantages to using StringTokenizer, but they're pretty feeble compared to the advanages of split(), I think. One is that StringTokenizer may be simpler to understand for a programmer who doesn't understand regular expressions. At least, if the delimiter includes any special characters like |. But StringTokenizer is still often misunderstood, espeically the fact that it considers only single-character delimiters.
Another feature is that StringTokenizer can return the delimiters as well as the tokens, if you use the appropriate constructor. I don't think I've ever seen a need for this feature, but apparently someone did, once.
And lastly, a StringTokenizer can change delimiters as you go. The split() method definitely can't do that. However, if you have a use for this, then Scanner can do the same thing, and has many more powerful features than StringTokenizer does.