[RESOLVIDO]Criando um executável - Projeto Java

Prezados, Bom dia.

Li vários assuntos a respeito sobre criar executável do projeto java, porém observei que só é possível gerar o arquivo .JAR.
Estou desenvolvendo um sistema e gostaria de futuramente comercializar ele para pequenos empreendedores, fico pensando não tem outra forma de deixar a nossa aplicação java um pouco mais profissional? eu vi que pode ser feito executável de instalação, troca de icones, mas ainda sim ficamos na dependência de um jar ao invés de um executável, vocês que possuem mais experiência, teria alguma outra possibilidade?

Estou desenvolvendo um sistema e gostaria de futuramente comercializar ele para pequenos empreendedores, fico pensando não tem outra forma de deixar a nossa aplicação java um pouco mais profissional?

se você não nem sabe como funciona o Java, quanto mais desenvolver um sistema para comercializar ! sabe o porque é gerado o .jar e não .exe ? sabe como funciona JVM ? aplicação mais profissional ? como assim , sabe aquele aplicativo que você usa no seu smartPhone com android, então, sabia que existe IDE do java para android ? pelo próprio Ecplise, NetBeans você desenvolve também para android .
se informe melhor como funciona o JAVA, como é compilado java etc, se quer proteger seu
código de engenharia reversa, estude e parta pra outra linguagem !

Calma amigo! está nervoso? apenas fiz uma pergunta…
1º - Sabe porque é gerado o .jar e não .exe?
R = Não sei, talvez seja por que o programa precise do JVM, e ele é parte do java.
2º - Sabe com funciona o JVM?
R = Não sei bem como funciona tecnicamente falando, apenas o básico, que ele é necessário para que nosso código funcione, ou seja como um emulador para o código.
3º - Aplicação mais profissional?
R = Sim, em relação ao executável, ao invés de gerar um .jar, gerar um executável, tipo como se tivesse criação de pastas e outras coisas, por exemplo eu quis anexar alguns arquivos junto ao projeto para executar determinada ação que pegasse o arquivo que estava na pasta do projeto e depois enviasse para o local indicado, mas depois que gerei o .JAR não é possivel copiar o arquivo, só se eu apontasse o lugar onde o arquivo estava, eu imaginei que poderia criar um sistema com pastas e que ficasse no arquivo de programas e depois poderiamos executar determinadas funções, bem acho que é isso, não sei se deu para entender. Não tenho problemas com a linguagem, a questão profissional que falo é em relação a isso.

4º - Sabia que existe IDE do Java para Android?
R= Sim sabia, inclusive já fiz alguns programinhas para android e testava no tablet, Java com Xml.

Conclusão: Posso não saber como funciona o Java por completo, e desenvolver um sistema para comercializar não é necessário ser um expert, não estou falando de programas para grandes empresas, mas para pessoas que precisam de um sistema que auxiliem na administração do seu pequeno negócio. Com base nessa afirmação, estou desenvolvendo um sistema que atenda minha necessidade de controle do eu gasto para produzir os picolés, e o controle do lucro, horas trabalhadas, fluxo do caixa, investimentos e etc.
Em uma panilha de Excel faz um bom trabalho, mas vi a oportunidade de fazer em java, visto que tenho um conhecimento SUPER BASICO, mas aceitei esse desafio. E estou aqui para ajudar outros que precisem, me desculpe por ter lhe incomodado, acho que poderia ser mais humilde em suas palavras, ninguém nasce sabendo e creio que em algum momento de sua vida, alguém lhe ensinou, fiz uma pergunta com intuito de ouvir os mais experientes, não imagina receber uma resposta como a sua, mas faz parte. Obrigado pelo comentário.

1 curtida

Escolheu a tecnologia errada para desenvolvimento profissional desktop. Vá de C++ que gera .exe nativo ou C#, que starta via .exe apesar de depender do .NET.

1 curtida

Obrigado JavaFlex… Sempre gostei de programar em Java, porém nunca havia pensado nessa parte comercial, achei que teria uma opção de melhorar nessa parte, mas pelo que estou observando não tem muitas alternativas a não ser desenvolvimento para android que usa a IDE Java.
Irei ver essa questão do C++ e C#, no Curso não fui muito bem nessa cadeira, o Java me identifiquei mais, porém acho que deve ser costume na sintaxe e outras coisas mais.

Você também pode criar um pequeno .exe em C++ que faça automaticamente a chamada do .jar através do java.

Arquivo .bat/cmd também é outra alternativa.

2 curtidas

Verdade, eu não tinha pensado nisso!
Outra coisa que observei é como o Java cria um arquivo .JAR, ele também pode ser descompilado e verificado o código fonte e ser alterado, correto?
Ainda não pesquisei sobre o assunto existe um meio de protegê-lo? Estou gostando bastante de desenvolver no Java, sem falar que a maioria dos videos e tutoriais é java, inclusive em casos de dúvidas temos bastante conteúdo.
Para fins comerciais, o Java com o Mysql se tornam gratuito, em caso de migrar para o C++ ou C#, precisa-se de licença para utilização dos softwares de desenvolvimento? por que o C# é utilizado com o Sql Server que não é gratuito, tenho essas preocupações…

