Heya Quibble, welcome to the Gamebuino forums!
If you already know Java then you shouldn't find Gamebuino too difficult at all. Most embedded systems like Arduino are best suited to C over C++ because 1) C++ tends to result in a lot of pointer de-references which makes the code slower, and 2) virtual function tables in C++ result in a lot of data being swapped in and out of cache lines (either data or code, depending on the compiler). Arduino doesn't suffer from either of these problems quite as bad as other architectures because it doesn't have a cache and the clock speed and pipeline are very simple. C code is almost always faster, but C++ isn't too far behind and if you're a Java programmer to begin with then that's probably a good place to start. (It also helps that the Gamebuino library is C++!)
There are, however, significant differences between Java and C++. C++ isn't a managed language, so under ordinary circumstances you are responsible for allocating and freeing all class instances yourself. However, with only 2KB of RAM you really don't have much to play with, and if you start allocating and deallocating memory at run-time then SRAM is going to fragment very quickly, so the best strategy is to allocate everything you need at the start of the game and then leave memory as is. If your game has dynamic memory requirements then you're better off allocating pools of objects during initialization and managing the allocation of those resources yourself.
For most games though you won't need this. Just declare variables, arrays and function globally and it'll be the same as if you'd declared them in whatever class holds your Main() function in Java. At the Arduino level it's all really quite simple, and the best place to start is the Arduino tutorials home page:
http://arduino.cc/en/Tutorial/HomePage