String e compilação do java

Ola, sou novato no Java… heheh… coloca novato nisso!!!

Primeiramente:
Queria saber qual comando que faz uma procura numa String pra ver se ela esta contida em outra.
Ex:
s1 = “Hempx é gostoso”
s2 = “Hempx”
tem algum comando q testa se s2 esta contida no s1?

Segunda duvida:
Comecei a ler o livro “Java Como Programar” esses dias e estou usando o Jbuilder Universitario q vem no CD. Queria saber como faz para eu transformar o arquivo em .EXE ou qualquer tipo de executavel. Tbm queria saber se existe compiladores Java q nao usam a Maquina Virtual Java?? Se tem aonde posso pegar?

OBrigado.

O método serias1.indexOf(s2)
Se a s2 não estiver contida em s1, ele irá retornar -1.

Quanto a criar EXEs, o JBuilder cria exes para executar o arquivo jar que ele também cria, e é pelo processo normal do Java, utilizando JVM.
Existem compiladores nativos, mas são totalmente não recomendados. Se fizer uma pesquisa sobre este assunto aqui no forum encontrará vários tópicos a respeito.

Obrigado Bani…
Sobre os compiladores nativos… soh mais uma duvida aki…
Eles nao são recomendados porque ele perde a portabilidade do Java, que eh uma das principais caracteristica da linguagem… ow eh porque da algum problema msm???
Porque dependendo do programa e sua finalidade vc compilar ele para uma maquina normal eh bem melhor porque seu desempenho aumentaria bastante nao eh???
Vlws.

A resposta mais comum é essa mesmo, de perder a portabilidade. Mas ontem mesmo estava conversando com uma pessoa aqui do forum que veio com umas “idéias mais originais” sobre a JVM ter uma certa utilidade intrínseca ao estar provendo um ambiente para executar as aplicações que tem certas características adicionais para controlar o que é feito no programa. Concordo com isso também.
Mas na minha opinião ainda vai um pouco além dessas questões. Tanto o javac (compilador) como a JVM da Sun são resultado de muitos anos de pesquisa por pessoas muito competentes para otimizar a linguagem Java e melhorar a performance dos programas escritos nela, e claro que não é algo perfeito, mas com certeza é algo suficientemente bom.
Java não é lento, já foram feitas melhorias suficientes para deixar sua performance comparável com aplicações nativas. Claro que talvez com manipulação direta de ponteiros e com algumas checagens a menos que acontecem no Java tal em alguns casos poderia ter alguma melhoria de performance, mas não é compilar nativamente ou não um programa que irá fazer diferença.

Um detalhe que o pessoal dificilmente se liga eh: Ao compilar um programa utilizando um compilador nativo para determinada plataforma, apenas o binario gerado vai ser dependente… voce pode entao pegar o mesmo source e compilar os byte codes normais ( .class ) e deixar eles disponiveis para as demais plataformas… dessa maneira, a tua apliccao continua rodando em tudo quanto é canto, sendo que o unico “problema” eh ter que compilar 2 vezes ( uma para o formato nativo, outra para a multiplataforma ).

Rafael

O que achei pior eh que talvez voce quer fazer apenas um programa simples, igual eu, meu amigo pediu para fazer um programa simples para pequena loja dele de celular( Vendas, Conserto e Controle de estoque), talvez um programa que ia usar apenas 2 megas( ou menos) , voce eh obrigado a pegar o JDK q eh 40 megas…
Eu to querendo fazer em Java porque to querendo aprender essa linguagem, mas ja deu pra perceber que ela eh muito boa… mas ela nem sempre eh a melhor opção…

outra coisa… alguem pode mostrar algum exemplo de arquivo .Bat para executar um .Jar…
Obrigado

Tava olhando as msgs antigas e gostei da ideia de fazer um executavel em C


#include <stdio.h>

int main() { 

    printf("Inciando... "); 
    system("java -jar seuprograma.jar"); 

    return(0); 
}

Soh mais uma coisa, tava lendo tbm e o Rafael Steil falo q um arquivo .jar
nao eh nada mais do que um arquivo Zipado… que da pra abrir um com Winzip… se eh assim… então todo mundo pode ver o codigo do meu programa??? Isso nao deixa o java muito vulneravel e tem não comercial???
hehe… to aproveitando esse forum hj pra tirar minhas duvida td…
Obrigado galera do forum…

1 - Para rodar programas Java você não precisa do JDK inteiro, apenas do JRE, que é um pouco menor (não muito, mas é).

2 - Realmente Java não é a “melhor linguagem” para qualquer coisa que você queira fazer na vida. O que acontece é que ela acabou ganhando muito espaço e se distanciando de seu conceito original. Como hoje em dia “é possível” fazer quase qualquer coisa com Java, e não fica ruim, as pessoas acabam optando por aprender Java e utilizá-la onde for necessário. É uma questão de comodidade fazer em Java ao invés de aprender outra linguagem que provavelmente vai ser mais limitada ou menos prática de ser utilizada. Fazendo em Java você ganha todos os benefícios dessa linguagem, mas claro que pode perder uma coisa ou outra.

3 - O jar é um arquivo zipado de arquivos .class, não um arquivo zipado dos fontes. Portanto não é spó deszipar e ler os fontes. Tá certo que é mais fácil descompilar java do que descompilar outras linguagens, mas não é assim tão fácil também.

E depois, eh mto dificil algum programa descompilado conseguir ser recompilado ( soh se ele for muito simples mesmo para conseguir recompilar totalmente )… ao menos que o teu programa tenha algoritmos proprietarios, desenvolvidos por voce e que quase ninguem mais tem, o fator descompilacao nao deve ser encarado como um problema crucial, pois se o cara quiser copiar o teu programa, eh mais facil ele ver as funcionalidades e implementar da maneira dele…
Veja, programas de frente de caixa, controle de estoque, coisas de escritorio e a maior parte dos sistema Web nao tm nada de novo, todo mundo sabe como fazer as coisas…

Logico que gravar senhas em texto puro direto no codigo fonte nao eh recomendavel ( sim, tem gente que faz isso ), e dai nesse caso vc deveria de fato se preocupar com a descompilacao… mas, no geral, usando um “obuscador” ( procure no forum por “obfuscador”, “obfuscator”, “projeter codigo” ) dao conta do recado em tornar a tarefa de descompilacao mais dificil.

Rafael

já que a Vanessa tocou no assunto “java performance”, acho curiosa (no mínimo) a leitura deste documento: http://www.idiom.com/~zilla/Computer/javaCbenchmark.html