C# also has a much more extensive GUI support (menu items, dockable toolbars, and all those things that are rather hard to do with subclassing in vb6). It's also much much much more stable than vb6. C++ is better for speed, but it seriously complicates things programming in it, especially if you're not used to it (which is a thing to avoid when you port something ).   Java graphics are sadly enough too slow, and in C# the GUI frontend could be made in silverlight, it's not that hard and you could map your map from your browser (or stand alone if you prefer) AND it is cross-platform.