Java 5 -> Java 1.4

18 respostas
Bani

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

18 Respostas

Mauricio_Linhares

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

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

Bani

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

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

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.

Mauricio_Linhares

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

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

Rubem_Azenha

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…

pcalcado

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

codigo fonte!=bytecode

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

louds

Não tem, e acho pouco provavel achar.

Bani

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.

Mauricio_Linhares

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

Bani

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

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!

cv1

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:

Bani

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.

boaglio

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
Bani

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

cv1

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

Bani

Ok, hoje testei de tudo por aqui :)

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
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);
        }
}

que virou após descompilá-lo

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();

    }
}

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

mister_m

:arrow: Retroweaver

Isso serve ou não?

Bani

mister__m:
:arrow: Retroweaver

Isso serve ou não?

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:

mister_m

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:

Criado 20 de junho de 2005
Ultima resposta 24 de jun. de 2005
Respostas 18
Participantes 8