A Grande Mancada da SUN! ["RESOLVIDO"]

Isso mesmo estou afirmando que é revoltante não existir algo para obter infomações de hardware em Java.

Se for para usar scripts, ou outras liguagens mescladas de que adianta a portabilidade sendo que você acaba perdendo isso?!

Esses dias precisei pegar informações de HD e CPU e… “pã” me sinti como a TELA AZUL do Windows, resumindo tive que ir no site da Microsoft para conseguir algo pra usar no meu código, que lixo!.

Funciona mas e daí, agora você acaba tendo uma app que só vai funcionar no Windows, ou tenha 1000 versões da mesma app.

MANCADA SUPREMA! Valeu SUN por não pensar no básico! Até o Billy Graves pensou nisso.

Agora já sei milhões de defensores do Java vão me crucificar… mas sejam sinceros vocês nunca pensaram: “Putz poderia ter isso ou aquilo”…

Nada é perfeito, mas sempre existe mais de uma alternativa …

Talvez a API SIGAR te ajude. Ela abstrai as particularidades dos principais SOs suportados pelo Java:
http://www.hyperic.com/products/sigar

pois eh tenho que concordar, mas se fosse perfeito nao teria graça :D. Manda uma nota para eles, quem sabe na proxima nasce algo?

Realmente, foi uma baita mancada.

Baixa integração com hardware é uma característica de qualquer linguagem que rode sobre uma virtual machine. Se você precisa de integração com SO e hardware, não deveria ter escolhido java.

O Java ainda tem que evoluir muito, perfeito para Web, tosco para desktop.

Sejamos humildes e vamos tirar o chapéu para o sr. Bill Gates e alguém da Borland…

Admiro os que reconhecem com humildade que o Java não é o MBA das linguagens e que tb possui limitações como qq outra, a única vantagem do Java é rodar em várias plataformas, mas parece que isso acaba se limitando por faltar coisas básicas na linguagem. Pelo visto terei que desenvolver minha própria linguagem multiplataforma. Como estou sem tempo vou usar o que a empresa manda.

Eu trabalhei com Java em Desktop por 6 anos, e acho a linguagem excelente. Não tem nada de tosco.

O swing é poderoso, extensível. Só não é lá muito fácil de aprender, mas depois que se vence a curva de aprendizado, é bem fácil de usar.
Tem um bom pacote de pintura 2D também, para caso você precise desenhar um componente no braço. Fora a existência de diversas bibliotecas de terceiros para construção de rich applications.

A parte muti-plataforma também funciona muito bem. Minha aplicação rodava em Windows, Mac e Linux, com o mínimo esforço de recodificação. Claro que para isso você deve seguir as práticas recomendadas pela sun, como o uso de layout managers no lugar do null layout.

Agora, essa portabilidade tem um preço. E o preço, é afastar-se do hardware. Por isso a existência de uma máquina virtual. Para aplicação java, todo hardware é igual e é a VM. É isso que garante essa portabilidade toda. Ok, poderia ter uma função para obter informações de hadware, já que isso provavelmente é suportado na maioria dos SOs. Mas mais integração do que isso começa a afetar a chance de mais portabilidade para uma comunidade pequena de usuários.

Você mesmo citou algumas alternativas para driblar o problema. É possível escrever um comando externo e, como é possível obter em que SO está trabalhando com o System.getProperties, você pode até mesmo manter seu programa portável. Também seria possível escrever alguns drivers com JNI ou JNA, embora isso não seja uma tarefa 100% trivial.

Se você vai precisar de muita integração (sei lá, manipular controles de video-game, ou ligar-se via porta serial/paralela a um dispositivo, ou mesmo usar a USB), procure por bibliotecas externas já construídas por outras pessoas. A comunidade é grande e existe muita coisa implementada (eu cheguei a achar até drivers para GP&I). Se ainda assim não encontrar, infelizmente, você esbarrou numa das limitações da plataforma, e será obrigado a construir algo usando JNI/JNA.

[quote=ViniGodoy]Eu trabalhei com Java em Desktop por 6 anos, e acho a linguagem excelente. Não tem nada de tosco.

O swing é poderoso, extensível. Só não é lá muito fácil de aprender, mas depois que se vence a curva de aprendizado, é bem fácil de usar.
Tem um bom pacote de pintura 2D também, para caso você precise desenhar um componente no braço. Fora a existência de diversas bibliotecas de terceiros para construção de rich applications.

A parte muti-plataforma também funciona muito bem. Minha aplicação rodava em Windows, Mac e Linux, com o mínimo esforço de recodificação. Claro que para isso você deve seguir as práticas recomendadas pela sun, como o uso de layout managers no lugar do null layout.

Agora, essa portabilidade tem um preço. E o preço, é afastar-se do hardware. Por isso a existência de uma máquina virtual. Para aplicação java, todo hardware é igual e é a VM. É isso que garante essa portabilidade toda. Ok, poderia ter uma função para obter informações de hadware, já que isso provavelmente é suportado na maioria dos SOs. Mas mais integração do que isso começa a afetar a chance de mais portabilidade para uma comunidade pequena de usuários.

Você mesmo citou algumas alternativas para driblar o problema. É possível escrever um comando externo e, como é possível obter em que SO está trabalhando com o System.getProperties, você pode até mesmo manter seu programa portável. Também seria possível escrever alguns drivers com JNI ou JNA, embora isso não seja uma tarefa 100% trivial.

