Concurso Analista  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
javadust
Smalltalk

Membro desde: 23/06/2008 19:20:27
Mensagens: 3
Offline

Pessoal, é o seguinte, participei de um concurso esse final de semana e gostaria de dividir uma dúvida com vocês. A questão esta aqui embaixo:

Marque a alternativa correta referente à linguagem
Java:
a) O pacote java.lang é importado automaticamente
b) A linguagem Java é dependente de plataforma
c) Em java, objetos são armazendos na memória de
heap e manipulados através de ponteiros
d) O Bytecode prescinde da máquina virtual java
(JVM) para executar em qualquer máquina
e) Em Java, a memória alocada é liberada pelo
programador

Sei que a primeira opção esta correta, mas fiquei na dúvida entre ela e a letra d e acabei marcando a letra d, e com a chegada do gabarito pensei em tentar entrar com um recurso para tentar anular a questão. Eis a minha dúvida: Utilizar o GCJ para compilar o código do bytecode em código de maquina pode ser considerado executar o bytecode ? Caso alguem concorde comigo que para executar o bytecode precisa da jvm, poderia me mandar uma referência sobre o assunto, pois para o recurso preciso de uma referência.
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

javadust wrote:PSei que a primeira opção esta correta, mas fiquei na dúvida entre ela e a letra d e acabei marcando a letra d, e com a chegada do gabarito pensei em tentar entrar com um recurso para tentar anular a questão. Eis a minha dúvida: Utilizar o GCJ para compilar o código do bytecode em código de maquina pode ser considerado executar o bytecode ? Caso alguem concorde comigo que para executar o bytecode precisa da jvm, poderia me mandar uma referência sobre o assunto, pois para o recurso preciso de uma referência.


Mesmo o GCJ tem uma mini-jvm lá dentro, porque algumas partes do código Java não podem ser compilados diretamente (como código que use reflexão), sempre vai haver alguma coisa que precisa de um interpretador.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
Hempx
JavaEvangelist
[Avatar]

Membro desde: 18/04/2003 03:42:08
Mensagens: 356
Localização: Belo Horizonte
Offline

engraçado que a letra c me parece correta.
[MSN] [ICQ]
rmendes08
GUJ Master
[Avatar]

Membro desde: 29/05/2008 14:09:28
Mensagens: 1618
Offline

Ao que parece a letra (c) também está correta, mas o problema aí eu acho que é a nomenclatura usada. No caso de Java, os objetos são manipulados através de referências, que são variáveis que armazenam o endereço do objeto na memória, porém, diferentemente de C/C++ você não pode usá-las para aritmética de ponteiros. Uma thread interessante sobre o assunto: http://www.guj.com.br/posts/list/61217.java#321506

"A Técnica é transformada em Arte por quem a emprega"

"O futuro pertence àqueles que acreditam na beleza de seus sonhos"

Computadores Fazem Arte

http://www.uaijug.com.br

"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados."
Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

Com o bytecode dá pra executar diretamente em processadores picoJava. Com o bytecode também dá pra compilar p/ código nativo. Nenhum desses precisa de uma JVM.

A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
Hempx
JavaEvangelist
[Avatar]

Membro desde: 18/04/2003 03:42:08
Mensagens: 356
Localização: Belo Horizonte
Offline

eh... concordo com você. Mas não deixa de ser um ponteiro
[MSN] [ICQ]
javadust
Smalltalk

Membro desde: 23/06/2008 19:20:27
Mensagens: 3
Offline

A única coisa que me deixa meio desconfortável em relação a existir não necessitar da JVM é o fato de que a JVM tem outras funções além de executar o código como a verificação e etc, mas de qualquer forma, a parte relacionada a compilar o código em linguagem de máquina teria que implementar a especificação da JVM... O que vocês acham ?
**Popeye12345**
GUJ Master

Membro desde: 30/03/2008 20:56:41
Mensagens: 1293
Offline

O que eu acho é que questão de concurso é foda. Parece que tem 3 corretas aí. O que eu já vi de questão assim...

Brincadeira viu.

Parece que só a B,e a E estão erradas. Ao menos, eu to vendo assim.

This message was edited 2 times. Last update was at 24/06/2008 12:32:57


unnamed.

there are so many monkeys at guj.
andre2k2
JavaEvangelist

Membro desde: 27/03/2007 14:54:31
Mensagens: 353
Offline

Pra mim a letra "c" está correta, referencia e ponteiro é a mesma coisa... pra mim caberia recurso nessa questão, está mal formulada... a letra "a" tb está correta!! Mas na duvida eu teria marcado letra "a" que é mais obvio!!
andre2k2
JavaEvangelist

Membro desde: 27/03/2007 14:54:31
Mensagens: 353
Offline

javadust wrote:A única coisa que me deixa meio desconfortável em relação a existir não necessitar da JVM é o fato de que a JVM tem outras funções além de executar o código como a verificação e etc, mas de qualquer forma, a parte relacionada a compilar o código em linguagem de máquina teria que implementar a especificação da JVM... O que vocês acham ?


