Translate

sábado, 17 de dezembro de 2011

Java NIO - Acesso randômico a arquivo

O Java NIO é uma das melhorias mais significantes para manipulação de I/O. A sigla NIO é de New I/O, ou seja, renovação do pacote java.io.* em relação ao acesso a recursos de memórias externas como um arquivo ou um cliente remoto (host). O pacote NIO está aninhado em java.nio.*.

Nota: I/O é o termo utilizado para denominar a troca de dados de uma área para outra em computação. Esta operação pode ser a comunicação ministrada por uma CPU para transitar dados da sua RAM para um HD, CD R/W, DVD R/W, pasta de rede, um PenDrive (flash), outro computador ou banco de dados. Numa linguagem de programação, este acesso é classificado de alto risco, pois quando os dados saem ou chegam de um recurso externo, muitas coisas podem ocorrer como o desligamento deste recurso, queda do meio físico da comunicação, falha no sistema lógico etc.

Durante minha experiência com Java NIO, me despertou atenção a sua capacidade de acesso não bloqueante. Isso mesmo, você escreve os dados em um recurso I/O como é um arquivo e pode programar para o gerenciador da escrita não deixar em espera sua linha de execução (thread). A mesma espera não é necessária se os dados enviados pelo recurso ainda não estiverem prontos.

O acesso não bloqueante torna possível a terceirização do controle de múltiplos I/O para o Java NIO sem requerer de você a criação de múltiplas threads (linhas de execução paralelas) para gerenciar este acesso. Entretanto, esta terceirização requer cuidados e domínio do tipo de recurso I/O referentes as cerimônias para abertura da comunicação, transferência de dados e encerramento da comunicação. O Java NIO não abstrai estes controles e caberá a você entender bem como funciona o tipo de recurso a operar.

Segue um exemplo de acesso randômico a arquivo para escrita (criação automática quando não existe) e posterior leitura. É necessário ter uma pasta "c:\temp" em seu PC ou mude este caminho no código:

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;


public class TesteFileChannel {


    public static void main(String[] args) {

        TesteFileChannel tfc = new TesteFileChannel();
       
        tfc.writeText();
       
        tfc.readText();
       
       
    }
   
