Já tem algum tempo que ouço falar em Ruby on Rails e outras coisas deste genero. Estudei durante algum tempo e desanimei pois nunca vi usarem isso em lugar nenhum!
Achei os conceitos muito interessantes mas por algum motivo talvez por falta de ide´s e outros empecilhos este lance não parece estar com a bola toda. Há algum tempo atrás até criaram muitos cursos e diziam que iria superar Java. :lol:
O que voces acham destas tecnologias que prometem revolucionar a programação e no final acabam virando uma decepção? Fico feliz de não ter feito curso disto. :roll:
E as tecnologias 'de outro mundo?'
68 Respostas
Ruby on Rails virou decepção? Onde? 8)
Tá, o cara não conseguiu aprender, virou decepção pra ele 
kakakakaakak … se decepcionou e agora a culpa é da tecnologia …
Lugar nenhum onde? Tem toneladas de empresas usando RoR. A maioria nos EUA e Europa. No Brasil ainda tá engatinhando já que aqui temos síndrome de querer ser atrasado.
Pois eh, o Twitter que roda em RubyOnRails pretendia (nao sei se concretizou) abandonar o RoR e trocar pelo Java ou PHP.
Empresas grandes que usam Rails.
E não são só empresas grandes como essas que usam o Rails. Mesmo em lugares pequenos ele é usado, como, por exemplo, onde eu faço estágio, sendo que não se trata de uma empresa grande, ou mesmo focada em TI. Na verdade trata-se de uma empresa com um departamento de TI relativamente pequeno.
Existem várias opções de IDE/editores de texto para Ruby on Rails, como o NetBeans IDE e o Aptana Studio (com o plugin RadRails), apenas para ficar nos mais óbvios.
De acordo com o próprio Evan Willians, não há qualquer intenção de abandonar o Rails.
Essa hipotese pode ser descartada. Se o cara não conseguir aprender Ruby On Rails vai conseguir aprender o que? :lol:
e…?
até onde ouvi fala maioria das aplicações com conceito “cloud” (de acordo com google cloud é o futuro) é com RoR e não vejo a hora de faze meu curso em RoR :lol:
Essa hipotese pode ser descartada. Se o cara não conseguir aprender Ruby On Rails vai conseguir aprender o que? :lol:
Hehe. Pois é 
Talvez você tenha esperado muito da tecnologia logo no começo. É a mesma coisa com C++ - quem quer desenvolver jogos geralmente vai pra C++, mas querem sair fazendo jogos tipo WoW e afins. Sobre as grandes empresas que usam RoR, eu conheço a Amazon, a EA, a Nasa, o Google, o Yahoo, e, claro, ThoughtWorks.
Acho que você deve dar mais uma estudada e imaginar o que é possível fazer com RoR que hoje ainda não foi feito.
Abraço.
Exelente para blogs, wiks, podcast e pra substituir o .NET (que seja logo)
E se pegar a moda pra iPhone aí ninguém segura…
mas pra grandes corporações acredito ainda nos produtos IBM
EGL, BI e outros produtos manjados deles…
Mas Java é Java.
Dá pra comentar isso ? Complicado amigo … volte para o VB 
Impressionante como ninguem entendeu nada do que eu disse.
Mas realmente não consegui aprender isso e na boa nunca vi usarem isso em lugar nenhum aqui. Já que são os bons ao inves de ficarem aí tirando onda (alias tirar onda em forum é coisa de nerd) me digam quais as vantagens disso em frente ao que temos?
O que isso pode facilitar a minha vida?
Na boa isso sempre me pareceu coisa de quem não tinha o que fazer e foi procurar alguma tecnologia nova pra brincar. Já ouvi que no Java 7 haverá muita coisa parecida com ele logo pra que serve isso?
Minha decepção é em relação a mercado de trabalho, não com a tecnologia em si. Nunca vi projeto requisitar esta skill. Vou aprender isso pra que pra usar em casa? :roll:
Rapaz, me diz aí, como é que você quer ser levado a sério com uma colocação como essa?
Rapaz, me diz aí, como é que você quer ser levado a sério com uma colocação como essa?
boa linhares
86… teve ter 22 anos
tem muito bit pra escovar ainda…
Uma pergunta que não quer calar
Será “Sparcx86” um “Marcio Duran 2 - O retorno”?
Você tem alguma fonte?
Provavelmente não, pq é impossível a linguagem Java ficar parecido com Ruby sem quebrar pelo menos 90% dos sistemas que existem hj!
As pessoas ficam fascinadas com RoR porque nunca viram nada na vida além de Java. Vêem closures e acham que sua produtividade será 10x maior, porque não sabem o que são closures.
O Ruby não tem macros assim como o Lisp. O que já o transforma em algo “feijão com arroz”. Ruby é que nem uma laranja onde tiraram o suco e deixaram só o bagaço.
As pessoas ficam fascinadas com RoR porque nunca viram nada na vida além de Java. Vêem closures e acham que sua produtividade será 10x maior, porque não sabem o que são closures.O Ruby não tem macros assim como o Lisp. O que já o transforma em algo “feijão com arroz”. Ruby é que nem uma laranja onde tiraram o suco e deixaram só o bagaço.
Tudo bem, não vou muito profundo, deixo isso pro Louds que é o especialista em linguagens … Metaprogramação em Java é um saco !! Alguém aqui já brincou com ATP ( não lembro o nome, Luca vc que mexeu com esse inferno tb) ? Quem já viu o inferno que é , sabe o que estou falando …
Diria que metaprogramação em Java é impossível. Você precisa fazer gambiarras com frameworks horrorosos para conseguiar algo próximo.
Agora em uma linguagem baseada em S-expressions, onde o próprio código é uma árvore que pode ser inspecionada e modificada em tempo de execução, metaprogramação se torna muito melhor e mais fácill. É uma flexibilidade que não tem em Ruby ou outras linguagens.
Afinal, porque o pessoal foca tanto na linguagem Java para comparar com Ruby, Python e outros?
Pior, porque declarar Ruby e outros como “de outro mundo”?
De outro mundo é Java. Quem primeiro passou pelo mundo do desenvolvimento usando essas linguagens (como eu) e depois caiu no mundo Java, só Deus sabe como não há um dia que não seja chingada por ainda ser usada. Nem preciso declarar sobre os frameworks Java né? É motivo de piadas aos montes.
Não há remendo que melhore a linguagem Java. E duvido que a Sun venha a usar a linguagem Java nos próximos 5 anos.
Grandes companhias não são necessáriamente bom exemplo de tecnologias em que devemos investir.
Acho que as perguntas relevantes seriam : Quais empresas grandes apostam em RoR (não que usam, que apostam)
E quais empresas grandes apostam mais em RoR que em Java ou .NET ou outra. Alguma empresa por ai que tenha seu sistema central em Ruby ? E quantas em Java ou .NET ?
Sim o cara faz um site com RoR. Ele faz desktop tb ? (o Ruby usa qual tookit gráfico mesmo ? ) programas de alta demanda por transações? ambientes distribuidos ? ambientes embarcados ? … ou seja, quem aposta RoR ou mesmo Ruby sozinho para aplicaçãos empresariais que não sejam meros sites / CRM e afins ?
Qual é a diferença entre Grails e Rails com JRubi ? afinal corre tudo na mesma JVM para quê aprender uma nova sintaxe se tem o Grails com sintaxe java like.
Vamos lá, Rails não é tudo isso não… a ideia “fantástica” de usar ActiveRecord e outros artificio RAD já transpirou… já tem outros fazendo isso… o que justifica aprender uma nova linguagem ? e não me venham com essa de que se deve aprender uma linguagem por ano que isso é completamente idiota. Alguem que faça isso não conhece nenhuma linguagem em profundidade… fora que Java é uma plataforma, não uma linguagem.
RoR é um nicho, nada mais que isso. Assim como Spring, Grails, Seams e qualquer framework por ai… Já agora porque não aprendemos todos Lua e vamos fazer programas de e-comerce com ela ? Não, melhor ainda, porque não fazer sistemas de apoio à vida com javascript rodando no browser ? mais facil que C++ , não ?
Tookits gráficos?
Cocoa, Fox, GTK, Qt, Tk, WxRuby, além de bindings pra API do Windows. Ah, em Java você usa Swing né?
A mesma diferença entre um original e uma cópia xerocada, feita naquelas máquinas amareladas. E a sintaxe do Grails, bem, Grails não tem sintaxe, quem tem sintaxe é Groovy 
Vamos lá, esse foi provavelmente o comentário mais obtuso que você já fez aqui. Espero que quem esteja lendo essa thread ignore por completo essa sua afirmação e entenda que não se aprende outras linguagens pra se conhecer a fundo, mas para conhecer outras formas e outros paradigmas de se resolver os mesmos problemas.
Minha decepção é em relação a mercado de trabalho, não com a tecnologia em si. Nunca vi projeto requisitar esta skill. Vou aprender isso pra que pra usar em casa?
Não, vc não vai utilizar só em casa… o mercado para RoR é bem considerável nos EUA, e está aumentando no brasil…
Estou trabalhando somente com RoR faz uns dois meses via offshore e digo que estou feliz com meu trabalho atual…
Aprenda novas linguagens, evolua! be happy! 
Abraços
Tookits gráficos?
Cocoa, Fox, GTK, Qt, Tk, WxRuby, além de bindings pra API do Windows. Ah, em Java você usa Swing né?
A mesma diferença entre um original e uma cópia xerocada, feita naquelas máquinas amareladas. E a sintaxe do Grails, bem, Grails não tem sintaxe, quem tem sintaxe é Groovy 
…
É perfeitamente possível usar GTK+ e Qt com java, aliás, ambos toolkits possuem bindings oficiais para o java.
Quanto à comparação entre Grails e Rails, acho que foi equivocada. O Grails tem muito da filosofia do Rails, mas não tem nada de cópia. Não é um “port” do Rails para groovy. Pelo contrário, possui suas próprias tecnologias base (as mais conhecidas são Spring e Hibernate). Apenas para citar um exemplo, uma coisa que o Grails tem e que o Rails não é ORM de verdade, já que o Grails usa o Hibernate por baixo dos panos.

