NOTÍCIA

Java 9 vai remover suporte de compilação para versão 1.5 e anteriores

Proposta de aperfeiçoamento do Java JEP 182 prevê que o compilador suportará no máximo três versões anteriores à do próprio compilador.

Voltada para JavaJava42 conteúdosNovidades do Java 26 (para desenvolvedores)Dev (Back & Front) · mar 2026Visual Studio Code para Java: o guia completo (dicas, configuração e extensões)Dev (Back & Front) · out 2025Quarkus: Modernizando a linguagem Java para a era da nuvemDev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) 8 e Java 9, a recente proposta de aperfeiçoamento do Java JEP 182 (Java Enhancement Proposal) tem como objetivo modificar o modelo de suporte para as flags -target e -source usadas pelo compilador do Java. A proposta prevê que o compilador suportará no máximo três versões anteriores à do próprio compilador.

A opção -target permite que o compilador informe uma versão especifica do formato da classe Java. Tipicamente são especificadas as versões do Java, como 1.5 ou 1.6, o que especifica a versão do bytecode gerada:

  • 48: Java 4
  • 49: Java 5
  • 50: Java 6
  • 51: Java 7
  • 52: Java 8 (not yet released)
  • 53: Java 9 (not yet released)

Já a opção -source permite que o compilador reconheça, ou trate como erros, as novas estruturas da linguagem, como lambdas, try-with-resources, uso de strings no switch, entre outros. Algumas funcionalidades novas da linguagem, como lambdas, requerem o uso de funcionalidades especificas do bytecode, como o invokedynamic. Assim, muitas vezes não é possível usar uma versão mais nova do que a versão alvo definida no target.

A modificação já começou: a JSR14 e a versão 1.4 não são mais aceitas no Java 8, e o uso da versão 1.5 gera avisos (warnings) do compilador. Quando o Java 9 for liberado, ele irá remover o suporte para a versão 1.5 e apresentar avisos para a versão 1.6.

Apesar de isso não parecer uma grande mudança do ponto de vista prático, até recentemente, os runtimes de OSGi ainda compilavam com o -source 1.5 e target jsr14 visando a gerar códigos capazes de incorporar tipos genéricos, para compatibilidade com o J2ME. O uso da jsr14 será removido no final de 2013 do código do Eclipse. Por fim, os runtimes de OSGi, como Felix e Equinox, continuarão disponíveis enquanto houver necessidade comercial.

Com informações de InfoQ

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Ver perfil