Java to C sería en realidad el más fácil. Recuerde que necesita convertir el idioma. Si lo hace, el compilador nuevo puede convertir las bibliotecas necesarias. En otras palabras, Swing y AWT no deberían ser un gran problema ...
Comenzaría echando un buen vistazo a la interfaz Java Native Interface (JNI). El JNI es una parte de Java que permite su uso con C y C++. La razón por la que comenzaría aquí es que se vuelve bastante obvio cómo partes de Java pueden implementarse en C. Una vez comprendí las estructuras básicas, como cómo se pueden mapear los objetos Java en estructuras C (struct) y cómo casi todo en Java es un objeto que incluye matrices; podría echar un vistazo al código fuente de Open JDK.
El convertidor real tendría que convertir todas las bibliotecas Java importadas (y sus bibliotecas importadas y así sucesivamente ...) lo que significa que necesitaría el código fuente para todo. Esta conversión no es una tarea pequeña ya que las bibliotecas de Java son grandes.
El proceso llevaría mucho tiempo, pero no debería requerirse AI. Sin embargo, no veo ninguna razón para realizar una conversión como esta. Pierde la portabilidad de Java y no obtendría la eficiencia de C (excepto que se compilaría con código nativo, pero sería mejor compilar el código de máquina directamente desde Java).
Es una buena pregunta. Siempre me he preguntado: ¿por qué traducimos automáticamente los lenguajes naturales complejos (http://translate.google.com/translate_t), pero no traducimos automáticamente entre los lenguajes de programación restringidos y mucho más simples? – Frank
Una razón, por supuesto, es que no se toleran errores al traducir entre lenguajes de programación, mientras que los humanos son más flexibles y entienden la traducción de todos modos, incluso si contiene errores. – Frank
Algunos intentos: [ONE] (http://tech.novosoft-us.com/product_c2j.jsp) y [TWO] (http://www.soften.ktu.lt/~stonis/c2java/index.html) para hacer un convertidor de C a Java. – Lazer