É galera, no Brasil eu não tenho visto muitas vagas para ruby não… Sabem me dizer como anda o salário? Maior que java?
Eu cheguei a brincar um pouco com o console do Ruby e só. Sempre ouço falar dele junto ao Rails, ou seja desenvolvimento de aplicações web. Fico curioso de como a tecnologia tem sido usada em outras áreas. Pessoal critica o swing mas sempre tem empresas utilizando, fora isso o web start é bem bacana, eu pelo menos gosto.
Rails tem ORM de verdade e se chama DataMapper, é melhor se informar um pouco mais antes de falar isso 
E Grails é tão “port” que o nome original era Groovy on Rails e as tecnologias base não tem nada haver com ser uma cópia ou não, afinal, elas são base, elas não aparecem dentro da aplicação.
Já ouvi que no Java 7 haverá muita coisa parecida com ele logo pra que serve isso?
Você tem alguma fonte?
Provavelmente não, pq é impossível a linguagem Java ficar parecido com Ruby sem quebrar pelo menos 90% dos sistemas que existem hj!
cara não foi windows 7 ?
Rails tem ORM de verdade e se chama DataMapper, é melhor se informar um pouco mais antes de falar isso![]()
E Grails é tão “port” que o nome original era Groovy on Rails e as tecnologias base não tem nada haver com ser uma cópia ou não, afinal, elas são base, elas não aparecem dentro da aplicação.
Bom, até há um tempo atrás tinha apenas o ActiveRecord. Não estou muito atualizado com o Rails. :oops:
E nomes parecidos não significa cópia de tecnologia. Já disse, o Grails não é um port, internamente faz as coisas bem diferentes do que o Rails.
Acho que você não entendeu, internamente não importa, o que importa é como ele faz do lado de fora.
De qualquer forma, não é uma questão de por ser uma cópia é ruim, mas se você puder usar o original sempre vai ser melhor. Além do mais, Rails tem uma comunidade bem maior e muito mais material, tanto de referência (ainda mais com os Rails Guides agora) como plugins e complementos.
Sim, não estou dizendo que o Grails é melhor do que o Rails, tanto porque o Grails é meio jovem ainda. Mas o Grails tem seus méritos sim. Um dos maiores desses é trazer mais agilidade para a plataforma java.
A questão é que, para o desenvolvedor java, a transição para Groovy/Grails é mais fácil do que para Ruby/Rails. O groovy tá bem legal, evoluindo bastante, inclusive na performance. Acho que é uma transição natural para o desenvolvedor java.
Não que eu acho ruby ruim, pelo contrário. Só acho mais fácil partir de java para groovy do que para ruby.
Acho que você não entendeu, internamente não importa, o que importa é como ele faz do lado de fora.
De qualquer forma, não é uma questão de por ser uma cópia é ruim, mas se você puder usar o original sempre vai ser melhor. Além do mais, Rails tem uma comunidade bem maior e muito mais material, tanto de referência (ainda mais com os Rails Guides agora) como plugins e complementos.
Maurício, aqui vou descordar um pouco de você. Acredito que houve sim inspiração e cópia do raciocínio RoR para a escrita de um framework com a mesma ideologia. Daí pra frente o Grails possui uma estrutura de plugin muito bem pensada. Há também nativamente suporte ao ORM com uma camada de abstração interessante, GORM, que torna tão simples quanto o ActiveRecord realizar os mapeamentos.
Há um ponto extra que é a separação da camada business, por IoC com Spring. Faz uso do MVC do Spring que é bem parrudo e até um mês atrás RoR não era threadsafe.
O projeto de buscas Compass integrado à ferramenta, segurança ACEGI são outros exemplos de projetos consolidados que pode fazer uso de maneira simples, sem necessidade de ler documentação extensiva.
Roda melhor em cima da JVM, JRuby ainda tem muitos gargalos e li muitos blogs de problemas enfrentados pelo pessoal da TW+Oracle produzindo o OracleMix.
Com a compra do Grails pela SpringSource que está capitalizada com VC por trás, acredito que o projeto deve ganhar um outro grau de maturidade.
Bom sempre haverá quem preferia um ao outro, mas não acho que a comparação deve ser Cópia vs Imitação e sim tecnologias e o que cada um agrega, plugins, performance, facilidade de adoção pelas companhias e developers e por aí vai …
É uma alternativa ao mundo Ruby tangível e não de baixa qualidade como postou. Há quem prefira Ruby pela comunidade, p
Por falar nisso, o Fábio Akita tava falando que a nova caracterísitca de thread-safety do RoR só faz sentido se você usar JRuby. E ele postou também um outro link que dá mais informações sobre isso.
Vamos lá…
Containers de IoC não fazem muito sentido numa linguagem que não é estaticamente tipada, então não há motivos pra se preocupar com isso. O fato de ser threadsafe realmente era um problema, hoje não é mais 
Tenho usado Solr pra buscas e tem me servido muito bem, sobre segurança, bem, dizer que dá pra usar Acegi sem ler uma tuia de documentação é meio complicado né, o Acegi não é nem um pouco simples, se você vai mesmo usar o que ele oferece. De qualquer forma, existem diversas opções pra se fazer o mesmo com Ruby, na verdade, “inventar” a sua própria solução é extremamente simples devido a facilidade que você tem de alterar o programa em tempo de execução.
Eu, pessoalmente, não vi isso. Estamos nos preparando pra migrar tudo aqui pra rodar em JRuby e não tivemos problemas. E pela lista de discussão das JVMs o pessoal do JRuby parece estar bem mais avançado do que a galera do Groovy em termos de interpretador/compilador.
JRuby é bancado pela Sun e já é do interesse de muita gente grande que está interessado em fazer com que a coisa continue seguindo em frente (como Oracle e Thoughworks).
Bom sempre haverá quem preferia um ao outro, mas não acho que a comparação deve ser Cópia vs Imitação e sim tecnologias e o que cada um agrega, plugins, performance, facilidade de adoção pelas companhias e developers e por aí vai …É uma alternativa ao mundo Ruby tangível e não de baixa qualidade como postou. Há quem prefira Ruby pela comunidade, p
Eu, pessoalmente, ainda acho que Grails não está em condições de ser comparado com Rails, acho até uma sacanagem a galera continuar tentando colocar um de frente pro outro, já que a vantagem é clara pra Rails e todo o ecossistema que existe ao redor dele.
De qualquer forma, eu perdi o meu encanto por Groovy, antigamente eu achava a idéia de “ah, parece Java” interessante, depois de ver num projeto as pessoas escrevendo Java em Groovy eu percebi o mal que isso pode fazer. É muito mais fácil subverter as coisas e não usar nada da linguagem, já que ela foi feita pensando nisso, do que aproveitar o verdadeiro poder que ela oferece. Nisso eu acho que usar JRuby é sim uma grande vantagem, você vai ser levado a fazer as coisas de forma diferente, não vai ter a opção de não mudar.
Ficou complicado dar quotes, muitos encadeados risos, mas vamos lá :
1- IoC pode até não fazer sentido, mas o RoR não tem meios de separar a camada business de maneira elegante. Mesmo projetando em cima do seu model, como faz quando seu negócio faz uso de 2 ou 3 ? O que costumo ver é o pessoal poluindo a camada controller, ou separa por lib ? não gosto da abordagem.
2- Tem diversos projetinhos de busca para RoR, conheço outros também, mas o Compass está realmente um passo à frente e é um projeto muito performático. Quanto ao Acegi, realmente há necessidade de se ler para tirar melhor proveito, mas as funções básicas, consegue usar sem problemas com pouca leitura.
3- O próprio OláBini teve que corrigir - http://www.infoq.com/news/2007/11/oracle-mix-jruby-experiences , mas por mais performance que a JRuby tenha, é um interpretador em cima da JVM, não será mais rápido do que rodar nativamente.
4 - Particularmente acho que dá pra colocar sim, pois o Grails é uma casca feita em groovy (15%) o resto são projetos consagrados no meio java, como Hibernate, Compass-Lucene, Acegi, Spring e por aí vai, então começa a ficar interessante de se comprar uma série de questões, como colocar um ambiente de alta produtividade numa empresa que possui como padrão Java.
Realmente Groovy e Java se parecem e isso também é ruim, não gosto de ver projetos em groovy que o camada começa a escrever em java, nesse ponto mudar radicalmente como a sintaxe do Ruby é uma ótima.
Ah não! Muita idiotice pro meu gosto!
Vamos lá, o que tem a ver IoC com separação da camada “business”? É possível sim separar o model do controller! afinal, você não poderia devolver apenas um objeto que tem meios de trazer outro objeto, por exemplo?
Fazer cagada não tem nada a ver com framework usado.
Ainda existem áreas onde não há bibliotecas maduras pra Ruby, mas paciência. O jeito é fazer por conta própria a sua solução e liberá-lo open source. Quem tiver usando JRuby, pode muito bem usar Lucene, Compass, Acegi e o escambau. Não tem essa de “só o Groovy pode te oferecer”.
Esse texto tem um ano. De lá pra cá, novas versões do JRuby surgiram, onde uma é mais rápida que a anterior. E no fundo, não existem frameworks onde não tenha onde “corrigir”, os projetos open source são feitos iterativamente, não em cascata.
E o Rails é uma casca feita em Ruby, e daí? E o que é um “ambiente de alta produtividade”, afinal? Juro que não entendi.
Pra completar, esse negócio de usar Groovy e Grails é coisa de quem não quer sair do cercadinho do Java e nem pensar de um jeito diferente.
Nossa! Ruby também tem xiitas?!?!? :lol:
Estou engatinhando com Groovy e estou gostando! Pretendo fazer algum projeto em breve, se tiver interessados em criar algo na web por ai me mandem mp.
Sobre o mercado pra groovy/grails não vi nada ainda, tentei implantar um projeto com ROR quando estava são paulo, mas por preconceito meu diretor barrou!
Ah, e “sair do cercadinho do Java” implica em deixar muitas tecnologias e bibliotecas muito importantes que uso hoje. E sinceramente é um grande absurdo querer jogar todo isso no lixo. Um exemplo que eu lembro é uma implementação 100% java de SSH. O java tem mais de uma, e o ruby, possui?
O groovy é limitado a muitas coisas que a plataforma java tem, mas não por isso que ele tem que ser idêntico ao java. Se maus programadores o usam como se fosse java, a culpa é da linguagem? Ou dos programadores que o fazem? Quantos não programam proceduralmente em linguagens OO? Culpa da linguagem, que permite ser usada de forma procedural, ou do programador? Se o cara se informar minimamente sobre o groovy, vai fazer as coisas de forma diferente.
O ruby tem bastante recursos, mas o groovy também tem muitas coisas bem interessantes que o ruby não tem. Exemplos? Os que eu lembro agora: AST Transformations, Safe Navigation Operator, ser dinamicamente e estaticamente tipada ao mesmo tempo… Groovy tem o melhor dos dois mundos.
E java tem seus usos específicos. É uma linguagem de mais baixo nível, e uma coisa que ela tem que ruby não é performance. Você não percebe? São propósitos diferentes.
Você também não vai querer comparar C com Ruby né?
Vamos lá, esse foi provavelmente o comentário mais obtuso que você já fez aqui. Espero que quem esteja lendo essa thread ignore por completo essa sua afirmação e entenda que não se aprende outras linguagens pra se conhecer a fundo, mas para conhecer outras formas e outros paradigmas de se resolver os mesmos problemas.
Depois de tudo vc não respondeu à pergunta: quem aposta em ruby ? A resposta é obiva : ninguem.
Por isso o JRuby é tão importante. Repare que o fato de existir JRuby significa que o Ruby fora da JVM está marcado para morrer.
Se não estivesse não havria porque criar o JRuby. Por outro lado o objetivo é usar uma plataforma que já existe e é testada a fundo com funcionalidades de nivel enterprise que a outra implementação de ruby não tem.
O pessoal quer portar RoR para Java. Não me diga que não vê isso. E não me diga que não vê que isso é dizer que Java (plataforma) é melhor.
Então se Java (plataforma) é melhor porque sair dela em primeiro lugar ?
Vc pode não gostar de Grails etc… o ponto é que funcionalmente é a mesma coisa que RoR. Sim é uma copia, mas em Java “puro”.
Sim , as pessoas vão escrever java em arquivos groovy e dai ? Esse é o objetivo : vc pode escrever java , mas com funcionaldiades de metadados que a linguagem java não tem. O compilador de ambos depende do mesmo bytecode. E o Java 1.7 com o seu invokeDynamic vem exatamente ao encontro de suportar linguagens de script de forma nativa dando a ambos a mesma vantagem. O reaproveitamento de codigo, experiencia, boas práticas, etc… que vc tem em java vai todo para groovy. Vc não precisa usar a sintaxe expecial de list se vc não quiser. à medida que vc usa mais, vc se sente mais à vontade vc começa a usar.
Poderiamos pensar o mesmo entre java 1.4 e 1.5. quanto tempo o pessoal de 1.4 demorou para começar a usar as funcioanlidades do 1.5 ? coisas banais como varargs. Com certeza demorou um pouco para pessoa começar a pensar em termos de generics, annotations , varargs e auto-boxing, mas à medida que escrevia codigo 1.4 e começou a ver a nova sintaxe foi mudando. O mesmo é válido para groovy , qualquer outra linguagem compatível com a sintaxe do java (afinal que começou com java lá em 1995 tinah que se habituar a mudar da sintaxe do C para java)
Sintaxe é uma coisas importante. Vc cria estruturas de pensamento diferentes quanto mais vc domina a sintaxe. Vc só pode ser proeficiente numa linguagem se vc pensar com as estruturas dela ( e isso é válido para qq tipo de linguagem seja java , ruby , ingles , turco ou morse)
É uma falácia dizer que precisa aprender rubi para aprender outros paradigmas. O mesmo paradigma existe em grovy e até em scala (até em javascript). Meta-programação é coisa antiga e não foi o rubi que inventou. Ou vc vai-me dizer que o pessoal aprendeu java para aprender o paradigma OO ? que paradigma é diferente de C++ para Java ? Nenhum. É OO na mesma.
A diferença é a plataforma que em C++ não existe. Mas ela é transparente ao programador , logo passar de C++ para Java não é mudar de paradigma, é mudar de tecnologia. Pura e simplesmente.
se vc me diz que o programador deve aprender uma linguagem nova por ano para se manter afiado , blz. Mas se me diz que isso é uma necessidade comercial para a vida dele, isso não é verdade. Basta ver que os especialista ganham mais que os novatos. E só se pode ser especialista investindo tempo na linguagem/plataforma.
O ponto é: o que o RoR faz tb é possivel sem sair da plataforma Java. O rubi veio para o Java ( não o o java que foi para rubi)
então porque sair da plataforma Java ? Aliás porque sair de uma plataforma e voltar a usar linguagens de programação “soltas” ?
É isso que realmente não entendo. E as justificativas que vejo são meio fracas ( tipo essa de aprender novas tencologias)
Porquê alguem na sua prefeita sanidade mental preferiria implementar algo do zero quando simplesmente usando já existe na linguagem/plataforma que usa ?
Não estamos falando do cara que saiu de faculdade sem nenhuma experiencia profissional e que para ele Java ou rubi é a mesma coisa. Estamos falando de quem já programa em java faz anos e alguem lhe diz que deve mudar para RoR. O que o RoR tem que não encontro na plataforma java ( sem frameworks ou não, não importa, já que RoR tb é um framework em cima de rubi) ?
Qual a vantagem em mudar de Java para RoR ? Porque mudar para uma “plataforma” imadura quando já uso uma que é muito madura ? Isso faz sentido para alguém ? Como isso faz sentido ? (A sério, eu gostaria de entender a preferência por rubi e RoR)
Não, não sou chiita em Ruby. Conheço e gosto de outras linguagens também.
Não, não implica. Sair do cercadinho do Java quer dizer pra parar de pensar que o único meio civilizado de programar é usando a linguagem ou a plataforma java. É perceber que existem outras coisas interessantes.
E java tem seus usos específicos. É uma linguagem de mais baixo nível, e uma coisa que ela tem que ruby não é performance. Você não percebe? São propósitos diferentes.Você também não vai querer comparar C com Ruby né?
Não entendo quando as pessoas defendem Java por causa por performance. Quando Java brigava com C++, os javeiros estavam do outro lado da briga.
@ Sergio
Dá uma lida em http://en.wikipedia.org/wiki/Sapir–Whorf_hypothesis e talvez você entenda o porquê de aprender uma nova linguagem.
Por que ninguém apedrejou a Sun por, ao criar o Java, reescrever bibliotecas que já haviam em C?
Não estamos falando do cara que saiu de faculdade sem nenhuma experiencia profissional e que para ele Java ou rubi é a mesma coisa. Estamos falando de quem já programa em java faz anos e alguem lhe diz que deve mudar para RoR. O que o RoR tem que não encontro na plataforma java ( sem frameworks ou não, não importa, já que RoR tb é um framework em cima de rubi) ?
Qual a vantagem em mudar de Java para RoR ? Porque mudar para uma “plataforma” imadura quando já uso uma que é muito madura ? Isso faz sentido para alguém ? Como isso faz sentido ? (A sério, eu gostaria de entender a preferência por rubi e RoR)
Existe plataforma RoR? Não! RoR é um framework que roda, primariamente, em plataforma LAMP. Existe também a possibilidade de rodar em cima da plataforma Java. Não entendo seu ponto.
Ah não! Muita idiotice pro meu gosto!Vamos lá, o que tem a ver IoC com separação da camada “business”? É possível sim separar o model do controller! afinal, você não poderia devolver apenas um objeto que tem meios de trazer outro objeto, por exemplo?
Fazer cagada não tem nada a ver com framework usado.
Cara um fórum público e aberto, discussão em alto-nível, se quiser entrar, primeiramente abaixe o tom e respeite as pessoas ok ?
Vamos lá …
Amigo, não falei que tem haver, apenas o framework lhe dá uma trativa clara para isso. Por exemplo, posso fazer injeção de uma camada business que está num EJB. Então você vai criar objetos de domínio para regras de negócio, como Autoriza Transações, que faz uso de uma série de objetos somente para encapsulá-los ? Não entendi seu design … [/quote]
O texto pode até ser antigo, mas isso não descarta sua validade e nem que hajam problemas ainda para serem superados, já que JRuby ainda é muito novo no quesito maturidade. Agora o que tem haver proesso iterativo com maturidade para um cenário Enterprise, que é a pauta da discussão ?
Explico , tem haver em usar técnicas mais ágeis para produção como GORM, MVC mais simples, like Rails. Para se construir uma aplicação Web, ao invés de fazer um setup enorme, com MVC + Hibernate entre outros, fora o ciclo de desenvolvimento. Então você coloca a produtivdade do Rails ( Ruby) num cenário Weblogic por exemplo, empresa que só aceita Java e possui uma política de gestão e configuração. Outra que é mais fácil vender o peixe para gerentes, já que está usando Hibernate, Spring e as coisas que eles estão acostumados à ouvir.
Bom, acho que há motivos plausíveis para adoção e tentei fazer uma explanação puramente técnica. Não estou levando gosto pessoal, pois faço uso no meu dia-a-dia de Ruby On Rails somente para você saber e tenho certeza que o Maurício sabia disso, pois já havia comentado em outras oportunidades.
Então se quiser discutir e defender algo, fundamente !!
Separar a camada business de maneira elegante?
Supondo que o que você chama de camada business são entidades e serviços, não é necessário elegância nenhuma, é só criar o objeto e deixar ele lá no seu controller. Pra falar a verdade, eu tenho cada vez menos serviços dentro do meu código, os que eu tenho aqui são só aqueles que representam coisas externas ao sistema (e a maior parte deles nem surge no modelo, vivem escondidos em callbacks). O fato de não ter inversão de controle não significa que não tem “elegância” (eu, pessoalmente, acho que essa palavra tem até uma conotação meio infeliz…), repetindo mais uma vez, containers de inversão de controle faz sentido quando você tem linguagens estaticamente tipadas, em uma linguagem como Ruby isso já está praticamente dentro da linguagem, é muito simples trocar uma implementação pra outra e você não vai nem perceber.
Bem, como eu disse, não uso “projetinhos” pra busca, uso Solr e não acho que alguém em sã conciência usaria outra coisa. Quanto a segurança, restful_auth em Rails faz o mesmo serviço, sem complicação e sem documentação também.
Como já disseram, é pré-história. E a única coisa que roda “nativamente” na JVM hoje é Java. Groovy também é tão interpretada quanto Ruby.
Não dá pra colocar porque a diferença entre os dois e a quantidade de plugins externos do Rails vai muito mais além do que esses projetos em Java e no fim das contas eles terminam resolvendo muitos problemas comuns de aplicações web do dia a dia. Eu acho Rails bem mais produtivo pra desenvolvimento web por isso, as opções e soluções que você tem são pros problemas que você tem agora, não os que você vai ter daqui a milênios.
Não, não implica. Sair do cercadinho do Java quer dizer pra parar de pensar que o único meio civilizado de programar é usando a linguagem ou a plataforma java. É perceber que existem outras coisas interessantes.
Bem, vejamos. O hibernate hoje é um dos frameworks ORM open-source mais maduros que existem. Como eu usaria hibernate com annotations no jruby? Gosto de ruby, e realmente é uma linguagem muito interessante. Vale mesmo a pena aprendê-la, mas há casos onde o jruby não se dá tão bem com a plataforma java. Daí a necessidade do groovy. E o groovy não se inspirou apenas no ruby, mas também em python, smalltalk. Ela tem valor, certamente.
Hoje em dia a performance do java está muito boa, comparável a C++. Como prova disso, temos o Tomcat, cuja performance para conteúdo estático é semelhante a do httpd. E tudo isso com uma linguagem multiplataforma, muito mais simples do que C++ e sem muitos problemas da mesma. Outro exemplo é uma das implementações de SSH que eu uso, o JSCH. Rápido e multiplataforma. Legal né?
E o ruby, tem um servidor totalmente implementado na linguagem com performance semelhante?
O que quero dizer, é que há espaço para várias tecnologias e ferramentas hoje. Gosto bastante de ruby, mas atualmente uso mais o groovy, pelo mesmo estar bem mais próximo da plataforma java (o que facilita muito a minha vida) e ao mesmo tempo ter características muito legais, algumas até melhores do que existem em linguagens semelhantes.
O java, IMHO, é hoje a melhor linguagem com performance aceitável para certas aplicações. E multiplataforma. Também tem seu espaço. 
Procure por Capistrano no google. Aprenda o que ele faz e depois comente sobre bibliotecas de SSH.
É claro que é culpa da linguagem, ela foi criada com esse intuito. É do interesse deles que isso seja possível e até mesmo “encorajado”.
Scala tem o melhor dos dois mundos, é uma pena que as pessoas ainda não a estejam levando a sério 
O propósito de Java sempre foi o de ser uma linguagem de alto nível, não tem nada de baixo nível aí não.
Repetindo, ruby tem isso há muito tempo. Tanto tempo que nós só fazemos deployments usando SSH.
Com performance semelhante é óbvio que não, mas não faltam opções como Thin, Mongrel e Ebb.
Como já disseram, é pré-história. E a única coisa que roda “nativamente” na JVM hoje é Java. Groovy também é tão interpretada quanto Ruby.
Só um ponto para deixar claro, que não me expressei bem. Quis dizer que como 75% do Grails está em java, logo ele é muito mais performático. Somente 15% em Groovy o que o torna em torno de 20x menos performático que Java e muito mais rápido que JRuby, aí dá pra ter uma idéia…
poise tbm estava pensando que Ruby seria algo que não vingaria… porem creio que estava enganado pois estes dias estava no netcarreiras e vi algumas vagas de Ruby aqui no Brasil e inclusive na cidade onde moro… quero começar a aprender ruby… alguem sabe um bom tutorial?
Maurício , não conhecia o Ribs ( me lembrou Outback :'P) http://github.com/olabini/ribs/tree/master
Boa, gostei da notícia 
Aí é que você se engana, você que tem que se informar agora. Capistrano NÃO é uma implementação de SSH. Ele depende de bibliotecas existentes em um sistema POSIX. Ou seja, não funciona no Windows. Se você usa no windows com jruby, provavelmente é devido a uma implementação java de SSH. Talvez até mesmo o JSCH que eu citei.
Sim, mas implementados em linguagens como C++ ou C, ambas com problemas bem conhecidos e complexas (e que também possuem seu espaço).
É claro que é culpa da linguagem, ela foi criada com esse intuito. É do interesse deles que isso seja possível e até mesmo “encorajado”.
Essa sua afirmação é absurda. Por que alguém criaria uma linguagem e encorajaria a usar outra? Cite alguma fonte oficial dessa informação. O que é dito nas documentações sobre groovy é que se você não sabe fazer em groovy, na pior das hipóteses, você pode implementar como em java. Mas isso é muito diferente de encorajar a fazer igual java.
Eu disse “mais baixo nível”, em comparação a linguagens com mais facilidades como ruby e groovy.
A fonte que consultei sobre Capistrano é meio antiga, não tenho certeza se ele não roda no windows. De qualquer forma, ele NÃO é uma implementação de SSH.
Não, o Capistrano não é uma implementação de SSH, a implementação de SSH do Ruby é o gem net-ssh que é utilizado pelo Capistrano pra fazer conexões usando SSH.
Sim, mas implementados em linguagens como C++ ou C, ambas com problemas bem conhecidos e complexas (e que também possuem seu espaço).
Nada disso, todos eles são escritos em Ruby. Tem no máximo uma extensão (normalmente o pedaço que faz o parsing do request http) em C.
Tô aqui batendo cabeça pra fazer um benchmark mas não tá rolando:
[code=java]
date = new java.util.Date()
def fact( int n ) {
if(n > 1) {
return n * fact(n-1)
} else {
return 1
}
}
8.times { fact(1000) }[/code]
Alguém poderia dizer qual o problema?
@ Kenobi
Olhando novando minha mensagem, vi que me excedi. Me desculpe, não era minha intenção te ofender, nem de duvidar da tua inteligência. Foi mal.
Tô aqui batendo cabeça pra fazer um benchmark mas não tá rolando:[code=java]
date = newjava.util.Date()def fact( int n ) { if(n > 1) { return n * fact(n-1) } else { return 1 } }8.times { fact(1000) }[/code]
Alguém poderia dizer qual o problema?
Então, “rubificando” vai.
date = java.util.Date.new
def fact(n)
if(n > 1)
return n * fact(n - 1)
else
return 1
end
end
8.times { puts fact 1000 }
A fonte que consultei sobre Capistrano é meio antiga, não tenho certeza se ele não roda no windows. De qualquer forma, ele NÃO é uma implementação de SSH.
Você pode usar o Capistrano no Windows pra fazer deploy quando o destino é um ambiente POSIX, mas, uma vez que uma das premissas do Capistrano é que o destino seja um ambiente POSIX, não é possível usá-lo para fazer deploy de uma aplicação quando o destino é o Windows, seja qual for a origem.
Uma coisa que não entendo é que o pessoal cita integração com qualquer framework Java como motivos para não usar Ruby, mas vejo isso um argumento sem sentido, porque:
:arrow: Havendo uma aplicação legada, é possível “puxar” um bean do Spring com WebApplicationContext, ou buscar um bean do EJB instanciando um InitialContext. Ambos podem muito bem ser instanciados por classes Ruby, mas com uma vantagem adicional: posso encapsular essa busca num módulo, e nas classes Ruby que o importaram, sejam utilizadas através de apenas uma linha (como se fosse anotação Java).
:arrow: No caso de uma aplicação do zero, usando tudo em Ruby, não há necessidade de Spring ou EJB, pois Ruby possui closure, classes que são também objetos, metaprogramação… Então é possível inserir conceitos transversais (logging, segurança, transação) usando seu próprio código Ruby, sem depender de frameworks pesados que estão lá para superar limitações da linguagem.
:arrow: Existem muitas alternativas no mundo Ruby a bibliotecas Java. Ao invés de Hibernate, é possível usar ActiveRecord ou DataMapper. Talvez não seja tão “parrudo” quanto o framework de persistência do Java, mas na maioria dos casos, essas duas bibliotecas são mais do que suficiente. Ah, e sem falar que existe a implementação do Hibernate para Ruby feita pelo Ola Bini, o Ribs.
:arrow: Alguém citou que Groovy compila em bytecode Java e que Ruby não. Falso, todo pacote JRuby vem com o compilador jrubyc que faz essa compilação. Então talvez a performance entre as linguagens não seja tão diferente.
Na verdade, rubyficando ficaria assim:
[code=ruby]require ‘java’
date = java::util::Date.new
def fact(n)
if(n > 1)
n * fact(n-1)
else
1
end
end
8.times{
fact(5000)
}
puts java::util::Date.new.time - date.time[/code]
O que eu quero fazer é portar esse benchmark pra Groovy -> http://antoniocangiano.com/2007/12/03/the-great-ruby-shootout/
Se algum groovista quiser me ajudar… parece que os meus dotes em Groovy andam meio enferrujados 
Sim, mas a questão era que Ruby tem bibliotecas SSH disponíveis, não que o Capistrano faz deploy no windows
(e caramba, deploy no windows? Que os deuses tenham piedade!)
Estou movendo a benchmark pra esse tópico se alguém se interessar a ajudar -> http://www.guj.com.br/posts/list/109782.java
Sim, mas a questão era que Ruby tem bibliotecas SSH disponíveis, não que o Capistrano faz deploy no windows
(e caramba, deploy no windows? Que os deuses tenham piedade!)
Eu sei do net-ssh, e que o Capistrano apenas o utiliza pra cumprir seu objetivo, como era de se esperar. Só tava mesmo esclarecendo o neófito quanto a dúvida sobre a disponibilidade de SOs do Capistrano. E sobre usar o Capistrano no Windows, eu já fui “forçado” a fazer isso. 
Eu já comentei sobre isso antes… o ponto é que se vc aprende meia duzia de frases em turco isso não significa que vc pensa em turco. Para aprender turco vc tem que pensar em turco.
Só quando vc pensar em turco vc pode dizer que aprendeu turco.
O mesmo com linguagens de programação. Ficar pulando de uma para a outro todo o ano não me parece que vc aprenda a pensar naquele formato. Um ano é muito pouco.
O meu ponto é exactamente esse : para aprender uma linguagem vc tem que conhecer , pensar instititivamente, com as estruturas dela. Isso não acontece em um ano.
Porque Java é mais que C. É uma JVM , memoria gerenciável, OO , segura …
A bibliotecas exisitam em C escritas de forma OO ? estruturada sequer ?
A questão é exatamente essa Rubi é mais que Java ? O que justifica eu reescrever o JMS ou JAAS ou o JNDI Ou JDBC em Rubi ? Não é melhor simplesmente escrever o rails em Java ?
Se o ponto é adquirir conceitos novos, importa-os para a platafora que já usas. Se o ponto é mudar de linguagem, tem que reimplimentar tudo. E qual é a vantagem nisso ?
Java pode ter reimplementado algumas coisas já feitas antes, mas haviam vantagens claras. Quais são essas vantagens claras do Rubi que a plataforma Java não tem?
Não estamos falando do cara que saiu de faculdade sem nenhuma experiencia profissional e que para ele Java ou rubi é a mesma coisa. Estamos falando de quem já programa em java faz anos e alguem lhe diz que deve mudar para RoR. O que o RoR tem que não encontro na plataforma java ( sem frameworks ou não, não importa, já que RoR tb é um framework em cima de rubi) ?
Qual a vantagem em mudar de Java para RoR ? Porque mudar para uma “plataforma” imadura quando já uso uma que é muito madura ? Isso faz sentido para alguém ? Como isso faz sentido ? (A sério, eu gostaria de entender a preferência por rubi e RoR)
Existe plataforma RoR? Não!
Eu nunca disse que existia. Aliás esse é tb o ponto : como justificar trocar uma plataforma por uma simples linguagem sem plataforma ?
RoR é um framework que roda, primariamente, em plataforma LAMP. Existe também a possibilidade de rodar em cima da plataforma Java. Não entendo seu ponto.
O ponto é que ainda não roda em Java. Mas quanto rodar eu simplesmente estarei usando a plataforma java.
É exactamente isso que é logico, trazer o RoR para java e não levar os programadores java para Rubi (fora da jvm). Tenho que aprender rubi para usar o RoR, ok. Mas não tenho que sair da plataforma java. Poderei usar o JNDI, JAAS, JDBC, Hibernate , etc…
O pessoal intrepretou mal o exempl odo Grails. O ponto não é que é uma copia do RoR, o ponto é que o port dos conceitos que foram novidade no RoR para a plataforma Java.
Básicamente o pessoal de RoR defende usá-lo em vez de java. Mas qual é a vantagem disso?
-
Aprender conceitos novos e uma linguagem nova. Não apenas conceitos de meta-programção, mas uma sintaxe nova. Com Grails vc aprende os mesmos conceitos de meta-programação com a mesma sintaxe do java (que pode evoluir naturalmente para uma linguagem mais script, sem pressa e sem forçar a barra).
-
Aprender outra tecnologia. Para quê ? Qual é o futuro dela ? Quem aposta nela ? Alguem está usando rubi sem ser com rails para criar coisas que possam substituir digamos… EJB3 ? JMS ? JNDI ? etc… a resposta que se ouve é “não tem mais vai ter. e vc pode implementar o seu…” … oras! eu posso implementar Rails em java , muito mais simples que implementar EJB , JMS ,etc… em rubi… E ai que entra o exemplo do Grails mais uma vez. Simplesmente agrupa um bando de frameworks já tradicionais e joga um pó-de-script-like-syntax-sugar e pronto. Mas nem precisa de goovy para fazer isso. Java normal e uma boa dose de bytecode manipulation e voilá (afinal grrovy é uma forma elegante de bytecode mnipulation assim como jrubi e qq outra linguagem de script para jvm)
Estes argumentos para ir para rubi/ RoR não são fortes o suficiente para quem já sabe, usa, tem experiencia, tem bagagem com java. Dai o exemplo do cara que sai da facul, para esse tanto faz escolher um ou outro, mas para quem já investiu X anos em java é preciso mais do hype para fazer a mudança. Não ?
Como já disseram, é pré-história. E a única coisa que roda “nativamente” na JVM hoje é Java. Groovy também é tão interpretada quanto Ruby.
Como o bytecode pode ser considerado interpretação ? Se assim for o java tb é interpretado ( e java é hibrido) …
Grovvy e Java para a JVM é a mesma coisa. AS vantagens e desvantagens são as mesmas.
A unica coisa diferente são as invocações especiais do grovvy que tem que ser simuladas via objetos
Com as novas jvm que vêm por ai isso vai mudar. É uma questão tencologia.
Agora, rubi ( sem ser jrubi) é intrepretado como java era na versão 1, sem hotspot. Isso sim é ser intrepretado.
Acho que vc está misturando groovy com script groovy (esse sim 100% intepretado) via Script API. Não ?
:arrow: Alguém citou que Groovy compila em bytecode Java e que Ruby não. Falso, todo pacote JRuby vem com o compilador jrubyc que faz essa compilação. Então talvez a performance entre as linguagens não seja tão diferente.
Vc sabe que Rubi e JRubi são coisas diferentes , certo ? JRubi é a linguagem rubi rodando na jvm. rubi é a linguagme rubi rodando fora da jvm.
Portanto, Groovy compila bytecode, rubi não. É claro que não porque rubi nem roda na jvm.
Agora Grovvy e JRuby, sim, compilam para bytecode.
RoR é um framework que roda, primariamente, em plataforma LAMP. Existe também a possibilidade de rodar em cima da plataforma Java. Não entendo seu ponto.
O ponto é que ainda não roda em Java.
O Rails já roda na plataforma Java há tempos através do JRuby.
Agora, rubi ( sem ser jrubi) é intrepretado como java era na versão 1, sem hotspot. Isso sim é ser intrepretado.Acho que vc está misturando groovy com script groovy (esse sim 100% intepretado) via Script API. Não ?
Considerando que você está falando de JRuby e não de Ruby (que não tem haver com o assunto), não.
Além de haver um compilador estático, o jrubyc, todo o código JRuby é sim transformado pra bytecode e o bytecode é interpretado. Tanto o é que um dos primeiros problemas do JRuby era JITar código demais, estourando o permgen da JVM.
Vamos lá, esse foi provavelmente o comentário mais obtuso que você já fez aqui. Espero que quem esteja lendo essa thread ignore por completo essa sua afirmação e entenda que não se aprende outras linguagens pra se conhecer a fundo, mas para conhecer outras formas e outros paradigmas de se resolver os mesmos problemas.
Pode se adaptar isso aos frameworks afinal… são varias maneiras diferentes para resolver o mesmo problema