[Resolvido]Java é Multi-Plataforma?

Calma, Pessoal, vou explicar…

Na verdade essa é mais uma chamada ao raciocinio do que uma pergunta em si, Conversando com um amigo, e lendo algumas coisas sobre Java, Apostila da Caelum e mais alguns artigos. Chegamos em uma Charada, que pode ser meio sem lógica, mas que ao mesmo tempo pode ter muita lógica.

Se alguém me perguntasse : Java é Multi-Plataforma ?
Eu responderia: Não, Java é uma linguagem de Alto Nivel, Orientada á Objetos e Compilada(Gera BYTECODE, diferente do PHP por exemplo).

Se alguém me perguntasse: Posso rodar meu programa Java em Qualquer Sistema Operacional ?
Eu responderia: Sim, Java é uma linguagem de Alto Nivel, Orientada á Objetos e Compilada. Que utiliza o conceito de Virtual Machine, conceito este que possibilita programas java funcionarem em Qualquer Plataforma.

O resultado final de Java é BYTECODE, Este vai para a JVM,…
O jeito da JVM trabalhar BYTECODE é igual para qualquer Plataforma certo ?
O que muda são os comandos/instruções que a JVM vai mandar para JRE ?
JRE é desenvolvida para cada Plataforma, e é ela que “Conversa” com o Sistema Operacional ?
Onde esta o ponto de Ligação entre o (JAVA/BYTECODE/JVM) e o Runtime Environment ?
Runtime Environment é o cara que representa o sistema operacional e suas Individualidades(Windows/Linux) ?

Penso que essas perguntas são legais de se pensar, pois pelo que entendi o Conceito de Virtual Machine, que é o CARA…

se estiver errado alguém me avise, rsrsrs…

Abraço Pessoal.

Ja que java é rodada na propria VM,ela nao seria multi plataforma pq?

[quote=joao.junior]Calma, Pessoal, vou explicar…

Na verdade essa é mais uma chamada ao raciocinio do que uma pergunta em si, Conversando com um amigo, e lendo algumas coisas sobre Java, Apostila da Caelum e mais alguns artigos. Chegamos em uma Charada, que pode ser meio sem lógica, mas que ao mesmo tempo pode ter muita lógica.

Se alguém me perguntasse : Java é Multi-Plataforma ?
Eu responderia: Não, Java é uma linguagem de Alto Nivel, Orientada á Objetos e Compilada(Gera BYTECODE, diferente do PHP por exemplo).

Se alguém me perguntasse: Posso rodar meu programa Java em Qualquer Sistema Operacional ?
Eu responderia: Sim, Java é uma linguagem de Alto Nivel, Orientada á Objetos e Compilada. Que utiliza o conceito de Virtual Machine, conceito este que possibilita programas java funcionarem em Qualquer Plataforma.

O resultado final de Java é BYTECODE, Este vai para a JVM,…
O jeito da JVM trabalhar BYTECODE é igual para qualquer Plataforma certo ?
O que muda são os comandos/instruções que a JVM vai mandar para JRE ?
.[/quote]

Não. Quem muda é a JVM. A JRE é o conjunto da JVM e outras ferramentas como o Java Plugin e o JWS, por exemplo.

Oi,

Os programas em Java, quando compilados, são convertidos para um código intermediário (bytecode), que é verificado, carregado na memória e então interpretado pela JVM (Java VirtualMachine).

JVM: tradutor de código Java (bytecode) para instruções específicas de cada sistema e dispositivo;

Poderia dizer que JAVA é “Cross-Platform”, ou seja, o mesmo código Java roda em diversas plataformas sem a necessidade de alteração do código da aplicação…

Obs: Estou sem tempo para responder todas as perguntas, assim que possível voltarei aqui para tentar responde-las…

Tchauzin!

guialeixo, concordo com voce…

Mas a Linguagem JAVA, seria só linguagem mesmo que retorna BYTECODE ?..Multi-Plataforma seria conceito de Maquina Virtual, que independente do sistema interpreta o mesmo codigo ?

Eu tenho uma opinião diferente disto:

Todas as linguagens de programação, mesmo as de máquina, são multiplataforma em potencial. Linguagens são somente especificações e abstrações matemáticas que rodam em suas próprias máquinas imaginárias.

Programamos C para rodar uma máquina imaginária que roda C diretamente. Programamos Ruby para rodar em Ruby. Whitespace em whitespace. Mesmo linguagens de máquinas, como a i386, a fazemos para rodar numa máquina que deve implementar i386. A mesma forma digo que programas Linux foram feitos para rodar em Linux. Um sistema operacional também é uma especificação.

