quarta-feira, 19 de agosto de 2009

Trabalhando com bancos de dados: Conectando com Mysql

A linguagem Java oferece uma camada para acesso a banco de dados chamada JDBC que busca unificar a forma de acesso a diversos bancos de dados.

A idéia é dinamicamente carregar o driver do banco de dados e então usar a classe Statement para executar as querys. Esta abastração permite uma programação independente do banco de dados.

A maneira mais usual é deixar o sistema operacional se encarregar da conexão real com o banco de dados e usar pelo java a conexão ODBC já criada pelo SO, isso funciona bem em ambiente windows e com bancos de dados pequenos, mas por outro lado é uma solução muito vulnerável, pois o usuário pode apagar a ODBC, mudar o nome, desinstalar o driver pensando que “é um programa que ele não usa”.

Há também dificuldades técnicas na questão de performance além do fato que ODBC é padrão apenas em ambiente windows, em outros sistemas operacionais não existe esse conceito (porque é ruim!).

Se precisarmos usar uma conexão ODBC em Linux por exemplo precisa instalar e configurar o pacote “unixODBC” o que não é trivial.

A melhor solução é não usar ODBC (mesmo que seja mais fácil em windows que é a maioria dos usuários) e preferir pela conexão nativa.

As IDE's Java normalmente já tem o driver JDBC de alguns bancos de dados (conforme interesse do fabricante da IDE) para conexão, o Oracle Jdeveoper possui conexão com BD Oracle por exemplo.

Aqui faremos conexão com Mysql, como ainda não temos o driver, baixamos ele do site do banco de dados. Normalmente a maioria dos bancos de dados em sei site tem ou indicam onde baixar o driver Java para conectar-se ao banco.

Baixamos aqui o driver (do site www.mysql.com) para conectar-se, descompactamos o diretório e neste tem um arquivo “.jar”, um pacote de várias classes Java, esse é nosso driver de acesso nativo ao banco, independente de plataforma ou SO.




Com o projeto aberto, clicamos com o botão auxiliar em “Project Properties”. O que precisamos fazer é que esse driver seja compilado junto com os arquivos do nosso projeto, o detalhe é que ele não é um arquivo original de nosso projeto, por isso temos que indicar em classpath o caminho do driver.



Na tela que foi aberta escolha no menu “Liberaries and Classpath” (item 1). Em seguida aponte onde está o driver para conexão nativa (itens 2, 3 e 4). Aqui também poderiam ser adicionadas bibliotecas, componentes de terceiros como para geração de PDF ou algo do gênero. Por fim, clique em “ok” para gravar as novas configurações do ambiente.



Na página seguinte temos o código de uma classe para conexão e para executar de modo bem básico consultas em banco da dados.

Importante destacar apenas o import nas bibliotecas do Java referentes a SQL, e o bloco try/catch que será discutido mais adiante em outro post possivelmente.

O JDBC possui métodos diferentes para executar consultas (selects) e alterações (insert, update, delete) no banco de dados, por isso criamos também dois métodos para isso. O método de conexão é privado porque é chamado no momento de executar uma instrução, ele retorna um Statement, sobre o Statement é que as operações com o banco de dados acontecem.

O que muda de coenxão entre os diversos bancos de dados é os poucos passos até se conseguir criar um objeto do tipo Statement, no caso  do Mysql temos que apontar o servidor de banco de dados, o banco que queremos trabalhar, qual usuário e senha estão fazendo essa conexão.

O método executeSelect retorna um ResultSet, ou seja, um objeto com a coleção de dado atingida pelo select executado. O método executeUpdate retorna um inteiro apenas indicando quantos dados foram atingidos pelo comando. Observe que nem sempre aqui o resultado 0 (zero) indica que a SQL falhou ou não foi executada, apenas que nenhum dado foi atingido pelo comando DML. Confira a classe na sequencia. (clique para ver ela mais grande)


Nesta classe que usa a anterior apenas temos a chamada dos métodos. Premeiro limpamos a tabela (truncate), depois executamos um select e trazemos para tela o que ele retornou (nada), depois mandamos inserir dados e executamos o select novamente trazendo para tela o que tem nessa tabela no banco de dados.



Como pode perceber trabalhar com banco de dados em sí é fácil, o complicado é ligar a camada de BD com a interface da aplicação e fazer isso de modo OO. Essas duas classes são o básico, com isso e mais um pouco de lógica da para fazer praticamente tudo em BD, o restante são minúcias de pegar valores de uma interface swing, concatenar esses valores dentro da SQL e mandar executar.

