The Java approach of hanging static methods on a final class with a private constructor and import static is ridiculous and everybody knows it.
I used to cringe at it, but in reality it's really not that bad (if you don't mind namespaces, you shouldn't cringe at this), and it probably makes file formats, runtime environment etc. a lot easier to write.
Personally, I'm pretty satisfied with C#... but I find parts of the .NET framework to be pretty horrible. Add the not-super-open-and-portable situation, and what you got is a "