Respuesta corta: no.
Java no genera un ejecutable binario, sino solo bytecode como lo hace C # (CLI), y esto no es algo bueno para negocios serios en "entornos abiertos" por dos razones principales:
- La probabilidad de quedar atrapado en la ingeniería inversa es muy alta, especialmente con lenguajes antiguos y muy conocidos como Java
- no tiene el control total sobre el rendimiento de la máquina, en el caso de Java, la JVM juega un papel importante tomando el control total.
Por supuesto, cada idioma tiene sus propias bibliotecas, pero debido a la gran cantidad de ellas para cada idioma, este no es un problema real y no creo que sea el propósito de este tema.
Tal vez a nivel profesional pueda encontrar algo que pueda romper la regla, como un kit de desarrollo que pueda traducir todas las declaraciones de C # en código de ensamblaje para una máquina del mundo real, pero si este tipo de enfoque no está en las tarjetas, está prácticamente obligado a hacerlo considere solo el C y el C ++ para su desarrollo cuando tenga como objetivo vender su producto en un entorno abierto.
Las cosas son un poco diferentes para los dispositivos móviles porque son un "entorno cerrado", incluso Android está prácticamente cerrado teniendo en cuenta el hecho de que la fuente de las ROM del mundo real no suele estar disponible para el público, Android puede considerarse de código abierto, pero el 99 % de las ROM en dispositivos reales no lo son. En estos casos, no puede discutir demasiado, todo ya está configurado para usted y cada plataforma tiene su propio idioma, como todos saben.
Al final, si va a vender estos productos en entornos abiertos, solo puedo sugerir idiomas que puedan producir código compilado y binario / ensamblado, en entornos cerrados, la decisión es típicamente más fácil de hacer por diferentes razones.