Blog da Improve It

XP: melhor em Java ou em Ruby?

Publicado por Vinicius Manhães Teles há mais de 6 anos.

Alan Kloh e Rodolfo Burla foram meus alunos na [UFRJ][] em 2006. Esse ano, para encerrar a graduação, eles fizeram um Projeto de Fim de Curso que comparou [Java][] e [Ruby][] sob o ponto de vista das práticas do [XP][]. Eles desenvolveram duas versões de um mesmo sistema, uma em [Java][] e outra em [Ruby][]. A partir daí, fizeram um comparativo entre a facilidade de adoção das práticas do [XP][] no desenvolvimento de cada versão. Além do comparativo, o trabalho também apresenta aspectos interessantes de cada linguagem, bem como seus pontos fortes e fracos. Alguns resultados interessantes: * Linhas de código em [Java][]: 665. Linhas de código em [Ruby][]: 78. Portanto, foram necessárias 8,5 vezes mais linhas de código em [Java][]. * Linhas nos arquivos de configuração em [Java][]: 449. Linhas nos arquivos de configuração em [Ruby][]: 23. Foram necessárias 19,5 vezes mais linhas de configuração em [Java][]! Detalhe importante: A quantidade de linhas de configuração em [Java][] foi 5,7 vezes maior que a quantidade de linhas de **código** em [Ruby][]! Para conhecer o trabalho, baixe o [arquivo][p] com o projeto de fim-de-curso: [Comparativo entre as linguagens de programação Java e Ruby para projetos que utilizem Extreme Programming][p]. [p]: http://blog.improveit.com.br/files/comparativo-java-ruby-para-xp.pdf [UFRJ]: http://www.ufrj.br [Java]: http://pt.wikipedia.org/wiki/Java_%28linguagem_de_programação%29 [Ruby]: http://pt.wikipedia.org/wiki/Ruby_%28linguagem_de_programação%29 [XP]: http://www.improveit.com.br/xp

Tags , ,  | 9 comentários

O que você achou? Coloque seus comentários e sugestões abaixo!

Acompanhe o RSS dessa página.

