O projeto tem idéias interessantes, como "Make a dictionary" e do swing: $view := ui_load("myView.xml")
Além disso a maneira q ele usa para implementar interfaces esta até bacana, sou capaz de copiar a idéia para o CajuScript, que realmente parece uma solução até simples para sintaxes baseadas em funções implementar interfaces e classes de Java/OO.
Tirando isto, acho complicado usar este projeto na prática, já que sugere uma plataforma de desenvolvimento e não um auxílio ao desenvolvimento Java. Pois não encontrei nada que suportasse a API de scripting e nenhum maneira de a partir do Java usar o Ynot.
Agora coisas muito graves e erros encontrei neste projeto… segue uma lista:
:arrow: O while não funciona bem:
Este código é um dos exemplos não faz nada!
# The parameter has to be a java.lang.Boolean
$i = 0
while([$i < 10])
echo($i)
$i++
end
Basicamente tentei o while de várias maneiras para fazer contagens e não funcionou apenas com o for.
:arrow: Não da para invocar métodos dentro de variáveis públicas como no Java:
Isto não funciona:
$sys := static("System")
$sys.out.println("Test")
Para funcionar só assim:
$sys := static("System")
$out := $sys.out
$out.println("Test")
Não parece nada prático.
:arrow: Muito lento! Um for vazio de 1000 intereações:
$sys := static("System")
$out := $sys.out
$time := $sys.currentTimeMillis()
for(0..1000, "x")
end
$_time := $sys.currentTimeMillis()
$time := $_time - $time
$out.println($time)
Output: 3906.0
Quase 4 segundos
:arrow: Não dá para usar métodos Java em expressões, isto não funciona:
$sys := static("System")
$time := $sys.currentTimeMillis() - 1000
É preciso colocar em váriaveis sempre os métodos Java:
$sys := static("System")
$_time := $sys.currentTimeMillis()
$time := $_time - 1000
Fora que acho o tempo de aprendizagem muito longo! Visto que foge muito a maneira convencional de programar.
N deixa de ter algum mérito por ter algumas idéias diferentes. Mas com estes problemas é complicado utilizar.
Só mesmo por ter um site bonitinho que dá a aparencia de ser algo muito bom, mas ainda esta muito imaturo, quem sabe nas próximas versões melhore, mas como já vai na 1.5, n sei.
Queria aproveitar e chamar atenção ao CajuScript, tem sido algum esforço faze-lo e tem sido usado pouco além de mim e da empresa que em trabalho, alguns participantes do projeto, e outros poucos downloads que devem talvez utilizar.
Mas volto a lembrar que o CajuScript esta numa maturidade de performance muito superior, e curva de aprendizagem muito curta, e focado para fazer pequenas tarefas, é extremamente pequeno apenas 1 jar 223kb, e 1 dependência o BCEL 521kb para funcionar no modo compilado apenas, mais nada.
A próxima versão do CajuScript estou preparando com tipagem de variáveis para suportar a invocação de métodos java no modo compilado sem reflection o que vai aumentar muito o a performance do CajuScript, em testes desta inovação já consegui reduzir em loops de milhões de interação que levam na versão atual cerca de 5 segundos para cerca de 300 milesegundos.
Por vezes penso que talvez seja algum preconceito pelo pouca utilização mas depois penso que deve ser mesmo por falta de visão em que talvez muitos programadores não sabem quando e como utilizar scripts. Mas no modo geral acho que o pensamento é mesmo do tipo ou fazer 100% em script ou 100% em Java, e acho q este pensamento é completamente errado. Que é um pouco o que o Groovy e o Jruby sugerem.
Acho que as linguagens de script servem para complementar o desenvolvimento Java em partes que seja necessário alterações de código/configurações/manutenção/etc dinâmicas. Mas de maneira nenhuma substituir o desenvolvimento Java.