I heard of tools that help with the process, but I have no experience with those.
I have ported C and C++ code to Java in the past. In case of Simutrans I'd assume more than 70% of all code lines must be adapted, if doing it manually.
Each pointer declaration and each pointer dereference operation must be adapted, that uses to be the biggest work (search-and-replace can help to some extend, but the * symbol is also for multiplications. so search-and-replace only helps so much).
Simutrans uses value objects in places, which Java just doesn't have, and replacements must be found.
As Prissi noted above, Simutrans uses multiple inheritance in a style that Java does not support - only one parent class can be a normal class, all other parents must be pure virtual classes (interfaces in Java). That will require a number of architectural changes.
Java templates are different from C++ templates, but I cannot really estimate the impact.
Simutrans also uses "plain" memory areas, allocated by malloc IIRC. In Java such do not exist, the closest are arrays. Each array access is type and bounds checked, so those are slower than memory accesses and a poor way to emulate plain memory areas - in order to get good performance this requires architectural changes again.
My past experiences with porting foreign C and C++ code (= code that I had not seen before) to Java are saying that it takes fairly long (1-2 hours for about 1000 lines of code, if the code is not black magic code), and usually it ends with poorly performing code. To make it work well, a deeper redesign is needed, which needs even more work, but very often just fortifies the opinion that Java is slow, because suchlike ported code really performs poorly. In Java one would use different designs from start, end up with a different application structure and if done right, and code that can get withing the reach of 50% of C++ performance.
I want to repeat that I do not want to port Simutrans to Java, not even suggest to do so. I just like the Java language and was expressing facts that I particularly like among it. For example the fact that Java programs can be written easier in a manner to avoid fatal crashes, also easer debugged than C++. I did not want to challenge C++ overall, it has it's merits. Java has different benefits, which overall matter more to me, and thus I made Java the language of my choice. Speed of execution was not among those.