2010-01-01 21 views
26

Quiero saber si es posible hacer una operación como windows-xp que está escrita en lenguaje C como puedo escribir eso en java para que tenga las mismas características escritas en C¿Es posible hacer un sistema operativo usando Java?

+4

¡Ya existe ese sistema operativo! Mira esto => http://sourceforge.net/projects/jos/ – missingfaktor

+7

JOS nunca llegó a ninguna parte ... http://www.jnode.org es un mejor ejemplo. –

+0

Incluso una cantidad mínima de investigación revela que uno ya se ha creado. – Raedwald

Respuesta

36

En teoría sí, pero tú Todavía tendrá que tener un código ensamblador de bajo nivel para iniciar la máquina virtual Java que se ejecutará en la máquina, y también código de bajo nivel para acceder a los controladores de hardware.

De wikipedia:

Dado que Java de Sun Microsystems es hoy uno de los lenguajes orientados a objetos más dominantes, que, no es de extrañar que sistemas operativos basados ​​en Java se han intentado. En esta área , idealmente, el kernel sería consiste en el mínimo requerido para admitir una JVM. Este es el único componente de dicho sistema operativo que debería escribirse en un lenguaje que no sea Java. Construido sobre que JVM y soporte de hardware básico, sería posible escribir el resto del sistema operativo en Java; incluso partes del sistema que son más escrito tradicionalmente en un idioma de nivel inferior como C, por ejemplo, controladores del dispositivo , se pueden escribir en Java.

Ejemplos de intentos de un sistema de este tipo operativo incluyen JX, JNode y JavaOS.

+0

Los controladores de hardware también deberían escribirse en Java. –

3

Depende de lo que considere "funciones". Si se refiere a la interfaz gráfica, efectos de ventana de lujo, etc., entonces sí, aunque necesitará el lenguaje de ensamblaje o C para los bits más bajos (es decir, la interfaz con los puertos de E/S, etc.). Si también incluye los ABI de Windows como una característica, entonces se vuelve más difícil ya que siguen las convenciones de llamadas de Pascal.

+3

Las API de Windows no son una parte necesaria de un sistema operativo. –

5

En teoría, sí. Pero necesitaría de alguna manera hacer que Java VM se ejecute usando código de bajo nivel (a menos que quiera compilar Java para ensamblar, lo que probablemente no sea posible sin sacrificar muchas características de Java).

+0

Eli me ganó aproximadamente la misma respuesta ... –

+0

Jikes RVM (anteriormente IBM Jalapeno) y Maxine de Sun Lab son dos ejemplos de JVM autohospedantes. El primero tiene alrededor de 1000 líneas de C. Java generalmente se compila en código máquina. –

+0

@ TomHawtin-tackline, ¿hizo Maxine al público en general? –

10
+2

Aquí hay una más. http://sourceforge.net/projects/jos/. Pero repito lo que dicen Eli Bendersky y Ron Gejman. –

+0

¿Puedo instalarlo en VmWare? –

3

sistemas de operación están más cerca del hardware (como los conductores). en mi opinión, esto no es el área de Java (simplemente la solución incorrecta del sistema operativo del dominio del problema).

5

En teoría, podría escribir todo el sistema operativo en Java con un Java processor. Básicamente utiliza bytecode Java como el conjunto de instrucciones para el procesador

3

Como se mencionó anteriormente, ya se ha intentado. Jnode es el único que ha resistido la prueba del tiempo y se está trabajando activamente a pesar de que no han lanzado una nueva versión en años. Pero si miras sus confirmaciones de Git, están trabajando en un lanzamiento inminente mientras escribo esto. Soy un fanático de Java y espero con ansias el lanzamiento. Las personas que odian los lenguajes imperativos verbosos como Java se avergüenzan de la idea, pero no es para todos.

También es interesante la idea de implementar el código de bytes de Java en el hardware. No creo que vaya a ir a ninguna parte, ya que la fortaleza de Java es que no necesita preocuparse demasiado por el hardware. Solo necesita obtener un sistema operativo en Java y se puede ejecutar en cualquier JVM.

Creo que la verdadera potencia de Java en el dominio del sistema operativo es la virtualización. No puedo pensar en una mejor manera de tener un sistema operativo virtual, ya que Java está en todas partes.

Como otros carteles mencionados anteriormente, no se puede implementar completamente en Java sin una implementación de hardware de Java. Jnode está completamente escrito en ensamblaje y Java. Pero luego todos los sistemas operativos modernos usan algún lenguaje ensamblador.

Cuestiones relacionadas