Java e .NET/C# não geram aplicações nativas, então quanto a descompilação não tem jeito, no máximo dificultar ofuscando código. Nativo vá de C++ (gratuito) ou Delphi (não gratuito).

.NET/C# é gratuito e independente de banco de dados. Pode usar qualquer banco.

2 curtidas

Mais uma vez obrigado javaflex, com base nisso vou tentar migrar aos poucos para o C++, no qual o código fonte não será descompilado com facilidade, creio que para nível de aprendizado ou mobile, o Java é excelente, porém para nível comercial, como você me passou aqui e pude observar o C++ é o apropriado. Pois você desenvolve uma aplicação, na qual, você passa bastante tempo se empenhando e terminar e outra pessoa vem e utiliza, não acho correto. Portanto pretendo fazer alguns programas que ajudem no dia a dia, esses poderei fazer em java e disponibilizar o software correndo o risco de ter o código fonte alterado por terceiros, mas para outras aplicações maiores, só com o C++ para nível desktop.

Bom amigo, para resolver este problema é necessário gerar um jar com todas as bibliotecas e embutidas(um único jar sem pasta lib sem as classes …) para fazer isso basta adicionar um código XML no arquivo Build.

  1. Clique em Arquivos
    Capturar
  2. Selecione seu projeto.
    3.Selecione o arquivo XML
    Capturarc2
  3. Ao fim do arquivo adicione o seguinte código:
    XML para um unico JAR.txt (1,0 KB)

5.Clique limpar e construir.
6.Procure a pasta store no seu projeto o novo JAR estará lá.
7.Depois disto siga os passos deste Vídeo e pronto.

Espero Ter Ajudado…
Java é uma ótima linguagem basta da uma estudada e vc verá que não precisa migrar para outras com o objetivo de fazer certas coisas…

2 curtidas

Boa noite Israel Silva. Agradeço o compartilhamento dessa opção. Já ajuda por uma parte. como falei anteriormente, estou gostou bastante de programar em Java… e depois dos pós e contras fiquei meio indeciso se continuo… mas vou começar a ver outras linguagens, principalmente C, mas Java está sendo meu xodó.

1 curtida

Na verdade você sempre depende de .class a JVM só carrega e executa arquivos .class. A grosso modo, um JAR nada mais é do que um arquivo ZIP contendo arquivos .class.
Você não precisa ser um expert em Java para distribuir sua aplicação para os clientes, mas de fato precisa entender como funciona.
Você já tem um executável que é executado, ele se chama java.

Se você entende como funciona o Java e como se faz pra executar uma classe Java, então sugiro que você tente executar sua aplicação na sua máquina, sem usar nenhuma IDE.

A partir do momento que você souber fazer isso, é só você arranjar alguma ferramenta que gere instaladores para Windows, aí é só o trabalho de você gerar um instalador para sua aplicação.

Já desenvolvi profissionalmente muito aplicativo desktop em Java e multiplataforma por sinal.
Não sei o motivo de afirmar que é a tecnologia errada…

3 curtidas

Eu acredito que pode ser feito em JAVA, em .NET, em Delphi etc, talvez realmente tenha uma certa razão ou não mas, é uma afirmação muito forte e precisa ser explicada mediante um contexto, agora dizer que a melhor solução faltou dizer o porque. Sou programador .NET e PHP, mas, acredito que tem espaço (com certeza) para as outras com JAVA e Delphi por exemplo.

Delphi pode ser, inclusive coloquei como opção. Esses outros qualquer criança descompila. Este foi o contexto da questão do autor do tópico.

1 curtida

Resolvi fazendo da seguinte forma, gerei o .exe através do programa Launch4J, coloquei até o icone do programa. já resolveu o meu problema.

1 curtida

SérgioLucas, passei exatamente pelos mesmos “problemas” que você. Estou desenvolvendo um software em JavaFX com banco de dados PostgreSQL, pois o MySQL, embora seja OpenSource, não está liberado gratuitamente para versões comerciais. Além disso, testando o intervalo de tempo para um mesmo método, com os drivers mais recentes do MySQL, MariaDB e PostgreSQL, esse último foi muito mais rápido. Alguém irá dizer, ah, mas são só alguns centésimos de segundo. Não interessa, um milésimo de segundo pra mim é mais rápido e pra mim isso importa. Gosto é gosto, mas eu gosto do mais rápido e do melhor.
Bom, mas em relação ao executável… o Java gera o .jar. Todos sabemos disso…
Funciona? Resposta: funciona! Porém, todas as vezes que você vai mostrar para um leigo, o cara pergunta: o que é esse *.jar? Pra que serve? Nunca vi programa em .jar…
Até você explicar para o leigo o que é JAVA, o que JVM, JRE… vai tempo!!! Então, quando eu comecei a apresentar o .exe, a minha vida mudou! Por mais leigo que a pessoa seja, o .exe é intuitivo! Pra mim não interessa aplicações em Linux e, além disso, a renderização em Linux não foi a mesma. As fontes são alteradas, o tamanho, width e height dos objetos ficam diferentes. Então abandonei a idéia de ter de recriar tudo para Linux. O cara que use Windows e pronto. Se não quiser, beleza, que alugue outro sistema…