Se você vai precisar de muita integração (sei lá, manipular controles de video-game, ou ligar-se via porta serial/paralela a um dispositivo, ou mesmo usar a USB), procure por bibliotecas externas já construídas por outras pessoas. A comunidade é grande e existe muita coisa implementada (eu cheguei a achar até drivers para GP&I). Se ainda assim não encontrar, infelizmente, você esbarrou numa das limitações da plataforma, e será obrigado a construir algo usando JNI/JNA.[/quote]

excelente vinny, estava lendo hoje sobre java desktop e fiquei surpreso, com os recursos da tecnologia. As vezes criticamos o que nao sabemos direito. Parabens por compartilhar sua experiencia.

Vide comentário do ViniGodoy. Nenhuma linguagem é perfeita e Java tem um foco diferente de outras linguagens mais baixo nível. Concordo que faz falta uma forma de conseguir esse tipo de informação e que se quisessem isso não seria tão difícil de implementar na próxima JRE. Mas dizer que Java é tosco já se torna um ataque sem fundamento do qual eu discordo.

Novamente a questão do foco da linguagem (sem contar que creio que o Bill Gates não é tão bom programador assim; o que ele é, sem dúvida, é um bom empreendedor).

Meus sinceros votos de boa sorte! :slight_smile:

No tempo em que ele punha a mão na massa, ele escrevia em Assembly (8085) mesmo:

http://americanhistory.si.edu/collections/comphist/gates.htm#tc35

No tempo em que ele punha a mão na massa, ele escrevia em Assembly (8085) mesmo:

http://americanhistory.si.edu/collections/comphist/gates.htm#tc35


[/quote]
Ainda não estou muito convencido… escovar bits não implica ser bom programador (mas admitamos: Assembly não é para qualquer um).

Tradução: Existem milhares de maneiras de contornar o problema, so que vou ter que sair do meu mundinho chamado “linguagem” java.

As linguagens se curvam diante do programador, não o contrário.

Se você quer baixo nível, use C/C++, ou algo parecido.

Por falar nisso, é possível implementar métodos Java em C++, com o possível custo de portabilidade.

Se você quiser descer a serra ainda mais: o bom e velho assembly não morreu !

Repetindo o que já foi dito com excelência: “…não deveria ter escolhido java…”

você consegue muito bem implementar um script para SO windows, outro para linux, verificar qual o SO e chamar o script adequado… mantendo assim sua aplicação portavel apesar dessa dificuldade…

o problema foi falta de imaginação, não uma limitação da linguagem, apesar de obviamente ser necessário você aproveitar outras linguagens como ja desseram e ja mostraram o motivo disso.

e quanto a parte dos que irão te crucificar, talvêz não teria isso se sua mensagem fosse um pouco menos ofensiva…

[quote=Jingo]
Admiro os que reconhecem com humildade que o Java não é o MBA das linguagens e que tb possui limitações como qq outra, a única vantagem do Java é rodar em várias plataformas, mas parece que isso acaba se limitando por faltar coisas básicas na linguagem. Pelo visto terei que desenvolver minha própria linguagem multiplataforma. Como estou sem tempo vou usar o que a empresa manda.[/quote]

Coisas básicas? que toda a linguagem devia ter? Pois é realmente, esqueci a quantidade de vezes que os sistemas que desenvolvemos precisaram saber o espaço em disco da maquina, ou alguma informação de hardware.

Isso eu acredito que não seja o básico e nem necessario, isso é o que vc precisa, não o que a maioria dos desenvolvedores precisa.

Acredito que a JVM poderia fornecer essas informações, como já fornece por exemplo a arquitetura do SO, Sistema Operacional.

Mas alegar que é o básico isso, se tá meio fora né.

Realmente tem uma saída usar JNI, a SUN deve ter feito isso às pressas, “Putz esquecemos de fazer algo para informações de hardware, já sei inventa algo que copie e cole de outra linguagem, é gambiarra mas funciona”.

mochuara >> você quis dizer interpretação, como se traduz para um mesmo idioma?

leorbarbosa >> aprender assembly é fácil o problema é usar com Java, esquece, é capaz do Java me deixar na mão e passar uma solução gambiarra.

marcobiscaro2112 >> virei seu fã, manja + que o Bill Gates, acorda.

ViniGodoy >> não leva para o lado pessoal.

maior_abandonado >> O ÚNICO QUE ESTÁ DE ACORDO COM A REALIDADE, seu comentário pode ser levado a sério.

Felagund >> concordo talvez nem todos precisem.

Eu diria que a maioria não precisa …

Nenhuma linguagem tem tudo. E o Java tem uma forma fantástica de aproveitar coisas que já foram implementadas (ou são exclusivas) de outras linguagens, em especial C e C++. Isso é o JNI. Além disso está o JNA que vem crescendo bastante e está muito além de “uma gambiarra” (se fosse assim, nem funcionaria).

Acredito que a falta de capacidade de alguns para encontrar soluções acaba gerando revolta. Quando a solução fica além do que já vem pronto, se torna custoso implementá-la e é melhor ir para algum fórum de Java falar que a Sun cometeu uma grande mancada por não deixar pronto o que eu preciso.

Aqui caem como uma luva as palavras do mochuara:
“Existem milhares de maneiras de contornar o problema, só que vou ter que sair do meu mundinho chamado Java.”

Interessante a forma como você chega a conclusões sem sentido. Eu em momento algum disse nada do gênero.