First of all, I would like to thank you, Mr. Ess and you, Mr. Brogden for replying. In my opinion, one of the best solution is to design system as OS-dependent frontend (for the majority of customers it would be Win32 API-based, and for others having fast PCs - .NET-based, all written in C++) and OS-independent backend (C++), containing much of business logic. In fact it would be looking as two virtual OSs. Suppose, patterns bridge and proxy are always welcomed :-). But my heart belongs to Java yet, and I can do nothing with it. In addition, taking the above-mentioned choice, I am to spend a month studying .NET platform. Of course, I'd prefer Java!