Comentários (9 até o momento)

  1. Celestino disse aproximadamente 3 horas depois:

    Não precisa nem de comentários...
  2. Guilherme Chapiewski disse aproximadamente 3 horas depois:

    Uma crítica (construtiva): sobre essa comparação (linhas de código em A e B) continuo achando meio... ahmm... não sei ao certo a palavra. Talvez inútil. Vamos lá: 1) Será que num projeto de um site de comércio eletrônico a proporção de linhas de código continuaria sendo 8 para 1? E num sistema de integração de um PABX VoIP em C com um webservice .Net? O ponto é que eu acho que esses números podem variar completamente de um projeto para outro e acho até que possa existir um caso de alguma coisa que possa ser feita em menos linhas em Java do que em Ruby (apesar de menos provável, admito). Acho que a explicação desse números pode ser melhorada para "considerando um projeto simples em plataforma web, a proporção de quantidade de linhas de Java para Ruby é [tal]". 2) Quando vejo esse tipo de comparação tenho a impressão de que quem fez está querendo dizer que por ter menos linhas um projeto em Ruby é bem menos complexo que em Java. Só esses números não dizem absolutamente nada sobre a complexidade do software. Eu conheço, por exemplo, um sistema de processamento de billing de uma grande operadora telefonica em Perl que tem menos de 1000 linhas mas só um único programador Budista, manco, do Himalaia conseguia entender. Provavelmente a mesma coisa em Java teria 100 vezes mais código, porém seria muito mais fácil de ser mantida, entendida e melhorada por qualquer bom programador (e não somente por um raro tipo de programador monge). Não necessariamente um código menor é melhor pois "melhor" pode significar muitas coisas. 3) Usar o Struts (completamente "deprecated") nesse comparativo contribuiu consideravelmente para o aumento desse número de linhas. Existem frameworks MVC para Java muito menos "verbosos" que ele. Mesmo com essas considerações, parabéns pelo trabalho. Aproveito para deixar claro que não sou defensor de nenhuma linguagem específica e não estou aqui querendo defender Java contra Ruby. Quem me conhece e/ou lê meu blog sabe que sou bem eclético com linguagens de programação e tecnologias em geral. Resumindo: isso não é um convite para um flame war :)
  3. Luca Bastos disse aproximadamente 4 horas depois:

    Sei pouco de Ruby. Já percebi que para coisas simples é bastante poderoso. Mas olhando superficialmente este teste acadêmico ficaram algumas dúvidas: 1) As 2 aplicações são exatamente iguais? Isto é, fazem a mesma coisa, possuem as mesmas validações internas e usam ferramentas da mesma época? Parece que no Java fizeram um monte de validações a mais do que no Ruby. 2) Número de linhas de código serve para medir agilidade no desenvolvimento?
  4. Eduardo Fiorezi disse aproximadamente 16 horas depois:

    Acho que todo tipo de projeto de pesquisa é válido. Toda idéia que é desenvolvida colabora para o aumento de material. Acho muito válido a comparação deles no ambiente do contexto do trabalho. Não quer dizer que Rails vai ganhar em todas situações. Mas na situação deles, nas ferramentas que eles usaram eles atingiram aqueles resultados "."(ponto). Outras comparações virão em outros projetos de pesquisa. Parabéns pelo trabalho. Abraços...
  5. Claudio Torcato disse 1 dia depois:

    Olá. Creio ser injusta a comparação de um framework moderno como o Rails a outro mais antigo e um dos pioneiros como framework web MVC. Há também o fato de que na época do surgimento do Struts, o desenvolvimento ágil nem era popular. Se fosso popular naquela época, talvez nunca tivesse existido o Struts e sua verbosidade assombrosa. Como uma linguagem dinâmica e ágil (com menos idiossincracias), Ruby certamente se adequa melhor aos processos agéis. A minha opinião final é que realmente Java é chata e cansativa. Vai melhorar quando a sua comunidade olhar mais para os lados (talvez eles possam dizer para baixo).
  6. carlos alexandre disse 1 dia depois:

    Uau! Números interessantes, valeu! mas... Eu ainda não tinha parado para brincar com Ruby porém recentemente li um livro que deixou claro essa característica que faz dela alguma coisa importante em algumas situações. No caso o autor fez uma comparação com Java em um DOMÍNIO ESPECÍFICO. Considerando que o estudo feito foi na verdade uma comparação entre Struts e RoR com desenvolvimento primeiro em Java (ou melhor, Struts), acho 1) Java foi prejudicado e 2) E o XP com isso??? :O
  7. Eduardo Baião disse 2 dias depois:

    Gostei bastante do trabalho deles. Só teve um detalhe que não achei legal: Quando vi a diferença no número de linhas fiquei impressionado, mas depois quando eles foram comparar um trecho de código que usava banco de dados... Aí a comparação não foi justa. No Ruby eles usaram o ActiveRecord e no Java foi de JDBC puro. Aí não vale. Eles deveriam ter usado alguma camada ORB (tipo Hibernate) ou ter escrito o código Ruby assim: require 'mysql' #my = Mysql.new(hostname, username, password, databasename) con = Mysql.new('localhost', '', '', 'ruby') rs = con.query('select * from student') rs.each_hash {|h| puts h['name']} con.close Que e tão feio qto aquele do Java.
  8. Daniel F. Martins disse 3 dias depois:

    Fui ler, mas parei logo no sumário quando vi que o projeto Java utiliza Struts 1. É como disseram, se querem comparar ferramentas aptas ao uso de técnicas modernas (como o XP), que usem ferramentas modernas! Uma comparação justa seria fazer um paralelo entre o Rails e o Grails, por exemplo - uma vez que o Grails não deixa de ser Java. E suspeito de que a versão Grails se sairia melhor... :D
  9. Vinícius Manhães Teles disse 20 dias depois:

    Pessoal, Agradeço a todos pelos comentários. Resumi minha resposta [nesse artigo][a]. Abraços, Vinícius. [a]: http://blog.improveit.com.br/articles/2007/09/12/projeto-fim-de-curso-xp-java-ruby-de-novo