Veja a prova do crime na figura abaixo.


Valeu pessoal, nos vemos!

sexta-feira, 3 de julho de 2009

Tipos de dados em Java: Array e Vector

Olá, neste post/texto/artigo vamos falar um pouco sobre tipos de dados chamados de "coleções" em Java, são classes que agrupam outros dados.

Tipos de dados: Array

Um Array ou uma matriz é um conjunto de dados de um mesmo tipo agrupados em uma mesma variável, esses valores são acessados através de índices numéricos, índices associativos (Arrays associativos não são suportados).

Em Java por ser uma linguagem estaticamente tipada, podemos ter em uma coleção de dados de um mesmo tipo apenas, logo podemos ter um Array de inteiros, de Strings .... podemos também ter matrizes, ou seja em duas dimensões (Array bidimensional) ou de mais dimensões, os índices a direita vão indicando em que nível de profundidade estamos acessando.

Exemplo, declarando um Array de inteiros:

int[] parafusos;

parafusos = new int[10];


A limitação do Array é que ele tem um tamanho estático, ou seja, usamos esta estrutura quando sabemos quantos valores queremos armazenar na variável, por ser uma estrutura estática, seu uso requer menos processamento, por outro lado é inflexível.

Para atribuir e resgatar dados de um Array, acessamos os seus índices. Veja no código a seguir.

parafusos[1] = 12;

parafusos[2] = 50;

parafusos[3] = 9;

parafusos[4] = 1;

System.out.print("Valor 1:"+parafusos[3]);


Faz-se importante destacar que em Java os índices iniciam em 1 não em 0 como em C, JavaScript, PHP ou outras.

Ainda é possível atribuir os valores do Array de outra forma.

parafusos = {12,50,9,1};


Para percorreu um Array seja ele um vetor ou multidimensional, normalmente se usa um for, passando do primeiro ao último, e o índice do Array é a variável contadora do for.

Tipos de dados: Vector

Vector é uma classe (um tipo de dados) assim como o Array, mas tem tamanho flexível, ao criar um não é preciso especificar seu tamanho(embora opcionalmente possa se fazer) e incluir as classes através de um import no código java. No código a seguir onde criamos uma lista de n Strings que são nomes de pessoas.


Diferente do Array, o Vector pode armazenar qualquer tipo de dados, isso porque o Vector não guarda a informação em sí, apenas uma referência (um ponteiro) para onde está essa informação na memória. Dessa forma podemos guaradar qualquer objetos (das nossas classes e das do Java) em um Vector.

Na classe main, criamos um objeto dessa classe (TesteVector). Usamos um tipo de dados Enumeration para percorrer os dados do Vector. O tipo de dados Enumeration possui métodos para percorrer listas, sendo de podemos avançar uma linha com nextElement() e verificar se o "ponteiro" já não está na última linha com hasMoreElements().



No código anterior, não declaramos o tamanho do Vector e adicionamos 4 nomes de pessoas, mas poderíamos adicionar mais. O Vector então se mostra uma boa opção quando estamos trabalhando com dados variáveis, como quando queremos armazenar em memória os dados de retorno de uma consulta SQL, ou leitura de um arquivo texto... sempre que teremos uma "coleção de dados" de tamanho variável.

terça-feira, 23 de junho de 2009

Convenções no/de código Java

Talvez por isso Java tenha ganhado tanto destaque nas empresas... porque você tem que ser um programador muito ruim mesmo para conseguir bagunçar um programa em Java. A linguagem, as IDE's é tudo muito regrado, tem forma especificada para tudo, isso de certa forma é muito bom.

Existe então padrão para como codificar, como escrever um programa, se uma variável deve ser minúscula, maiúscula, se for palavra composta devo usar "OutraPavara" ou "outra_palavra"? Enfim, muitas questões que são subjetivas ao programador, em java não são.

Confesso que tinha rascunhado um artigo sobre isso, mas achei outros muito melhor elaborados do que meu planejamento, então não vou escrever nada e vou passar os links.

Se você ainda tem dúvida de como fazer, quais prática adotar, não deixe de ler, é um tempo que vale a pena gastar.

Convenções de codificação em Java

Convenções de codificação em Java - parte 2