Outro fator a ser considerado, voltando ao banco de dados: se o cara pega o .jar e manda abrir com WinRar, ele verá todo o seu código-fonte, inclusive a senha para acesso ao banco de dados. Imagine um funcionário que está descontente com a empresa! Mesmo sendo leigo, tem um tal de Google e um tal de Youtube que podem fazer um estrago muito grande! Um funcionário leigo mal intencionado, preguiçoso, pode até não gostar de se especializar em sua profissão, mas para fazer coisa errada torna-se um expert facilmente! Pois então, o cara foi demitido, está de aviso prévio, ou então foi para outro setor que não gosta, começa a ter umas idéias… vai lá fazer uma visitinha para o Google, Youtube, descobre que basta ter o WinRar ou o JavaDecompiler que ele vê todo o código-fonte ou parte dele em seus arquivos *.jar. Procura a senha do banco, abre o banco, muda as tabelas e acaba com o estoque e a vida financeira de seu chefe!!!

Veja que não me importo com a possibilidade do cara ler o código-fonte do meu sistema. O problema não sou eu. O Java é gratuito, o PostgreSQL é gratuito. Eu tenho também que fazer a minha parte, pow. Mas a partir do momento que o meu sistema pode colocar uma empresa em risco, a coisa muda! Eu causar prejuízo, acabar com a parte e a vida administrativa de alguém, isso pra mim é um absurdo sem limites! É uma irresponsabilidade sem limites! Isso não é nada profissional. Por isso, o *.jar não é profissional…

Para evitar isso, tentei obfuscar com o Proguard. Todavia ele ainda continuou mostrando a senha e corrompeu as minhas TableViews. Obfusca muita coisa, criei os dicionários de obfuscação de classes de variáveis, mas deu erro com o JasperReport e várias outras coisas. Não serviu para o meu tipo de sistema.
Tentei criar um exe com o Launch4j. É bonzinho, mas ainda mostrava a senha do banco de dados. Ele cria um *.exe mas não esconde nada!

Então, finalmente descobri o JSmooth!!! Até agora eu não consegui acessar a senha do banco de dados por ele! Ele cria 2 .class que são difíceis de ler, nem mesmo com o JavaDecompiler eu encontrei a bendita senha!

Logo, depois de todo o enorme texto acima, a minha dica é:

  • Sistema profissional: tem que ser em *.exe para não ficarmos perdendo tempo para explicar a cada funcionário que entra na empresa!
  • Segurança: tem que ser em *.exe, para pelo menos dificultar a engenharia reversa e proteger a vida do cara que te contratou ou está alugando o seu sistema.
  • Solução: JSmooth, que é gratuito, esconde a senha do banco de dados, arquivo fica apenas o dobro do tamanho.
2 curtidas

Olá bom dia,

Cara quem sou eu para responder a uma pergunta, aqui temos os expert´s que nos ajudam e diga-se de passagem pessoal muito pro ativo.

Mais então Java foi feito para ter independência de plataforma e por isto nada de .exe se vc conseguir um .exe esta matando a portabilidade ou seja uma das principais características da linguagem.

Então… acredito que todos os “pró ativos” começaram como “não ativos” um dia. Houve a primeira resposta, a segunda… não sabia que tinha que ser “pró ativo” para participar… desculpe. Eu participava de outro fórum no qual eu era moderador, mas também tinha começado do zero. Não conhecia a política do GUJ. Será minha última resposta se for esse o caso…

Pois é amigo. Com o Flash foi a mesma coisa com essa tal “portabilidade”. Mas portabilidade não significa necessariamente ter de abrir mão da segurança, não acha? Eu optei por Java e não por C#. O meu sistema é em JavaFX, geral XML, Relatórios, Planilhas, Gráficos. Tudo funciona muito bem! Até o dia em que eu vi a senha do banco de dados quando resolvi abrir o Jar com WinRar ou Java Decompiler. O jar está completamente aberto. Concordo com a importância da portabilidade, é uma idéia muito boa e é por isso que o Java domina o mundo. Todavia, eu não posso arriscar abrir mão da segurança, pois trabalho com dados de pacientes. São dados sigilosos, que não podem ser vendidos, copiados, apagados, distribuídos, etc. Talvez eu devesse ter optado por uma linguagem “menos acessível”, que fosse mais difícil de ser atingida com “Engenharia reversa”. Mas JAVA foi a minha opção e comecei sabendo dessas vulnerabilidades. Desde o início já tinha ciência do que seria necessário para proteger algumas informações. Foi apenas minha opinião ao responder a dúvida do colega. Criticar alguns pontos do Java, em um fórum Java, é tacar pedra em caixa de marimbondo, rsrsrs. Porventura, talvez essa seja a minha única crítica e por isso revivi esse tópico. Dentre os demais temas, foi um que tive a vontade de dar minha opinião. Só isso.