Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Tecnologia Java, no estilo IBM: Uma nova era na tecnologia Java

Destaques da especificação Oracle e adições de valor da IBM para desempenho, confiabilidade e capacidade de manutenção

Chris Bailey, Advisory Software Engineer, IBM
Chris Bailey
Chris Bailey é parte da equipe do Java Technology Center (JTC) na IBM, com sede em no Laboratório de Desenvolvimento de Hursley na Grã-Bretanha. Ele é arquiteto técnico para a organização de manutenção e suporte Java IBM, responsável por permitir que usuários do SDK IBM para Java forneçam implementações de aplicativos com êxito. Chris também está envolvido na reunião e avaliação de novos requisitos, na entrega de novos recursos e ferramentas de depuração, melhorias em documentação e melhorias na qualidade geral do SDK IBM para Java.

Resumo:  O muito aguardado release final do Java™ SE 7 deve incluir aprimoramentos a todos os principais aspectos da linguagem e da máquina virtual. Oracle e IBM lançaram, cada uma, downloads de Acesso Prévio de suas respectivas implementações para revisão e feedback. Neste artigo, Chris Bailey, arquiteto da estratégia de serviço Java no Centro de Tecnologia Java da IBM, apresenta algumas das alterações a serem lançadas, tanto da especificação da Oracle como do valor adicional fornecido pela IBM.

Visualizar mais conteúdo nesta série

Data:  17/Mai/2011
Nível:  Introdutório Também disponível em :   Inglês
Atividade:  944 visualizações
Comentários:  


Com o release esperado para o quatro trimestre, a atualização mais recente da plataforma Java está sendo aguardada ansiosamente. Embora a Java Specification Request (JSR) da plataforma Java 7 ainda não tenha sido criada oficialmente por meio do Java Community Process (JCP), e o conjunto final de recursos ainda esteja em desenvolvimento, os downloads de Acesso Prévio (consulte Recursos ) da Oracle e as declarações públicas da equipe Oracle oferecem um bom entendimento dos recursos que esperamos ser entregues no Java SE 7.

Os recursos esperados estão agrupados em quatro categorias principais:

  • Suporte de outras linguagens que não Java
  • Atualizações de facilidade de desenvolvimento
  • Suporte de modularidade
  • Atualizações de escalabilidade

Suporte de outras linguagens que não Java e JSR 292

Java 7 fornecerá melhorias que permitirão que implementadores de compiladores para linguagens com tipos dinâmicos produzam implementações para o tempo de execução Java mais facilmente, e que essas implementações sejam executadas com desempenho muito maior. JSR 292 é o motivador desta mudança. Ela apresenta um novo bytecode e algumas novas classes Java.

Em geral, a linguagem Java tem tipos rígidos, o que exige que tipos de parâmetros passados para métodos ou retornados de métodos sejam especificados. Entretanto, no nível de bytecode, Java tem tipos mais livres: as variáveis na pilha de operandos são classificadas apenas em termos do tipo primitivo ao qual pertencem, ou que são genericamente referências do objeto. Os tipos menos rígidos no nível do bytecode valem para quase todos os casos. A exceção é a chamada de método, no qual são impingidos tipos rígidos — ou seja, o método sendo chamado é feito com sua assinatura completa, o que inclui tipos de parâmetro e de retorno. Nesse caso, a chamada deve ocorrer em relação a um método Java usando tipos Java conhecidos. Isso representa um problema para linguagens dinâmicas como Ruby, Python e Groovy, pois elas têm tipo dinâmico (o tipo é conhecido apenas no tempo de execução).

Existem mecanismos, geralmente baseados em reflexão ou usando invocadores gerados, para evitar esses problemas e permitir que linguagens dinâmicas sejam executadas em uma JVM, mas eles representam uma queda substancial de desempenho. A introdução da JSR 292 procurou resolver esses problemas com a adição de um novo bytecode Java, invokedynamic, para chamar métodos dinâmicos, associado com um mecanismo de ligação da linguagem Java que usa um desenvolvimento de identificador de método que permite reconfigurar o que aquele método é no tempo de execução.


Recursos de facilidade de desenvolvimento

Assim como em releases anteriores da plataforma Java, alguns recursos da linguagem têm o objetivo de simplificar a sintaxe exigida para desenvolvimentos de uso frequente.

Project Coin