    public void writeText() {

        String text = null;
        FileChannel rwChannel = null;
        MappedByteBuffer rwBuffer = null;

        try {

            // Texto para guardar
            text = "Olá mundo";

            // Abre canal de comunicação
            rwChannel = new RandomAccessFile("c:/temp/datafile.txt", "rw").getChannel();

            // Aloca uma fatia bytes para guardar o texto a partir do canal do arquivo
            rwBuffer = rwChannel.map(FileChannel.MapMode.READ_WRITE, 0, text.length());

            // Coloca o ponteiro na posição ZERO da memória mapeada
            rwBuffer.position(0);

            // Escreve os bytes do texto no arquivo
            rwBuffer.put(text.getBytes(), 0, text.getBytes().length);

            // Como o acesso é não bloqueante, neste caso é forçada
            // a efetivação escrita caso esteja pendente
            rwChannel.force(true);

            // Encerra canal de comunicação
            rwChannel.close();

            // Destrói o objeto representante da memória alocada 
            rwBuffer.clear();

            System.out.println("Concluída a escrita com sucesso: " + text);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public void readText() {

        byte[] bytes = null;
        String text = null;
        FileChannel rwChannel = null;
        MappedByteBuffer rwBuffer = null;

        try {

            // Abre canal de comunicação
            rwChannel = new RandomAccessFile("c:/temp/datafile.txt", "rw").getChannel();

            // Aloca uma fatia bytes para guardar o texto a partir do canal do arquivo
            rwBuffer = rwChannel.map(FileChannel.MapMode.READ_WRITE, 0, rwChannel.size());

            // Coloca o ponteiro na posição ZERO da memória mapeada
            rwBuffer.position(0);

            // Vetor para leitura
            bytes = new byte[(int) rwChannel.size()];

            // Lê os bytes do texto no arquivo
            rwBuffer.get(bytes, 0, bytes.length);

            // Converte bytes para texto
            text = new String(bytes);

            // Encerra canal de comunicação
            rwChannel.close();

            // Destrói o objeto representante da memória alocada 
            rwBuffer.clear();

            System.out.println("Concluída a leitura com sucesso: " + text);
           

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

domingo, 11 de dezembro de 2011

Java - Vetor simples

A classe a seguir pode ser escrita em Java para testar a criação de vetores por três formas. O tipo utilizado é int, mas você pode adaptar para qualquer outro tipo simples ou complexos. Os objetos complexos quando criados, podem exigir um pouco mais de domínio para você destruí-los da memória, enquanto os simples são destruídos automaticamente.

public class TesteVetor {

    public static void main(String[] args) {

        TesteVetor t = new TesteVetor();

        System.out.println("Iniciar teste A:\n");
       
        t.testaVetorA();

        System.out.println("\nIniciar teste B:\n");
       
        t.testaVetorB();

        System.out.println("\nIniciar teste C:\n");
       
        t.testaVetorC();
       
    }

    public void testaVetorA() {

        // Declara vetor e aloca 10 vezes um espaço de int na memória
        int [] vetorA = new int[10];

        // Preencher cada endeço do vetor (inicia com 0)
        for (int endereco = 0; endereco < vetorA.length; endereco++) {
            vetorA[endereco] = (endereco + 1);
        }

        // Exibe os dados do vetor A
        for (int endereco = 0; endereco < vetorA.length; endereco++) {
            System.out.println("Vetor A -> Endereço: " + endereco + " - Valor: " + vetorA[endereco]);
        }

    }

    public void testaVetorB() {

        // Declara vetor, faz alocação e preenchimento de uma só vez
        int [] vetorB = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

        // Preencher cada endeço do vetor (inicia com 0)
        for (int endereco = 0; endereco < vetorB.length; endereco++) {
            vetorB[endereco] = (endereco + 1);
        }

        // Exibe os dados do vetor B
        for (int endereco = 0; endereco < vetorB.length; endereco++) {
            System.out.println("Vetor B -> Endereço: " + endereco + " - Valor: " + vetorB[endereco]);
        }
               
    }

    public void testaVetorC() {

        // Declara vetor B, faz alocação e preenchimento de uma só vez
        int [] vetorB = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};


        // Declara vetor C e cria conteúdo a partir da clonagem do vetor B
       
int [] vetorC = vetorB.clone();

        // Exibe os dados do vetor B
        for (int endereco = 0; endereco < vetorC.length; endereco++) {
            System.out.println("Vetor C -> Endereço: " + endereco + " - Valor: " + vetorC[endereco]);
        }
               
    }

}

Oracle - Cruzando dados com SQL

Uma das utilidades principais do SQL é sua capacidade de cruzar grandes volumes de dados de duas ou mais fontes. Sem o SQL, este trabalho seria árduo para analistas e desenvolvedores porque teriam preocupações como realizar varreduras registro-por-registro.

Como exemplo, vamos usar duas tabelas consideradas como fontes de dados:

       GRUPO_A - Com a coluna chamada ELEMENTO do tipo numérico
       GRUPO_B - Também com uma coluna chamada ELEMENTO do tipo numérico

A partir destas tabelas, é possível realizar os seguintes relacionamentos:

1) Procurar elementos comuns as tabelas GRUPO_A e GRUPO_B:

       SELECT
         GRUPO_A.ELEMENTO
       FROM
         GRUPO_A
         , GRUPO_B
       WHERE
         GRUPO_A.ELEMENTO = GRUPO_B.ELEMENTO

       Nota: Os registros comuns aos grupos A e B são buscados pela cláusula WHERE com o uso do operador de igualdade "=".

2) Procurar elementos que existem apenas no GRUPO_A:

       SELECT
         GRUPO_A.ELEMENTO
       FROM
         GRUPO_A
         , GRUPO_B
       WHERE
         GRUPO_A.ELEMENTO = GRUPO_B.ELEMENTO (+)
         AND GRUPO_B.ELEMENTO IS NULL

       Nota: Os registros apenas existentes no grupo A são buscados pela cláusula WHERE com o uso do operador de igualdade "=", com "(+)" para trazer tudo de A e de B apenas quando encontrar e o filtro "IS NULL" aplicado na coluna elemento de B para mostrar tudo de A sem correspondente em B.

3) Procurar elementos que existem apenas no GRUPO_B:

       SELECT
         GRUPO_B.ELEMENTO
       FROM
         GRUPO_B
         , GRUPO_A
       WHERE
         GRUPO_B.ELEMENTO = GRUPO_A.ELEMENTO (+)
         AND GRUPO_A.ELEMENTO IS NULL

       Nota: Os registros apenas existentes no grupo B são buscados pela cláusula WHERE com o uso do operador de igualdade "="; mais o uso de "(+)" para trazer tudo de B e de A apenas quando encontrar; e o filtro "IS NULL" aplicado na coluna elemento de A para mostrar tudo de B sem correspondente em A.

Existem outras alternativas para relacionar dados com o SQL, mas todas estas requerem um pouco mais de escrita. Caso tenha curiosidade, procure saber mais sobre INNER JOIN, LEFT JOIN e RIGHT JOIN, EXISTS e NOT EXISTS como palavras do SQL.

sexta-feira, 9 de dezembro de 2011

PL/SQL - Comando simples

Para executar qualquer comando PL/SQL é preciso no mínimo iniciar com um comando BEGIN e finalizar com um END. Exemplo:

       BEGIN
         -- Call function
       END;

Se você fizer uma chamada a uma procedure, siga a mesma instrução:

       BEGIN
         PRC_EXEC();
       END;

SQL - Identificar registros duplicados

Para identificar cadastros duplicados, é necessário saber em quais atributos se basear para definir uma chave de exclusividade do registro.

No exemplo a seguir, o cadastro é uma tabela de empregados. Há o pressuposto de que não há unique ou primary key definidas para a tabela, desta maneira, é possível um empregado ter mais de um cadastro na tabela EMPREGADOS.

A query a seguir mostra  os empregados repetidos pelo CPF e número de repetições superiores a um.

       SELECT
         E.CPF, COUNT(1) NUM_CADASTROS
       FROM 
         EMPREGADOS E
       GROUP BY
         E.CPF
       HAVING COUNT(1) > 1

A cláusula HAVING restringe o agrupamento de E.CPF a ocorrências maior do que um.

quarta-feira, 7 de dezembro de 2011

Procurar SQL pobres

Nem sempre é possível manter o banco de dados livre da má utilização de seus recursos por parte de programas como aplicações externas, usuários diretos ou rotinas particulares agendadas para execução nativa no banco de dados. 

Esta condição de "nem sempre será possível" independe da qualidade dos profissionais usuários do banco de dados, por isso não é construtivo culpá-los e nem mesmo exigir de todos o domínio das boas práticas de banco de dados, todavia, é necessário envolvê-los num processo contínuo de capacitação.

As querys a seguir fazem alguns ranks importantes para apoiar a descoberta de SQL problemáticos sobre o banco de dados. Nem tudo o que aparecer no rank será um problema, por isso é necessário interpretar cada situação.

1) A query a seguir verifica os 10 comandos mais executados
 
SELECT
  SQL_TEXT
  , EXECUTIONS
FROM (
  SELECT
    SQL_TEXT
    , EXECUTIONS
    , DENSE_RANK() OVER (ORDER BY EXECUTIONS DESC) EXEC_RANK
  FROM V$SQL
)
WHERE EXEC_RANK <= 10

2) A query a seguir verifica os 10 comandos que mais fazem leituras em disco (I/O) 

SELECT SQL_TEXT, DISK_READS FROM (
  SELECT
  SQL_TEXT
  , DISK_READS
  , DENSE_RANK() OVER (ORDER BY DISK_READS DESC) DISK_READS_RANK
  FROM V$SQL
)
WHERE DISK_READS_RANK <= 10

3) A query a seguir verifica os 10 comandos que mais fazem leituras lógicas
 
SELECT SQL_TEXT, BUFFER_GETS FROM (
  SELECT
  SQL_TEXT
  , BUFFER_GETS
  , DENSE_RANK() OVER (ORDER BY BUFFER_GETS DESC) BUFFER_GETS_RANK
  FROM V$SQL
)
WHERE BUFFER_GETS_RANK <= 10

sábado, 19 de novembro de 2011

