wpjr2’s Weblog

Artigos e tutoriais úteis

Arquivo para Abril 28th, 2008

Aplicativos portáteis no pendrive

Escrito por wpjr2 em Abril 28, 2008

Graças ao crescimento do tamanho e à preços mais acessíveis, os pendrives estão ficando com capacidade maiores e preços menores. Graças a isto, diversos aplicativos estão sendo disponibilizados para a execução direto do pendrive, possibilitando assim a execução destes de qualquer PC conectado ao pendrive.

As aplicações variam de simples editores de texto a pacotes completos (OpenOffice, concorrente do MS Office) e de sistemas operacionais inteiros (Linux em pendrive, Mac OS, Windows Vista, etc.).

Segue abaixo alguns links úteis sobre estes aplicativos:

Inclusive é possivel instalar um ambiente Java completo em um pendrive (JDK + Eclipse/NetBeans + Tomcat) e utilizá-lo em qualquer máquina.

Uma das grandes vantagens dos aplicativos Java em geral é que estes não requerem instalação na máquina destino, já que se pode executá-los em forma de JAR (JAR executável).

Enviado em Aplicativos | Tagged: , | 1 Comentário »

Obtendo as propriedades do sistema operacional

Escrito por wpjr2 em Abril 28, 2008

Além das propriedades de sistema da máquina virtual, é possível obtermos propriedades específicas de sistema operacional (Windows, Linux, Solaris, Mac OS, etc.).

Exemplo de uma classe que obtëm as propriedades de ambiente:

import java.util.Map;
import java.util.Set;
public class GetEnvExemplo {
  public static void main(String[] args) {
    // obtendo o mapa de propriedades do ambiente (SO)
    Map<String, String> mapa = System.getenv();

    // obtendo as chaves
    Set<String> chaves = mapa.keySet();

    // iterando sobre as chaves
    for (String s : chaves){
      System.out.println(s + " : " + System.getenv(s));
    }
  }
}

Listagem das propriedades:

PROCESSOR_ARCHITECTURE : x86
LOGONSERVER : \\HERMES
HOMEDRIVE : Z:
TNS_ADMIN : C:\Local\Oracle10g\network\ADMIN
NUT_SUFFIXED_SEARCHING : 1
USERDNSDOMAIN : ACER
SESSIONNAME : Console
HOMEPATH : \
DB2INSTANCE : DB2
TMP : C:\DOCUME~1\wpjr\LOCALS~1\Temp
windir : C:\WINDOWS
CLASSPATH : C:\PROGRA~1\IBM\SQLLIB\java\db2java.zip;C:\PROGRA~1\IBM\SQLLIB\java\db2jcc.jar;C:\PROGRA~1\IBM\SQLLIB\java\sqlj.zip;C:\PROGRA~1\IBM\SQLLIB\java\db2jcc_license_cu.jar;C:\PROGRA~1\IBM\SQLLIB\bin;C:\PROGRA~1\IBM\SQLLIB\java\common.jar
PROCESSOR_IDENTIFIER : x86 Family 6 Model 15 Stepping 11, GenuineIntel
TISDIR : C:\Program Files\Rational\common
HOME : Z:\
SystemDrive : C:
USERPROFILE : C:\Documents and Settings\wpjr
RATL_RTHOME : C:\Program Files\Rational\Rational Test
PATHEXT : .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
CommonProgramFiles : C:\Program Files\Common Files
NUMBER_OF_PROCESSORS : 2
ComSpec : C:\WINDOWS\system32\cmd.exe
COMPUTERNAME : FERRARI
OS : Windows_NT
PERL5LIB : C:\Local\Oracle10g\perl\5.8.3\lib\MSWin32-x86;C:\Local\Oracle10g\perl\5.8.3\lib;C:\Local\Oracle10g\perl\5.8.3\lib\MSWin32-x86;C:\Local\Oracle10g\perl\site\5.8.3;C:\Local\Oracle10g\perl\site\5.8.3\lib;C:\Local\Oracle10g\sysman\admin\scripts;
USERNAME : wpjr
CLIENTNAME : Console
INCLUDE : C:\PROGRA~1\IBM\SQLLIB\INCLUDE;C:\PROGRA~1\IBM\SQLLIB\LIB
IBMLDAP_ALTHOME : C:\Program Files\Rational\common\codeset
TEMP : C:\DOCUME~1\wpjr\LOCALS~1\Temp
USERDOMAIN : LAB_01
ALLUSERSPROFILE : C:\Documents and Settings\All Users
TMPDIR : C:\DOCUME~1\wpjr\LOCALS~1\Temp
PROCESSOR_LEVEL : 6
LIB : ;C:\PROGRA~1\IBM\SQLLIB\LIB
SystemRoot : C:\WINDOWS
APPDATA : C:\Documents and Settings\wpjr\Application Data
NUTSUFFIX : 1
Path : C:\Program Files\Java\jdk1.5.0_09\bin\..\jre\bin\client;C:\Program Files\Java\jdk1.5.0_09\bin\..\jre\bin;C:\Program Files\Java\jdk1.5.0_09\bin;C:\Local\Oracle10g\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\IBM\SQLLIB\BIN;C:\PROGRA~1\IBM\SQLLIB\FUNCTION;C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL;C:\Program Files\Rational\common;C:\Program Files\Rational\ClearCase\bin
JAVA_HOME : C:\Program Files\Java\jdk1.5.0_09
FP_NO_HOST_CHECK : NO
PROCESSOR_REVISION : 0f0b
HOMESHARE : \\wagner\home\Wpjr
ProgramFiles : C:\Program Files

