Artigo: Eu admiro Java (mas não uso)

24 respostas
D

Artigo que saiu no site Linha de Codigo:

Desde o momento em que ouvi falar em Java, mais ou menos em 1999, tive uma certa resistência em aceitar esta linguagem. Talvez seja apenas um preconceito meu, mas simplesmente não consigo me empolgar. Acho que a idéia da linguagem é ótima, os conceitos de orientação a objetos são fantásticos, produz um código mais seguro etc. Várias vezes comecei a fazer uns estudos auto-didatas mas algo sempre me tirava do caminho. No começo era a lentidão do código produzido. Ficava irritado ao extremo quando executava programas que pareciam não sair do lugar e que faziam coisas tão simples como conectar num banco de dados e consultar uma tabela. Depois foram as tentativas mal-sucedidas de construir interfaces de uma forma fácil, limpa e com código organizado. Até que me convenci que de fato o Java não foi feito para criar aplicações desktop. Mas o Java foi feito então para fazer que tipo de aplicação? Era para ser uma linguagem de eletrodomésticos. É verdade. Era mais uma das alucionações da SUN quando eles acharam que no futuro bem próximo (esse futuro já era para ter chegado) todos os aparelhos em nossas casas falariam em Java. Pois bem. A verdade é que o projeto em si foi pelo caminho totalmente diferente, fazendo com que o Java se tornasse hoje uma das principais linguagens de programação. Esse sucesso deve-se a vários fatores e podemos destacar alguns deles:

A necessidade real do mercado por uma linguagem que tivesse a orientação a objetos como o seu principal fundamento.
O fato de ser uma linguagem independente de plataforma de hardware e software, sendo preciso para tal apenas JVM.
A sua similaridade de sintaxe com C++ que atraiu muitos programadores que não abrem mão de códigos como:
for(int i=1;i<=10;i++).
É uma linguagem mais fácil de aprender, se comparada ao C++.
Gerenciamento de memória próprio de forma que livrava o programador de certas preocupações.
Com todas essas características positivas era de se esperar o sucesso que de fato aconteceu. Não bastasse isso, a Microsoft contribuiu bastante com a sua incapacidade de inventar coisas novas permitindo assim que Java atropelasse em pouco tempo as linguagens tristes como Visual Basic e o modelo COM+. Mas por outro lado, como Java não foi projetado para ser o que é hoje, muitas coisas foram sendo desenvolvidas e/ou adaptadas ao longo do caminho. E isso teve o seu preço. Conceitos foram inventados, desenvolvidos, aplicados e logo em seguida trocados por outros diferentes. Acompanhar tudo o que tem acontecido com o Java nos últimos anos tem sido uma tarefa árdua e desafiadora para qualquer um. Vários padrões surgiram, mas também implementações diferentes desses mesmos padrões. Em consequência disso Java deixou de ser uma linguagem de programação e tornou-se hoje uma plataforma de desenvolvimento. Há tantos projetos paralelos que tratam de mesmas coisas que para quem está começando fica difícil fazer escolhas. Talvez essa confusão de conceitos e diferentes implementações somadas à falta de uma tecnologia definitiva e objetiva de criar interfaces desktop com capacidade de separação de código fonte propriamente dito da parte que trata de layout tem me deixado receioso em relação a essa tecnologia. Por outro lado, não vejo uma alternativa melhor. Tecnologia .NET da Microsoft está simplesmente fora de cogitação. Aquilo é uma das maiores enganações e gambearras já inventadas no mundo da informática, feito por quem estava correndo atrás de tentar retomar o espaço conquistado por Java. Por isso acho que hoje falta no mercado, apesar de tantas opções que temos, uma linguagem de programação com um ambiente de desenvolvimento que possuísse as seguintes características:

Ter uma interface e facilidade de uso como Delphi.
Possuir uma sintaxe, facilidade de acesso a banco de dados e ausência de tipagem como PHP.

Separar de forma definitiva layout da programação.
Tratar eventos dos objetos assim como Delphi os implementa e não da forma ridícula como são feitos em Java.
Ser independente de plataforma de hardware e software.
E o mais importante: abstraísse ao máximo tudo e absolutamente tudo que possa ser abstraído de tal forma que a gente se preocupe cada vez mais com regras de negócios e cada vez menos com códigos que poderiam ser implícitos. Quem gosta de ser mais detalhista e quisesse ter acesso ao coração do negócio que continuasse com Java ou C++.
Eu posso estar enganado, mas acho que uma ferramenta assim faria um tremendo sucesso, principalmente entre os desenvolvedores que trabalham nos sistemas empresariais que utilizam banco de dados. Desenvolver softwares como Corel Draw ou Excel por exemplo não seria possível fazer nessa linguagem por causa do alto nível de abstração. Ou então seria tão trabalhoso exatamente como é hoje fazer aplicações desktop em Java que acessam banco de dados.
Como as possiblidades de algo assim surgir nos próximos anos são mínimas, não nos restam muitas opções. Eu mesmo devo ficar ainda um bom tempo desenvolvendo em Delphi. É uma ferramenta que me dá produtividade de excelência e executáveis rápidos. Posso com ela implementar POO quando quero, e quando não quero não sou obrigado a tal. Da mesma forma como PHP, que tem sido cada vez mais a minha escolha.

