| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 09:20:52
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Estava vendo a implementação do Java e vi que muitas operações ele implementa usando métodos nativos. Tipo, operações com arquivo, acesso ao OS etc. Nisso me surgiram duas dúvidas:
Primeiro, onde eu posso ver a implementação das funções nativas do Java?
Segundo, suponho que isso seja desenvolvido através de DLL's. Por exemplo, quando eu chamo o método open() ou o método read () da classe FileInputStream, na verdade ele vai chamar implementações nativas para fazer isso. Na classe FileInputStream só existe o prototipo do método (perai: protótipo é coisa de C), sem implementação nenhuma. Então, na hora que o desenvolvedor chamar os referidos métodos, como será chamada a verdadeira implementação dos métodos?
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 09:26:11
|
drigo.angelo
Virtual Machine Man
![[Avatar]](/images/avatar/15760e7b4618c67f5eb38e6e089b8b38.png)
Membro desde: 19/11/2009 12:17:08
Mensagens: 744
Localização: Uberlândia - MG
Offline
|
Acho que o código pede para a JVM executar os métodos específicos, que ela sabe como faz..
|
@drigoangelo
IE6 no more
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 13:50:08
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Mas como eu consulto as implementações das funções nativas?
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 13:55:12
|
drigo.angelo
Virtual Machine Man
![[Avatar]](/images/avatar/15760e7b4618c67f5eb38e6e089b8b38.png)
Membro desde: 19/11/2009 12:17:08
Mensagens: 744
Localização: Uberlândia - MG
Offline
|
Acho que essas implementações estão na JVM, visto que podem ser diferentes para cada SO..
|
@drigoangelo
IE6 no more
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 13:58:20
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Sei, eu tô procurando o codigo-fonte de uma JVM para baixar mas não estou encontrando. Você teria algum link?
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:00:16
|
drigo.angelo
Virtual Machine Man
![[Avatar]](/images/avatar/15760e7b4618c67f5eb38e6e089b8b38.png)
Membro desde: 19/11/2009 12:17:08
Mensagens: 744
Localização: Uberlândia - MG
Offline
|
Não sei se o código dela é aberto.. se for também não sei onde tem.
|
@drigoangelo
IE6 no more
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:00:50
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline
|
JAVA_HOME/jre/lib/386/*.so ?
|
------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."
http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:04:39
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Rafael Nunes wrote:JAVA_HOME/jre/lib/386/*.so ?
Aqui nesse diretorio só tem um arquivo jvm.cfg
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:04:58
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
matheuslmota wrote:Estava vendo a implementação do Java e vi que muitas operações ele implementa usando métodos nativos. Tipo, operações com arquivo, acesso ao OS etc. Nisso me surgiram duas dúvidas:
Primeiro, onde eu posso ver a implementação das funções nativas do Java?
Segundo, suponho que isso seja desenvolvido através de DLL's. Por exemplo, quando eu chamo o método open() ou o método read () da classe FileInputStream, na verdade ele vai chamar implementações nativas para fazer isso. Na classe FileInputStream só existe o prototipo do método (perai: protótipo é coisa de C), sem implementação nenhuma. Então, na hora que o desenvolvedor chamar os referidos métodos, como será chamada a verdadeira implementação dos métodos?
Para acessar os métodos nativos você pode usar JNI
http://javafree.uol.com.br/artigo/13913/JNI-Java-Native-Interface.html
As funções nativas estão implementadas em outras linguagens como C
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:14:12
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
André Fonseca wrote:
matheuslmota wrote:Estava vendo a implementação do Java e vi que muitas operações ele implementa usando métodos nativos. Tipo, operações com arquivo, acesso ao OS etc. Nisso me surgiram duas dúvidas:
Primeiro, onde eu posso ver a implementação das funções nativas do Java?
Segundo, suponho que isso seja desenvolvido através de DLL's. Por exemplo, quando eu chamo o método open() ou o método read () da classe FileInputStream, na verdade ele vai chamar implementações nativas para fazer isso. Na classe FileInputStream só existe o prototipo do método (perai: protótipo é coisa de C), sem implementação nenhuma. Então, na hora que o desenvolvedor chamar os referidos métodos, como será chamada a verdadeira implementação dos métodos?
Para acessar os métodos nativos você pode usar JNI
http://javafree.uol.com.br/artigo/13913/JNI-Java-Native-Interface.html
As funções nativas estão implementadas em outras linguagens como C
Eu sei que usa JNI, mas o que eu não entendo é isso: digamos que eu tenha um pequeno programa. A única coisa que ele faz é ler o conteúdo de um arquivo e mostrar no console. A operação de leitura é implementada de forma nativa. Mas quem faz essa ligação entre a implementação nativa e o programa cliente?
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:22:22
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
Entendi, não sei como ele faz este binding
http://java.sun.com/docs/books/jvms/second_edition/html/ConstantPool.doc.html#74727
Você pode baixar o fonte do openjdk
http://download.java.net/openjdk/jdk7/
abs
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:33:03
|
matheuslmota
Virtual Machine Man
Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline
|
Pelo que entendi então fica por conta da JVM tanto o binding como a implementação. Falei besteira?
Abs
|
Toda vez que você alimenta um troll uma foca morre no Polo Norte. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:38:08
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
A implementação é feita na linguagem nativa, o binding é feito pela JVM
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2011 14:45:57
|
André Fonseca
JWizard
![[Avatar]](/images/avatar/286b0b3ea509af1aeff6bb47299d96d7.png)
Membro desde: 23/02/2007 15:52:55
Mensagens: 2034
Offline
|
Existem formas de você compilar o Java diretamente para o sistema operacional (http://gcc.gnu.org/java/) mas neste caso você estaria perdendo alguns dos "ganhos" do java como por exemplo aquele lema do "Write Once, Run Everywhere" ou seja, "escreva uma vez e rode onde quiser"
O java também tem uma coisa chamada de JIT compiler que facilita que o java não seja mais tão lento quanto ultimamente, existem bookmarks que mostram comparações entre código java e linguagens compiladas e o java chega até a ganhar de algumas linguagens compiladas em algumas situações
Tem mais informações no link abaixo
http://www.disordered.org/Java-JIT.html
abs
|
Você é novo no GUJ?
Como fazer perguntas?
www.twitter.com/_afonseca |
|
|
 |
|
|