Iniciando em Java - Parte três (final)

Dando sequência a parte dois do Iniciando em Java, na públicação anterior, você aprendeu sobre o Eclipse e ainda sobre como definir a versão do JRE do Java 7 para usar como base para criação, compilação e execução de seus projetos.

Agora vamos criar o primeiro projeto de exemplo. Siga os passos:

Passo 1 - Abra o Eclipse e selecione o workspace padrão para seus projetos.

Passo 2 - Com o Eclipse aberto, clique nos menus "File"->"New"->"Java Project".

Passo 3 - Informe "Exemplo_001" como o nome do projeto, selecione "Use default JRE (currently 'jdk1.7.0_01')" em JRE e observe em "Use default location" que a pasta do projeto será criada dentro do workspace informado com o nome do projeto. Clique no botão "Finish".

Figura 1

Passo 4 - A estrutura do seu projeto inicial foi criada, observe na janela "Package Explorer". Clique duas vezes sobre a estrutura e observe os itens "src" e "JRE System Library [jdk1.7.0_01]". O seu ponto de partida, para criar as arquivos Java, deve ser o item "src". Este item é um pacote Java, semelhante a um diretório Windows onde você pode ter subpacotes para organizar os arquivos fonte do Java.

Figura 2

Passo 5 - Agora crie um classe Java dentro do pacote "src" com um clique no botão direito do mouse sobre "src", exiba o menu e clique em "New"->"Class".

Figura 3

Passo 6 - Informe "ClassePrincipal" como nome da classe, em "Which method stubs would you like to create?", marque a opção "public static void main(String[] args)" e clique no botão "Finish".

Figura 4

Passo 7 - Veja na janela de edição de código a estrutura básica de sua classe com o método "main" (prinicpal) já escrito pelo Eclipse para você quando você optou por criá-lo junto com a classe. Este método é reconhecido pela JRE como o ponto-de-partida quando a classe é executada e a sua composição sempre será desta maneira. Agora chegou de cliques, daqui em diante você fará o resto com códigos próprios.

Figura 5

Passo 7 - Atualize a classe com o seguinte código:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ClassePrincipal {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub

  // Exibe texto para capturar seu nome
  System.out.println("Informe o seu nome:");
  
  // Declare variável e cria uma conexão com o streaming (fluxo) do teclado
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  
  // Declare variável para capturar o nome 
  String nome = null; 
  
  // Tenta ler o nome
  try {
   nome = br.readLine();
  } catch (IOException e) {
   System.err.println("Erro ao tentar ler nome");
   System.exit(1);
  }
  
  System.out.println("Bom trabalho: " + nome);
  
 }

}

Passo 7 - Clique dentro do método main, depois pressione "Alt"+"Shift"+"X" e depois pressione apenas "J". Este é atalho é para você executar seu código, mas se você clicar dentro do método main e depois acessar os menus "Run"->"Run As"->"Java Application", obterá o mesmo resultado.

Passo 8 - Vá na janela auxiliar "Console", digite o seu nome e pressione "Enter". Pronto, você acaba de testar seus primeiro exemplo.

Notas:  

É importante notar os comentários de linha ao longo do código, eles são iniciados por "//", pois explicam o que cada instrução faz.

O Eclipse ainda não foi totalmente adaptado para o Java 7, por isso, alguns recursos como digitar para autocompletar não funcionarão muito bem, porém isso não prejudica em nada a utilização para aprendizado. Certamente a comunidade do Eclipse em breve lançará um Eclipse final para você explorar todos os seus recursos produtivos no Java 7.

quarta-feira, 16 de novembro de 2011

Iniciando em Java - Parte dois

Na primera parte desta publicação transcorremos sobre a história do Java até a instalação do JDK. Agora, vamos seguir com a instação do Eclipse.

Instalação e primeira navegação pelo Eclipse

Após concluir o download do Eclipse, siga os seguintes passos:

Passo 1 - Descompacte o conteúdo do arquivo eclipse-SDK-3.7-win32.zip em c:\eclipse. Após descompactar, você pode abrir o programa a partir do arquivo c:\eclipse\eclipse.exe. Crie um atalho se preferir.