http://www.linhadecodigo.com.br/colunas.asp?id_colunista=132

Vale a pena conferir os comentários também

24 Respostas

MarcioTavares

Já rolou muito assunto a respeito dessa mesma coluna há um bom tempo atrás. Mais exatamente quando a coluna saiu, em março.

Eu acho que esse tipo de discussão é um desperdício muito grande de energia. Já viu os comments da coluna? É pau e pedra pra todos os lados. No final das contas ninguém ganha nada.

Tô fora.

Java_Vinicius_Machin

Ow se o grande problemããão seu é a tal da conectividade com o banco de dados que tal o hibernate ? facilita muito!
ps: concordo que java eh extremamente dificil de se aprender e a gente meio que fica perdido no “caminho das pedras” no começo mas, java não trata evento de maneira “porca” e tem outras possibilidades de atuação além de aplicações desktop.
abraços!

Mauricio_Linhares

Meu amigo, se JDBC é ruim, vá dar uma olhada no ADO.NET. Eu não to reinventando a roda aqui não, to reinventando as ferramentas pra poder chegar na roda!

Ah coisa bizarra!!! :oops:

_fs

Quem fala que Java não separa layout da linguagem é gente com preguiça de procurar e/ou falta de imaginação.

Mas gostei do resto do texto.

Mauricio_Linhares

Não dá pra levar em consideração a avalização de uma pessoa que não sabe do que está falando, mete o pau em Java mas não conhece Java, diz que o .Net está fora de cogitação, mas não sabe nem que o .Net é uma plataforma, não uma linguagem.

No fim, chega a incrível dedução que o melhor é continuar trabalhando com Delphi e usando orientação a objetos quando der vontade.

Que venham ainda mais programadores assim no mundo, pelo menos assim a concorrência diminui. :twisted:

MarcioTavares

Bom, na verdade eu concordo com ele. E eu tenho base pra falar de .Net :mrgreen:
O modelo da arquitetura .Net como um todo é uma grande gambiarra, Asp.net então nem se fala… lógico que não é uma tecnologia de se jogar fora, mas tem muitos vacilos nela.

:thumbup:

J

Esse tópico na época deu muita briga, parei com isso. :lol:

´
Concordo plenamente…

renatosilva

Ele não sabe do que está falando, não conhece Java e confunde .NET como sendo apenas uma linguagem. Poderia comprovar isso? O autor do artigo não precisa comprovar, porque o título já diz claramente que o texto é sua opinião pessoal, seu ponto de vista sobre o Java, ou seja, não busca convencer o leitor de que o que ele diz é alguma regra, apenas ter uma conversa com o mesmo. Concorda?

LIPE:
Quem fala que Java não separa layout da linguagem é gente com preguiça de procurar e/ou falta de imaginação.

Mas gostei do resto do texto.

Java não separa layout da linguagem!!! :twisted: :twisted: :twisted:

O NetBeans, o IDEA, o Thinlet, o SwiXML etc. esses sim, mas o Java não!!! Do contrário, cadê a JSR que fala da padronização da descrição de janelas? Qual o nome desse padrão? Eu gostaria de conhecê-lo!

Eu gostei do texto, acho que concordo com boa parte do que ele diz. Java no desktop é um bebê cagão, e tem muita coisa espalhada pra estudar e escolher. Mas é di grátis, e isso é o que vale mais uhahauhauahuahauhaha pelo menos pra mim

Thiago_Senna

Na verdade à duas opções:

Ou uma IDE como NetBeans separa o código da tela à força, ou o programador separa tela de código usando boas práticas de programação, usando MVC por exemplo!

Se em delphi vc pode optar por usar ou não Orientação a Objetos, em java vc pode optar por juntar código com tela ou não… (viche… esem comentários!)

Só mais uma coisa… thinlet e swingxml não separa tela de codigo naum…

Talvez quem faça isso melhor seja o IDEA!

Desculpa por repetir a mesma mensagem… cliquei em citar, sem querer!! rsrs…

