O Édson já recebeu a chave do SourceForge. Amanhã (se funcionar),
copiarei o projeto para o repositório de lá. Assim, posso dar mais
explicações sobre os códigos já que vocês vão ter acesso. Inclusive,
vamos passar a usar a lista de lá para não poluir esta.
--
Verde Tecnologia
Alexei Barbosa de Aguiar
+55(85)8879.9005
+55(85)3274.6644
Skype: alexeiaguiar
package japa.parser.javacc;
import japa.parser.JavaParser;
import japa.parser.ParseException;
import japa.parser.ast.CompilationUnit;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
@Deprecated
public class Teste<T extends List<int[]>, X> extends Object implements Serializable {
Class clz1 = String.class;
Class clz2 = (String.class);
Class clz3 = int.class;
Class clz4 = (int.class);
int[] arr = new int[10];
;
class Ugly {
int x = 0;
public static void main(String[] args) {
}
}
;
@Deprecated
int[][][][] arr2 = new int[10][2][1][0];
float fff = 0x1.fffeP+127f;
char cc = 'a';
int[][] arr3 = { { 1, 2 }, { 3, 4 } };
static int[] arr4[] = {};
static {
arr4 = new int[][] { { 2 }, { 1 } };
}
public final enum Teste {
asc, def
}
public static enum Sexo {
m, @deprecated
f;
public static enum Sexo_ implements Serializable {
}
private Sexo() {
}
}
public static enum Enum {
m(1) {
void mm() {
}
}
, f(2) {
void mm() {
}
}
;
int x;
private Enum(int x) {
this.x = x;
}
abstract void mm();
}
public <T> Teste(int x) {
this.arr[0] = x;
super.<T, E>check2(val1, val2);
boolean b = true, y = false;
abstract class X {
public X() {
}
public void m() {
}
}
@Deprecated
final class Y extends X {
public Y() {
super();
Y.super.m();
}
public Y(int y) {
t.<Object>super();
}
public Y(int x) {
this();
}
}
}
private class QWE extends Teste<List<int[]>, String> {
@Deprecated
final int z = 0;
int i = (int) -1;
public QWE(String... x) {
<String>super(x[0]);
}
public QWE(int... x) {
super(x[0]);
i = x[0];
assert true;
assert 1 == 1 : 2;
{
int iii = 3;
iii += 3;
}
label: {
int iii = 1;
}
;
;
switch(i) {
}
ll: switch(i) {
case 1:
System.out.println(1);
break ll;
default:
{
System.out.println("default");
break;
}
case 2:
System.out.println(1);
i++;
++i;
}
}
private synchronized int doSomething()[] {
List<? extends Number> x = new ArrayList<Integer>();
return new int[] { 1 };
}
}
public static void main(String[] args) throws ParseException, IOException {
int x = 2;
CompilationUnit cu = parse(new File("src/japa/parser/javacc/Parser.java"));
System.out.println(cu);
Teste teste = new Teste(2);
Teste.QWE qwe = teste.new QWE(1);
if (1 + 1 == 2) {
teste = null;
teste = new Teste(1);
} else {
x = 3;
teste = new Teste(1);
x = 2;
}
if (true) x = 1; else x = 3;
while (true) {
while (x == 3) continue;
break;
}
do {
x++;
} while (x < 100);
do x++; while (x < 100);
for (@Deprecated int i : arr4[0]) {
x--;
}
for (@Deprecated final int i = 0, j = 1; i < 10; x++) {
break;
}
int i, j;
for (i = 0, j = 1; i < 10 && j < 2; i++, j--) {
break;
}
}
@AnnotationTest(value = "x")
public static CompilationUnit parse(@Deprecated File file) throws ParseException, IOException {
String a = ((String) "qwe");
String x = ((String) clz1);
int y = ((int) x);
synchronized (file) {
file = null;
file = new File("");
}
try {
if (file == null) {
throw new NullPointerException("blah");
}
} catch (final NullPointerException e) {
System.out.println("catch");
} catch (RuntimeException e) {
System.out.println("catch");
} finally {
System.out.println("finally");
}
try {
if (file == null) {
throw new NullPointerException("blah");
}
} finally {
System.out.println("finally");
}
try {
if (file == null) {
throw new NullPointerException("blah");
}
} catch (RuntimeException e) {
System.out.println("catch");
}
return JavaParser.parse(file);
}
private <Y> void x(Map<? extends X, ? super T> x) {
@Deprecated Comparator c = new Comparator() {
public int compare(Object o1, Object o2) {
A<Integer> a = new <String>A<Integer>(new Integer(11), "foo") {
};
return 0;
}
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
};
}
public @interface AnnotationTest {
String value() default "asd";
@Deprecated
int[] valueI() default { 1, 2 };
AnnotationTest valueA1() default @AnnotationTest;
AnnotationTest valueA2() default @AnnotationTest("qwe");
AnnotationTest valueA3() default @AnnotationTest(value = "qwe", valueI = { 1 });
}
;
}
Sinceramente, não acho legal esse tipo de projeto, porque me remete ao pensamento de "uma linguagem apenas".
Tudo bem que Scala seja, obviamente, superior a Java. Isso é indiscutível. Mas, não acho que esse seja o sentimento para um projeto como esse. Afinal de contas, é por isso que Scala é totalmente compatível com Java, para que possa interoperar numa boa, transparentemente.
Acho que a idéia é "extensibilidade". Sim, poder extender meus programa com construções mais sofisticadas e flexiveis usando Scala; e escrever coisas novas em Scala usando meu legado Java. Não converter tudo que tenho em Java para Scala.
Senão, caimos no mesmo erro megalomaníaco da comunidade Java que pensa que Java resolve todos os problemas computacinais do universo. Infelizmente, um pensamento ultra-limitado.
Java, JRuby, Scala, etc, etc, etc... há tantas linguagens fantasticas! Por que ter usar apenas uma?
Compartilho um pouco do que penso a respeito nesse post: http://codezone.wordpress.com/2008/02/04/nao-ha-uma-unica-linguagem-de-programacao Sou mais adepto de projetos poliglotas do que de projetos de conversão. MAS ESSA É SÓ A MINHA OPINIÃO!!! Não se ofendam...
Só pra continuar um pouquinho mais com minha linha de raciocinio... Acho que o que dá visibilidade a uma linguagem são projetos que mostrem coisas legais que as pessoas podem fazer com a tal linguagem. Aplicações! Algo que alguém veja e diga: "Que aplicação show de bola que fizeram com Scala! Caramba! Olha como ficou incrivel essa parte da aplicação. Ah! Eles usaram aquele recurso fantástico de (sei lá!) atores! Puxa... Fantástico!" E, claro, um projeto open source, pra que vejam "como construimos" usando os tais fantásticos recursos de Scala. Ai o camarada que olhar o código pode dizer: "Caraca! Fizerem essa funcionalidade impressionante só que esse pouquinho de linhas de código? Com muito menos código do que teria que escrever em Java? Fabuloso!" Isso faz com que as pessoas comecem a considerar o uso de Scala em seu projetos comerciais/profissionais.
Porque, simplismente, ter um conversor que vai converter algo que já está pronto, sinceramente, não trás muito ganho a uma corporação. Não mesmo.
Senão, já tinham inventado um conversor de Cobol pra Java e pronto! Agora todos os banco vão usar Java! (Nem sei se tem, mas acho que não... rsrsrs)
Fazer um projeto open source que faz uma poderosa integração entre legado Java e novo código em Scala, mostrando a escalabilidade de Scala sob todos os aspectos, creio eu, que daria muito mais visibilidade a Scala.
Você não precisa usar 3 mil e 500 linguagens em um projeto. Mas não há mal nenhum em usar o melhor de 2 ou 3. Aliás, qualquer projetinho web usa mais que isso, não usa? Java + SQL + HTML + JavaScript. Só ai já foram 4.
Não acho então que misturar aumente o custo. Sabe por que? Porque você pode ter times com conhecimento abrangente, com pessoas que sabem extrair o melhor de cada tecnologia e aplica-la de forma objetiva e otimizada. É melhor do que ficar reinventando a roda cada vez que um novo problema ainda não resolvido na linguagem X surge, porque não se pode usar a solução ultra master da linguagem Y. Isso sim reduz custo! Mas isso não quer dizer que não acho que devamos usar linguagens com maior abrangência e expressividade. Pelo contrario, com certeza devemos. Mas também não acho que se fechar em uma única linguagem seja a solução, porque de tempos em tempo haverá sempre o mesmo problema: A linguagem atual está ficando obsoleta e está surgindo uma nova muito melhor. Sempre é bom ter mais opções.
A crise dos multiplos cores ainda não está totalmente solucionada em Scala, certo?
Porque Java continua sendo o host de Scala.
A pesar da linguagem ser funcional e excelente para multi-processamento, o problema ainda não foi esgotado, porque o modelo de threads do Java não é como de Erlang.
Mas, tudo bem, este é um outro assunto. De qualquer forma, estão ai as opiniões... hehehe... Ah! Não concordo com sua última colocação: "O homem que toca sete instrumentos não toca bem nenhum deles"... hehehe... Afinal, o mundo já percebeu que generalistas são mais úteis que especialistas. Seja um especialista generalista: Conheça muito de muitas coisas!
Sim, claro, é coisa da linguagem fazer a integração do tipo "permitir que se use uma classe Java em um código Scala". Mas não é disso que estou falando. Estou falando de ter um projeto Java EE de exemplo rodando e um projeto Scala integrado a este para fazer tarefas X, Y, Z, mostrando como aproveitar o legado e ainda alavancar o desenvolvimento com Scala. É sobre isso que eu falava.
Flame war hahahaha
Minha opinião:
O projeto é válido num outro contexto "como ficaria esse meu código
Java em Scala ?"... e aí o cara converte e vê que com 2 linhas ele
faz o que fazia em 20 hehehehe
Pense nisso, simples assim...
E eu tb sou a favor do "poliglotismo"...
Em 27/08/2008, le-silva <leand...@gmail.com> escreveu:
>
> Sinceramente, não acho legal esse tipo de projeto, porque me remete ao
> pensamento de "uma linguagem apenas".
>
> Tudo bem que Scala seja, obviamente, superior a Java. Isso é
> indiscutível. Mas, não acho que esse seja o sentimento para um projeto
> como esse. Afinal de contas, é por isso que Scala é totalmente
> compatível com Java, para que possa interoperar numa boa,
> transparentemente.
>
> Acho que a idéia é "extensibilidade". Sim, poder extender meus
> programa com construções mais sofisticadas e flexiveis usando Scala; e
> escrever coisas novas em Scala usando meu legado Java. Não converter
> tudo que tenho em Java para Scala.
>
> Senão, caimos no mesmo erro megalomaníaco da comunidade Java que pensa
> que Java resolve todos os problemas computacinais do universo.
> Infelizmente, um pensamento ultra-limitado.
>
> Java, JRuby, Scala, etc, etc, etc... há tantas linguagens fantasticas!
> Por que ter usar apenas uma?
>
> Compartilho um pouco do que penso a respeito nesse post:
>
> http://codezone.wordpress.com/2008/02/04/nao-ha-uma-unica-linguagem-de-programacao
> > > if (file == null) {
> > > throw new NullPointerException("blah");
> > > }
> > > } catch (final NullPointerException e) {
> > > System.out.println("catch");
> > > } catch (RuntimeException e) {
> > > System.out.println("catch");
> > > } finally {
> > > System.out.println("finally");
> > > }
> > > try {
> > > if (file == null) {
> > > throw new NullPointerException("blah");
> > > }
> > > } finally {
> > > System.out.println("finally");
> > > }
> > > try {
> > > if (file == null) {
> > > throw new NullPointerException("blah");
> > > }
> > > } catch (RuntimeException e) {
> > > System.out.println("catch");
> > > }
Não acho que deva permanecer perpetuamente programando em Java, acho que deva haver uma transição sim. Mas guardada as devidas proporções, não é bem assim. Hoje: "vamos migrar tudo pra Scala. Amanhã: "vamos migrar tudo pra linguagem XPTO". Não é bem assim que funciona. Tanto não é que web services estão ai à porta. Aliás, à porta nada, já entraram faz tempo! Acredito que dentro de uma plataforma (Java ou .NET) pode-se usar mais de uma linguagem para alavancar o poder de desenvolvimento, já que cada linguagem é melhor em uma área. Sim, estou falando de linguagem de propósito geral. A plataforma host - seja Java ou .NET - não impacta no "estilo" de programação funcional. Não é sobre isso que eu estava falando. O que eu estava falando era sobre multi-processamento. Eu disse que, apesar de Scala ter o modelo de atores de Erlang (sim, a criadora dos atores!), ela não tem o mesmo "resultado" de Erlang nesse campo, por limitação da plataforma Java. "Oficina O Marcão, especializada em veículos nacionais, importados e outros". Sei... Só uma perguntinha: Você trabalha com desenvolvimento ágil ou waterfall? Você também acredita em analista de sistemas?
Sim, essa é a proposta, apresentar a linguagem e criar uma comunidade
em torno da mesma, como existe para Java, Python, Ruby e por aí
vai...
Temos pessoas aqui altamente gabaritadas pra isso. E quando digo
altamente não é puxa saquismo. Só tem fera aqui, até onde ví e
pelos mails recebidos.
Compartilho de sua opinião e da do Alexei, e no fundo acho que estão
falando quase o mesmo mas com palavras diferentes... a realidade
caminha pra "várias linguagens" num projeto, temos que dizer onde
Scala é bom...
Traduzir a documentação, elaborar um site ou blog, fazer um
tradutor, tudo isso ajuda muito.
Vamos em frente.
Marcelo
Em 27/08/2008, le-silva <leand...@gmail.com> escreveu:
>
> A dificuldade não é minha! Eu também programo em Scala.
>
> Agora, qual o objetivo dessa lista? Não é apresentar Scala para o
> Brasil? Não é mostrar pra profissionais/empresas que eles podem
> investir algumas boas fichas em Scala?
>
> Pois então.................
>
>
> On 27 ago, 11:46, Alexei Barbosa de Aguiar <ale...@verde.com.br>
> wrote:
> > le-silva escreveu:> Sim, claro, é coisa da linguagem fazer a integração do tipo "permitir
> > > que se use uma classe Java em um código Scala". Mas não é disso que
> > > estou falando. Estou falando de ter um projeto Java EE de exemplo
> > > rodando e um projeto Scala integrado a este para fazer tarefas X, Y,
> > > Z, mostrando como aproveitar o legado e ainda alavancar o
> > > desenvolvimento com Scala.
> >
> > > É sobre isso que eu falava.
> >
> > Neste caso, qual é a dificuldade ? Já rodei feito em Scala servlet, EJB,
> > usei Hibernate, etc... Apenas alguns macetezinhos.
> >
> >
> >
> > > On 27 ago, 11:00, Alexei Barbosa de Aguiar <ale...@verde.com.br>
> > > wrote:
> >
> > >> le-silva escreveu:
> >
> > >>>> Sinceramente, não acho legal esse tipo de projeto, porque me remete ao
> > >>>> pensamento de "uma linguagem apenas".
> >
> > >>>> Tudo bem que Scala seja, obviamente, superior a Java. Isso é
> > >>>> indiscutível. Mas, não acho que esse seja o sentimento para um projeto
> > >>>> como esse. Afinal de contas, é por isso que Scala é totalmente
> > >>>> compatível com Java, para que possa interoperar numa boa,
> > >>>> transparentemente.
> >
> > >>>> Acho que a idéia é "extensibilidade". Sim, poder extender meus
> > >>>> programa com construções mais sofisticadas e flexiveis usando Scala; e
> > >>>> escrever coisas novas em Scala usando meu legado Java. Não converter
> > >>>> tudo que tenho em Java para Scala.
> >
> > >>>> Senão, caimos no mesmo erro megalomaníaco da comunidade Java que pensa
> > >>>> que Java resolve todos os problemas computacinais do universo.
> > >>>> Infelizmente, um pensamento ultra-limitado.
> >
> > >>>> Java, JRuby, Scala, etc, etc, etc... há tantas linguagens fantasticas!
> > >>>> Por que ter usar apenas uma?
> >
> > >>>> Compartilho um pouco do que penso a respeito nesse post:
> >
> > >>>>http://codezone.wordpress.com/2008/02/04/nao-ha-uma-unica-linguagem-d...
> >
> > >>>> Sou mais adepto de projetos poliglotas do que de projetos de
> > >>>> conversão.
> >
> > >>>> MAS ESSA É SÓ A MINHA OPINIÃO!!!
> >
> > >>>> Não se ofendam...
> >
> The Scala-BR, a brazilian community, is studing to develop a tool called
> java2scala, a "translator" of Java Source Code to Scala Source Code,
> what you think about it?
I think such a tool could be useful. However, the resulting code would
(most likely) not use typical Scala idioms such as (higher-order)
functions, or pattern matching. So, to make the code "real" Scala (nice,
concise), one has to refactor the code by hand. But, of course, it is
still less work than translating everything by hand.
Have you looked at jatran (http://code.google.com/p/jatran/)? As far as
I know it is not fully automatic which means that the resulting Scala
code often still doesn't compile without errors. But, maybe it has
improved in the meantime.
Bom, pelo menos eu estou calmíssimo. :-)Calma gente...Muita calma...
O projeto é legal, primeiro por que será de uma visibilidade enorme e segundo por que é difícil de fazer, segundo acho que vai ajudar bastante o pessoal a migrar pra Scala...Mas tanto o Phillip como o Leandro estão certos... nada substitui o desenvolvedor... porém se tiver um ponto de partida ótimo, ajuda bastante...