Personally I feel managed code will be adopted even more in the future and at a later stage C++ will loose its hold on desktop applications. This will happen sooner in Windows especially after Longhorn. On linux this should take much more time, simply because of mistrust of Java, Sun.
On the Windows front, it's as good as done. As you say, with Longhorn the whole platform is going managed. It will be backward compatible with Win32, so it's not like your C/C++ apps won't work. It will be deprecated. This has already started with .NET. Java introduced managed code long back (and Smalltalk long before that), but only with Microsoft getting into the game will it have a major impact. They control the direction developers take on the client.
Linux on the other hand is a completely different story. I don't think managed code will be successful on non-windows platforms. Linux devs don't trust anything that is not open source. As of now, there isn't (not that I know of) a completely independent open source managed code platform. Mono is heavily associated with .NET and we all know how much the oss community loves Microsoft. C/C++ should rule here for a while.
Another question is much on dev on Win will be done using Java?
I don't see it as having much success on the desktop even with improvements they've made. When you think of Java, you immediately think about server-side code. It's got a bad rap on the client and I don't feel like that perception will change much... not on a large enough scale. If you are developing a Windows app, it wouldn't make sense NOT to choose .NET. You get performance and can access the full capabilities of Win32 if you need to.
Java has done a commendable job in keeping itself platform independent, but the costs seem to be quite high. There is this lowest common denominator rule it has to follow. All functionality has to be the same everywhere. Each platform has some capability unique to it. Java, if not prevents, discourages you from using that. So this is another big debate... Platform independence and lowest denominator or platform specific features.
Frankly, I can see why managed code is becoming such an ally to developers, but I think the most important thing to consider is the fact that there are millions and millions of lines of code in C++ already, where does that go?
This is an important point. Legacy code will always be there. Even when we move on to the next great thing and leave Java/.NET in the dust. I'm sure there's still old Fortran code hanging in some mainframe somewhere that needs to be maintained. But I don't see any new software being developed using Fortran.
I share the same feeling with you regarding C++. It's a wonderful language and will be around for a long time. I just feel like for custom apps it will eventually be displaced. I'm not talking about big applications like Office/Mozilla, system code or OS's. And I don't expect games to move over to the managed world anytime soon either (Although Vertigo manged to port Quake II to .NET and even added new features using Win Forms). I'm talking about apps IT departments develop. The complexity, when compared to .NET/Java is just too high.
They are actually reconsidering the C++ Standard and I think in the next update the Boost library will be included, lets see how far they go to actually "compete" with the others (Java et al), if at all.
I don't ever think that C++ will ever have a monolithic library akin to the Java API or the .NET framework. Having such frameworks makes it super convenient to develop applications cause you'll find more or less everything but the kitchen sink - collections, graphics, networking, threads, UI, etc... But the disadvantage is that you need your clients to have that framework installed. This goes against c++'s "culture". Even the STL (at this stage) is mostly about collections and algorithms. These are something almost all, even the most basic of applications, need. I dunno what their future plans are for extending the standard library, but I doubt it would involve anything that isn't generic.
What dyou feel?