Enviado em Curso de Programação Java | Tagged: , , , | Nenhum comentário »

Obtendo as propriedades do ambiente de execução

Escrito por wpjr2 em Abril 28, 2008

No último sábado, estudamos as principais classes da API padrão do JavaSE 6.0, contidas no pacote java.lang. Uma destas classes foi a System, que possui diversos métodos utilitários de sistema para aplicações Java. Um destes métodos, o getProperties(), provê diversas propriedades do ambiente de execução Java em um dado sistema.

Exemplo de como obter as propriedades de sistema da máquina virtual Java:

// obtedo as propriedades da JVM
Properties propriedades = System.getProperties();
// obtêem a lista de chaves
Set chaves = propriedades.keySet();
// obtêem cada chave
for (String chave:chaves){
  System.out.println(chave + " : " +
  propriedades.get(chave));
}

Listagem das propriedades:

java.runtime.name : Java(TM) 2 Runtime Environment, Standard Edition
sun.boot.library.path : C:\Program Files\Java\jdk1.5.0_09\jre\bin
java.vm.version : 1.5.0_09-b01
java.vm.vendor : Sun Microsystems Inc.
java.vendor.url : http://java.sun.com/
path.separator : ;
java.vm.name : Java HotSpot(TM) Client VM
file.encoding.pkg : sun.io
user.country : BR
sun.os.patch.level : Service Pack 2
java.vm.specification.name : Java Virtual Machine Specification
user.dir : M:\wpjr\workspace\CursoJavaOO
java.runtime.version : 1.5.0_09-b01
java.awt.graphicsenv : sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs : C:\Program Files\Java\jdk1.5.0_09\jre\lib\endorsed
os.arch : x86
java.io.tmpdir : C:\DOCUME~1\wpjr\LOCALS~1\Temp\
line.separator :