Convenções de codificação em Java - parte 3


Convenções de codificação em Java - parte 4

Até mais.

segunda-feira, 22 de junho de 2009

Tipos de dados em Java: int, Double e String

Olá novamente.

Neste texto veremos como fazer uma classe em Java (bem simples) e como manipular 3 tipos de dados, o int e o Double e String, esses dois últimos são classes. Lembre de identificar e seguir as normas, uma classe (declaração) sempre deve iniciar com letra maiúscula, sendo assim "int" é um tipo primitivo de dados, String e Double são classes.

Veja o código e comentamos depois.

public class Sistema {
private String nome;
private int idade;
private Double peso;

public void setNome(String nome) {
this.nome = nome;
}

public String getNome() {
return this.nome;
}

public void setIdade(Integer idade) {
this.idade = idade;
}

public int getIdade() {
return this.idade;
}

public void setPeso(Double peso) {
this.peso = peso;
}

public Double getPeso() {
return this.peso;
}

public static void main(String[] args) {
Sistema sistema = new Sistema();

sistema.setIdade(10);
sistema.setNome("Teste");
sistema.setPeso(3.14);
System.out.println(""+sistema.getIdade()+"\n");
System.out.println(""+sistema.getPeso()+"\n");
System.out.println(sistema.getNome());
}
}

Logo no início declaramos nome, idade e peso, com seus respectivos tipos. Em seguida implementamos os métodos assessores (get's e set's) para os atributos.

Dentro do main, criamos um objeto do tipo "Sistema" (instanciamos a classe que é o nosso programa) e setamos dados aos atributos. No fim usamos os get's para exibir na tela o valor que tem em cada atributo.

Observações gerais sobre o código:

- Você deve fornecer os dados no formato que o método está esperando. No caso o Double espera um valor do tipo decimal ou inteiro. O System.out.println espera uma string, como os atributos idade e peso não são, com a conactenação (que só é possível com strings) convertemos os valores para serem exibidos pelo método.

terça-feira, 9 de junho de 2009

Antes de programar: Análise Orientada a Objetos

Vamos recordar como pensar na solução computacional de um problema pelo ponto de vista da orientação a objetos. Este texto não é específico para Java, vale para qualquer linguagem que lhe possibilite programar OO (orientado a objetos).

Linguagens de programação orientadas a objeto assim como C++ e Java nos forçam a desenvolver em outro paradigma. Mais que desenvolver, esse novo paradigma provoca também modificações na análise de um software, oferecendo as diversas "visões" do mesmo problema, cada visão busca identificar e de certa forma representar os artefatos do software a ser desenvolvido.

O que é um objeto?

Objeto é a unidade base desse paradigma de análise e programação. Um objeto é uma abstração da realidade de tal forma que lhes restem apenas as características que interessam no mundo computacional. Não necessariamente um objeto computacional tenha que ser um objeto real.

Ao definir um objeto (e chamamos isso de classe, pois descreve uma "categoria", "conjunto de objetos"), nos perguntamos o que ele tem, e o que ele faz (os atributos e os métodos).

Exemplos:
Conexão com o banco de dados
- (tem) usuário
- (tem) senha
- (tem) endereço do servidor de BD
- (tem) nome do banco de dados
- (faz) Conectar
- (faz) Desconectar

Aqui basicamente definimos o objeto "conexão", que não é um objeto do mundo real, mas existe no mundo computacional.

Livro
- (tem) Título
- (tem) Autor
- (tem) Editora
- (tem) Nro de páginas
- (faz) ???

O que um livro faz? Quais são as ações de um livro? Aqui chegamos a mais um ponto interessante. As características e ações (atributos e métodos) de UM MESMO OBJETO DO MUNDO REAL podem ser diferentes para problemas distintos. Cada análise usa apenas o que é necessário daquele objeto na resolução do problema. Sendo assim, para uma transportadora, pouco importa o título do livro, importa qual o seu peso e volume (volume de quantidade de espaço), características essas que são dispensáveis para o caso de uma biblioteca.

Conclusão 1: A representação de um objeto no mundo computacional é menos complexa do que no mundo real, pois no mundo computacional usa-se apenas o que convém para a resolução de um problema epecífico. Faz-se uma abstração.

Isso nos leva a segunda conclusão.
Conclusão 2: A análise orientada a objetos torna as coisas mais simples, porque cada objeto é uma entidade simples, tendo de forma organizada seus atributos e métodos.

