Jake2 proves that 3D games written completely in Java can achieve incredible performance with moderate hardware requirements.
The following table shows the framerates of our Jake2 releases. This should give you a first impression of the performance of the current development version.
The fps values are not an absolute performance comparison Java vs C. But they show that at least 60% of C performance are achievable with Java. In comparison with object oriented C++ Code Java would look even better.
The 0.9.2 release shows a big improvent due to the new fastjogl OpenGL renderer. The new renderer reduces the number of native interface calls. JNI calls produce a considerable overhead and were the main bottleneck in our application. Jake2 0.9.2 can achieve up to 85% of the framerate of the C version. It depends on the relative performance of the CPU and GPU. With version 0.9.3 we almost closed the gap, mainly by reducing the number of memory allocations inside the game loop. But as you see the Java support for fullscreen modes is still not where it should be. The new release 0.9.4 brings yet another incredible performance boost. Some simple optimizations (vector arrays, optimized memory handling in loops etc.) show remarkable effect on performance and there surely is still room for further improvements.
System
Original
C Code
Jake2-0.9.1
JRE1.5
jogl
Jake2-0.9.2
JRE1.5
fastjogl
Jake2-0.9.3
JRE1.5
fastjogl
Jake2-0.9.4
JRE1.5
fastjogl/lwjgl
AMD Athlon XP 2400
Geforce4 MX
Windows 2000
800x600 window
245 fps
172 fps
213 fps
241 fps
260/250 fps
AMD Athlon XP 2400
Geforce4 MX
Windows 2000
800x600 fullscreen
315 fps
not supported
225 fps
235 fps
250/282 fps
AMD Athlon XP 2400
Geforce4 MX
Linux
800x600 window
262 fps
141 fps
212 fps
215 fps
228/240 fps
AMD K6-2 350
Geforce2 MX
Windows 2000
800x600 window
56 fps
21 fps
31 fps
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4