Olá, estou vivendo uma situação no mínimo perturbadora. Tenho que optar por uma nova linguagem para o desenvolvimento de um novo produto e não sei pra onde ir, já que hoje são tantas as opções, estou inseguro com a possibilidade de fazer uma opção errada.
O contexto é o seguinte: Meu produto tem que rodar em redes locais com acesso a banco de dados, com buscas e relatórios. Mas existe a possibilidade de precisar ser multiplataforma, ou seja, estão aparecendo clientes que querem usá-lo no Windows e outros no Linux… ( por enquanto ).
A minha pergunta é: Java pode ser a linguagem para resolver essa situação? Ou posso usar outra opção, já que andei lendo que o Java não é a melhor indicação para aplicações desktop.
O java pode não ser a melhor opção em aplicações desktop… mas nos outros quesitos ela se destaca, irá rodar em ambiente windows/linux só tendo a JVM… e também para relatório você poderá usar o ireport que é muito bom… eu aconselho você a usar java…
Você disse a palavra chave quanto à vantagem de JAVA:
Multiplataforma!
Quanto a essa história de Java não ser a melhor opção para Desktop, se comparada a outras tecnologias que possuem maiores facilidades na hora do desenvolvimento, creio que perde apenas na produtividade, mas não na qualidade.
Eu mesmo confesso pra você que fiquei boquiaberto quando fiz uma aplicação que rodava no windows e um cliente pediu se rodava no linux eu fui fazer o teste e rodou normal… sem problema nenhum…
Não vou falar que roda no mac porq nunca testei mas tbm deve rodar normal…
[quote=dedspr]Eu mesmo confesso pra você que fiquei boquiaberto quando fiz uma aplicação que rodava no windows e um cliente pediu se rodava no linux eu fui fazer o teste e rodou normal… sem problema nenhum…
Não vou falar que roda no mac porq nunca testei mas tbm deve rodar normal…[/quote]
Então, a dificuldade fica por conta da produtividade, é isso?!? Existe algum projeto para que a produtividade também seja um ponto positivo?
E em relação a sua aplicação, dedspr, é uma aplicação desktop ou web?
Java para aplicações desktop e muito bom. Ele só não e produtivo no inicio do desenvolvimento quando não se tem nada pronto, codigos entre outras cosas. Depois que você ja tem tudo pronto. Fica muito mas facil desenvolver qualquer aplicação desktop. Atualmente estou desenvolvendo um solução ERP usando Swing.
Não acho que Swing seja improdutivo! Acredito que se você utilizar a ferramenta adequada (por exemplo, o NetBeans, que é capaz de fazer o layout da janela, além de ser uma excelente IDE), se torna tão fácil quando desenvolver no VisualStudio…
Eu indicaria Java porque eu tenho certeza absoluta que vai funcionar mesmo dando um pouco de trabalho, mas essa sua situação me faz pensar nas seguintes perguntas:
Vc já pensou na curva de aprendizado? Porque Java não se aprende de uma hora para outra, logo tem que ponderar muito bem essa questão.
Vc acha que seus conhecimentos atuais podem ajudar a diminuir a curva de aprendizado?
Fora a linguagem Java e que possa lhe trazer um certa produtividade em projetos Desktop multiplataforma acho que são a Kylix (tem que pagar), Lazarus e talvez C++.
Muito esclarecedor esse nosso bate-papo. Estou concluindo que o caminha é mesmo o deenvolvimento através da linguagem Java, com a aplicação da IDE NetBeans, os relatórios do ireport.
[quote=fantomas]Eu indicaria Java porque eu tenho certeza absoluta que vai funcionar mesmo dando um pouco de trabalho, mas essa sua situação me faz pensar nas seguintes perguntas:
Vc já pensou na curva de aprendizado? Porque Java não se aprende de uma hora para outra, logo tem que ponderar muito bem essa questão.
Vc acha que seus conhecimentos atuais podem ajudar a diminuir a curva de aprendizado?
Fora a linguagem Java e que possa lhe trazer um certa produtividade em projetos Desktop multiplataforma acho que são a Kylix (tem que pagar), Lazarus e talvez C++.
P.S. Kylix e Lazurus é o Object Pascal
[/quote]
Pois é, sou programador Delphi e preciso criar esse novo produto em uma tecnologia que permita a multiplataforma, se for pra ser o Java precisarei aprender além da sintaxe, também consolidar os conhecimentos de Orientação a Objetos. Mas estou criando a certeza de que vai ser bom pagar esse custo inicial.
Não é apenas em relação ao desenho de um formulário…
Mas em sincronização de componentes com tabelas e outras coisas mais, que como alguns sabem, com algumas ferramentas basta vc ir “ligando” as coisas para que funcione da forma esperada…
Mas sei que a coisa está mudando, temos ótimas funcionalidades para serem usadas em aplicações Desktop, como os Bens Binding (JSR 295)!
Sem contar que a IDE NetBeans 6.x está excelente para projetos Desktop!
Com suporte à todas essas novidades! Inclusive com exemplos de uso!
Quanto ao Mac, que foi citado acima, a resposta é sim! Também possui sua versão da JVM!
Bem no inicio do meu desenvolvimento com aplicações Java Desktop levei muita coça pois coisas que fazia facilmente no delphi leva tempo para fazer no Java. Mas hoje esta um mar de rosas hehehehee. Por enquanto…
Se for possível pra você aprender, com certeza eu recomendo Java!
Banco de dados… bem, antes de mais nada, recomendo fazer sua aplicação também independente do SGBD a ser utilizado, já que o requisito é portabilidade. Se o acesso ao banco não for muito complexo, aprenda como funciona o JDBC e utilize com o seu SGBD favorito (Oracle, MySQL, PostgreSQL etc.). Se for complexo, vale a pena dar uma fuçada no Hibernate. Mas já aviso que o Hibernate é bastante complexo de se aprender, visto que é cheio de configurações, mapeamentos etc.
Eu uso Netbeans para soluções desktop, mas peloas testes que fiz ate hoje com a solução de binding com Netbeans, o beans binding tem problemas quando faço binding por exemplo com JTable quando uso TableModel externo ou seja que seja desenvolvido. Ele simplesmente não aceita pois ele usa o beans binding usa outra implementação de TableModel. Ai no inicio optei pelo genesis que por sinal e superior ao beans binding na minha opinião, mas infelizmente também tem suas desvantagens. Mas nem tudo e perfeito. E com isso desenvolvi um solução propria de binding para situações que não tinham nesses frameworks Genesis ou Beans binding.
E isso ai
Essa sua aplicacao tem que rodar obrigatoriamente em ambiente desktop? se puder rodar em ambiente web seu leque de opções é muito maior, com Ruby on Rails, Java, .Net, Php… quanto a produtividade ao desenvolver ambientes desktop em java… usando o netbeans com o matisse, não acho que perde em nada para o .net (em produtividade, apenas para deixar claro! hehehe).
esqueci de dizer… quanto ao banco de dados, se for ficar no cliente, eu usaria o Oracle XE, se for deixar em ambiente web, hospedado em algum lugar, eu optaria por PostgreSQL, é muito mais barato, a menos que voce resolva aprender junto hibernate… ai o banco passa a nao ser mais um problema…