Para finalizar esse tópico, um objeto é representado, documentado, descrito através de uma Classe. O objeto é uma instância de uma classe, é um exemplar dentre os vários objetos que são do tipo de uma determinada classe.

Qual o problema de programar ou analisar estruturado?

Na verdade não há problema que não possa ser contornado, programadores e analistas experientes que nunca pensaram "orientado a objetos" tem em geral soluções elegantes para seus sotwares. O que acontece é que cada um tem uma, e cada um gasta um bom tempo até chegar a melhor solução, e a minha solução pode não se aplicar a outra pessoa, outro problema computacional.

Orientação a objeto é um padrão de como fazer as coisas de modo que todos o façam daquela forma, objetivando nenhum retrabalho, total reaproveitamento de códigos e análises já feitas anteriormente e ainda que isso se aplique a uma ampla gama de problemas computacionais.

Quem programa/analisa estrutural, pensa em que funções o software como um todo deverá ter. Orientado a objetos, pensa-se que dados e que ações cada objeto deverá ter. Pensando assim, em fragmentos mais pequenos e menos complexos há menos risco de esquecer ou menosprezar algum detalhe que no futuro (em uma análise/programação) estruturada poderia aparecer apenas durante um estágio avançado do desenvolvimento e complicar o projeto todo.

Em geral costuma-se dizer que os dados possuem maior integridade quando tratados por um programa OO, porque cada objeto é responsável apenas por SEUS métodos e seus dados, podendo apenas o objeto fazer sua manipulação, e isso de forma especializada.

Quem programa procedural/estruturado programa errado?

Não, em geral programas pequenos e de baixa complexidade não precisam de muito trabalho de análise para que possam ser desenvolvidos. A regra do custo/benefício da POO e análise OO é conforme o "tamanho do problema", quanto maior o programa, maiores serão os benefícios de uma análise OO.

Porém é mais trabalhoso no processo inicial a análise OO em comparação da estruturada, e na estruturada, os resultados em forma de "programa executável" (quando é um problema pequeno) tendem a aparecer antes. Como tanto para analisar como para programar OO há muitas regras, demora mais até que a "burocracia" seja resolvida e possa-se programar efetivamente. Ressalto que esse trabalho adicional de análise é muito valho, uma análise mal feita é um projeto fracassado.

Ok, e como eu analiso um problema "pelo ponto de vista da orientação a objetos" ?

Se leu até aqui já deve ter notado. O primeiro passo é identificar quem seão os objetos do problema. Vamos a um exemplo que fica mais fácil. Queremos fazer um software que é um dicionário, então um dos objetos é "o dicionário", um outro objeto poderiam ser "as palavras". Temos dois objetos, agora temos que descobrir dos nossos objetos quais atributos nos interessam.

Objeto dicionário:
Nro de palavras
Idioma

Objeto palavra
TextoPalavra
TextoSignificado

O segundo passo é identificar que ações correspondem a cada objeto. No caso o objeto "dicionário" teria os métodos "abrir", "fechar" e "procurar palavra". temos aqui mais um tópico interessante, o dicionário "procura palavras" ou seja, as palavras tem uma "relação" com o objeto "dicionário.

Mapeando as relações entre as classes podemos montar um diagrama de classes, que é um dos principais artefatos da análise pelo padrão UML.

UML? Quer dizer que tem um padrão para produzir uma especificação de análise orientada a objetos?

Exato, UML é um padrão para criar documentos de análise de software OO.

UML (Unified Modeling Language), de acordo com Rumbaugh e Jacobson (2000), é uma linguagem para especificar, visualizar e construir os artefatos de sistemas de software. Ela é um sistema de notação (incluindo a semântica para suas notações) dirigida à modelagem de sistemas, usando conceitos orientados a objetos.

Nossa! Mas isso é complicado de mais. Não teria como resumir isso tudo "ao essencial" ?


Muita coisa é essencial, tem que ler muito e praticar, não teria como resumir não.

Justamente por ser muitas regras, precisar ter uma "base de conhecimento" pelo menos "meio boa" é que a maioria ainda prefere analisar e programar de forma estruturada (cada um cria seus padrões), e que os quem programa e analisa OO se destaca, se fosse "comum" não teria porque fazer um blog falando de Java, que é uma linguagem voltada para programação OO.

