Java 5 -> Java 1.4

Alguém conhece algum tipo de conversor automático de código fonte Java 5 para Java 1.4?

Conversor de código fonte? Pra que você precisa disso?

O código do Java 1.5 roda normal no Java 1.4.

Conversor de código fonte? Pra que você precisa disso?

O código do Java 1.5 roda normal no Java 1.4.[/quote]

Classes podem rodar, mas código Java 5 não compila em compilador 1.4. E infelizmente a Apple já anunciou que só vai ter versão do Java 5 para o Tiger mesmo.
Eu até tenho Java 5 no meu outro computador, que roda Linux, mas se existisse algum conversor automático eu poderia fazer todo o trabalho aqui no caso de projetos open source em Java 5 que quero mexer.

Eu acho que ninguém fez isso não…

Não tem como você atualizar o seu Mac não?

ué… se não me engano tem uma opção no javac q faz compilar usando a versão q vc deseja…
se não me engano é javac -source
aí vc põe 1.4… isso é para o código-fonte
para gerar bytecode compatível, - target 1.4
acho que é isso…

[quote=microfilo]ué… se não me engano tem uma opção no javac q faz compilar usando a versão q vc deseja…
se não me engano é javac -source
aí vc põe 1.4… isso é para o código-fonte
para gerar bytecode compatível, - target 1.4
[/quote]

codigo fonte!=bytecode

O que ela quer eh usar fontes do Java 5 na 1.4

Não tem, e acho pouco provavel achar.

Ter até tem…

  • opção 1: pagar centenas de dólares
    problema: sou uma pobre estudante não assalariada
  • opção 2: aceitar as ofertas de cópias do Tiger
    problema: não uso software pirata há anos e não gostaria de voltar a usar

No ServerSide eu ouvi dizer que existe um hack da versão do Java 5 da Apple que faz ele rodar em Panther. Esse eu até estou disposta a tentar usar, porém não sei onde encontrá-lo.

Nã, use software pirata não :smiley:

Mas dê uma olhada nisso, pode ser que lhe ajude:

http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=73&t=000094

[quote=Maurício Linhares]Mas dê uma olhada nisso, pode ser que lhe ajude:
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=73&t=000094[/quote]

Ah, agora está começando a ficar interessante :smiley:

Vou ver se arrumo um programa não shareware para abrir o pkg ou vou pedir para algum amigo que instalou o Tiger para me passar os arquivos!

Valeu!

Bom, voce vai estar pirateando a JVM do mesmo jeito, Bani… nao era mais facil pedir pra ele te arrumar o CD do Tiger logo duma vez? :slight_smile:

Não, a JVM é de uso gratuito e tem apenas como “requisitos mínimos” o Tiger. Porém como o requisito mínimo é apenas do instalador, vou direto aos arquivos!
Aí é mais uma questão de “engenharia reversa” do que de pirataria.

Bani, talvez isso funcione:

:arrow: javac Programa.java (com o compilador Java5)
:arrow: jad Programa.class (JAva Decompiler)
:arrow: mv Programa.jad Programa.java-1.4

Gostei da idéia!
Já nem tinha muitos comentários mesmo…

Boa, boaglio! Bani, da um toque se esse treco funcionar :smiley:

Ok, hoje testei de tudo por aqui :slight_smile:

  1. Usar target no compilador java 5.
    Erro:
    javac: target release 1.4 conflicts with default source release 1.5

  2. “hackear” o instalador do Java 5:
    Usei esse script e está funcionando. Testei o jetrix por essa JVM e ocorreu tudo bem. Dizem que o Swing do Java 5 não funciona no Panther, mas isso não precisei usar então ainda não testei.

  3. Solução do Boaglio
    Compilei o código

[code]import java.util.*;

public class Teste {

    public static void main(String[] args) {
            List<Integer> lista = new ArrayList<Integer>();

            lista.add(1);
            lista.add(2);
            lista.add(3);

            for (Integer i : lista)
                    System.out.println(i);
    }

}[/code]

que virou após descompilá-lo

[code]import java.io.PrintStream;
import java.util.*;

public class Teste
{

public Teste()
{
}

public static void main(String args[])
{
    ArrayList arraylist = new ArrayList();
    arraylist.add(Integer.valueOf(1));
    arraylist.add(Integer.valueOf(2));
    arraylist.add(Integer.valueOf(3));
    Integer integer;
    for(Iterator iterator = arraylist.iterator(); iterator.hasNext(); System.out.println(integer))
        integer = (Integer)iterator.next();

}

}[/code]

Porém o Java 1.4 ainda não tinha Integer.valueOf(int), então não funcionou. Mas chegou perto…

:arrow: Retroweaver

Isso serve ou não?

[quote=mister__m] :arrow: Retroweaver

Isso serve ou não?[/quote]

Parece ser a solução mais diretamente aplicável ao problema sugerido inicialmente!
Só não gostei de ter que deixá-lo no classpath para executar o programa depois. Preferia que ele fizesse algum outro tipo de mágica com os métodos novos da API… :roll:

Diz na doc dele que gerar código 1.4 pra todas as features do 1.5 é impossível e foi confirmado pelo time da Sun, inclusive, e que gerar um compilador com -target 1.4 seria possível mas inviável. Acho que você não tem lá muita escolha não :slight_smile: