C++ de grootvader? Vergeet Smalltalk niet. De syntax van Java is op C/C++ gebaseerd, de semantiek lijkt veeleer op Smalltalk dan op C++. Die laatste is, zoals je zelf al zegt, niets meer dan C met klassen. Smalltalk daarentegen is iets
totaal anders.
(Jammer trouwens dat de closure niet is overgenomen uit Smalltalk. Een innerclass werkt ook wel, maar het wordt er allemaal niet leesbaarder op.)
Aangaande het hoofdonderwerp:
Het dood zijn van Java: zo'n vaart loopt dat ook weer niet. Sure, Microsoft is een grote speler, maar laten we alsjeblieft Oracle, IBM en SAP niet vergeten. Die zijn heus nog niet verslagen. Een leuke recente ontwikkeling: de Google Web Toolkit.
Verder is er in de enterprise automatisering een dermate grote hoeveelheid aan Java-systemen dat het hooguit "dood als COBOL" zal raken... met andere woorden: in onbruik maar wel onsterflijk. Vergis je ook niet in de hoeveelheid nieuwbouw die nog in COBOL plaatsvindt. De hele financiële sector draait op CICS, Java (en .NET) doen hooguit de messaging en de front-ends.
That said, het is duidelijk dat het J2EE platform aan een grondige herziening toe is. Dat besef is zelfs tot het Java Community Process doorgedrongen. Als je naar javax.persistence kijkt dan zie iets dat verdraaid veel lijkt op Hibernate, met annotations in plaats van XML, en nog maar zo weinig met EJB2.x te maken heeft dat de naam EJB3 welhaast misleidend is (vandaar dat ik liever van javax.persistence spreek).
Overigens geen kwaad woord over .NET. Het is vijf jaar later opgezet dan Java, en je merkt dat ze bij Microsoft verdomd goed hebben gezien welke punten goed zijn (o.a. bytecode/MSIL, ingewikkeld genoeg maar niet ingewikkelder dan dat) en welke punten echt beter moesten (declarative security, strong versioning, JIT vs interpretatie), en dat ze met die kennis ook daadwerkelijk iets moois hebben gemaakt.
Microsoft kan .NET sneller innoveren dan het JCP Java, dat is een individuele leverancier eigen (het JCP is altijd een compromis). Wat je echter in Java veel meer ziet dan in .NET is de kweekvijver van goede ideeën in het Open Source gebeuren, waardoor Java niet de innovatieachterstand heeft die je zou verwachten als je ziet hoe het JCP functioneert (Hibernate is een mooi voorbeeld). Het feit dat .NET van één enkele leverancier komt is een sterk punt, maar tevens een zwakte.
Op het hele gebied van embedded tot aan enterprise zie je dat haast alles geheel op Microsoft technologie is, of geheel niet. In die tweede soort is Java erg sterk vertegenwoordigd. Het is een soort "neutrale grond", voldoende gestandaardiseerd dat het de voordelen daarvan oogst, maar genoeg gefragmenteerd dat alle partijen het kunnen aanvaarden. Ik denk dat Java mede daarom in een prima positie zit om .NET het hoofd te bieden. Een marktverdeling van ongeveer 50/50 (+/-10%) vind ik heel geloofwaardig. Ik zie Java dan ook niet verdwijnen, en wanneer het verdwijnt zal dat niet enkelhandig door toedoen van .NET zijn.
De desktop is wel een ander beeld. Het ontbreken van een standaard, full-featured "applicatieskelet" zoals bijvoorbeeld Delphi dat aanbiedt is een van de hoofdredenen waarom Sun het browser applet -na het te hebben uitgevonden- onmiddellijk is verloren aan Macromedia. Voor de desktop geldt dat niet minder. Voeg daar MS Office als applicatieplatform aan toe en het is overduidelijk dat Java op de desktop voorlopig in de verste verte het marktaandeel van .NET niet kan evenaren.
Als je echter ziet wat er met desktop Java mogelijk is (kijk eens naar de Aerith demo op
swinglabs.org), dan zie je dat de technische achterstand intussen behoorlijk is ingelopen. Java Web Start is een veel mooier deployment platform dan waar het erkenning voor krijgt, dus de infrastructuur is er echt wel. Nu de praktijk nog. Er stond laatst een
leuk betoog op Artima waarin wordt gesteld dat Sun de java desktop zou moeten / had moeten outsourcen aan Apple.
(edit: paar typo's gecorrigeerd)