Acho q a "d" está errada por que o byte code nao executa em qq maquina, ele executa em qq implementação de maquina virtual... pela maneira como foi escrita da a entender que o byte code eh gerado pela maquina virtual e pode ser executado em qq maquina diretamente, sem necessidade de VM!
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

javadust wrote:...
d) O Bytecode prescinde da máquina virtual java
(JVM) para executar em qualquer máquina
(...)
Caso alguem concorde comigo que para executar o bytecode precisa da jvm ...


Olá,

Na verdade a grande questão nessa alternativa é mais a língua portuguesa do que a linguagem Java. Prescindir significa "dispensar", "não precisar". Ou seja, a frase diz que o Bytecode NÃO REQUER a JVM para ser executado, o que é falso.
O correto seria dizer que a JVM é IMPRESCINDÍVEL para executar um bytecode.

http://www.dicionarioinformal.com.br/buscar.php?palavra=prescindir
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

gomesrod wrote:Olá,

Na verdade a grande questão nessa alternativa é mais a língua portuguesa do que a linguagem Java. Prescindir significa "dispensar", "não precisar". Ou seja, a frase diz que o Bytecode NÃO REQUER a JVM para ser executado, o que é falso.
O correto seria dizer que a JVM é IMPRESCINDÍVEL para executar um bytecode.

http://www.dicionarioinformal.com.br/buscar.php?palavra=prescindir


Acho que você não entendeu, é exatamente o que o pessoal está falando, que é possível não ter uma JVM para executar o bytecode, já que, teoricamente, você poderia executar o bytecode em um processador que tivesse o bytecode Java como sendo seu código nativo (que é o que "quase" acontece com os processadores PicoJava).

Tecnicamente uma máquina virtual sempre pode ser implementada em uma máquina real, então assumir que a JVM é obrigatória sempre não seria correto, mas do ponto de vista do mundo real isso ainda não existe, e como o próprio pessoal do GCJ afirma:

Site do GCJ wrote:Compiled applications are linked with the GCJ runtime, libgcj, which provides the core class libraries, a garbage collector, and a bytecode interpreter. libgcj can dynamically load and interpret class files, resulting in mixed compiled/interpreted applications. It has been merged with GNU Classpath and supports most of the 1.4 libraries plus some 1.5 additions.


Eles precisam de um interpretador de bytecode pra poder executar uma aplicação Java. Tecnicamente a JVM é obrigatória, mas na teoria ela poderia não existir.

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
gomesrod
GUJ Ranger
[Avatar]

Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline

Maurício Linhares wrote:Acho que você não entendeu (...)

Na verdade agora eu não estou entendendo mesmo! Li e reli o post original, não entendi se ele está questionando a obrigatoriedade de se ter uma JVM ou se ele se enganou na interpretação da frase como eu tinha colocado no post anterior.

Mas enfim, se for o primeiro caso me desculpe aí javadust, foi mal!

Maurício Linhares wrote:Eles precisam de um interpretador de bytecode pra poder executar uma aplicação Java. Tecnicamente a JVM é obrigatória, mas na teoria ela poderia não existir.


Agora dando meu pitaco aqui... esse não seria mais um daqueles casos de coisas possíveis tecnicamente mas que para fins didáticos ou de documentação devemos ignorar? Por exemplo, é possível modificar uma String através da manipulação de atributos private mas em qualquer livro veremos que "as strings são imutáveis". Se alguém perguntar, diremos que "as strings são imutáveis", e assim por diante.
Deve ser a mesma coisa, "precisamos da JVM para executar o bytecode" e ponto final, mesmo que indo um pouco além talvez existam outras possibilidades.
**Popeye12345**
GUJ Master

Membro desde: 30/03/2008 20:56:41
Mensagens: 1293
Offline

Não cara, isso é uma realidade que se prova em pesquisa sim. É possivel um processador com JM incorporada sim.

E se existe em alguma parte do mundo, então derruba a verdade de ser necessário JVM.

Bem, é isso.

Um exemplo; Se perguntassem se é existe algum processador cujo a tecnologia é mais rapida 1000x que o normal, quase todo mundo diria que não:

http://www.webtuga.com/Hardware/Geral/IBM-desenvolve-processador-100-vezes-mais-rapido-que-os-actuais.wtuga

This message was edited 1 time. Last update was at 24/06/2008 13:00:57


unnamed.

there are so many monkeys at guj.
andre2k2
JavaEvangelist

Membro desde: 27/03/2007 14:54:31
Mensagens: 353
Offline

Maurício Linhares wrote:
Acho que você não entendeu, é exatamente o que o pessoal está falando, que é possível não ter uma JVM para executar o bytecode, já que, teoricamente, você poderia executar o bytecode em um processador que tivesse o bytecode Java como sendo seu código nativo (que é o que "quase" acontece com os processadores PicoJava).


Mas a questão diz claramente q pode ser rodado sem a VM em QUALQUER máquina... então está errado por causa desse "qualquer"... mesmo q fosse implementado uma maquina q rodasse byte code ela não seria qualquer maquina, e sim uma máquina especifica... eu ainda acho q ta errado a letra d.
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team