java.vm.specification.vendor : Sun Microsystems Inc.
user.variant :
os.name : Windows XP
sun.jnu.encoding : Cp1252
java.library.path : C:\Program Files\Java\jdk1.5.0_09\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.5.0_09\bin\..\jre\bin\client;C:\Program Files\Java\jdk1.5.0_09\bin\..\jre\bin;C:\Program Files\Java\jdk1.5.0_09\bin;C:\Local\Oracle10g\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\IBM\SQLLIB\BIN;C:\PROGRA~1\IBM\SQLLIB\FUNCTION;C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL;C:\Program Files\Rational\common;C:\Program Files\Rational\ClearCase\bin
java.specification.name : Java Platform API Specification
java.class.version : 49.0
sun.management.compiler : HotSpot Client Compiler
os.version : 5.1
user.home : C:\Documents and Settings\wpjr
user.timezone :
java.awt.printerjob : sun.awt.windows.WPrinterJob
file.encoding : Cp1252
java.specification.version : 1.5
java.class.path : M:\wpjr\workspace\CursoJavaOO\bin
user.name : wpjr
java.vm.specification.version : 1.0
java.home : C:\Program Files\Java\jdk1.5.0_09\jre
sun.arch.data.model : 32
user.language : pt
java.specification.vendor : Sun Microsystems Inc.
awt.toolkit : sun.awt.windows.WToolkit
java.vm.info : mixed mode
java.version : 1.5.0_09
java.ext.dirs : C:\Program Files\Java\jdk1.5.0_09\jre\lib\ext
sun.boot.class.path : C:\Program Files\Java\jdk1.5.0_09\jre\lib\rt.jar;C:\Program Files\Java\jdk1.5.0_09\jre\lib\i18n.jar;C:\Program Files\Java\jdk1.5.0_09\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.5.0_09\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.5.0_09\jre\lib\jce.jar;C:\Program Files\Java\jdk1.5.0_09\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.5.0_09\jre\classes
java.vendor : Sun Microsystems Inc.
file.separator : \
java.vendor.url.bug : http://java.sun.com/cgi-bin/bugreport.cgi
sun.io.unicode.encoding : UnicodeLittle
sun.cpu.endian : little
sun.desktop : windows
sun.cpu.isalist : pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86

Enviado em Curso de Programação Java | Tagged: , , | Nenhum comentário »

Redirecionamento do System.out e System.in

Escrito por wpjr2 em Abril 28, 2008

É possivel que, para algumas aplicações, os fluxos de entrada, de saída e de erro padrões precisam ser redirecionadas, por exemplo para arquivo (saída), teclado (entrada), etc. Por default, o fluxo de entrada aponta para o teclado, euquanto os fluxos de saída e de erro apontam para a tela ou console.

O redirecionamento do System.out e System.in pode ser feito de duas maneiras:
a) redefinindo o fluxo de saída de dados de ambos canais (out e err)
b) redefinindo na linha de comando a saída em arquivo

a) Redefinindo o fluxo

// cria os novos fluxos de saida para arquivo
FileOutputStream fosErr = new FileOutputStream("errors.txt");
FileOutputStream fosOut = new FileOutputStream("log.txt");
// define a impressão sobre os fluxos acima
PrintStream psErr = new PrintStream(fosErr);
PrintStream psOut = new PrintStream(fosOut);
// redefine os fluxos na classe System
System.setErr(psErr);
System.setOut(psOut);

Agora é só utilizar o System.out.println() e o System.err.println()
para escrever os dados de saída para os arquivos definidos acima.

b) Definindo na linha de comando

No momento da execução de uma classe Java, pode-se definir o arquivo
de saída através do caractere “>”. No exemplo abaixo, o System.out
está sendo definido para o arquivo output.log e a saída de erro
(System.err) para o arquivo error.log.

java MyClass >output.log 2>error.log

Posso tb especificar que não estarei utilizando a saída de erros
definida na classe System. Desta forma, posso passar o valor “/null”
para o parâmetro “2>”, conforme abaixo:

Java MyClass 2> /null

Segue abaixo o slide adicional sobre o tópico:

Enviado em Curso de Programação Java | Tagged: , , , | Nenhum comentário »

Curso Prog. Java: Projeto Banco Java em PDF

Escrito por wpjr2 em Abril 28, 2008

Acabei de fazer o upload de um arquivo PDF referente às apresentações do projeto de curso que estamos atualmente desenvolvendo no curso de programação Java da ETEG. Só lembrando que este arquivo é a útima versão do projeto de curso.

Nome do arquivo: ExerciciosProjetoBanco.zip

URL para o grupo no Google: http://groups.google.com/group/cursojavaoo

Enviado em Curso de Programação Java | Tagged: , , | Nenhum comentário »

Skype para JavaME

Escrito por wpjr2 em Abril 28, 2008

