Artigo publicado
Scala ou Java? Explorando mitos, polêmicas e fatos
13 Respostas
Movido para outras linguagens.
Obrigado pelo prestigio Carlos!
Se alguem quiser trocar idéia sobre o assunto, só postar 
Obrigado pelo prestigio Carlos!Se alguem quiser trocar idéia sobre o assunto, só postar :)
Parabéns pelo artigo. Minha impressão é que o Scala te oferece muito mais poder e flexibilidade, além do melhor dos dois mundos (functional programming and oo programming).
Só que esse poder vem com um custo alto de complexidade. Programar em scala e entender sua sintaxe não é algo simples. O que eu mais gosto em relacao ao Java é que a linguagem em si (sintaxe) é ridícula. Qualquer um entende. Acho que tirando generics, Java é a linguagem com a sintaxe mais simples e direta.
Agora Scala realmente manda bem na questão de concorrência. Mas vale lembrar que Java também suporta ACTORS, só que muito mais verbose => http://akka.io/
Scala é melhor que Java? Sem dúvida nenhuma. Muito mais poderosa e flexível. Mas isso vem com o custo da complexidade que não me agrada muito. Se um dia eu tiver a oportunidade (= tempo + motivacao) para aprender Scala ficarei muito feliz, mas até lá o bom e velho Java resolve as coisas muito bem.
Um ponto importante nessa questão de complexidade é que voce pode escrever o programa em Scala quase da mesma maneira que faria em Java.
Basta ignorar as funcionalidades normalmente chamadas de “complexas” ( vairancia e limites de tipos, programação funcional, etc)
Se fizer isso, muito provavelmente o programa vai ficar, na verdade mais simples do que a versão java.
Mas ai estaria perdendo o melhor da festa… 
Obrigado pelo prestigio Carlos!Se alguem quiser trocar idéia sobre o assunto, só postar :)
Parabéns pelo artigo. Minha impressão é que o Scala te oferece muito mais poder e flexibilidade, além do melhor dos dois mundos (functional programming and oo programming).
Só que esse poder vem com um custo alto de complexidade. Programar em scala e entender sua sintaxe não é algo simples. O que eu mais gosto em relacao ao Java é que a linguagem em si (sintaxe) é ridícula. Qualquer um entende. Acho que tirando generics, Java é a linguagem com a sintaxe mais simples e direta.
Agora Scala realmente manda bem na questão de concorrência. Mas vale lembrar que Java também suporta ACTORS, só que muito mais verbose => http://akka.io/
Scala é melhor que Java? Sem dúvida nenhuma. Muito mais poderosa e flexível. Mas isso vem com o custo da complexidade que não me agrada muito. Se um dia eu tiver a oportunidade (= tempo + motivacao) para aprender Scala ficarei muito feliz, mas até lá o bom e velho Java resolve as coisas muito bem.
Detalhe que o akka é escrito em Scala, mas os caras quiseram dar suporte ao java, claro java esta em todo lugar, scala esta começando a ganhar mercado ainda!
Dessas linguagens para JVM a que estou mais estudando e programando é o Groovy.
Essa linguagem é bem próxima do Java, por isso, preferi partir pra ela agora ao invés de Scala, e o Groovy é uma linguagem de script, Scala se não me engano, não. Portanto, é possível de dentro de uma aplicação Java rodar rotinas Groovy numa boa, com Scala, até onde li e vi isso não é possível.
Quando eu tiver mais tempo passarei a dar uma olhada em Scala, mas por enquanto, Groovy mesmo.
Dessas linguagens para JVM a que estou mais estudando e programando é o Groovy.Essa linguagem é bem próxima do Java, por isso, preferi partir pra ela agora ao invés de Scala, e o Groovy é uma linguagem de script, Scala se não me engano, não. Portanto, é possível de dentro de uma aplicação Java rodar rotinas Groovy numa boa, com Scala, até onde li e vi isso não é possível.
Quando eu tiver mais tempo passarei a dar uma olhada em Scala, mas por enquanto, Groovy mesmo.
Scala é muito compativel com java:
Chamar codigos e libs java a partir do Scala = 100% tranquilo e compativel
Chamar codigo Scala a partir do java = deve-se tomar alguns cuidados na hora de contruir o código em Scala, senão a coisa fica complicada no lado do java, mas da pra chamar tambem.
Em suma, é compativel nas duas direçoes, mais traquilo a partir do Scala.
A interoperabilidade Java <-> Scala é boa mesmo, mas não é sem complicações em ambas direções.
Ao chamar libs java a partir de Scala tem que cuidar com os tipos de dados diferentes e conversões implicitas, principalmente de Collections, e as coisas que não existem em Scala, como interfaces.
No artigo tem uma seção sobre isso (Scala e Java são interoperáveis?)
Assim como Groovy, Scala pode rodar tanto interpretado como script quanto como compilado.
Uma curiosidade (sem flames, pls) sobre isso é que o criador de Groovy disse que provavelmente não o teria feito se conhecesse Scala antes: https://groups.google.com/forum/#!topic/groovy-sydney/7zyOZMNZYsY
ok, acabei de ler o artigo, ta bacana, apenas alguns pontos:
SBT, até onde sei é Simple Build Tool e não Scala Build Tool, apesar de ser usado para scala somente 
Compilação incremental, pois não é exatamente o que o SBT faz!?.
Se tu abrir o SBT e der um ~compile, ele ira compilar tudo e ficar esperando arquivos serem alterados, quando algum for, ele compila ele novamente, junte o JRebel e ja era, fica muito tranquilo desenvolver web app com o Lift por exemplo.
Enquanto as IDE não chegam num nivel maior de maturidade, acho o SBT indispensavel para desenvolvimento Scala.
Atualmente faço o seguinte para meus desenvolvimentos iniciais e estudo do Lift, uso SBT+JRebel como build e Intellij como IDE, na verdade o Intellij é usado apenas como editor, com todas suas opçoes de autocomplete e tudo mais que um excelente IDE possui, mas o codigo esta sendo constantemente compilado pelo SBT+JRebel. Ou seja, é codificar no Intellij e dar F5 no navegador, muito facil e pratico!
Eu sei, Fred. Estava falando de outra coisa, da possibilidade de scripting com Scala.
Mas é isso, Scala parece-me ser bastante poderosa, com o tempo, irei dar uma olhada melhor nela.
Opa, mto obrigado pela correção, arrumei no artigo.
Eu tenho usado mais o maven que o SBT, mas as duas ferramentas são boas, mas com forças e fraquezas distintas.
O que quis dizer é que quanto mais “incremental” o compilador, melhor.
O ideal seria termos algo como o JDT do eclipse, que é capaz de compilar no nível de métodos, mas o SBT ~compile realmente quebra bem o galho.
Muito bom o artigo sobre Scala… esclareceu algumas dúvidas.
Meu único problema com a linguagem é que não consigo ver que tipo de aplicações ela pode ser utilizada, e com tantos adeptos da linguagem criticando-a, inclusive desenvolvedores famosos na comunidade (como o criador do franewirk Lift que recentemente abandonou o barco) eu me pergunto se vale a pena mesmo aprender essa linguagem.
Muito bom o artigo sobre Scala… esclareceu algumas dúvidas.Meu único problema com a linguagem é que não consigo ver que tipo de aplicações ela pode ser utilizada, e com tantos adeptos da linguagem criticando-a, inclusive desenvolvedores famosos na comunidade (como o criador do franewirk Lift que recentemente abandonou o barco) eu me pergunto se vale a pena mesmo aprender essa linguagem.
Qualquer tipo de aplicação que voce queira, web, desktop com Swing tem gente desenvolvendo, até para android tem uns que estão usando Scala pra desenvolver.
Sobre o criador do Lift, não, ele não abandonou o barco, ele continua muito ativo na comunidade do lift e ainda é commiter, ele apenas deixou de ser o “ditador”(nas palavras dele) do projeto e esta mais focado em seu novo projeto o http://visi.io/, mas o lift continua firme e forte com varios commiters. Ele esta sim chateado com algumas coisas, acho que a retrocompatibilidade dos binarios do Scala é o principal se nao me engano, e a falta de foco por parte dos criadores da linguagem em sanar estas questões.
Mas esta questão é complicada, como o jfaerman disse o artigo, para evoluir rapido tem que quebrar algumas coisas, eu até li em algum lugar não lembro quem falou, se deveriam considerar Scala antes da 2.10 como um prototipo para a versão final 2.10, algo assim 