Adrián, yo creo que tienes un poco de lío mental. No te lo digo a malas, es normal, es una industria muy compleja que evoluciona a velocidades estratosféricas. Incluso quienes llevan años en ella pueden verse perdidos en algún momento.
No opinaré sobre lo que se imparte en los centros de España porque hay muchos que dan pena. El temario en muchos casos ni tiene sentido. Tan solo siguen unas pocas directrices del ministerio, por lo demás, cada profesor hacer lo que quiere. Yo que no tengo ninguna formación docente puedo formar mejores programadores.
Lo importante es que tú, como programador, entiendas el mundo en el que estás y como funciona. Esto no va de tecnologías que están de moda. Son importantes, pero centrarse en ellas es como y no entender lo que realmente son y porque están ahí es como aprenderse unas cuantas multiplicaciones de memoria pero sin entender realmente que es la multiplicación. Mi sobrina pequeña se aprendió media tabla de multiplicar en infantil porque la iba cantando de camino al colegio. Se la sabía y si le preguntabas cuanto es 4x5, te lo decía pero sin realmente saber que significaba. Si suponemos que ella sabe multiplicar, el siguiente paso sería que aprendiese potencias pero le sería imposible porque no tiene la base de conocimientos necesaria.
Angular, React y Vue hace unos años no estaban y dentro de unos pocos no estarán, al menos no en su forma actual. Por lo que el haber aprendido una versión anterior no tiene porque servirte para usar una posterior si ha cambiado el paradigma o a saber que. Es importantísimo tener un nivel alto de JS para entender esos frameworks bien y en un futuro poder usar otros. Porque si tienes el conocimiento base, cuando veas que crean un framework nuevo entenderás por qué lo crean, cuales son los motivos exactos, que problemas quieren resolver que con JS a secas no se podría o que con una versión anterior del framework se hacía un infierno. Entonces sí tú entiendes eso, no necesitas aprender a usar esa herramienta solo adaptarte un poco a ella.
Yo también trabajé con un framework sin entender muy bien que hacía. Después pasé a la segunda versión del framework que nada tenía que ver con la primera. Era una reescritura de cero. Y tuve que aprender mucho, muchísimo antes de entender porque la primera versión era como era y por qué habían cambiado la segunda versión tanto. Ahora veo que están trabajando en la tercera y de nuevo entiendo lo que van haciendo y en un futuro con una lectura rápida podré adaptarme.
Además, JavaScript no son solo los frameworks estos para frontend. Hay mucho más. Node tiene un tirón enorme en muchísimos campos y es JavaScript. Y a su vez funciona con otros muchos otros frameworks o librerías que tienen un desarrollo rapidísimo.
Respecto a Java vs C# tu razonamiento es bueno pero la conclusión no. Java no se usa mucho para aplicaciones de escritorio. La gente prefiere C# (u otros lenguajes/tecnologías) pero la pregunta es, ¿es el mercado de aplicaciones de escritorio el mercado más grande? La respuesta es absolutamente no. Conozco muchísimos programadores. No conozco a ninguno que haga aplicaciones de escritorio. Al menos no como trabajo principal y si tienen que hacer alguna usan tecnologías como Electron para desarrollar de un tirón para cualquier plataforma...y sobre Electron se programa con...JavaScript (también TypeScript que es básicamente JS pero fuertemente tipado).
Realmente no sé en que campo se programa más con C#, si en escritorio o en servidores (sí, puedes programar con C# aplicaciones web, por ejemplo), lo que sí sé, es que Java es el peso pesado de las aplicaciones y servicios web. No importa donde vayas que tendrás ofertas de Java. Tanto Java, como JavaScript y C están más demandados que C#, mucho más.
Por último te diré que XML no tiene porque ser reemplazado por JSON. De hecho, hay casos en los que es prácticamente imposible. Si hablamos de APIs yo también prefiero JSON, prefiero las API Rest que las antiguas y asquerosas SOAP. Para guardar datos de forma ordenada me parece más limpio JSON pero es que XML es un lenguaje de marcado que te permite eso y más. ¿Qué te parece HTML? Porque es XML. Con DTD puedes definir las reglas que debe cumplir un documento XML u otro lenguaje de marcado que sea un subconjunto de XML. HTML mismo tiene sus validadores. Puedes poner la etiqueta <pepe> </pepe> en un documento HTML y el navegador no te dirá nada, pero si por ejemplo tienes que trabajar con ese documento, automáticamente puedes ver si es válido o no.
Como ejemplo para esto último, ¿cómo escribirías en JSON "<p> Esto es un párrafo con <strong>palabras en negrita</strong> </p>.? No te exprimas la cabeza. JSON no está hecho para esto, XML sí. Ambos pueden coexistir.
En fin, si tienes alguna duda puedes mandarme un privado, que no suelo pasar mucho por aquí, una vez cada varios meses como mucho.