LuaJava, new version

Para quem não conhece, ta na hora de conhecer…

Para quem conhece então ta na hora de fazer o upgrade…

Trata-se de uma linguagem de script 100% brasileira, muito utilizada no mundo, pela Nasa, LucasArts, CryTek entre outras…

Nesta nova versão foi alterado alguns métodos do LuaState, e esta mais transparente a comunicação com o motor do Lua.

http://www.keplerproject.org/luajava/

Portanto quem tem projetos q já utilizam LuaJava, agora NÃO é só ir e substituir o Jar e a Biblioteca nativa, tem q fazer isto na mesma, mas também alterar alguns métodos do lado do Java…

Como por exemplo:

:arrow: o método doLua passou a ser LdoLua
:arrow: não precisa mais carregar lib a lib… agora tem o método openLibs() q o q faz como é óbvio carrega todas, então agora é tudo ou nada :smiley:
:arrow: e o método doString passou a ser LdoString também…

Sucesso garantido com LuaJava, experimentem :wink:

[quote=eduveks]Para quem não conhece, ta na hora de conhecer…

Para quem conhece então ta na hora de fazer o upgrade…

Trata-se de uma linguagem de script 100% brasileira, muito utilizada no mundo, pela Nasa, LucasArts, CryTek entre outras…

Nesta nova versão foi alterado alguns métodos do LuaState, e esta mais transparente a comunicação com o motor do Lua.

http://www.keplerproject.org/luajava/

Portanto quem tem projetos q já utilizam LuaJava, agora NÃO é só ir e substituir o Jar e a Biblioteca nativa, tem q fazer isto na mesma, mas também alterar alguns métodos do lado do Java…

Como por exemplo:

:arrow: o método doLua passou a ser LdoLua
:arrow: não precisa mais carregar lib a lib… agora tem o método openLibs() q o q faz como é óbvio carrega todas, então agora é tudo ou nada :smiley:
:arrow: e o método doString passou a ser LdoString também…

Sucesso garantido com LuaJava, experimentem :wink: [/quote]

Qual a vantagem de usar Lua dentro da plataforma java? qual a vantagem do LUA sobre a sintaxe java ?

[quote=chun]
Qual a vantagem de usar Lua dentro da plataforma java? qual a vantagem do LUA sobre a sintaxe java ?[/quote]

Já ouviu falar em linguagens de script pra Java???.. Rhino, JudoScript, Groovy, JRuby, JPhyton, etc… e também há o LuaJava… segue o mesmo gênero…

Vantagens existe muitas, imagina um sistema q tem q gerar relatórios, seja web-based ou desktop, o cliente sempre que quiser um realtório diferente com um campo a mais ou um campo a menos, ai tem q ir no Java, abrir uma IDE, fazer a alteração, compilar, testar, há ainda não tá bom, volta altera, compila, testa, tá bom, gera jar e deploy…

Se usar uma linguagem de script para fazer os relatórios sempre q for preciso uma alteração basta ir alterar o arquivo do script e boa já esta, em runtime não precisa fazer reset a nada e boa…

Scripts colocamos nas partes dos projeto q exigem muitas mexidas, e também em partes que o cliente vai poder meder, e ter independência, assim o cliente não precisa de saber Java e nem compilar classes e gerar jars e associar ao nosso projeto, basta ele ter minimos conhecimentos de programação para poder alterar o q ele quer…

Eu costumo fazer em todos os meus projetos no config, faço um arquivo config.lua, que é executado pelo LuaJava… alterou o config blz… altera em runtime e esta tudo funcionando, além de poder colocar um while, if e tudo mais dentro do config caso seja necessário.

As linguagens de script são muito úteis, basca começar a explorar uma e verá a potencialidade delas e a onde podem ser melhor encaixadas…

Lua tem a vantagem de ser a mais fácil entre elas, poucas keywords, limpinha, não é case-sensitive, não obriga pontuação, etc… é considerada umas das linguagens mais fáceis, e o cliente fica todo satisfeito por poder saber q quando ele quiser fazer alguma alteração besta, basta ele ir lá no arquivo xpto.lua e alterar uma coisinha de nada, e boa…