Project Coin aborda algumas pequenas mudanças ("coins") projetadas para reduzir a complexidade na programação de tarefas simples e melhorar a capacidade de leitura do código resultante.

  • Cadeias de caractere em instruções switch
    Em releases anteriores ao Java 7, não é possível usar Cadeias de caracteres ou Objetos em instruções switch. Isso significa que a única maneira de realizar uma operação de estilo switch em uma Cadeia de caractere era usar uma série de instruções if-then-else, ou converter a Cadeia de caractere em uma primitiva ou em um enum. A introdução do uso de Cadeia de caractere em instruções switch significa que o desenvolvimento a seguir é legal agora:

    switch (myString) {
                   case "one": <do something>; break;
                   case "red": <do something else>; break;
                   Default: <do something generic>;
    }

  • Melhor inferência de tipo para criação de instância genérica
    Java 5 apresentou genéricos, que possibilitam aplicar tipos parametrizados a classes de coleção genérica quando são instanciados, o que, por sua vez, permite que seja realizada verificação de segurança no tempo de compilação. Entretanto, a implementação foi realizada de modo que parâmetros de tipo foram duplicados sem necessidade; por exemplo:

    Map<String, List<String>> anagrams = new HashMap<String,
    List<String>>();

    A melhoria de tipo permite que o segundo desenvolvimento <> seja inferido:
    Map<String, List<String>> anagrams = new HashMap<();

  • Chamada simplificada de método varargs
    Atualmente, ao chamar um método que aceita argumentos de comprimento variável, o código que está chamando recebe um aviso de tempo de compilação dizendo que uma operação insegura está sendo realizada. Com este novo recurso, esse aviso é movido para a declaração do método que aceita argumentos de comprimento variável, reduzindo o número de avisos inevitáveis no código de chamada.

  • Suporte da linguagem para Coleções
    A sintaxe para inicializar arrays permite a especificação dos valores que estarão no array usando esta sintaxe:

    int[] array = new int[] {0,1,2,3,4,5}

    Essa sintaxe aplica-se agora a Coleções, por exemplo:

    List<String> numbers = ["one", "two", "three", "four",
    "five"];

  • Gerenciamento automático de recursos
    Esta melhoria fornece uma nova forma da instrução try que declara um ou mais recursos que precisam ser fechados manualmente; por exemplo, InputStream ou OutputStream. Com a nova sintaxe de try, quando a instrução estiver completa, os recursos declarados são fechados automaticamente:

    static String readFromFile (String file) throws IOException {
                try (BufferedReader reader = new BufferedReader(new FileReader(file)) {
                               return reader.readLine();
                } // resources are automatically closed here
    }

O debate sobre encerramento

Encerramentos geraram uma controvérsia na comunidade Java. Incluí-los ou não? E como exatamente seria melhor? Em 2007, Brian Goetz examinou a então atual discussão sobre encerramentos, que tem passado por altos e baixos ao longo dos anos. Neal Gafter tem defendido ativamente a adição de encerramentos na linguagem Java. Sua página Closures for Java apresenta uma grande quantidade de informações sobre o assunto.

Encerramentos (que não Coin)

Algumas linguagens de programação, incluindo Scheme, Ruby e SmallTalk, permitem o uso de encerramentos ou funções lambda. Espera-se que a especificação Java 7 final inclua uma implementação de encerramentos; entretanto, os detalhes dessa especificação ainda não estão claros, pois há várias propostas concorrentes.


Suporte de modularidade

Com cada nova versão da plataforma Java, o SDK cresceu cada vez mais — um efeito colateral infeliz do aumento de recursos disponíveis em uma ampla gama de ambientes. Embora o grande número de recursos seja definitivamente um ativo, o tamanho grande e a complexidade que são um resultado necessário afetam algumas métricas de desempenho essenciais: tamanho do download, tempo de inicialização e área de cobertura da memória.

Project Jigsaw

Saiba mais sobre Project Jigsaw e seu lugar nas soluções de modularidade Java na mesa redonda do developerWorks sobre o estado atual da tecnologia, cultura e segmento de mercado Java.

Para lidar com esses problemas, Java 7 pretende entregar um tempo de execução JDK modular, chamado Project Jigsaw, que permitirá que os usuários façam download e carreguem apenas os componentes exigidos para executar o aplicativo. Além disso, usuários poderão aplicar modularidade a bibliotecas e aplicativos. A implementação exata ainda será determinada.


Atualizações de escalabilidade

À medida que sistemas com vários núcleos se tornam mais comuns e o número de núcleos nesses sistemas cresce, é importante que a linguagem Java também evolua para se tornar mais escalável. Por extensão, isso significa que desenvolvedores precisam de acesso a coleções, estruturas de dados e algoritmos escaláveis. As melhorias de escalabilidade na linguagem Java continuam na versão 7 com dois novos recursos principais: New I/O 2 e atualizações de Simultaneidade e Coleções.

New I/O 2

Um conjunto de APIs New I/O (NIO) para a plataforma Java, apresentadas no release 1.4 sob a JSR 51, objetivam permitir o desenvolvimento de E/S altamente escalável sem a necessidade de desenvolver código nativo. JSR 51 focava principalmente em E/S de multiplex sem blocos. Na versão 7 nós temos a chegada de (novas) APIs New I/O (NIO.2) sob a JSR 203, que amplia o trabalho iniciado em 1.4.

As APIs NIO.2 cobrem três áreas principais de melhorias: E/S assíncrona, funcionalidade SocketChannel melhorada e uma interface com o sistema de arquivos muito melhorada. Cada uma dessas atualizações continua com o tema de fornecer a capacidade de produzir infraestrutura de E/S altamente escalável.

  • E/S assíncrona
    A plataforma Java, versão 7, apresenta E/S assíncrona para soquetes e arquivos ao fornecer um novo conjunto de AsynchronousChannels, permitindo que encadeamentos continuem trabalhando enquanto a E/S continua, e que depois sejam notificados quando a E/S concluir. A Versão 7 fornece dois mecanismos de notificação: no primeiro, a chamada de E/S assíncronas retorna um objeto java.util.concurrent.Future representando o objeto resultante que fornece APIs para esperar que a E/S conclua, ou consultar seu status atual; o segundo é a especificação de um java.nio.channels.CompletionHandler, que é chamado em uma chamada de retorno quando a E/S é concluída.

  • APIs SocketChannel atualizadas
    Antes da API SocketChannel atualizada presente em NIO.2, a implementação de canais de rede não era uma abstração completa de um soquete de rede: era necessário usar APIs de soquete e de canal para criar um canal de rede. A atualização resolve esse problema fazendo com que cada um dos canais orientados a rede implementem uma nova interface NetworkChannel que define métodos bind(), getLocalAddress(), getOption() e setOption(). Além disso, suporte para multicast foi adicionado por meio de uma nova interface MulticastChannel.

  • API de sistema de arquivos melhorado
    A API de sistema de arquivo melhorada corrige alguns problemas fundamentais com a API de E/S de Arquivo Java padrão (por exemplo, a ausência de exceções de E/S durante operações como exclusão ou renomeação de arquivo) e fornece novo suporte para tarefas frequentes que anteriormente deveriam ser realizadas usando código customizado em cima da API fornecida. Isso inclui suporte para cópia e movimentação de arquivos, links simbólicos e permissões de arquivo, bem como para fornecer uma API de notificação de alteração de arquivo e acompanhamento.

Atualizações de Simultaneidade e Coleções

O pacote java.util.concurrent foi introduzido em Java 5 sob JSR 166 e foi ampliado em Java 6 com JSR 166x. A simultaneidade recebe outra atualização em Java 7 por meio da JSR 166y com uma nova estrutura fork-join descrita por Doug Lea, líder da JSR, como uma "estrutura paralela leve apropriada para múltiplos núcleos". Outros aprimoramentos incluem TransferQueues e Phasers.

Pronto para uso

Prova de que Java 7 é aguardado há muito tempo é esta popular série em duas partes de Brian Goetz sobre a estrutura fork-join, escrita há quase dois anos. Parte 1 apresenta o mecanismo para decompor vários algoritmos para explorar paralelismo de hardware efetivamente, e a Parte 2 detalha as classes ParallelArray, que simplifica as operações de classificação e procura em estruturas de dados na memória.

  • Estrutura fork-join
    O objetivo da estrutura fork-join é fornecer suporte para cálculo de alto desempenho de tarefas que podem ser divididas em várias tarefas paralelas, permitindo a exploração eficiente da presença de vários processadores e núcleos.

    O exemplo típico dado para ilustrar uma operação que pode ser dividida em várias tarefas paralelas é o algoritmo merge-sort. Aqui os dados a serem classificados são divididos em fragmentos que são classificados individualmente como subtarefas, e estas podem ser recursivamente divididas em outras subtarefas. Quando as subtarefas forem concluídas, os resultados são combinados (mesclados). O processo é realizado fazendo com que uma dada tarefa se divida em um número de subtarefas e esperando para mesclar as tarefas concluídas. A estrutura fork-join adicionada a Java 7 fornece infraestrutura para realizar processamento fork-join, incluindo criação de conjunto e roubo de trabalho para reduzir os efeitos de esperar que outras subtarefas concluam.

  • TransferQueue
    A classe TransferQueue é uma forma de BlockingQueue com a diferença de que fornece um serviço de entrega registrado. Enquanto um encadeamento que insere um objeto em um BlockingQueue retorna quando o objeto tiver sido adicionado à fila, um encadeamento inserindo um objeto em um TransferQueue retorna apenas quando o objeto tenha sido removido da fila por outro encadeamento.

  • Phaser
    A classe Phaser fornece uma barreira de sincronização flexível que é similar à atual CyclicBarrier introduzida em Java 5, mas com alguns recursos adicionais. Em particular, a capacidade de alterar o número de grupos registrados dinamicamente.

Recursos que adicionam valor da IBM

Além das atualizações de recurso obrigatórias que ocorrem com cada release da plataforma Java - e que são devidos a atualizações na especificação da JVM e da API das Bibliotecas de Classe Java -, cada fornecedor de Java pode fornecer suas próprias melhorias com valor adicionado em suas entregas Java. Para as entregas de Java da IBM, esses aprimoramentos que adicionam valor estão, geralmente, em três áreas de foco: desempenho, confiabilidade e capacidade de manutenção.

Desempenho de tempo de execução

O desempenho do Java Runtime é um fator direto no retorno sobre o investimento ao implementar um aplicativo. Por isso, várias referências padrão foram criadas para imitar cenários de implementação particulares ou tipos de carga de trabalho, para dar uma ideia do retorno sobre o investimento. Enquanto a maioria das referências se concentra no desempenho no tempo de execução —a velocidade com a qual o aplicativo pode ser executado — a IBM também está interessada no tempo de inicialização inicial do aplicativo.

Saiba mais sobre a implementação de Java SE 7 da IBM

Trent Gray-Donald, arquiteto líder de Java SE 7 da IBM, oferece sua opinião sobre a especificação de Java 7 da Oracle, as adições de valor da IBM e o estado atual da tecnologia Java neste podcast.

Desempenho de inicialização
O desempenho de inicialização de aplicativos Java é uma preocupação essencial para a equipe IBM, devido ao impacto de longos períodos de inicialização na usabilidade dos aplicativos no lado do cliente e devido ao impacto potencial de períodos de inicialização em cenários de reciclagem e failover para aplicativos do lado do servidor.

No SDK IBM para Java 5, a IBM forneceu um recurso essencial para reduzir os períodos de início e reinício de aplicativos Java na forma de compartilhamento de classe. Esta abordagem permitiu que todos os sistemas e classes de aplicativo sejam armazenados em um cache de classe dinâmica persistente presente na memória compartilhada, e em um estado que (crucialmente) já passou pela verificação dos dados de classe. Como resultado, quando um aplicativo Java está carregando classes, algo que ocorre em sua maioria na inicialização, ele pode fazê-lo a partir da memória compartilhada sem a atividade adicional de verificação dos bytecodes.

No SDK IBM para Java6, o trabalho no desempenho da inicialização continuou com a inclusão de código compilado Just-in-time (JIT) otimizado no cache de classes compartilhado. Isso significa que outro grande gasto adicional da inicialização pôde ser removido: a compilação de métodos usados com frequência envolvidos na inicialização do aplicativo.

O SDK IBM para Java 7 irá melhorar mais o desempenho da inicialização, focando em áreas como armazenamento de mais dados no cache compartilhado e em realizar em vários encadeamentos atividades de iniciação que são geralmente feitas em um só encadeamento.

Desempenho de tempo de execução
O desempenho de aplicativos Java é uma área de foco contínua da maioria, se não todos os fornecedores Java. Assim, essa também é uma área de prioridade para os tempos de execução IBM para a tecnologia Java. Cada um dos releases dos tempos de execução IBM procurou adicionar melhorias de desempenho incrementais ao release anterior.

A Tabela 1 mostra a melhora de desempenho entre o SDK IBM para versões Java 5 e 6 usando o tempo de execução Java IBM de 32 bits em AIX:


Tabela 1. Tabela de desempenho Java do SDK IBM
SDK IBM para JavaResultado (bops/JVM)
4 núcleos
Resultado (bops/JVM)
8 núcleos
Resultado (bops/JVM)
16 núcleos
V5877378668686497
V610295910073199844
Melhoria em porcentual17,3%16,2%15,4%

Nota: dados retirados dos dados de referência SPEC JBB2005 publicados em spec.org, usando o IBM Java Runtime para AIX em IBM System p 570, 4.7 GHz.

Novamente, para o SDK IBM para Java 7, o desempenho do tempo de execução ainda é crítico. A página do programa beta aberto irá detalhar novos recursos à medida que eles se tornarem disponíveis.

Confiabilidade

A confiabilidade do tempo de execução Java é de grande importância, particularmente ao executar aplicativos críticos para os negócios, para os quais se espera tempo de atividade 24x7. Para produzir um tempo de execução altamente confiável, a equipe IBM adota alguns processos de qualidade durante o desenvolvimento e usa uma estratégia de estrutura e teste para a base de código que maximiza a cobertura e os cenários de teste.

Código em comum para todas as plataformas
Desde o release do SDK IBM pra Java 5, todos os componentes subjacentes de implementações IBM do tempo de execução Java são desenvolvidos a partir de uma base de código em comum, com muito código específico da plataforma ou da arquitetura. A IBM entregou 14 releases do SDK IBM para Java 6, cobrindo 31, 32 e 64 bits em plataformas que vão de Windows a z/OS em mainframes. Essa ampla gama de hardware e configurações de sistema operacional permitem testar para assegurar confiabilidade para um grande número de cenários. Por extensão, encontrar e corrigir erros em uma configuração resulta em código melhorado em todas as configurações. Essa amplitude de cenários de teste aumenta o potencial para identificar erros de sincronização difíceis de encontrar.

Ajuda a formar o SDK IBM para Java 7

O programa beta aberto fornece acesso ao mais recente beta do SDK IBM para Java 7. Ele oferece uma prévia de nova tecnologia e novos recursos, e permite ar feedback por meio de um fórum de programa beta aberto.

Portfólio do produto
A maior parte do portfólio de produtos do IBM Software Group usa código Java. Isso significa não apenas que a IBM tem um interesse investido em produzir um tempo de execução Java confiável e de alta qualidade, mas também que vários testes são realizados na linha de produtos de software da IBM. Cenários de teste que se aplicam ao tempo de execução Java padrão (incluindo o teste de produtos de código aberto) são combinados com o teste de uma ampla gama de implementações e cenários de carga típicos para aqueles produtos de software IBM. Essa grande amplitude e profundidade de testes ajudam a garantir a qualidade e confiabilidade do tempo de execução IBM para tecnologia Java. Além do portfólio de produtos do IBM Software Group, alguns parceiros ISV também testam seus diversos cenários de teste em relação aos tempos de execução IBM, mais uma vez expandindo a cobertura de caso de uso.

Capacidade de manutenção

Como todos os fornecedores, a IBM tenta fazer com que implementações de aplicativo não tenham erros, mas é um fato aceito no desenvolvimento de software que defeitos com consequências inesperadas irão surgir. Para entender a causa dos problemas e resolvê-los, a IBM fornece recursos e ferramentas de monitoramento e diagnóstico para ajudar a solucionar problemas no aplicativo Java implementado ou no próprio Java Runtime.

Recursos de depuração

  • Aprimoramentos no mecanismo de dump
    O mecanismo de dump permite gerar alguns tipos diferentes de dados, de dumps de sistema não destrutivos a dumps de encadeamento, ou, alternativamente, a executar uma dada linha de comando e a fazê-lo em uma gama maior de eventos.

    Com o SDK IBM para Java 7, é possível agora gerar novos tipos de dump, incluindo o tipo "pilha", que gera um único rastreio de pilha para o encadeamento que está causando o evento, e a fazer isso em mais eventos, incluindo no evento "alocação", que ocorre quando um objeto é alocado.

  • Aprimoramentos no mecanismo de rastreamento
    O mecanismo de rastreamento permite fazer rastreio sem instrumentação do que está ocorrendo dentro do Java Runtime, ou dentro de qualquer código Java que esteja sendo executado nele, incluindo bibliotecas de classe principais, código de middleware ou o próprio código do aplicativo do desenvolvedor. O mecanismo não só rastreia a execução de código, mas também permite acionamento. No nível mais básico, é possível usar o acionamento para ligar e desligar o rastreamento para reduzir o volume de dados rastreados gerados, e também para gerar dumps, incluindo o novo dump jstracktrace, que fornece o rastreio de pilha do código de chamada e uma opção "suspensão" que pode ser usada para inserir atrasos arbitrários em código em execução.

  • Aprimoramentos no dump Java
    O arquivo javadump, que contém um resumo de status do tempo de execução sendo executado, incluindo o rastreio de pilha para todos os encadeamentos no aplicativo, também foi atualizado. A mudança assume a forma de variáveis ulimits do sistema operacional e de ambiente, bem como os rastreios e pilha (C) nativos para cada um dos encadeamentos, fornecendo um insight melhor sobre o que o Java Runtime está fazendo em nome do código Java, ou o que está acontecendo em qualquer código Java Native Interface (JNI).

  • Coletor de diagnósticos
    Quando ocorre um evento de problema, tal como uma falha de proteção geral ou OutOfMemoryError, o tempo de execução IBM para tecnologia Java gera alguns arquivos diagnósticos que contêm informações úteis sobre as causas do problema. O Coletor de Diagnóstico é uma ferramenta que é executada logo após os arquivos diagnósticos terem sido criados, procurando por dumps de sistema, dumps Java, dumps de heap, dumps de rastreio Java e o log GC detalhado que corresponde ao registro de data e hora do evento do problema. Em seguida, o Coletor de Diagnósticos produz um único arquivo .zip compactado contendo todos os diagnósticos do evento do problema, reduzindo a quantidade de espaço em disco ocupado e eliminando a necessidade de procurar manualmente por arquivos que podem existir ou não.

Ferramentas IBM de monitoramento e diagnóstico

  • Garbage Collection and Memory Visualizer (GCMV)
    GCMV oferece análise e visualizações da saída verbose:gc de um aplicativo, ou dos dados de monitoramento de memória do sistema operacional, e exibe em forma gráfica e tabulada. Também fornece um resumo claro e interpreta as informações para produzir uma série de recomendações de ajuste e detectar vazamentos de memória Java. Esta interpretação permite entender o perfil de uso de memória do seu aplicativo e a ajustar para melhorar o desempenho do coletor de lixo.

  • Dump Analyzer
    Dump Analyzer é uma ferramenta que ajuda a determinar a causa de falhas de um aplicativo Java usando um dump de nível do sistema operacional. Ele fornece analisadores individuais que produzem dados específicos em resposta a perguntas específicas. Ele liga combinações desses analisadores juntos para produzir um relatório de quaisquer causas de problema e o status do aplicativo.

  • Health Center
    Health Center é uma solução de monitoramento de produção de baixo gasto adicional, que permite avaliar o status atual de um aplicativo Java em execução. Health Center fornece informações claras e de fácil entendimento sobre desempenho, uso de memória e gerenciamento, otimização e criação de perfil. Health Center em particular fornece informações de criação de perfil de método, mostrando a frequência com que métodos são chamados e o rastreio de pilha de chamada, informações sobre o desempenho de código sincronizado no aplicativo e dados e uso de memória do heap Java e do processo em geral.

  • Memory Analyzer
    Memory Analyzer traz os recursos de diagnóstico do Eclipse Memory Analyzer Tool (MAT) para os tempos de execução IBM para tecnologia Java ao estender o MAT Eclipse usando a Diagnostic Tool Framework for Java (DTFJ). Essa extensão permite análise de heap Java usando dumps do nível do sistema operacional e IBM Portable Heap Dumps (PHD), que, por sua vez, permitem diagnosticar a causa de fugas de memória, analisar a área de cobertura do aplicativo, examinar o tamanho e eficiência de Coleções Java e entender o estado de um aplicativo em um determinado momento.

Conclusão

O trabalho no SDK Java 7 está claramente adiantado na Oracle e na IBM. Embora a especificação e conteúdo dos releases estejam em constante mudança, as informações neste artigo devem dar um insight melhor sobre o status atual. Também é possível acompanhar o desenvolvimento contínuo por meio dos programas de Acesso Prévio (consulte Recursos ), que são uma oportunidade para você participar do processo de desenvolvimento e oferecer feedback sobre os recursos e funções que são importantes para você.


Recursos

Aprender

  • IBM's Java SE 7 lead architect speaks out: Neste podcast, Trent Gray-Donald fala sobre a especificação Java SE 7, as ideias da IBM para aprimorar a plataforma e suas opiniões sobre a tecnologia Java de hoje.

  • Pure Danger Tech: Java 7: A listagem abrangente de Alex Miller de recursos propostos para Java 7 e informações sobre eles.

  • Programa de beta aberto do SDK IBM para Java 7: Obtenha acesso licenciado ao mais recente beta do SDK IBM para Java 7. Saiba sobre novas tecnologias e recursos, e ofereça feedback por meio de um fórum de programa beta aberto.

  • OpenJDK 7: Uma implementação de software livre da próxima grande revisão da plataforma Java SE, disponível sob a licença GPL2.

  • Apache Harmony: Outra implementação de software livre da plataforma Java SE, disponível sob a licença Apache.

  • "Mesa redonda de Java, segundo trimestre de 2010": Confira uma visão interna do futuro real da plataforma Java quando nove líderes da comunidade Java lidam com algumas das grandes (e às vezes difíceis) perguntas enfrentadas pelo segmento de mercado hoje.

  • Java diagnostics, IBM style (developerWorks, 2007-2009): Explore novos conjuntos de ferramentas da IBM que podem ajudar a resolver problemas com aplicativos Java e melhorar seu desempenho. Você pode ter a expectativa de obter de cada artigo conhecimento novo que pode ser usado imediatamente.

  • Navegue na livraria de tecnologia para obter livros sobre estes e outros tópicos técnicos.

  • zona de tecnologia Java do developerWorks: Encontre centenas de artigos sobre cada aspecto da programação Java.

Obter produtos e tecnologias

Discutir

Sobre o autor

Chris Bailey

Chris Bailey é parte da equipe do Java Technology Center (JTC) na IBM, com sede em no Laboratório de Desenvolvimento de Hursley na Grã-Bretanha. Ele é arquiteto técnico para a organização de manutenção e suporte Java IBM, responsável por permitir que usuários do SDK IBM para Java forneçam implementações de aplicativos com êxito. Chris também está envolvido na reunião e avaliação de novos requisitos, na entrega de novos recursos e ferramentas de depuração, melhorias em documentação e melhorias na qualidade geral do SDK IBM para Java.

Ajuda para Relatar Abuso

Relatar abuso

Obrigado. Esta entrada foi sinalizada para atenção do moderador.


Ajuda para Relatar Abuso

Relatar abuso

Falha no envio do Relatório de abuso. Tente novamente mais tarde.


developerWorks: Registre-se


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Na primeira vez que você efetua sign in no developerWorks, um perfil é criado para você. Informações selecionadas do seu perfil developerWorks são exibidas ao público, mas você pode editá-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocultá-los), e seu nome de exibição acompanharão o conteúdo que postar.

Selecione seu nome de exibição

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

(Deve possuir de 3 a 31 caracteres.)


Ao clicar em Enviar, você concorda com os termos de uso do developerWorks.

 


Classificar este artigo

Comentários

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tecnologia Java
ArticleID=648511
ArticleTitle=Tecnologia Java, no estilo IBM: Uma nova era na tecnologia Java
publish-date=05172011
author1-email=baileyc@uk.ibm.com
author1-email-cc=

Conheça a IBM da sua cidade

Virtual Branch Office Brasil

A IBM está mais perto do que você imagina!


Tags

Help
Use o campo de pesquisa para encontrar todos os tipos de conteúdo no My developerWorks com essa tag.

Use a barra de rolagem para ver mais ou menos tags.

Tags populares mostra as principais tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Minhas tags mostra suas tags para esta zona de conteúdo em particular (por exemplo, Java technology, Linux, WebSphere).

Use o campo de pesquisa para localizar todos os tipos de conteúdo no Meu developerWorks com essa tag. Tags populares mostra as tags principais para essa zona de conteúdo particular (por exemplo, tecnologia Java, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere). Minhas tags mostra as suas tags para essa zona de conteúdo em particular (por exemplo, tecnologia Java, Linux, WebSphere).