Passo 2 - Abra o Eclipse. Uma janela será aberta conforme a figura 1 para você poder selecionar um espaço de trabalho ou manter o espaço padrão. O espaço de trabalho (workspace) do Eclipse é um diretório de onde seus projetos passarão a ser agrupados. Clique no botão "OK" para seguir.

Figura 1

Passo 3 - Na primeira abertura, o Eclipse poderá mostrar uma janela conforme a figura 2 para a instalação do Android SDK. Clique no botão "Cancel" para seguir.

Figura 2

 Passo 3 - Uma janela de boas-vindas será exibida conforme a figura 3. Agora clique no ícone "Workbench" (está do lado direito-superior) para fechar a janela de boas-vindas.

Figura 3

Agora você abriu o Eclipse para iniciar seus projetos.

Figura 4

A figura 4 mostra uma síntese de cada parte do ambiente de desenvolvimento:
  • Barra de títulos: São os menus disponíveis para acessar os recursos do Eclipse.
  • Barra de ferramentas: São atalhos com as funções mais corriqueiras do dia-a-dia do programador.
  • Perspectivas: Oferece visões preformatadas de acordo com o contexto de trabalho desejado. Se você deseja programar códigos normais, use a perspectiva Java, caso desejar executar cada linha de código, use a perspectiva Debug e assim por diante.
  • Project Explorer: Feito para você navegar em seus projetos, pastas, pacotes, classes, interfaces e outros itens de um projeto de forma parecida com a de um navegador.
  • Editor de códigos: Espaço para você exibir, editar e criar novos arquivos fontes do seu projeto. Normalmente é utilizado para geração de códigos fontes de uma aplicação.
  • Janelas opcionais: Espaço reservado para janelas de menor relevância, mas eventualmente úteis.
  • Janelas auxiliares: Espaço reservado para janelas auxiliares como console de saída de logs, lista de tarefas em execução, históricos etc.

Configurar o JRE do Eclipse

Uma configuração importante no Eclipse é a escolha da versão do JRE para compilar e executar o seu projeto.

Como o JDK é o kit de desenvolvimento já explicado anteriormente, vamos informá-lo como o JRE padrão para o Eclise. Siga os passos a seguir:

Passo 1 - Na barra de títulos, acesse "Windows"->"Preferences".

Passo 2 - Ao lado esquerdo da janela, clique abra os itens "Java"->"Installed JREs".

Passo 3 - Adicione um novo JRE a partir de um clique no botão "Add".

Passo 4 - Selecione a opção "Standard VM" e clique no botão "Next".

Passo 5 - Clique no botão "Directory" e informe a pasta de instalação do JDK 7.

Passo 6 - Clique no botão "Finish" para adicionar o JRE a lista do Eclispe.

Passo 7 - Marque apenas o JRE adicionado agora.

Passo 9 - Remova qualquer outro JRE.

Passo 10 - Clique no botão "OK" para encerrar a configuração.

Continuarei com este artigo na parte três desta publicação. Veja aqui.

sábado, 5 de novembro de 2011

Iniciando em Java - Parte um

Breve história da linguagem

O Java é uma linguagem de programação orientada a objeto começada em 1991 por engenheiros da Sun, liderados por Patrick Naughton e James Gosling (conhecido como O Cara da Sun e gênio da computação presente em todos os lugares), para a criação de uma linguagem de programação que pudesse ser utilizada em pequenos equipamentos como comutadores de TV-a-cabo. Os dispositivos não tinham grande capacidade de processamento e memória, ainda cada fornecedor podia escolher unidades de processamento central (CPU) diferentes. Era importante não criar uma linguagem presa a uma única arquitetura e este projeto recebeu o nome de "Green".

Diante o desafio, os engenheiros ressucitaram o modelo de linguagem chamada UCSD Pascal criada para executar pseudo-código em uma máquina virtual. Dai em diante, adotaram uma linguagem portável que gerava código intermediário (bytecodes) para uma máquina hipotética. Esta linguagem recebeu alguns nomes, mas finalmente passou a se chamar Java e sua máquina hipotética, Java Virtual Machine.

A UCSD Pascal era baseada em procedimentos, mas os engenheiros da Sun tinham bastante experiência em UNIX e C++, por isso incorporaram no Java a orientação a objeto e sintaxe simplificada do C++.

