Up to you really. Lately I've been looking into D (Digital Mars D).
Java seems alright as a language, but I've always hated the JVM. It takes way too long to load up, consumes huge amounts of memory, which really kills performance on low memory systems, and generally isn't all the speedy for CPU bound tasks. Although people will always try to tell you otherwise on that last one, while simultaneously ignoring the other problems.
I think C and C++ have had a good run, and are certainly capable of writing fast code, but they have certain maintenance issues as programs get large. The split between header files and source files can be annoying, where you have to write a lot of things twice, and update them in both places should you ever need to refactor code. Use of the preprocessor is also a bit sick, and trying to get includes right can sometimes be difficult. The usual header file guards are annoyingly verbose for such a common problem. In short, a lot of things that a computer would be really good at figuring out and doing are pushed onto the programmer. Templates are nice, but error messages involving them are near impossible to read. The standard library for C and C++ are horrid. I hate the naming conventions used, I hate null terminated strings, I hate the security (and reliability) flaws inherent in so many of the original standard library functions. The standard library issue is probably one of the big reasons why a lot of people switched to Java. There is some degree of portability in the standard library, if you can bring yourself to use it, for certain common operations like file access. The basically raw sockets interface is very similar on Windows as it is to Unix/Linux, so you can kind of get away there. You are often encouraged to use the more modern Cout style functions, but these can be a lot slower than the printf style functions (and in some cases I've heard, slower than Java can perform). I often just avoid the standard library, as the Windows API is much nicer to write for, and works faster, but is not portable. I've heard a comment stating C and C++ are probably the least portable of the "portable" languages.
I'm liking a lot of the cleaness with D, and the ability to write native code, plus good support for newer and higher level constructs. The Tango library (unofficial standard library) has a lot of really well thought out APIs, and the core language design also seems really thought out. The language is still a bit new though, and it can be a pain to setup the compiler. You also end up having to learning a new language before you can really do anything, and not many other people know it so it's probably harder to find someone who can help. There are a lot of interesting articles in relation to the language, and some very academic papers that are a great read if you're into that sort of thing. There is also a book "Learn to Tango with D" with is pretty well written. It covers the base language features well, and some parts of the Tango library, but I still feel like I lack general knowledge on how to use it's API to just get stuff done. It's a language I've been watching, but I'm not sure if I'd be ready to recommend it yet. Although, it seems like the install issue has gotten a bit better since I first dabbled with the project. There are compilers available for Windows and Linux. During install, there was a suggestion to install it in a path without spaces in it (which kind of annoys me).
I hear good things about C# as a language. I don't know too much about it though. It also sounds like it's cleaned up a lot of the issues with C and C++. I get the feeling it's a little more Java like in that a virtual machine is (usually?) used to run the code though. I've heard of performance issues, although, not frequently. I think I've heard stuff to suggest you can do native compiles, but I don't really know. I could easily be wrong about that. It was initially more of a Microsoft/Windows thing, but I've heard about a Linux compiler and runtime system that now exists for it. Probably worth looking into, but I've yet to bother. I've kind of stayed away from anything .NET. My experiences with Java inefficiency have taught me to fear what the underlying idea seems to be.
Kind of seems like there is no silver bullet language. Either which way it seems like there is something disappointing. The reason I've been liking D lately, is because the disappointing aspects of it seem mostly related to it's newness. I suspect as time goes on, and the language/compiler/packaging improve, the few things that annoy me about it will be resolved.