I work as a Group Product Manager, for a mid-sized vertical business application software provider. We sell around 12 different applications for 3 three major industries. Health care, Telecommunications, and Oil and Gas. Currently all of our software is written in C++, and designed for Windows NT/2000. Our customers have been demanding constantly that they want applications that also run on Linux, Unix, and Solaris. BLAH! (TOO MUCH WORK!). Well anyways, so the company is trying to decide how we should proceed on this. We have a few options they go as follows:

-Port the current C++ code individually to each new Platform, and manage separate code bases

-Rewrite all the software in Java, and maintain a central code-base.

We're already thinking about changing it so that our software is accessed through a Portal-based interface and doesn’t use much client side code. My main dilemma is now to figure out what should we do....

Take a performance hit, retrain our programmers, hire new ones, and rewrite all of our software in Java, but maintain a central code-base, make the software easily run on not only these but other platforms, and avoid code forking, plus build a portal-based interface

OR

Take the current code base, keep the high performance, but risk huge amounts of time in porting the code over to each platform, making it compatible, and then making sure the code doesn’t fork off in different directions and everything is consistent. But keep all current programmers, with slight training costs. And keep the current non-portal interface

What do you guys think, and what’s your opinion?