Gosling disse em meados de 1994 "Nós podíamos elaborar um navegador bom de verdade. Isso era uma das poucas coisas do processo cliente/servidor que precisava de algumas das coisas esquisitas que havíamos feito: neutralidade de arquitetura, tempo real, confiabilidade, segurança - questões não terrivelmente importantes para o mundo das estações de trabalho. Assim construímos um navegador". Este navegador foi o HotJava, pensado por seus elaboradores Patrick Naughton e Janathan Payne, mas a maior novidade foi a capacidade de interpretar bytecodes intermediários através do que hoje conhecemos por applets. Em 1996, a Netscape lançou o navegador Netscape 2.0 com capacidade para Java e a partir deste acontecimento o Java foi amplamente difundido para conectar o usuário a informação em qualquer plataforma como uma linguagem meio e não fim.

O Java passou por várias revisões desde seu lançamento, dentre as versões utilizadas em grande escala estão: 1.2, 1.3, 1.4, 1.5, 1.6 e em 07-Julho-2011, foi lançado oficialmente o Java 7.

Recursos para download

Este material pretende apresentar o uso da linguagem Java 7 em um computador convencional com sistema operacional Windows, mas se você for um usuário de computador muito experiente, pode baixar os recursos a seguir para a sua plataforma. É necessário fazer o download dos seguintes recursos:
  1. Kit para desenvolvimento Java SE 7 (versão padrão)
  2. Ambiente de desenvolvimento integrado Eclipse Indigo R
Nota: O kit de desenvolvimento Java SE contém todo o ambiente necessário para a criação e execução de aplicações Java, a incluir a máquina virtual Java (JVM), o compilador Java, as APIs do Java e outras ferramentas utilitárias para uma melhor funcionalidade. Com isso, em um simples bloco de notas (notepad) você pode escrever seus códigos e compilar, mas a menos que você seja um estudante na faculdade, recomendo o uso do Eclipse por se tratar de uma ferramenta para facilitar, tornar produtiva e segura a codificação em Java.

Instalar o Java SDK

Após concluir o download do JDK, siga os seguintes passos:

Passo 1 - Execute o arquivo de instalação baixado e a janela da figura 1 será aberta:

Figura 1 
 
Passo 2 - Clique no botão "Next" para seguir, uma nova janela será exibida conforme a figura 2:

Figura 2

Passo 2 - Se quiser trocar o diretório de instalação do SDK, clique no botão "Change" e realize a mudança. Clique no botão "Next" para seguir, uma nova janela será exibida conforme a figura 3:

Figura 3

Passo 3 - Esta janela exibirá a evolução da instalação do JDK (Java Development Kit) e ao final será mostrada automaticamente a janela da figura 4:

Figura 4

Passo 4 - Nesta janela, você pode configurar também onde será instalado o JRE (Java Runtime Edition para rodar sua aplicação compilada) se clicar no botão "Change". Clique no botão "Next" para seguir, uma nova janela será exibida conforme a figura 5:

Figura 5

Passo 5 - Esta janela exibirá a evolução da instalação do JRE e ao final será mostrada automaticamente a janela da figura 6:

Figura 6

Passo 6 - Agora você pode finalizar a instalação se clicar no botão "Finish". Caso desejar registrar o produto instalado no site da Oracle, clique antes no botão "Product Registration Information".

Configurar variáveis de ambiente

Um das praticas padrões após a instalação do Java no Windows é a configuração das variáveis de JAVA_HOME, PATH e CLASSPATH.

Para acessar as variáveis de ambiente:

Passo 1 - clique em "Iniciar"->"Painel de Controle"->"Sistema"->"Configurações avançadas do sistema". Uma janela com muitas abas será aberta, mas a aba "Avançado" deve estar visível;

Passo 3 - clique em "Variáveis de Ambiente". Um nova janela será aberta com duas listas de variáveis. A primeira lista são as variáveis de ambiente pessoal, ou seja, do usuário corrente. A segunda lista, são as variáveis do sistema, ou seja, vale para todos os usuários. Vamos trabalhar sobre estas variáveis para a configuração valer para o sistema todo;

