Java – Comparação de Arquivos JAR (código fonte)

Introdução

Neste artigo vamos aprender como realizar a comparação de 2 arquivos JARS (Pacotes Java). Em algumas situações é necessário realizar a comparação de dois arquivos .jar com a finalidade de identificarmos a diferença entre os dois. Um caso bastante comum é quando queremos comparar duas versões da mesma aplicação Java, com o objetivo de descobrir a diferença entre as duas. Antes de mais nada, para realizar a comparação propriamente dita, é necessário de-compilar o pacote .jar (java)

A partir deste artigo você vai aprender como reproduzir este processo.

Ferramentas Necessárias

  • Java Decompiler – JD-GUI
  • 1 máquina/servidor rodando Linux

Como proceder:
Vamos utilizar o Java Decompiler que é um aplicativo GUI rodando em java. Portanto, vamos precisar de um sistema operacional com ambiente gráfico. (Podendo ser tanto Windows, Linux ou Mac). Após de-compilado os pacotes JAR, vamos utilizar o comando diff do Linux para obter as diferenças entre os dois. Portanto, vamos começar decompilando os pacotes JAR

  1. Decompilando e Salvando o Código Fonte

  2. Faça o download do JD-GUI, de acordo com o sistema operacional utilizado. Após instalação, abra os pacotes JAR na ferramenta, um a uma, e salve o código fonte java em pastas separadas. Veja Figura-1 (Abrindo o JAR) e Figura-2 (Salvando o fonte) abaixo:

    Figura-1
    ScreenShot209

    Figura-2
    ScreenShot210

    Após salvo os pacotes JARs de-compilados, neste momento, já podemos realizar as comparações. Suponha que tenhamos usados os nomes de diretórios: Aplicativov1 e Aplicativov2 respectivamente.

  3. Realizando a comparação

  4. Para realizar a comparação dos pacotes afim de obter as diferenças, vamos utilizar uma ferramenta muito simples, porém poderosa: “diff do Linux” 🙂

    Salvo o conteúdo dos arquivos JAR em diretório distintos, basta usar o diff para comparação:
    (Lembre-se que se você usou a versão do JD-GUI para Windows, terá que mover os diretórios para uma estação/servidor Linux)

    Na estação Linux, basta executar o comando abaixo para realizar as comparações:

    # diff --brief -r Aplicativo1 Aplicativo2

    Descrição dos Parâmetros:

    • -r: comparação recursiva
    • –brief: exibe apenas um resumo das diferenças encontradas

Referências

http://stackoverflow.com/questions/3868803/comparing-two-jar-files
http://blog.jdriven.com/2012/12/compare-jar-files-class-content/

Agradecimentos

Forseti Tecnologia e Informação

Please follow and like us:

No Responses

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: