#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!
Artigo Java Magazine 03 - Performance em Java
Artigo publicado pela Java Magazine 03.
Estatísticas:
Serviços:


Performance em Java
De onde veio, para onde vai
O estado da arte em técnicas usadas em JVMs, para execução eficiente de aplicações Java
Desempenho é uma dessas coisas que sempre nos falta. Quando o software é rápido o bastante, sempre poderia ser ainda mais rápido para exigir menos hardware. Melhor ainda, deveria ser possível escrever um software de alto desempenho sem precisar de um time inteiro de “gurus” – pessoas são mais caras que equipamentos.
No caso do Java, desempenho já fez muita falta, especialmente na infância da plataforma (JDK 1.0.x). O progresso feito até hoje foi enorme, mas há muita desinformação sobre o desempenho do Java. Neste artigo, vamos começar com um histórico do progresso nesta área, e discutir questões principais de desempenho da plataforma, concentrando-se na tecnologia de runtime (especialmente a Java Virtual Machine – JVM).
Interpretação
O Java usa um formato de código executável portável, o bytecode, que não é reconhecido por CPUs tradicionais como x86, SPARC ou PowerPC. As primeiras JVMs eram puramente interpretadas. O interpretador é um programa conceitualmente simples. Para cada instrução bytecode (por exemplo getfield #3), temos:
1. Leitura: Obtém o bytecode a partir do ponteiro para a próxima instrução (que é incrementado).
2. Decodificação: Invoca uma rotina específica a partir do tipo do bytecode; ou seja, um grande switch pulando para o código que trata getfield. Também extrai parâmetros, no caso o #3.
3. Execução: Realiza a operação; no exemplo, “getfield #3” significa “extraia o valor no topo da pilha, que é referência para um objeto; obtenha seu terceiro atributo e o coloque no topo da pilha”.
Parece simples, mas é muito mais lento que código nativo. Um programa nativo poderia realizar a operação equivalente com uma só instrução (em x86: MOV EAX,[EAX+16]); sem os custos de leitura e decodificação, sem a necessidade de manipular todos os valores usando uma pilha (no bytecode não há “registradores virtuais” pois isso dificultaria a portabilidade), e com o benefício de muitas otimizações.
As JVMs atuais têm interpretadores excelentes, escritos em assembly e capazes de algumas otimizações, mas ainda assim a interpretação é pelo menos dez vezes mais lenta que o código nativo equivalente. Mas nem tudo é ruim no mundo da interpretação. O consumo de memória é um ponto positivo: código bytecode é compacto e fácil de compartilhar entre vários programas rodando na mesma máquina. Para aplicações que fazem uso intenso de serviços do sistema operacional (APIs gráficas, comunicação, entrada e saída), o desempenho do bytecode tem pouco peso. Na plataforma J2ME, por exemplo, ainda é popular o uso de JVMs puramente interpretadas, cujo custo/benefício é positivo para as limitações de hardware dos dispositivos.
Processadores Java
Uma solução óbvia para o problema da interpretação é uma CPU que entenda o bytecode diretamente. Isso foi tentado c >">
ATENÇÃO! A EXIBIÇÃO DESTE ARTIGO FOI INTERROMPIDA.
#Este é um post fechado Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!




Introdução à JMS com Java EE 6 - Java Magazine 80

Devorando Dados em Java - Java Magazine 79

Artigo Java Magazine 78 - Java à Moda do Freguês

Artigo Java Magazine 77 - NetBeans 6.8 e JavaFX Composer

Artigo Java Magazine 76 - Baixo Acoplamento

Artigo Java Magazine 75 - Gerenciando Memória e Recursos

Artigo Java Magazine 74 - JVM Language Summit

Artigo Java Magazine 73 - Introdução ao Terracotta

Artigo Java Magazine 72 - Uma “Aplicação Comum” com JavaFX

Artigo Java Magazine 71 - Releases da JavaOne:



Curso Online - Introdução ao AJAX Reverso

(tutorial) Aprenda a persistir dados em suas aplicações Java utilizando Hibernate

Desenvolvendo uma aplicação completa utilizando Swing

Introdução ao JDBC

Java Web: Saiba como Desenvolver Aplicações utilizando Spring, Hibernate e JSF na Prática

OLAP com o SQL Server

Introdução à Engenharia de Requisitos

Curso OnLine WebDesign - Desenvolvendo o layout de um WebSite passo a passo



Artigo Java Magazine 77 - NetBeans 6.8 e JavaFX Composer

Artigo Java Magazine 76 - Baixo Acoplamento

Artigo Java Magazine 75 - Gerenciando Memória e Recursos

Artigo Java Magazine 74 - JVM Language Summit

Artigo Java Magazine 73 - Introdução ao Terracotta

Artigo Java Magazine 72 - Uma “Aplicação Comum” com JavaFX

Artigo Java Magazine 71 - Releases da JavaOne:

Artigo Java Magazine 70 - Galileo: Eclipse 3.5 e WTP 3.1

Artigo Java Magazine 70 - Editorial

Artigo Java Magazine 69 - JavaFX Script

Artigo Java Magazine 69 - Editorial

Artigo Java Magazine 68 - JavaFX: Tutorial

Artigo Java Magazine 68 - Editorial

Artigo Java Magazine 67 - JavaFX: RIA a todo vapor

Artigo Java Magazine 67 - Editorial

Artigo Java Magazine 66 - Bytecode: Escondendo e Revelando

Artigo Java Magazine 66 - Editorial

Artigo Java Magazine 65 - Java: Uma perspectiva

Artigo Java Magazine 65 - Editorial

Artigo Java Magazine 64 - Testes de Carga com o JMeter e NetBeans

Artigo Java Magazine 64 - Editorial

Artigo Java Magazine 63 - A Guerra do RIA

Artigo Java Magazine 63 - Editorial

Artigo Java Magazine 62 - Integração Contínua com o Hudson

Artigo Java Magazine 62 - Editorial

Artigo Java Magazine 61 - WTP 3.0

Artigo Java Magazine 61 - Editorial

Artigo Java Magazine 21 - Gerenciamento em Java

Artigo Java Magazine 40 - Caminhos do Java

Artigo Java Magazine 40 - Java Open Source!

Artigo Java Magazine 40 - Tira-Dúvidas

Artigo Java Magazine 60 - A memória do Java

Artigo Java Magazine 60 - Editorial

Artigo Java Magazine 59 - Eclipse 3.4 Ganymede

Artigo Java Magazine 59 - Quick Update: A Crise dos Threads

Artigo Java Magazine 59 - Editorial

Artigo Java Magazine 41 - Java EE 5 na Prática

Artigo Java Magazine 28 - Migrando para o Java 5

Artigo Java Magazine 28 - Tira-Dúvidas

Artigo Java Magazine 31 - Novas Fronteiras do Java

Artigo Java Magazine 01 - J2EE Fundamental

Artigo Java Magazine 23 - O Projeto Eclipse

Artigo Java Magazine 22 - XML Turbinado com Java

Artigo Java Magazine 46 - Programação Java EE: Parte 3

Artigo Java Magazine 27 - Migrando para o Java 5

Artigo Java Magazine 17 - Anotações no J2SE 5.0

Artigo Java Magazine 16 - Genéricos no J2SE 5.0

Artigo Java Magazine 26 - Persistência Turbinada II

Artigo Java Magazine 13 - Raio x do Tiger

Artigo Java Magazine 55 - Editorial

Artigo Java Magazine 58 - EclipseCon 2008: Destaques

Artigo Java Magazine 57 - Programando com Pools

Artigo Java Magazine 57 - editorial

Artigo Java Magazine 11 - Concorrência e a JVM

Artigo Java Magazine 25 - Persistência Turbinada

Artigo Java Magazine 24 - JVMs Alternativas

Artigo Java Magazine 24 - EclipseCon 2005

Artigo Java Magazine 32 - Groovy: Java Através de Scripts

Artigo Java Magazine 36 - Qualidade Aplicada

Artigo Java Magazine 35 - Otimizando Código Java

Artigo Java Magazine 37 - 10 Mais do Eclipse 3.2

Artigo Java Magazine 38 - Relatórios e Gráficos com Eclipse

Artigo Java Magazine 34 - Entendendo Web Services

Artigo Java Magazine 19 - Byte Code

Artigo Java Magazine 19 - Cafeína

Artigo Java Magazine 20 - Byte Code

Artigo Java Magazine 14 - A dinâmica de Java

Artigo Java Magazine 15 - Programação com Regras

Artigo Java Magazine 33 - Prepare-se para o Mustang

Artigo Java Magazine 30 - Mais Performance com Java

Artigo Java Magazine 29 - Examinando o Mustang

Artigo Java Magazine 29 - Demonstrando o Apache Derby

Artigo Java Magazine 18 - Coleções de ponta a ponta

Artigo Java Magazine 39 - Java EE 5

Artigo Java Magazine 42 - Dados e Mapeamento: uma Visão Total

Artigo Java Magazine 12 - Tiger: A Evolução de Java

Artigo Java Magazine 43 - Oracle para Desenvolvedores Java

Artigo Java Magazine 44 - A Plataforma Java ME

Artigo Java Magazine 45 - Mini-curso: programação Java ME

Artigo Java Magazine 47 - Eclipse 3.3

Artigo Java Magazine 47 - Programação Java ME

Artigo Java Magazine 48 - Programação Java ME

Artigo Java Magazine 55 - Dicas para Qualidade

Artigo Java Magazine 55 - Expressões Regulares em Java

Artigo Java Magazine 54 - Editorial

artigo java magazine 53 - Eclipse x NetBeans

artigo java magazine 53 - Perspectivas para um Mundo Paralelo

Artigo Java Magazine 52 - GlassFish v2: O Novo Desafiante

Artigo Java Magazine 56 - Programação Funcional (ou quase) em Java

artigo java magazine 51 - JAVA EE NO ECLIPSE COM WTP 2.0

Artigo Java Magazine 56 - Opinião: Android versus Java ME

Artigo Java Magazine 50 - Programação à prova de balas

Artigo java magazine 49 - Mini-curso de java ME: Parte 6

Artigo Java Magazine 05 - Memória e desempenho

Artigo Java Magazine 03 - Performance em Java



Mineração de Repositórios de Software: A Computação ajudando à Computação.

Boas-vindas

Boas-vindas

Mineração de Repositórios de Software: A Computação ajudando à Computação.

[vídeo] Teste Automatizado: Codificação do UserTest - Curso JEE e JSE – Loja Virtual Completa – Parte 17

[vídeo] MD5 com Delphi: Usando o Método Locar - Curso Aplicação Financeira Delphi 2009 e MySQ – Parte 32

[vídeo] MD5 com MySQL: Utilizando a função para Logar - Curso Aplicação Financeira Delphi 2009 e MySQL – Parte 31

Trabalhando com Cache - Parte 2

Trabalhando com Cache - Parte 1


Você está em:





Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

