Java

Instalando o Java da SUN em seu Linux

Hoje vou ensinar um procedimento simples, mas bastante útil para os que assim como eu preferem instalar o Java que fica disponível no site http://java.sun.com/. A versão instalada será a JDK 1.6.0_13.

1) Após efetuar o download, entre no diretório onde salvou o arquivo e o torne executável:

root@slackware ~# chmod +x jdk-6u13-linux-i586.bin

Agora vamos executá-lo:

root@slackware ~# ./jdk-6u13-linux-i586.bin

Será exibida a licença do Java, pressione a tecla “q” e em seguida digite “yes” (se você quiser aceitar a licença claro ;-) ). Nesse ponto o java será descompactado. Ao final será solicitado que você tecle “Enter”.

Vamos criar um diretório em /usr para armazenar o nosso Java:

root@slackware ~# mkdir /usr/java

Agora vamos mover o java para lá:

root@slackware ~# mv jdk1.6.0_13 /usr/java/.

2) Criando as variáveis ambientes do Java:

Agora vamos criar o “profile” do java inserindo nele o conteúdo a seguir:

root@slackware ~# vi /etc/profile.d/java.sh

#!/bin/bash
#
# Configuracoes do Ambiente Java no Linux
#
# Autor: Wagner Santos
#        wagner@dotlinux.net

JAVA_HOME=”/usr/java/jdk1.6.0_13″
JRE_HOME=”$JAVA_HOME/jre”
CLASSPATH=”$JAVA_HOME:$JAVA_HOME/lib:$JRE_HOME/lib:.”
MANPATH=”$MANPATH:$JAVA_HOME/man”
JAVA_DOC=”$JAVA_HOME/docs”
PATH=”$JAVA_HOME/bin:$JRE_HOME/bin:$PATH”

export JAVA_HOME JRE_HOME CLASSPATH MANPATH JAVA_DOC PATH

Salve o arquivo e o dê a permissão de executável:

root@slackware ~# chmod +x /etc/profile.d/java.sh

Prontinho! Agora efetue um logout e um novo login no sistema, que já estará pronto para a utilização do Java!

Time zone x Linux x Java

Esta semana tive uma desagradável surpresa em meus servidores Linux que rodam aplicações Java. Como todo ano, o Brasil entra em horário de verão e oficialmente até o ano passado era o dia 12 de outubro. Sendo assim, desavisado sobre meu ambiente de produção que está localizado em São Paulo e foi instalado pelos administradores do data-center paulistano e que selecionaram na hora da instalação do sistema operacional o fuso-horário “America/São Paulo” e não “America/Recife” que é a cidade onde a empresa está sediada.

Na segunda-feira a surpresa, todas as lojas pegaram o famoso “horário de verão” então lá fomos nós setar os horários nos servidores mas não basta só isso, afinal quando acabar o horário de verão os servidores iriam atrasar em 1h. Porém tivemos a desgradável surpresa de que a Java Virtual Machine (JVM) ignora a hora do computador. Embora o horário “estivesse” correto a JVM adiantava em 1h, pesquisando descobrimos que a JVM usa o fuso para ajustar o relógio interno e ignora a hora da BIOS/Sistema Operacional.

Primeiro foi necessário setar o fuso do Sistema Operacional de forma correta. Em nosso ambiente de testes que roda CentOS 5.2 e 4.3 resolvemos com o “zic” através do comando:

# zic -l America/Recife

Lembrando que aqui você poderia colocar o seu fuso.

Já em produção temos Redhat 4 EL. Então o “zic” estava nos retornando o erro abaixo:

# zic -l America/Recife
“command line”, line 1: warning: hard link failed, symbolic link used

Então mais um pouco de pesquisa descobri que o Redhat tem um utilitário chamado “dateconfig” para configuração do fuso.

# dateconfig

Selecione seu fuso e dê Ok.

Lembrando que: Para fazer isso em produção pare os serviços da máquina, pois poderá afetar as suas aplicações que utilizam data/hora do servidor.