Concordo contigo, Vini. Tenho um app que precisa usar recursos de processamento ao máimo, onde java se mostrou muito rápido, até comparado a C e C++. Neste caso específico, com multithread para processamento, web seria um problema, uma requisição usaria todo o processamento do servidor. Por isso a necessidade de ser desktop. Vejo que não existe uma receita genérica, temos que avaliar os requisitos do sistema para tomar a melhor decisão. E gostaria de te agradecer, muito do que conheço hoje se deve aos conhecimentos que você compartilhou.
Se sua aplicação não é uma ferramenta, ou um software que envolve criação, ou não acessa recurso nativo nenhum, é porque sua aplicação possui pouco valor agregado.
Sobre usar OpenGL etc…Não é para criação de games nem muito menos integração de midias, eh apenas um sistema comercial que acredito seja a real proposta do antigo Swing e do novo JavaFX.
Sobre a proteção do código @ViniGodoy eu tenho um programa que protege o código gerando o exe através do .jar que eh o Excelsior: http://www.excelsiorjet.com/
Esse JavaFX é muito legal, eu como ja conhecia e trabalhei com Swing foi fácil aprender e ainda essa estrutura de usar FXML com Controllers lembra muito JSF e Android(nativo), o que facilitou mais ainda.
No momento eu preciso criar um software que emita o SAT-CF-E e tbm ECF e que tbm imprima em impressoras de cupom na rede, eh basicamente uma frente de caixa. Acredito que com Java será tranquilo fazer, mas ja me sugerirão usar o C# ou C++ ou até mesmo o Lazarus.
Nunca criei um sistema que emita ECF ou esse novo SAT-CF-E, então gostaria da opinião de vocês se realmente minha idéia de usar Java seria uma boa ?
Isso é relativo, aplicações web que cito não são softwares a serem vendidos, mas aplicações com soluções bem específicas que agregam valor para o negócio de forma estratégica, onde a atividade fim não é TI.
Mas concordo no que você falou considerando uma aplicação desktop que não usa recurso nativo, já que a maior razão de ser fazer aplicação desktop hoje em dia é acessar recurso não disponível por HTML.
Acho que esta falando de soluções customizadas para um cliente específico, software sob encomenda. Mas como isso pode PREDOMINAR em relação a por exemplo um jogo, ou ferramenta para músicos, ou qualquer outro nicho que possui audiência global? Certamente existem muito mais jogadores e músicos no mundo para você vender seu software do que clientes potenciais para uma solução customizada.
Não entendi porque tenta confrontar produto com serviço customizado, são casos diferentes. Cada um escolhe o tipo de oportunidade que deseja trabalhar.
Nossa, você conseguiu pagar pelas licenças do Excelsior?!?!?! São 3.000 dólares por plataforma! =O
Se seu software é simples, tanto faz a linguagem. Use a que você tem mais familiaridade. O fato de dizer que o Java seja a pior alternativa para desktop não significa dizer que ele não seja uma alternativa. Só que, para muitas e muitas e muitas aplicações desktop, o Java dará muito trabalho a toa. Os exemplos são os que falei: exigir algum tipo de integração com o SO (para autenticação, uso de hardware, etc), exigir tempo real, exigir uso de bibliotecas exóticas (que são muito comuns em C, mas raras em Java), ou exigir acesso a multimídia.
Para o feijão com arroz, você pode resolver com praticamente qualquer coisa: python, Java, C++, C#, etc…
kkkkk…eh cara mesmo @ViniGodoy mas eu consegui um esquema com eles que saiu bemmm mais barato. Claro, não comprei o master pelo fato de ser esse valor que você disse mas paguei 700 reais quando comprei.
Sobre o desenvolvimento do sistema andei dando uma olhada no C# e gostei bastante, inclusive percebi que tem como usar frameworks para persistência que é o que me fazia mais resistente ao uso pois eu não sou fã de ficar escrevendo SQL, ja fiz muito isso na vida e depois que comecei a trabalhar com Java e usar Hibernate ou EclipseLink abandonei de vez o SQL.
Mesmo eu tendo mais familiaridade com Java vou partir para o desenvolvimento C# para este sistema em específico, afinal, o C# é uma cópia do Java então quanto a linguagem em si acredito que não terei muita dificuldade.
Fernando gosto muito de programação descktop, gostei bastante do JavaFx por uma serie de coisas mas tbm fico pensando se poderia migrar para C# pois todo mundo fala que para descktop C# e de longe a melhor escolha do que java.
Então @jeff021 eu ja estou estudando o desenvolvimento do C# usando Windows Form, eh bem simples mesmo e tem muitas opções de componentes, me lembrou o Delphi e o VB.
Agora estou estudando qual framework ORM de persistencia irei usar, se uso o EF ou o NHibernate, nesta parte do uso de Frameworks ORM estou achando meio complicado, acredito que seja pq estou acostumado com Java e as coisas fluem mais facilmente, mas minha primeira impressão é que é bem complicado o uso de ORM no C#, mas vou seguir estudando.
Show a respeito do C# tem o WPF que e bastante parecido com a mecânica do FXML do JavaFX. Acho que o WPF meio que substituiu Windows Forms. Mas e isso ai tomará que vc consiga ter um desempenho bacana nessa jornada. Pois vi sua qualidade de serviço nos 2 videos que vc colocou acima no post e realmente vc e muito bom e bastante detalhista. Parabéns!!!
Legal ver mas pessoas que gostam bastante de programação Desktop.
@ViniGodoy Quando você diz que programar pra desktop com Java torna seu projeto open source, o que realmente quer dizer? Eu não conheço muito sobre, mas tem como pegar um código de um .jar por exemplo?
@ViniGodoy Ainda sobre isso, pesquisei e vi que existem algumas técnicas de ofuscamento de código e outras coisas, mas não há algo muito certo. Que técnica/ferramenta você indicaria para que mesmo desenvolvendo minha aplicação com java, ainda assim conseguisse proteger meu código fonte? Pode não ser uma técnica 100% confiável (e quais coisas são 100%, não é?) mas algo que me desse uma maior segurança para proteger meu software.
Ofuscar o código. Isso vai impedir que um turista simplesmente o descompile e leia. Nada que alguém com um bocado de tempo e paciência não possa fazer.
O ideal seria também baixar os fontes de todas as bibliotecas externas o ofuscar TUUUUDO. Senão as chamadas de código a elas tornarão o trabalho mais fácil.
Agora, se seu objetivo é proteger o mecanismo para impedir pirataria, esquece. Alguém pode simplesmente se concentrar nessa parte específica do código. O cara que descompila ainda pode usar o depurador.
Nada é 100% seguro mesmo, mas pode ser 70% ao invés de 7%. Se realmente for importante pra empresa evitar isso em seu produto, não iria facilitar demais as coisas usando Java ou .NET, usaria C++ nativo por exemplo.
Tente reverter um código c++ compilado com otimização o3, você vai ver que o resultado sai muito distante do código original é ilegível. O c++ não guarda a estrutura ou muitos símbolos, pois não tem reflection. Além disso, boa parte das funcionalidades do C++ são implementadas com templates, que geram código antes de compilar.
Esse descompilador pode ser pra o .Net. O .exe do .net é só um programinha que dispara a vm da Microsoft e envia o bytecode (que fica dentro do exe) para lá.