Ok, me de alguns links então ...

Pesquise no google sobre "orientação a objeto", "análise orientada a objetos"... vá seguindo as pistas.

É interessante ler também algum livro (ou apostila) sobre UML, seja UML 1 ou 2.

Vamos aos softwares:

Jude Comunnity - Um programa free para criar documentos UML de análise de software.

Umbrello - É o software usado pelo pessoal que faz análise do KDE. Na documentação do KDE tem o help completíssimo. Eu particularmente aprendi mais sobre OO lendo essa documentação do que em livros. É claro, o conjunto é quem compõe a obra, talvez sem os livros o que diz na documentação não faria sentido nenhum.

Em futuras postagens que envolvam algum documento UML, usarei o Umbrello por preferência própria.

É isso! Até mais ver.

Referências:

RUMBAUGH, James; JACOBSON, Ivar; BOOCH, Grady. UML : Guia do Usuário. Rio de Janeiro, Campus, 2000.

RITTER, Helton. PACHECO, Jonas R. Gestão Financeira para Propriedades Rurais na Perspectiva de Análise Orientada a Objetos. Relatório de Prática Profissional Direcionada III do curso Bacharelado do Sistemas de Informação. Três de Maio, SETREM: novembro de 2008.

Rodada 01: Where is the bug?

Olá pessoal! queremos que os Javaneses que leem esse blog participem! Por isso criamos os posts "where is the bug" onde serão cometidos todos os tipos de atrocidades programando em java.

A gente posta um código ou alguma coisa COM ERRO(S) e vocês respondem nos comentáios tentando solucionar. Quem responder mais coisas certas nos comentários GANHA fama de ser "o bom (ou a boa)" do "where is the bug?" aqui do blog.

Se ninguém postar solução, a solução oficial encontrada aqui pela equipe é postada duas semanas após lançado o desafio. O post do blog com o problema é atualizado, contendo aí a solução.

Entendidas as regras do jogo?

Well... play now!

O primeiro problema é um código de "Hello World" (para ver que até nisso da para errar). Segue o código na figura abaixo:


O código está no arquivo "teste.java" e não compila!

O que devo fazer?

--> SOLUCIONADO por Dalvan: veja nos comentários.

domingo, 7 de junho de 2009

Hello World com NetBeans

Nesse rápido passo a passo para inaugurar nossa nova IDE instalada, vamos fazer um "Hello World".

NetBeans é simples, maioria das coisas até mais intuitivo que o JDeveloper. Era desenvolvido pela Sun, e JDeveloper pela Oracle, agora que a Oracle comprou a Sun, acho que os dois projetos vão acabar virando um só. Espero eu que vá para o lado do NetBeans, que é Open Source, não apenas Free como o JDeveloper.

Abra o NetBeans, vá em "arquivo > Novo Projeto". Escolha "aplicativo java".



Nome do projeto, perceba que o nome da classe principal do aplicativo vai ficar com o nome do projeto que inserimos. E "finalizar".


Escrevendo o código (ctrl + espaço para abrir a ajuda). Aqui também, conforme formos "navegando nas classes" ele vai mostrando uma curta documentação sobre aquela classe ou método. Lendo isso da para aprender muito.


E clique em "executar Main project" (o botão tipo um play), ou tecla F6 no seu teclado. Na parte inferior da janela aparece a saída do programa com o nosso "hello" (clique para ver maior essa tela).


De momento é isso. Divirta-se!

sábado, 6 de junho de 2009

Instalando NetBeans em Linux

NetBeans é um ambiente de desenvolvimento completo, muito usado e veja mais na wikipedia. Nas palavras do site oficial "The only IDE you need! Runs on Windows, Linux, Mac OS X and Solaris. NetBeans IDE is open-source and free."

Baixe ele aqui: http://www.netbeans.org

A instalação não tem mistério, você baixa do site o pacote mais adequado para o seu uso (beixei o completo), abre o terminal (com root) e manda executar o ".sh" de instalação. Um assistente gráfico lhe ajudará daqui por diante.

Veja que aqui entrei como root e mandei executar o instalador.


Interface abre, e aí dou sequência a instalação.


Aqui estou instalando a IDE completa, suporte a Java, PHP, Ruby, C/C++ ...


Leio e aceito a licença.


