Java engines

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

mambofish

Re: Java engines

Post by mambofish »

My own engine, ermintrude, is written in Java, and plays on ICC with a rating averaging around 2150-2175 presently.

I haven't released the source code yet as its still very much a work in progress. However, I am more than happy to share my own experiences (and frustrations) with anyone else thinking of writing a Java engine - and pick up any tips along the way.

Java brings its own unique set of problems. Despite all the hype about JIT compilation and runtime optimisations, Java is inherently slower than C, and the best Java engines will never be competitive with the best natively compiled engines. Unless you go down the route that Stephen Edwards is going down with Symbolic, calculation speed wins over heuristics every time. (I have an old version of Sjeng that I often test ermintrude against. It is instructive to see the difference in nps, even in tactical positions, where ermintrude is reasonably strong. Where ermintrude might get 600Knps, Sjeng will be pushing 900K nps. Sjeng almost always wins of course)

But I think this is a good challenge to have. You have to come up with different ways of doing things to try to stay competitive - and that, for me is what this is all about.

So my goal for ermintrude is pretty modest: to just get her playing consistently at 2300 level on my current hardware (2.5Ghz P4, 1GB RAM).