Agora ser multiplataforma na real depende se existem compiladores, interpretadores ou máquinas de verdade para rodar essa linguagem e obter resultados físicos. O problema é que para fazer coisas específicas à uma plataforma real, os programas(não as linguagens) tem que se amarrar um pouco à uma implementação específica, e deixam de ser multiplataforma. Mesmo o Java precisa de métodos nativos para realizar as suas operações, e a JVM cuida de transformar um programa de uma linguagem(em java bytecode) para outra(por exemplo, windows x86), que rodará em outra especificação/plataforma (windows x86).

Linguagem Java não é a mesma coisa que Plataforma Java.

Apesar de ter o mesmo nome, a linguagem java é apenas uma das linguagens que a plataforma Java roda.

A plataforma Java é Multi-Plataforma.

[quote]odair.bonin
Linguagem Java não é a mesma coisa que Plataforma Java.

Apesar de ter o mesmo nome, a linguagem java é apenas uma das linguagens que a plataforma Java roda.

A plataforma Java é Multi-Plataforma.[/quote]

Isso mesmo, esse é o ponto que eu queria mostrar nesta charada, Linguagem é linguagem, O que tem na Linguagem Java, pode ser implementado em qualquer outra Tipo: Orientação á Objetos, Tipagem Forte, Ponteiros e etc.

Agora O Conceito de Virtual Machine da Plataforma Java, sim esse é multi-plataforma…

rsrs…pelo numero de visitas no post, muita gente deve ter me xingado…rrsrsr

[quote=joao.junior][quote]odair.bonin
Linguagem Java não é a mesma coisa que Plataforma Java.

Apesar de ter o mesmo nome, a linguagem java é apenas uma das linguagens que a plataforma Java roda.

A plataforma Java é Multi-Plataforma.[/quote]

Isso mesmo, esse é o ponto que eu queria mostrar nesta charada, Linguagem é linguagem, O que tem na Linguagem Java, pode ser implementado em qualquer outra Tipo: Orientação á Objetos, Tipagem Forte, Ponteiros e etc.

Agora O Conceito de Virtual Machine da Plataforma Java, sim esse é multi-plataforma…

rsrs…pelo numero de visitas no post, muita gente deve ter me xingado…rrsrsr[/quote]

mas nisso eu considero java multi plataforma, pois C# num tem essa possibilidade pela sua plataforma.

Com algumas linguagens (Rails, Groovy, Phyton, … ) ficou mais evidente a diferença entre a Linguagem e a Plataforma Java … pois, todas podem rodar na plataforma java.

Mas com a plataforma .NET, voce pode rodar quase 20 linguagens diferentes (conceito de CLR), e está mais avançada neste ponto.

A plataforma java segue no mesmo caminho, dando possibilidade e tirando a exclusividade da linguagem java.

[quote=joao.junior][quote]odair.bonin
Linguagem Java não é a mesma coisa que Plataforma Java.

Apesar de ter o mesmo nome, a linguagem java é apenas uma das linguagens que a plataforma Java roda.

A plataforma Java é Multi-Plataforma.[/quote]

Isso mesmo, esse é o ponto que eu queria mostrar nesta charada, Linguagem é linguagem, O que tem na Linguagem Java, pode ser implementado em qualquer outra Tipo: Orientação á Objetos, Tipagem Forte, Ponteiros e etc.

Agora O Conceito de Virtual Machine da Plataforma Java, sim esse é multi-plataforma…
[/quote]

quando se diz “Java é multiplataforma” é a versão curta para : "A Plataforma Virtual Java é multi-plataforma alta (aka OS)

“Java” sem mais sufixo ou prefixos designa a plataforma. Para se referir à linguagem vc fala “linguagem java” ou apenas “java” (minusculo) quando do contexto se pode inferir que estamos falando da linguagem.

A sua ideia de “a linguagem é a linguagem” não é tão simples assim. A linguagem ainda está amarrada a uma plataforma , porque o compilador é parte da plataforma. A linguagem java é um espelho quase direto da JVM e por isso elas casam bem, mas groovy, por exemplo tb roda na plataforma java (em mais nenhuma outra) . Ruby e Python, por exemplo, não rodam na plataforma java directamente. É preciso criar VM de ruby e python usando a JVM é uma VM em cima de outra VM. Claro que se procura eliminar essa vm do meio, mas o ponto é que as features da liguagem estão sempre associadas a uma VM teorica. Para o Java a VM teorica é uma especificação e a sun implementa uma , a ibm outra e assim vai. Com ruby e outros é a mesma coisa e o truque é escolher implementar uma VM deles usando a JVM.

Java não é apenas multi-plataforma como multi linguagem. Acontece apenas, que , historicamente, apenas a linguagem java existia. Hoje existem muitas mais.

Este é mais um exemplo de como uma coisa pode ter varios sentidos, principalmente quando se fala em linguagem, compilador, ambiente de execução e Sistema Operacional…

Valew, Pessoal.

Resolvido… :slight_smile: