Repositorio da Producao Cientifica e Intelectual da Unicamp: Uma implementação distribuida da Maquina Virtual JAVA visando o compartilhametno do compilador "just-In-Time"
Please use this identifier to cite or link to this item: http://repositorio.unicamp.br/jspui/handle/REPOSIP/276432
Title: Uma implementação distribuida da Maquina Virtual JAVA visando o compartilhametno do compilador "just-In-Time"
Author: Ferreira, Rodrigo Augusto Barbato
Abstract: Resumo: A compilação Just-In- Time (JIT) é uma técnica amplamente utilizada no aperfeiçoamento do desempenho da Máquina Virtual Java (JVM, do inglês Java Virtual Machine). Con­tudo, o tempo gasto internamente pelo compilador JIT degrada, em muitos casos, o tempo de execução das aplicações. Algumas técnicas têm sido usadas com o objetivo de diminuir o impacto negativo do JIT sobre a execução, ainda sim preservando a sua eficácia. Entretanto, sempre haverá uma relação inversa entre o tempo gasto pelo compilador JIT e o tempo de execução do código objeto por ele produzido. Segundo nossa concepção, uma Máquina Virtual Java que visa usuários finais executa o mesmo código a maior parte do seu tempo. Os usuários sempre utilizam os mesmos aplicativos, os quais são tipicamente compostos pelo mesmo conjunto de classes. Por outro lado, em grandes companhias, dezenas ou até mesmo centenas de empregados compartilham a mesma aplicação ou pa­cote de aplicações. Usualmente, eles estão conectados a uma mesma Intranet, rápida e segura. Neste cenário, o esforço do JIT por usuário é repetitivo e bem maior que o estritamente necessário. O objetivo deste trabalho é o de desacoplar atividades de tempo de ligação da JVM para um servidor compartilhado, de maneira distribuída. Desta forma, cada cliente JVM se torna um componente de software muito simples que executa código Java nativamente, dispensando um JIT ou interpretador. Todas as atividades complexas de tempo de ligação - como detecção de erros, verificação do formato binário Java e com­pilação JIT - são efetuadas pelo servidor, que armazena suas respostas em uma cache. Este documento é uma descrição de uma implementação alternativa da Máquina Virtual Java que inova em muitos pontos. Em particular, são contribuições deste trabalho: as técnicas para a detecção e recuperação de contextos repetidos em tempo de ligação; um procedimento alternativo, off-line, para a verificação do bytecode Java; o projeto e a im­plementação de uma representação intermediária específica para Java; a descrição, em detalhes, de diversos aspectos de implementação da JVM
Abstract: Just-In-Time (JIT) compilation is a well-known technique used to improve the execution time in the Java Virtual Machine (JVM). However, the amount of time used by the JIT internals degrades, in many cases, the application execution time. Some techniques have been used to decrease the JIT overhead, while still keeping its effectiveness. However, the trade-off between the JIT running time and its object code execution time will always existo From our observation, an end-user Java Virtual Machine deals with the same code most of its time. Users always launch the same applications, which are typically composed of the same set of classes. On the other hand, in big companies, dozens or even hundreds of employees share the same application or application suite. Usually, they are connected under the same fast and secure Intranet. In this scenario, the per-user JIT effort is repetitive and largely greater than the strictly required. The goal of our work is to detach linking activities from the JVM to a shared server, on a distributed fashion. By doing that, the client JVM turns to be a very simple piece of software that runs Java code natively, not requiring a JIT or interpreter. All complex linking activities - like link-time error checking, class file verification and JIT compilation are done by the server, which caches its responses. This document is a description of an alternate implementation of the Java Virtual Machine that innovates. It covers specially: the techniques for detecting and caching repetitive link-time contexts; an alternate, offline, byte code verification procedure; the design and implementation of a Java specific intermediate representation; the detailed description of many JVM implementation issues
Citation: FERREIRA, Rodrigo Augusto Barbato. Uma implementação distribuida da Maquina Virtual JAVA visando o compartilhametno do compilador "just-In-Time". 2001. 250p. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: <http://www.repositorio.unicamp.br/handle/REPOSIP/276432>. Acesso em: 27 jul. 2018.