Passo 4 - clique em "Novo" e informe JAVA_HOME para o nome da variável e a pasta de instalação do JDK como valor da variável. Clique em "OK" para confirmar. No meu exemplo de instalação, o JDK foi instalado em C:\Program Files\Java\jdk1.7.0_01;

Passo 5 - clique em "Novo" e informe CLASSPATH para o nome da variável e ".;" (ponto mais vírgula sem as aspas) como o valor da variável. . Clique em "OK" para confirmar;

Passo 6 - procure e marque a variável PATH, clique em "Editar" e adicione ao seu valor atual ";%JAVA_HOME%\bin" (sem aspas e o ponto e vírgula é um separador que deve constar entre cada path). . Clique em "OK" para confirmar.

Passo 7 - feche as janelas abertas através de cliques em seus botões "OK".

Notas:  

A variável de ambiente JAVA_HOME é utilizada para abreviar a identificação do diretório de instalação do Java. Em nosso caso, usamos o JDK, mas para um usuário final que apenas executa as aplicações, o caminho desta variável deve ser o diretório de instalação do JRE.

A variável de ambiente CLASSPATH é utilizada para indicar para a máquina virtual como esta deve priorizar a leitura das classes utilizadas como dependências do aplicativo a executar. Indicamos apenas para buscar primeiramente no pacote local ao informar "." (sem aspas).

Por último, a variável de ambiente PATH é utilizada pelo Windows para encontrar um executável diretamente sem a necessidade de informar a sua localização, pois o Windows priorizará a busca do executável nos caminhos informados no PATH.

Continuarei com este artigo na parte dois desta publicação. Veja aqui.

domingo, 26 de junho de 2011

Orientação essencial para o iniciante de TI

Caro leitor, seja bem-vindo.

O mercado de Tecnologia da Informação (TI) de hoje exige do profissional múltiplas habilidades e conhecimentos sobre um horizonte de ferramentas de análise, documentação, desenvolvimento e controle. Tanta exigência põe à perder o foco dos profissionais recém iniciados. O horizonte à explorar, costuma ser desmotivador para os iniciantes, principalmente quando levada em conta a existência de ondas tecnológicas geradas pela competição de empresas e pelo acentuado consumo de tecnologias.
 
Para não se perder, o estudante ou profissional iniciante, deve aspirar por uma carreira própria e definir uma meta pessoal inegociável para tornar-se um especialista de destaque. Defina a sua meta e em seguida desenvolva competências para atender as demandas de trabalhos ao longo de sua trajetória.

Quanto a competência, esta é composta pelo trio: conhecimento, habilidade e atitude. Vamos esclarecê-lo:
  • Conhecimento: está relacionado ao saber. Esse é qualquer aprendizado sobre sociedades, economias, governos, ciências e tecnologias adquirido de muitas fontes como aulas, livros, revistas, jornais etc relacionados a carreira. O conhecimento muitas vezes é confundido com a capacidade de memória de fatos e dados apenas, mas é um erro achar isso, pois o conhecimento para a competência deve ter função no exercício de um serviço ou desenvolvimento de um produto.
  • Habilidade: qualidade relacionada ao fazer. Adquire-se com a prática de ferramentas indispensáveis para a realização do trabalho. A habilidade é a qualidade mais fácil para desenvolver dentre as demais qualidades da competência. De qualquer modo, a prática consome, testa, afirma e inspira o profissional ao conhecimento.
  • Atitude: qualidade comportamental do ser-humano, normalmente encontrada em ativistas, missionários, líderes, atletas etc. Não é possível produzir uma atitude genuína em um profissional, todavia é possível o estimular à uma boa atitude se o profissional estiver inserido dentro de um contexto correlato as suas crenças, valores e aspirações.
A receita para não se frustrar na área de TI é primeiramente tocar sua própria carreira sem sofrer desvios por causa das ondas de mercado. Fortaleça o traço da sua carreira com definição de objetivos anuais e no mínimo semestrais. Periodicamente, reflita sobre as formas de realizar seus objetivos dentro do cenário real.

No mais, desenvolva a capacidade de lidar com adversidades sem reclamar por estar em pleno exercício de sua carreira.

Cordialmente.

Wiliam Silva