Je suis tout à fait d'accord, du code portable, qui va compiler sur plusieurs plateformes à partir des mêmes fichiers sources, ca peut devenir très laid très rapidement! Nous avions beaucoup de code comme ceci à mon ancien emploi, et c'était pas très joli.
À mon emploi actuel, en Java nous utilisons certaines fonctionnalités propriétaires de l'application WebLogic, (les T3Service pour les curieux). Or, cet API est propriétaire, et nous avons désormais un problème; À partir de la prochaine version, ces fonctions n'existent plus. Nous sommes donc soit pris pour rester à notre version désuète, soit devoir recoder entièrement le morceau qui utilise ces fonctions.
Si nous avions pris une méthode plus standard, en java pur par exemple, nous n'aurions pas eu ce problème. Nous avons sauvé du temps mais nous en payons désormais le prix!
C'est pourquoi, avec mon expérience, je préfère toujours favoriser des approches plus standard (Ex: communication TCP/IP, mémoire partagée, code "portable"), plutôt que de bénéficier des APIs propriétaires (Ex : .NET Remoting

), pour faire la job.
Les deux ont des avantages et des inconvénients, mais quand je suis capable je préfère prendre les solutions qui me donnent le plus de liberté (et qui, habituellement, me permettent d'en apprendre plus).
Mais c'est évidemment un idéal que je ne peux pas toujours appliquer; Le manque faute de temps et les deadlines trop serrés font partie de la vie de tout programmeur!
Question d'opinion! À la vôtre