E Lua também pode ser compilada, caso queira ter uma maior proteção e não deixar o código visível, pelo q sei é a única linguagem de script q suporta isto, ela gera um arquivo de bytecode próprios, seguindo a idéia do Java.

[quote=eduveks][quote=chun]
Qual a vantagem de usar Lua dentro da plataforma java? qual a vantagem do LUA sobre a sintaxe java ?[/quote]

Já ouviu falar em linguagens de script pra Java???.. Rhino, JudoScript, Groovy, JRuby, JPhyton, etc… e também há o LuaJava… segue o mesmo gênero…

Vantagens existe muitas, imagina um sistema q tem q gerar relatórios, seja web-based ou desktop, o cliente sempre que quiser um realtório diferente com um campo a mais ou um campo a menos, ai tem q ir no Java, abrir uma IDE, fazer a alteração, compilar, testar, há ainda não tá bom, volta altera, compila, testa, tá bom, gera jar e deploy…

Se usar uma linguagem de script para fazer os relatórios sempre q for preciso uma alteração basta ir alterar o arquivo do script e boa já esta, em runtime não precisa fazer reset a nada e boa…

Scripts colocamos nas partes dos projeto q exigem muitas mexidas, e também em partes que o cliente vai poder meder, e ter independência, assim o cliente não precisa de saber Java e nem compilar classes e gerar jars e associar ao nosso projeto, basta ele ter minimos conhecimentos de programação para poder alterar o q ele quer…

Eu costumo fazer em todos os meus projetos no config, faço um arquivo config.lua, que é executado pelo LuaJava… alterou o config blz… altera em runtime e esta tudo funcionando, além de poder colocar um while, if e tudo mais dentro do config caso seja necessário.

As linguagens de script são muito úteis, basca começar a explorar uma e verá a potencialidade delas e a onde podem ser melhor encaixadas…

Lua tem a vantagem de ser a mais fácil entre elas, poucas keywords, limpinha, não é case-sensitive, não obriga pontuação, etc… é considerada umas das linguagens mais fáceis, e o cliente fica todo satisfeito por poder saber q quando ele quiser fazer alguma alteração besta, basta ele ir lá no arquivo xpto.lua e alterar uma coisinha de nada, e boa…

E Lua também pode ser compilada, caso queira ter uma maior proteção e não deixar o código visível, pelo q sei é a única linguagem de script q suporta isto, ela gera um arquivo de bytecode próprios, seguindo a idéia do Java.[/quote]

Qual a vantagem de Lua sobre o Groovy ?

Já disse algumas vantagens… Lua não é case-sensitive e também pode ser compilada gerando bytecodes… além de Lua para o cliente é bem mais facil dele aprender e poder mexer independentemente do que Groovy…

E para além disto caimos na questão do gosto… não gosto do Groovy ter 10MB, lua tem alguns mizeros KB e faz tudo q o Groovy e na minha opinião algumas coisas mais como citei acima, Lua na minha opinião também é bem mais madura, e é mais usada no mundo do q Groovy, basta ver as grandes empresas que usam Lua… Lua já tem uma carrada de anos nas costas… Lua vai na versão 5.X e LuaJava na 1.1, é muito estável mais do que testada, e confiavél, não digo q o Groovy tb não seja…

Se usar Groovy o teu projeto sobe 10MB, se usar LuaJava fica com uma linguagem mais fácil e sobe apenas 300KB, além de poder ser compilada e tudo…

E Lua sendo compilada tem um maior desempenho, pois deixa de ser interpretada, ai já nem precisamos de mais comparações, certo?

[quote=eduveks]E Lua sendo compilada tem um maior desempenho, pois deixa de ser interpretada, ai já nem precisamos de mais comparações, certo?
[/quote]

Concordo com quase tudo o que você escreveu, menos aqui. Se for para compilar eu faço tudo em Java mesmo :smiley: :smiley: :D.

Concorda ?!

Não é crítica, só o meu ponto de vista.

Abraços.

