Fala galera, tô com uma dúvida, tenho um projeto pra fazer, integrando com banco de dados postgresql. Qual seria a melhor linguagem a ser usada e uma melhor estrutura também pra fazer a aplicação?
Aplicação desktop
18 Respostas
Linguagem serve qualquer uma que você conheça bem e que tenha alguma biblioteca gráfica (Java, C#, C++, Pascal, Python com PyQt, etc).
O que você quer dizer com “estrutura”? Fala da arquitetura, algo como MVC?
Abraço.
Seguindo o que o @TerraSkilll disse, você precisa definir o que quer fazer, para, só então, escolher a linguagem.
Isso, com certeza, passando pelo quanto você conhece da linguagem em si. Não adianta te falar que a melhor opção é C se você não sabe C.
Tem linguagem que para projetos pequenos vai bem, mas quando você faz projetos maiores e precisa dar manutenção, conta e muito a estrutura da linguagem. Nesse ponto Java tá na frente.
Embora o Pascal sempre foi considerado a moça bonita e no final das contas casavam com C.
Linguagem boa não e’ apenas aquela que você sabe programar, e’ preciso medir mais coisas pensando no futuro, e isso tem a ver com estrutura, segurança, portabilidade(acredite, nem todo mundo usa windows), comunidade atuante, ferramentas, enfim…,.
É um projeto pra uma empresa entre pequeno e médio porte, a estrutura que eu quis dizer, é exatamente algo como mvc. Se o mvc, além de deixar padronizado tem alguma vantagem em relação a confiabilidade ou desempenho, ou algo do gênero.
Em geral, não é a arquitetura que vai definir isso e sim outros fatores, como exemplo, a linguagem de programação e o nível de conhecimento que você tem nela.
Em relação à confiabilidade, você precisa entender que um programador sem conhecimento de uma linguagem poderá ignorar boas práticas.
Devido a isso, sempre considere todos os poréns para sugerir algo.
Uma empresa de pequeno a médio porte pode ter 10 acessos por dia ou pode ter milhões de acessos ao sistema…
Bom, é um programa desktop e tava querendo fazer em Java mesmo, devido ser a linguagem que eu mais tenho domínio. Por ser um projeto para desktop, não teriam milhões de acesso, no máximo, teria uma ou duas dezenas mesmo. Qual boa prática que poderia ser adotada?
Swing ou JavaFX?
Swing, que eu conheço, te dará um certo trabalho, haja vista a própria solução. Ela te impede de ter um MVC 100% (é um MVC adaptado, onde algumas coisas de controller ficarão na camada view, ou seja, nas janelas que você criar).
Eu, particularmente, vejo que o java web é mais simples (sim, é) que o desktop. E te dá mais flexibilidade.
Eu, praticamente, vi o javafx nascer. Vi todo o burburinho e as expectativas da comunidade (e a frustração quando viram que era “só isso”).
Lembro que, na época, havia uma visão de que ele poderia ser algo como uma alternativa ao flash (web) e ao próprio applet.
No final, ficou relegado a um segundo plano, com layout melhorzinho, quando comparado ao swing.
O problema mesmo é que teria que ser um desktop, vou tentar dar uma utilizada no swing, obrigado pessoal.
Entre swing e javafx, eu escolheria o segundo.
Utilizou mvc ou alguma outra estrutura pra fazer esses projetos que você deixou o link? Achei bem feito, principalmente a parte do design. Quais foram as práticas que você usou pra isso?
Se teu cliente usa Windows, desktop com .NET/C# é mais adequado e mil vezes mais produtivo. Mesmo você sabendo mais Java, pegaria rápido C#, seria um investimento com rápido retorno.
Cara não é um mvc ao pé da letra mais vai no rumo, minha base foi esse curso, daí somente fiz minhas alterações. Não é muito produtivo, mais da para trabalhar.
Eu concordo com o @javaflex. Se a ideia é desktop e o ambiente é windows, vá de C#.
É extremamente simples (se você conhece java, vai estranhar algumas coisas no começo, mas é tranquilo).
Agora, se realmente optar por java swing, entenda que você não vai conseguir implementar 100% do padrão MVC, uma vez que o Swing tem algumas peculiaridades que acabam limitando esse pattern.
De qualquer maneira, esteja atento ao seguinte:
- Cada ação pode (e, em meu entendimento, deve) ser isolada em uma classe à parte. ou seja, evite criar inner classes para implementar os teus listeners.
- Procure na internet por lookandfeels personalizados, uma vez que a aparência do swing é horrível
- Eu optaria por não usar um framework ORM. Faria todas as minhas interações com o banco de dados “na mão”.
- Deixe a tela por último. Deixe o desenvolvimento para depois. Antes de qualquer coisa, tenha a certeza de ter especificado o sistema por completo.
No caso do C# se optar por aplicação desktop em WPF, seguirá o padrão MVVM, mais produtivo e menos burocrático que MVC.
Como @darlan_machado falou evite ORMs como JPA/Hibernate, são pesados e muito complexos de lidar. No máximo prefira micro ORMs, que são leves e orientadas a escrever sempre SQL, como JDBC Template (para Java) ou Dapper (para .Net).
Aplicações Java são cidadãs de segunda categoria, basta ter usado uma vez na vida uma aplicação Java no Windows ou MacOS, ou perguntar pra alguém que já usou.
Usar a linguagem que sabe programar é o recomendado, mas no frontend nem sempre é possível porque a plataforma geralmente possui uma linguagem oficial que aqueles que querem criar aplicações são obrigados a usar. Exemplo: .net e C#, cocoa e Swift, navegador e JS.
Não tenho nada a reclamar do Swing, me ajudou tanto no conhecimento do próprio Java, como me ajuda atualmente, claro que vou migrar para java web porque as coisas evoluí, mais quem tiver interesse em aprender ainda o Swing não é ruim, até porque teus conhecimentos serão amplos para outras tecnologia do Java que veio depois do mesmo, claro que eu falo isso tirando as questões de produtividade que linguagem x ou b tem.