@felomeno una pregunta, en qué características crees que sería mejor escojer a Java sobre C++ y viceversa?
Me gustaría saber tu opinión.
Bueno, te contesto yo si quieres...
C++:
C++ es un lenguaje orientado a aplicaciones de escritorio fundamentalmente, es decir, los programas que usas en tu PC cotidianamente, como puede ser un juego cualquiera o grandes programas como Photoshop, AutoCAD o cualquier programa grande mas o menos serio. ¿Por que se usa C++ para estas cosas? Tienes que tener en cuenta que C++ es un lenguaje que se ejecuta en tu PC de forma nativa, por lo que es MUY eficiente, así que todo aquello que requiera gran eficiencia suele usar C++ (de ahi que los juegos 3D y tal estén hechos en C++, tanto en PC como en consolas).
¿Y por que no se hace TODO en C++ si es lo mas eficiente? Parecería lo mas normal hacerlo así, pero lo cierto es que cada día se usa menos C++ y el por que es muy simple, desarrollar en C++ es complicado, es un lenguaje bastante complejo de usar y que tiene muchas limitaciones... por ejemplo si quieres desarrollar para Windows y luego quieres ejecutar ese programa en Linux no funcionara, imagínate ejecutar el mismo programa en una consola o en cualquier otro dispositivo movil o lo que fuese... resumiendo, no es un lenguaje multiplataforma, por lo que tendrás que aprender los entresijos de cada plataforma para desarrollar para ella (y eso es tiempo y esfuerzo). Otra gran limitación es que no tiene un buen soporte de multihilo (no ha tenido soporte para usar varios procesadores a la vez hasta muy muy poco y es muy precario) y tampoco se puede usar para temas web, por ejemplo.
Java:
Por todas estas limitaciones que acabo de contar nació Java, el objetivo de Sun cuando lo creó fue centrarse en lograr un lenguaje que fuese el sustituto de C++, quitándole todos sus defectos y que se pudiera ejecutar en cualquier dispositivo. La idea era que Java fuese el lenguaje preferido para programar lavadoras, frigoríficos, lavavajillas, DVDs, etc durante los años 90 pero hicieron un lenguaje tan bueno que se uso para muchísimas mas cosas y se le han ido añadiendo características cada pocos años.
A día de hoy Java es de los lenguajes mas usados del mundo (si no el que mas) porque tu haces un programa, y te da igual la plataforma, te da igual si estas desarrollando para Linux, MacOS, Windows, Xbox o lo que fuese, el programa funcionara en cualquier parte, así que es un lenguaje multiplataforma (el por que lo es lo puedes consultar en la wikipedia, es un poco engorroso de explicar la primera vez). Ademas de ser multiplataforma también se puede usar Java para temas Web, es un lenguaje perfecto para utilizar varios hilos (uso de varios procesadores), Sun creó unas librerías super completas que te lo hacen casi todo (el famoso API de Java) y encima es sencillisimo de aprender, por todo esto Google escogió Java como lenguaje para desarrollar en Android. ¿Donde esta entonces la pega de Java? Pues que su rendimiento no es tan bueno como el de C++, o mejor dicho, no era tan bueno como el de C++, ya que con las versiones de Java que han ido saliendo (realmente me refiero a la JVM, pero no quiero entrar ahí) se ha reducido muchísimo la diferencia y ademas Java puede usar varios núcleos, por lo que dependiendo del programa puede superar en rendimiento por mucho a un programa en C++.
Resumiendo:
Como todo en la vida, ¿que es mejor escoger entonces Java o C++? pues todo depende de lo que quieras hacer, para programas que requieran un gran rendimiento y sean aplicaciones de escritorio C++ es la típica respuesta, para el resto Java.
Aun así mi consejo es, que si lo que quieres es desarrollar un juego (es lo típico), te tires de cabeza a por Java y LibGDX mas adelante, porque C++ es mucho mas difícil de aprender y hacer un juego puede ser de lo mas difícil que exista en programación, por lo que lo ideal es empezar con Java, hacer un juego con LibGDX y cuando ya tengas experiencia y domines Java y crear juegos, aprendas C++ (que es parecido a Java, por lo que lo aprenderás rápido) y luego aprendas cualquier otra librería para hacer juegos con C++ (por ejemplo Cocos2D-X).
Un saludo!