Para mim, ao chegar nessa tela não deixava avançar porque não tinha encontrado onde estavam os arquivos do JDK (dentre outras coisas aqui está o compilador para Java), então como eu já tenho o JDeveloper instalado, indiquei o diretório do JDK que vem com o JDeveloper. Enfim, caso o botão "próximo" não esteja abilitado, você terá que instalar ou indicar onde está o JDK.


Guarde essas informações (ou salve essa figura aqui do blog) para caso precisar.


Siga em "próximo"


E "Instalar".


Vá fazer um cafézinho, assistir a propaganda na novela ou assistir um episódio do Chapolin Colorado, navegue no orkut, facebook, twitte alguma coisa ... (aguarde)


Conforme quiser, desmarque os checkedboxes e vá em "terminar".


Pronto! Instalado! O NetBeans provavelmente está no grupo "Desenvolvimento" no menu do seu computador.


Como instalei completo, vai demorar um pouco para abrir, mas vale a pena, é uma ótima IDE, a maioria dos tutoriais de Java na internet são usando NetBeans, porque realmente é a "IDE padrão".


Aqui mandei abrir um exemplo. Componentes, eventos e propriedades dos objetos no painel a direita, artefatos do software a direita. Bem familiar não (clique na figura para ampliar)?


Para executar/compilar aperte o "play".


Aqui também a IDE é bem carregada, muitos componentes, um pouco diferente de trabalhar em relação ao JDeveloper, mas é coisa pouca, ainda falaremos sobre isso aqui no blog.

E aí pessoal, precisa fazer um "Hello world!" com NetBeans?

Qual IDE você prefere? Confesso que ainda não tenho opinião plenamente formada.

Até o próximo!

quarta-feira, 3 de junho de 2009

Hello World com Jdeveloper

Novamente Olá!

Vamos fazer um "olá mundo" em Java usando a ferramenta que instalamos no post passado. Não vai ser "explicado" porque das coisas, é mais para "inaugurar" o novo programa instalado.

Bom, primeira coisa então, abrir o JDeveloper. Vale lembrar que quem usa em Windows ou outro sistema operacional, o procedimento é o mesmo, já que esse texto é focado na ferramenta.


JDeveloper aberto, vá no menu em "file>new". Na tela que se apresenta escolha "Generic Application".


Agora ele nos pede onde salvar os arquivos do nossa aplicação, criei aqui uma pasta qualquer e indiquei esse caminho. Avançe em "next".


A próxima tela é a do projeto. Uma aplicação no conceito do JDeveloper pode ter vários projetos, esse projeto se chama "teste" e vai ser salvo na pasta "teste" (dentro de /home/helton2/javatestes/). Aqui também podemos adicionar "quais tecnologias" o nosso programa vai usar. No nosso caso nenhuma, só o "core" da linguagem em sí. Avançe em "finish".


Perceba que na lateral foi criado "teste", que é o nosso projeto, agora temos que efetivamente dizer "do que é composto" esse nosso aplicativo. Então como botão direito em cima de "teste" (lateral direita), clique em "new". Na tela que se abre escolha "Java Class". Siga em "ok".


Hora de criar a classe principal de nosso programa. Perceba que o nome de uma classe, segundo a nomenclatura padrão do Java deve iniciar com uma letra maiúscula, e se aplicam aqui todas aquelas regras de nomes de variáveis das outras linguagens de programação. Criamos então a classe "Hello", marque a opção "generate Main method" e de "ok". Aqui o conceito é igual em C, main é a função (no caso de java método) principal, ela que chama, execute, invoca todo o restante do programa. Todo programa deve ter uma "main".


Agora o JDeveloper criou um pouco de código para nós, a declaração do pacote (qualquer dia falamos disso), a declaração da classe pública "main" que se chama "Hello" e dentro dela o método construtor, e abaixo ainda o método estático (qualquer dia falamos disso) main.


É dentro da main que entra nosso código de "olá mundo". o comando é o seguinte:
System.out.print("Ola mundo");

Clique e veja a figura abaixo um pouco maior. Para executar tem um botão verde, um "play". Clique lá, vai compilar e executar nosso teste. A saída do nosso programa é na parte inferior do programa. Veja que está destacado na tela "Hello World! Java is Here!".


Missão cumprida, Hello word em Java com JDeveloper não é mais mistério!

Até o próximo.

terça-feira, 2 de junho de 2009

Instalando JDeveloper 11 em Linux