Já existe uma versão beta do Skype disponível para telefones celulares com a tecnologia JavaME. O Skype permite que ligações telefônicas entre pessoas seja realizado via VoIP (Voz sobre IP), além de outras funcionalidades como Chat, SMS, etc. Extendendo a sua popularidade em PCs, uma versão oficial para celulares está prestes a ser lançada.

Atualmente existem versões somente para 4 fabricantes: Nokia, Sony-Ericsson, Motorola e Samsung.

A Notícia: Link

Site de download da versão beta: Link

Enviado em JavaME | Tagged: , | Nenhum comentário »

Internacionalização e Localização em Software (Parte 1)

Escrito por wpjr2 em Abril 28, 2008

Extraído da Wikipedia (http://pt.wikipedia.org/wiki/Internacionaliza%C3%A7%C3%A3o_%28software%29)

Internacionalização e localização, em software, são processos de desenvolvimento e/ou adaptação de um produto, em geral softwares de computadores, para uma língua e cultura de um país. A internacionalização de um produto não fabrica o produto novamente, somente adapta as mensagens do sistema à língua e à cultura locais. Isto é importante porque permite que o desenvolvedor de software respeite as particularidades de cada língua e cultura de cada país.

Internacionalização também é escrita acronimamente como i18n, vindo da palavra inglesa internacionalization, onde se tomam a primeira e a última letra e o número de letras que contém a palavra; o mesmo é feito com localization escrito como L10n.

Os pontos fundamentais para internacionalização e localização incluem:

1. A língua, contendo a codificação do texto em diferentes sistemas de escrita (Alfabetos), diferentes sistemas numerais, scripts da esquerda-para-direita e scripts da direita-para-esquerda (por exemplo, para língua hebraica). Os sistemas atuais utilizam Unicode para solucionar problemas de codificação de caracteres. Contendo também a representação gráfica do texto, o áudio e os sub-títulos para vídeos.
2. O formato de data e tempo, incluindo diferentes calendários.
3. As diferentes formatações de números.
4. O fuso horário (UTC) de cada país para coincidir com a língua a ser internacionalizada.
5. Os números pré-definidos governamentalmente como: passaportes, RG, CPF.
6. Os padrões de números de telefones, endereço e códigos postais internacionais.
7. Os pesos e medidas de cada país.
8. O tamanho de papéis.
9. A moeda local.
10. Nomes e títulos locais.

Internacionalização vs. Localização

A diferença entre internacionalização e localização é somente fundamental. A internacionalização é uma adaptação de um produto para melhoramento e a localização é uma adição de características específicas de uma região. Os dois são evidentemente complementares.

Alguns dos elementos específicos da localização são: tradução lingüística, suporte a várias línguas, suporte a caracteres das línguas da Ásia oriental, símbolos, métodos de ordenação de listas, valores culturais e contexto social.

No desenvolvimento de software, depois de internacionalizado um produto, o termo localização se refere ao processo necessário para o produto internacionalizado esteja também pronto para mercados específicos.

Por esta razão pode-se falar que um produto internacionalizado satisfaz a comunidade internacional, mas não para um mercado específico. A preparação para um mercado específico é chamado de localização.

A Localização de Software

A localização de software é um processo de traduzir as mensagens que os usuários finais irão visualizar e de adaptá-las a fim de que sirvam uma cultura estrangeira. Este processo é um trabalho intensivo e requer frequentemente esforços significativos das equipes de desenvolvimento. Há ferramentas que podem simplificar o processo de localização. Vários projetos de software comerciais e de software livre começam sem a implementação da localização, ou para cortar custos ou para reduzir esforços já que para se fazer a internacionalização de um software é necessário que o tradutor ou localizador conheça e utilize o software e também, que domine a língua e conheça detalhes do país originário da língua a traduzir.

A localização de softwares também pode adaptar o software de uma cultura a outra. Durante a localização, algumas referências a história ou à cultura são substituídas à uma referência nativamente equivalente, que idealmente não mude o sentido da indicação.

Listagem de Locais (LOCALE) definidos (ISO 639 e ISO 639-2)