Pessoal, depois de um bate papo com o pessoal no “warm-up Abaporu”, ficou uma pergunta que não quer calar… :roll:
:?: Até aonde pode-se chegar com o Java? Qual é o limite da linguagem?
:arrow: Tenho algumas pretenções com a linguagem. Porém pelo que vejo é meio complicado trabalhar com hardware e java… e se eu usar o JNI a multiplataforma vai pro saco…
:?: Seria possivel, por exemplo, criar um Driver, ou até mesmo (não riam por favor) quem sabe criar um sistema operacional com java puro?
Não levem muito a serio o que estiver desta linha para baixo… Foi um momento de delírio pessoal…
Sonhando muito muito alto… (para ser sincero exagerando bastate)…
Imaginem um sistema operacional onde o Swing fosse carregado como uma API e a JM fosse o seu sistema operacional? (Depois dessa só tomando medicação muit forte pra cabeça)
Teoricamente sim, desde que alguém criasse alguma VM em hardware (que é tecnicamente possível), por exemplo. Mas acho que é inviável economicamente um SO para PCs feito em Java.
Hmmm… não é necessário uma VM em hardware. Mas um bootstrap que carregue a VM em memória, e a partir daí carregue o ambiente do SO. Só não consigo imaginar qual seria a dinâmica com o sistema de janelas subjacente (para o Swing) uma vez que não há. Isso deveria levar ao desenvolvimento de todo esse sistema e… afe, cruz!
o java desktop system não é um sistema operacional java,
é um reempacotamento de um linux, com o gnome desktop pre configurado e java ja instalado nele e tudo integrado (não testei ainda, mas tenho vontade de testar o sistema, mas eles não disponibilizaram nem um demo )
mas vai ser comercializado como sendo um produto Sun, é isso mesmo ?
e futuramente … quem sabe … open source agora … o q será depois com as notícias de q a Sun estah mal das pernas ? tem alguma coisa por aih … vamos conferir !
Perfeitamente… poderiamos ter uma JVM em C/C++ que fosse “bootavel” e oferecesse camadas de abstracao um pouco menos “abstratas” do hardware - te deixando, por exemplo, gerenciar interrupcoes de I/O diretamente em Java.
Existem alguns projetos de SOs feitos em Java, e eu ate cheguei a dar uma olhada no codigo do JOS, e dos drivers pra HD IDE dele. O grande problema, pra um sistema operacional desses, eh implementar uma JVM decente - e tem que ser muito boa pra se tornar algo serio - mantendo o sistema todo leve e portatil.
Nao eh esse bicho de sete cabecas todo - bastaria usar uma implementacao, por exemplo, de um servidor X em Java, coisa que ja existe, pra prover o subsistema de janelas. Tem coisas bem piores de se implementar, como, por exemplo, o gerenciamento de processos e o mecanismo de seguranca
Java nunca vai entrar dentro de um SO porque não é uma linguagem que suporte programação real-time, o RT-java alivia muito isso, mais ainda assim tem seus problemas.
Gerenciamento de processos não é 1 bixo de 7 cabeças, segurança não é dificil se voce usar o modelo de acls posix…
O sistema operacional “90%” em Java que eu conheço foi feito para rodar coisas Java.
É o SavaJe, que roda em celulares. [size=“9”]Ou melhor, em celular. Acho que só tem um modelo com as configurações mínimas para ele.[/size]
Hmmm… e pq precisariamos de programacao realtime pra um SO em Java? No escalonador de processos? Talvez isso possa ser algo isolado a ponto de poder ser escrito em C, mesmo, nao?
:arrow: Teria que criar uma VM para fazer o trabalho sujo, tipo, boot, formatar, criar partições, acessar disquetes e por ai vai…
:arrow: Depois todas as apis da interface gráfica e o restante seria em java puro? Certo?
Então vou ser um pouco mais real. Seguindo o contexto já temos o Linux que é Open Source, certo? Haveria então uma possibilidade de alterar o Kernel dele de foma fosse um espécie de JavaLinux de verdade?.. Ficaria super leve para máquinas que rodem apenas aplicações… Pq nesse casso teria apenas o Java e mais nada… (pq alguma coisa me diz que eu viajei mais ainda…)
Kernel leve por kernel leve, melhor usar uma forma modificada no Minix, que é mais simples mas bem eficiente. Além do mais, tem um livro do Tanenbaum ensinando a montar um sistema operacional usando este kernel.
Putz, antes que alguém aí comece a xingar a minha mãe ou a fazer voodoo contra mim, melhor não perder tempo e ler a velha discussão Tanenbaum vs. Torvalds: http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html.
[quote=“cv”]
Hmmm… e pq precisariamos de programacao realtime pra um SO em Java? No escalonador de processos? Talvez isso possa ser algo isolado a ponto de poder ser escrito em C, mesmo, nao? :)[/quote]
Porque um kernel precisa de comportamento razoavelmente deterministico e java não possui isso. Voce não vai querer que o GC rode dando o elevador de IO tiver trabalho para fazer, por exemplo.
Realtime? Bom, voce precisa que o kernel opere em realtime quando for chamar drivers, tratar interrupções, executar o scheduler, tratar page-faults e um monte de outras operações que precisam operar em 1 intervalo máximo de tempo senão o sistema todo vai ser 1 carroça.
Outra coisa são restrições quanto ao uso de memoria; voce sabe qual o tamanho da pilha das kernel-threads do win2k? 8k.
Provavelmente se tivesse uma forma de desabilitar o GC, uma interface com o alocador da VM e não existisse background compilation, talvez seja viavel.
Daniel, o minix é 1 SO educacional, ele é lento pacas e lotado de restrições, como limite de memoria detectada, número de processos (32), não tem threads e por ai vai.
É, eu sei, Louds. Eu já o instalei numa máquina para ver como ele é e ele é bem restrito mesmo. Mas, como eu disse, se o modificássemos para que ele ficasse um pouquinho mais decente, seria um kernel interessante para esta idéia de SO em Java.
Tbm acho, porém creio que um sitema próprio para java, em uma estação de trabalho, (um caixa de supermerdado por exemplo) ficaria muito mais leve e acabaria com o mito de que o java precisa de “máquinão” pra rodar. Por exemplo tenho aki onde eu trabalho um parque de aproximadamente umas 500 maquina (td entre PII300 e K6II500).
:arrow: Um SO destes com um CD de instalação do tipo ponha no CD-Rom e esqueça que o resto ele faz sozinho… Faria uma puta economia de hardware e licença… Um sistema bem leve para rodar apenas applicações em java e um browser creio que um PII 300 com 32 de Ram seria mais que suficiente…
Tah, tah, mas ateh agora ninguem perguntou: qual a vantagem de se escrever um SO desses, ao inves de embutir uma JVM no sistema operacional, como o que foi feito pela Apple no MacOS X?
Pra todos os usos que foram falados aqui, ja existe Linux, *BSD, Windows e td mais