Neste primeiro post útil vou mostrar como instalar o famoso ambiente de desenvolvimento para Java da Oracle, o JDeveloper.

Antes ainda da Oracle comprar a Sun (que produz o Java) a Oracle comprou os fontes do JBuilder que era da Borland e transformou no que é hoje o JDeveloper. A Wikipedia esclarece um pouco mais. Eu particularmente não gosto de IDE escrita em Java porque ela geralmente é lenta! Ainda não tive nenhuma experiência que me provasse o contrário.

O JDeveloper é free, pode ser baixado no site da Oracle neste link. Você só precisa se cadastrar antes. Como é feito em Java, roda em Windows, Linux, Mac OS e outra possível plataforma que roda Java. Precisa do JDK, mas vem junto com o pequeno pacote a ser baixado, normalmente algo como 700MB.

Em Windows a princípio não haverá um post de "como instalar", pois segue o padrão NNF (next, next, finish).

Baixadado o pacote (o ".bin") que é mais fácil. Abri uma tela no terminal, loguei como root porque a instalação vai precisar criar diretórios, arquivos em locais que só o root tem acesso por padrão. Em seguida é só mandar executar o instalador, no nosso caso "./jdevstudio11110install.bin".



Ele vai descompactar em algum lugar temporário e abrirá uma tela gráfica para darmos continuidade a instalação. Nesta primeira tela apenas "next".



Como estamos logados como "root" (no console que iniciou essa instalação), ele sugere para instalar em "/root", achei que não era um bom local e troquei para "/usr/local", conforme figura a seguir. Fazendo esse ajuste clique em "next".


Nesta outra tela nos pede sobre a instalação, como eu não sei ainda o que vou precisar, escolho a instalação completa.


Agora ele nos dá a ultima chance de se arrepender, e nos pede para confirmar as configurações da instalação. É isso mesmo, aperte "next".


Mais informações sobre a instalação, vai verificar se minha máquina tem disco suficiente para a instalação escolhida. Na versão 11, instalação completa, como pode ver ele precisa de praticamente 1GB de disco! Siga no botão "next".


Se quiser fique lendo as propagandas que aparecem nas telas a seguir, ou vá buscar um cafézinho. Aguarde.... (bastante).


Pronto! Instalação feita! Agora vamos executar nossa IDE pela primeira vez! (lembre, estamos com root). Deixe o checkedbox marcado e clique em "done".


Agora vai abrir uma tela com algumas opções, que de momento não nos interessam. Escolha a primeira que deve começar a rodar o JDeveloper.


A primeira vez que um usuário abre o programa ele pede "como" ele deve organizar o layout da IDE (da para mudar depois). A maneira padrão que é como ele sugere é boa. Se você tiver um monitor grande ou dois monitores, melhor ainda, porque a IDE é bem "carregada" tem muita coisa. Desmarque o checkedbox que diz se é ou não para pedir toda vez ao iniciar essa configuração. Clique "ok".



Perceba que o instalador acabou (veja na tela de baixo, o cursor já foi liberado), e agora um novo processo está rodando. Se demorar a abrir, acalme-se, é a primeira vez que está abrindo o programa, depois demora um pouco menos.


Da mesma forma, como é a primeira vez, ele nos pede se queremos migrar as configurações de uma instalação antiga, neste caso como não temos uma instalação antiga, não tem porque (escolha "no").


Finalmente carregando a IDE! Aqui no meu computador (P4 HT 3.0 Ghz, 2 GB RAM) a IDE carrega MUITO mais rápido no linux (Mandriva 2009 Power Pack) que no Windows (xp sp3).


E.... rufem os tambores! Instalado!


Se você leu até aqui, obrigado pela persistência! mas temos mais alguns ajustes. Feche a tela da IDE, feche o terminal que tinha aberto antes. Agora vá procurar o JDeveloper nos menus [tempo]. Não achou? Eu também não!

Como resolver isso? Faça um atalho (onde quiser, eu fiz no Desktop) para o executável do JDeveloper. Para isso no gnome, clique com o direito em "novo lançador" e ajuste o caminho para "/usr/local/Oracle/Middleware/jdeveloper/jdev/bin/jdev" onde "/usr/local" é o caminho da instalação que escolhemos antes e "jdev" é o executável.


É isso pessoal! Instalação ok. Agora já da para começar a estudar Java e podemos praticar um pouco.

Até o próximo!