Sério mesmo, javaflex? Então escreva algo que rode (bem e de forma uniforme) para osx, linux e windows, que não seja java. Mantenho alguns projetos java swing a 8 anos, nem eu nem meus clientes concordamos com tua idéia. Exisiram dificuldades para fazer o tuning dos aplicativos, no início, mas depois rodam muito bem.
Dê uma olhada neste projeto, que integra spring com javafx.
Estou começando agora na plataforma e usei este como base para entender a passagem de informações entre telas.
Se você precisa acessar recursos nativos da plataforma, use C ou C++. E teu sistema fica preso nesta plataforma. Talvez a maior vantagem do Java é ser multiplataforma, se você não precisa disso, use outra linguagem.
Eu concordo com o @javaflex . Trabalho primariamente com aplicações desktop e o Java deixa a desejar em muitos aspectos. Componentes antigos, acesso difícil ao sistema operacional, difícil de usar aceleração gráfica, etc. Há a desvantagem do processo da instalação da VM também ser traumático e não esconder do usuário que ele saiba exatamente que versão está usando. Sem falar que não há qualquer proteção ao código fonte, se usar Java, seu aplicativo será Open Source.
Sigma2k, em QT é facílimo fazer aplicações que rodam de muito bem e de maneira uniforme em todas as plataformas que você citou e ainda incluir plataformas mobile e embedded, que o Java não suporta. É menos uniforme do que o Java pois ele ainda respeita os idiomas comuns de cada SO - o que é uma grande vantagem.
Sério, vocês provavelmente só defendem o Java porque nunca pararam para desenvolver a sério em outra plataforma melhor. Ou porque nunca desenvolveram aplicações desktop que exigem um pouquinho mais de integração ou multimídia. Que, diga-se de passagem, são coisas extremamente comuns para quem trabalha com desktop a sério.
sigma2k, não necessariamente. Você pode querer acessar recursos como a aceleração gráfica em OpenGL, acesso a portas USB ou interfaces seriais, e outros recursos bem encapsulados e que o Java não dá qualquer suporte.
Você também pode fazer com que sua aplicação rode melhor em um determinado SO (como por exemplo, o Windows) e prover mecanismos menos interessantes para as demais plataformas. Um exemplo muito comum disso é permitir que, caso o aplicativo esteja instalado no Windows, a autenticação seja integrada ao IIS.
De qualquer forma, é muito comum que desenvolvimento desktop não seja multiplataforma, ou que tenha restrições de tempo real. Pontos onde a fragilidade do Java é evidente. Se você vai trabalhar com todas as restrições que o Java fornece em nome do multiplataforma, pergunte-se se sua aplicação precisa mesmo ser desktop. Provavelmente será mais vantajoso faze-la em web.
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.