Короткий ответ: это выполнимо, не используйте Java, и это будет значительный объем работы.
Несколько лет назад (примерно во времена IE5) клиент попросил меня ответить на этот вопрос. Данное приложение было хорошо структурированным трехуровневым настольным приложением.
Результатом исследования стало то, что это возможно. Рассматривались следующие варианты: Java и CGI с использованием CORBA или COM / DCOM. Создание апплета Java было рассмотрено, но исключено, поскольку оно не слишком отличалось бы от настольной версии C ++.
В качестве подхода был выбран базовый уровень, который превратился в серверное приложение, расположенное за уровнем cgi. Пользовательский интерфейс был в значительной степени переписан с использованием того, что мы теперь знаем как Ajax, то есть Javascript и HTML. Пользовательский интерфейс был разделен между элементами браузера и элементами сервера.
Я подумал о том, чтобы написать инструмент для преобразования документов, представлений и диалогов и обернуть их в совместимый формат, однако после долгого анализа стало очевидно, что сделать это было нереально, поскольку MFC на самом деле довольно тесно связан с Win32 API и сам. В зависимости от количества диалогов, возможно, стоит написать что-то для их преобразования.
Я обнаружил, что даже в хорошо структурированной системе довольно много кода, который должен был быть в бэкэнде, просочился в интерфейс.
Если бы я сделал то же самое сейчас, есть несколько превосходных библиотек javascript, которые бы помогли, но я бы все же использовал тот же подход, чтобы сделать как можно больше в браузере с использованием Ajax, возможно с чем-то вроде qooxdoo или YUI . Я также, вероятно, хотел бы перевести взгляд на использование XUL и перемещение по крайней мере большинства диалогов в серверную часть.
Единственное, что меня касается в вашем списке требований, - это векторная 3d графика, хотя в этой игрушке JS или JS3D .
Это только краткое резюме, так как я стараюсь не писать диссертацию.