Abraços!
Thiago

Mauricio_Linhares

Discordo, uma das primeiras coisas que eu aprendi na universidade (sou aluno de comunicação social) foi que antes de escrever um texto, é necessário saber sobre o que vai ser escrito. Se ele não sabia sobre o que estava escrevendo, era melhor não escrever nada.

Padrão? Que padrão? Precisa de padrão pra isso? Uma janela é apenas um objeto, do mesmo jeito de um java.lang.String, não precisa de nada além disso não. O “layout” são apenas propriedades do objeto e são manipuladas programaticamente do mesmo jeito que são as propriedades de todos os outros objetos, o que há de errado nisso?

Se você quer usar arquivos de configuração pra mudar o seu design, pode escolher uma dúzia de frameworks pra fazer isso.

Ah, outra coisa, se quizer trabalhar com HTML numa aplicação Swing, dá uma olhada nisso: http://java.sun.com/j2se/1.3/docs/api/javax/swing/text/html/HTMLDocument.html

1112

Não gosto de me repetir, mas…

Portanto, argumentar sobre qual linguagem é melhor é bobagem. NMNHOEDSQNG*.

*Na Minha Nada Humilde Opinião E Dane-Se Quem Não Gosta

cv1

@renato3110: se vc quer falar mal de Java, da pra pelo menos trazer uns argumentinhos novos, ou pelo menos reais, pra discussao?

Java nao separa a linguagem do layout?! Que merda eh essa? Desde quando uma linguagem de programacao sequer tem algo a ver com “layout”? Nenhuma linguagem de programacao generica que eu conheca tem ideia do que seja uma “tela”, uma “janela” ou um “botao”.

Java, apesar de nao ser soh uma linguagem de programacao - eh tambem uma maquina virtual, uma linguagem que compila pra ela e um monte de JARs, que tambem rodam nessa maquina virtual. O resto vem das ferramentas, e eu desconfio que vc esteja confundindo a JVM+linguagem+API Java e as ferramentas que vivem em cima disso.

Ambiente de programacao - vamos chamar essas ferramentas disso e, opa, ai sim - como o Delphi, NetBeans, Eclipse, IDEA, ou o que seja, sim, esse tem que se preocupar com alguma definicao de layout pra telas. Se eh sobre isso que vc quer discutir, OK, mas o nome disso nao eh “Java”.

renatosilva

Thiago, pelo power amor de Deus!!! E todos os que não entendem!! Entendam de uma vez por todas!

Quando eu e o autor do artigo “choramos” separar layout de código, estamos falando disso:

<!-- Beautiful!! Great!! Indica sanidade mental do criador da ferramenta hauhauha -->
<form>
    <botao onde="ali" fazoque="peida"/>
    <texto onde="lá"/> 
</form>
// Método porco, mas como Java é cool, isso é super normal

crass GUI {
    Form form = Form.pleasePleaseUmForm();
    Botao botao = new Botao();
    // Não tenho saco de escrever o resto...
}

Em vez de estarmos falando disso:

crass GUI {
    Form form = Form.pleasePleaseUmForm();
    Botao botao = new Botao();
    botao.onClick = {
        //logica de negocios... MVC? Hã?
    }
}

Entenderam? Entenderam? Entenderam? Isso que tu falou Thiago é outra história.

Mauricio_Linhares

Ah, você quer arquivos .DFM do Delphi? Não, obrigado, eu uso o Spring pra isso :smiley:

Aaaaaaaahhhhhhhh, você quer programar em Delphi com Java? Porque esse Form.pleasePleaseUmForm() tá tão parecido com os construtores do Delphi…

E sobre o Delegate lá em baixo, eu realmente acredito que Java deveria ter, mas como não tem, não custa nada você criar uma classe que implemente ActionListener e no construtor dela passar uma referência pro objeto Command e o nome do método que ela deve chamar. Termina deixando o seu código muito mais legível.

Na boa, se você quer programar em Delphi, continue usando o Delphi.

renatosilva

E cv, quando me refiro a Java estou falando da tecnologia em si, não da linguagem, mais especificamente estou falando das ferramentas. E NMO o Java (neste caso, Java= JCP) deveria especificar JSRs para padronização de IDEs, incluindo-se aí um formato de representação de GUI que seria implementado no J2SE por exemplo, permitindo mesmo sem IDE (apenas JDK), criar o layout da GUI numa linguagem masi amigável, legível, intuitiva e fácil de manter.

cv1
renato3110:
Thiago, pelo power amor de Deus!!! E todos os que não entendem!! Entendam de uma vez por todas!

Quando eu e o autor do artigo "choramos" separar layout de código, estamos falando disso:

<!-- Beautiful!! Great!! Indica sanidade mental do criador da ferramenta hauhauha -->
<form>
    <botao onde="ali" fazoque="peida"/>
    <texto onde="lá"/> 
</form>

Ah, sim, pq nada melhor na vida do que editar XML. Que o digam todos os programadores que ja fizeram um deploy no WebSphere ou SunONE. Especialmente quando voce precisa mudar o nome de alguma coisa ou fazer aquele refactoring maravilhoso, e a sua IDE nao ta por perto, ou pior, deu pau.

cv1

E a sua sugestao foi usar XML?! UAAAAAU! :mrgreen:

Java nao eh uma linguagem amigavel, intuitiva ou facil de manter. Eh um C++ com menos problemas, nao a Angelina Jolie/Brad Pitt cheia/o de vaselina em todos os orificios possiveis cheirando a Chanel #5 falando “vem que eu tou facinho”. Eh um C++ menos ruim, e eh isso. Use, invente maneiras de melhorar, OU PARE DE RECLAMAR, e va usar outra coisa.

renatosilva
Maurício Linhares:
Ah, você quer arquivos .DFM do Delphi? Não, obrigado, eu uso o Spring pra isso :D

Aquilo não é DFM. Inventei agora. E, me diga, o Spring tem algo assim? Muito interessante! Me passa um link?

Maurício Linhares:
Aaaaaaaahhhhhhhh, você quer programar em Delphi com Java? Porque esse Form.pleasePleaseUmForm() tá tão parecido com os construtores do Delphi...

Não leve meus [code] muito a sério huahauhahua

Maurício Linhares:
E sobre o Delegate lá em baixo, eu realmente acredito que Java deveria ter, mas como não tem, não custa nada você criar uma classe que implemente ActionListener e no construtor dela passar uma referência pro objeto Command e o nome do método que ela deve chamar. Termina deixando o seu código muito mais legível.

Na boa, se você quer programar em Delphi, continue usando o Delphi.

Delegate? Eu escrevi isso de bobeira. Isso é outra questão.

Bom, na verdade não quero programar em Delphi, quero almoçar. Inté :D

Mauricio_Linhares

Então assim tá complicado rapaz…

Mas o do Spring é aqui ó: http://www.springframework.org/spring-rcp

Cada um acha o seu meio melho, não acho que isso deveria ser padronizado, cada um usa o que achar melhor, o VE do Eclipse trabalha fazendo análize de código e tem gente que gosta. Cada macaco no seu galho.

Pgiovanni

hUEHAUEHauheuh

pcalcado

Deixa eu ver se entendi, o renato tá reclamando que interface gráfica é feita com objetos normais, logo você pdoe escolher entre sei-lá-quantas formas diferentes de definir uma interface gráfica?

Desisto, vou voltar pra cama

Shoes

Mauricio_Linhares

pcalcado:
Deixa eu ver se entendi, o renato tá reclamando que interface gráfica é feita com objetos normais, logo você pdoe escolher entre sei-lá-quantas formas diferentes de definir uma interface gráfica?

Desisto, vou voltar pra cama

Shoes

Nops, é o contrário, ele não quer fazer a interface em objetos normais, ele quer arquivos de configuração XML que guardem as informações dela.

Alguém falou XWork por aí? Spring RCP? Alguém? :lol:

E eu vou é pra aula… :wink:

renatosilva

Não precisa ser XML, qualquer arquivo que descreva layout. Acho mais fácil manter um arquivo de configurações, XML ou o que for, do que código em linguagem. Por outro lado, a integração do arquivo com o código é um certo problema como você me fez lembrar. Por exemplo: teu Delphi deu pau e você vai precisar editar o DFM na mão (isso é muito, muito, muito raro). Digamos que você queira adicionar um botão. Você teria que adicionar a entrada para o botão na janela, mas também adicionar uma variável de referência na classe do formulário, no código da aplicação. Ou seja, cada mudança na descrição deve estar sincronizada com o código.

cv:

E a sua sugestao foi usar XML?! UAAAAAU! :mrgreen:

Não, foi NÃO usar código.

NUm intendi. O que tem a ver? Não tô reclamando que Java não é amigável. Já expliquei num post anterior. Aliás não tô reclamando de nada, só expondo o que penso.

Cadê a mensagem do Maurício???

E por falar em Angelina Jolie/Brad Pitt, será que o filme deles é legal?

Tô com fome, até++

cv1

E eu vou eh trancar esse topico inutil.

Criado 30 de maio de 2005
Ultima resposta 31 de mai. de 2005
Respostas 24
Participantes 12