[quote=rogeriop80][quote=eduveks]E Lua sendo compilada tem um maior desempenho, pois deixa de ser interpretada, ai já nem precisamos de mais comparações, certo?
[/quote]
Concordo com quase tudo o que você escreveu, menos aqui. Se for para compilar eu faço tudo em Java mesmo :smiley: :smiley: :D.
Concorda ?!
[/quote]

A compilação do Lua é muito simples, nem é possível comparar com Java, pois em Lua não precisa de configurar “classpath” nem nada, basta executar o “luac script.lua” e pronto é gerado o bytecode… imagina que vc tem varios scripts lua e dependem um do outro, como uma classe chamando outra, em lua vc não precisa dizer para o compilador aonde estão os outros arquivos de script, cada arquivo é compilado independentemente… a vantagem disto é q para compilar não há stress, e os erros de relacionamento de scripts só aparecem em execução, o compilador apenas detecta erros de sintax… portanto é uma compilação muito mais simples e fácil de fazer do que a do Java…

Entretanto eu não compilo nada, fica tudo em código mesmo, isto é apenas uma opção não é obrigatório fazer a compilação… lua executa o arquivo de código como o arquivo de bytecodes…

Mas se fizer um script Lua com umas 1.000 linhas de código é melhor compilar do que ficar interpretando isto em cada execução…

E uma coisa q o Java não faz e o Lua faz é, imagina vc rodando seu programa Java, ai detectou um bug no clique de um botão, para vc corrigir este bug em Java vc tem q fechar o programa, tem q parar tudo e fazer a correção e lançar o programa de novo para testar… certo? Em Lua se a ação deste botão estiver executando um script Lua, compilado ou não compilado, basta alterar o arquivo e clicar outra vez no botão e boa… não precisa reiniciar o programa nem nada, tudo em runtime, como as outras linguagens de script tb fazem isto…

Nem sequer dá para comparar Lua com Java, Java é uma coisa Lua é outra, cada um tem o seu papel importante dentro de um projeto, e um depende do outro, claro que Java não depende do Lua, mas se utilizar Lua vc vai ter um dinamismo maior nos teus projetos.

Também não estou querendo dizer que se deve fazer um projeto inteiro em Lua só por que é mais fácil de testar e corrigir bugs, temos que ter bom senso, e utilizar Lua em partes do projeto que é ideal o uso deste recurso, e também para o cliente ter uma maior flexibilidade.

Certo ? Errado!
Meu netbeans faz hotdeploy da classe que eu alterei sem precisar reiniciar o programa… :slight_smile: acho que o eclipse tmb faz isso…

Acho que voce precisa rever seus conceitos :wink:

Já disse algumas vantagens… Lua não é case-sensitive e também pode ser compilada gerando bytecodes…[/quote]

Sobre essas “vantagens”. A primeira eu nao concordo, mas é gosto pessoal. Mas a segunda não é uma vantagem isto que Groovy na JVM tambem pode ser compilada.

Para o colega que disse que vantagem ser compilada em bytecode já que é uma linguagem de script. Primeiro pode-se compilar em tempo de execução.

]['s

[quote=chun]Certo ? Errado!
Meu netbeans faz hotdeploy da classe que eu alterei sem precisar reiniciar o programa… :slight_smile: acho que o eclipse tmb faz isso…

Acho que voce precisa rever seus conceitos ;)[/quote]

Errado tambem. O Netbeans nao faz isso. Quando uma classe é alterada é preciso recompilar tudo. Até porque o NB usa o ANT para fazer a compilação e deploy do projeto e ele não premite recompilar somente uma classe ou um pedaço de classe.
Já o Eclipse só faz isso porque tem o sistema de compilção incremental e usa um compilador próprio pra isso. Este recurso tem no java 6 (uo estaria vindo no java 7? nao lembro).

]['s

Olá:

O LuaJava é totalmente compatível com o Lua “Original”? Pois eu sei que o Jython tem algumas diferenças com o Python original (Não sei se isso mudou). Permite chamar Classes Java da mesma forma que o Groovy, Jython, JavaScript/Rhino, etc?

Grato,

[quote=Rafael Afonso]Olá:

O LuaJava é totalmente compatível com o Lua “Original”? Pois eu sei que o Jython tem algumas diferenças com o Python original (Não sei se isso mudou). Permite chamar Classes Java da mesma forma que o Groovy, Jython, JavaScript/Rhino, etc?

Grato, [/quote]

Para disponibilizar as funções originais do Lua como Math, String, Tables, IO, etc… basta ao carregar o LuaState executar a função openLibs(), que ai vai disponibilizar todas as funções do lua para o script que sera executado… quanto a sintax, é igual ao Lua não difere em nada, e ao fazer o openLibs() todas as funções do Lua ficam habilitadas… então convém sempre fazer o openLibs() :smiley:

Aqui tens alguns exemplos:

http://www.keplerproject.org/luajava/examples.html
http://www.keplerproject.org/luajava/manual.html

Para executar alguma coisa do Java basta usar o luajava.bindClass:

print("Teste Lua Print!!!") jsys = luajava.bindClass("java.lang.System") jsys:println("Teste Java Print!!!")

[quote=chun][quote=eduveks]
E uma coisa q o Java não faz e o Lua faz é, imagina vc rodando seu programa Java, ai detectou um bug no clique de um botão, para vc corrigir este bug em Java vc tem q fechar o programa, tem q parar tudo e fazer a correção e lançar o programa de novo para testar… certo? Em Lua se a ação deste botão estiver executando um script Lua, compilado ou não compilado, basta alterar o arquivo e clicar outra vez no botão e boa… não precisa reiniciar o programa nem nada, tudo em runtime, como as outras linguagens de script tb fazem isto…
[/quote]

Certo ? Errado!
Meu netbeans faz hotdeploy da classe que eu alterei sem precisar reiniciar o programa… :slight_smile: acho que o eclipse tmb faz isso…

Acho que voce precisa rever seus conceitos ;)[/quote]

Acho que vc não entendeu o conceito de scripts… experimente um e perceberá que explicar eu já tentei…

E acha q o cliente vai gostar de instalar o NetBeans e vai saber usar? Acha que Java é fácil para o cliente? E como já vimos ai com o fabgp2001 não funciona bem assim…

Como já disse Java é uma coisa Lua é outra… acho que vc não esta lendo as minhas mensagens até o fim e esta levantando problemas equivocados…

E se não vê utilidade em scripts então não use e ponto, e como eu já disse LuaJava não é para se fazer um projeto inteiro, apenas para algumas funcionalidades onde o seu uso fará sentido.

Já disse algumas vantagens… Lua não é case-sensitive e também pode ser compilada gerando bytecodes…[/quote]

Sobre essas “vantagens”. A primeira eu nao concordo, mas é gosto pessoal. Mas a segunda não é uma vantagem isto que Groovy na JVM tambem pode ser compilada.

Para o colega que disse que vantagem ser compilada em bytecode já que é uma linguagem de script. Primeiro pode-se compilar em tempo de execução.

]['s[/quote]

A vantagem de ser case-sensitive, eu entendo o seu lado, e eu também não sou muito adpto a isto, mas temos que ver se Lua tem o intuito de ser uma linguagem fácil para quem não programa poder fazer alguma coisa, então não pode ser case-sensitive…

Só que no LuaJava para um iniciante isto pode gerar alguma confusão, por que como é óbvio o LuaJava ao executar qualquer coisa do Java é case-sensitive, por que pode existir o método System.out.println e como pode existir o System.OUT.printLN, ambos coisas distintas, e para o LuaJava poder saber se tem que executar um ou o outro tem q ser case-sensitive, por isso ao fazer um bindClass ou ao chamar um método Java, LuaJava é case-sensitive, por que o Java é case-sensitive, e obriga a isto…

Mas ao que se refere a sintax Lua ai ta tudo liberado pode ser if e IF, while e WHILE (em Lua não existe FOR), as variáveis também e tudo mais… eu quando estou fazendo um script Lua assumo q é case-sensitive para manter um padrão, mas quem gosta de relaxar mais como os Clientes ai ficam a vontade…