Quinta-feira, 17 Junho 2010

RedHatter convicto

Estou de casa nova !

Vejam meu novo email



Estou no time JBoss / Red Hat do Brasil com um super time, e para mim isso representa uma viagem que começou há mais de 12 anos, quando peguei o cd de incríveis 650 MB para instalar no meu Pentium (comprado com muito suor), o Sistema Operacional Red Hat Linux Marumbi da Conectiva. Depois comprava CDs na cheapbytes.com, tempos interessantes.

E foi em 1998 que começei a estudar e trabalhar com Java e Linux, tudo linha de comando, aquele programa gerenciador gráfico X, uau que fantástico, tinha o xeyes de entretenimento. E isso era um UNIX servidor rodando no meu Pentium. Opa, claro que tinha o windows NT server, que é acompanhado por alguns virus e falhas de segurança homéricas. E eu com meu linux, compilando meu próprio kernel, altos desafios para fazer o winmodem funcionar no linux. Isso após migrar serviços de FTP, SMTP, POP, etc de clientes que usavam novell para linux. Yeah !

Em 2000 em um projeto com EJB precisava testar o projeto, mas não tinham licença do weblogic 5 na época, então achei um tal de EJBoss com um logo de ET no site, que depois de muita configuração de xml funcionou na minha maquininha. Esse EJBoss (Coding the future) é bom mesmo.

E agora estou nesta companhia, fundada com os princípios de código livre e com tecnologias que uso há muito tempo (I am NOT the Mac guy).

O estado atual, a Red Hat é uma das empresas de TI no mundo que mais crescem, com 18% em 2008, 46% em 2009 e neste 1o trimestre cresceu mais do que no 1o trimestre de 2009.

Jim Whitehurst (Red Hat CEO) escreveu "Show me the money" onde diz que uma das maiores contribuições que a Red Hat fez é mostrar que é possível ganhar dinheiro com open source. Afinal de contas, todos temos contas para pagar.

Acredito que tenho um bom caminho a trilhar na Red Hat, com seus projetos e produtos líderes de mercado.

Tenho amigos com quem já trabalhei na Summa que estão na Red Hat como o Clebert Suconic, Edgar Silva, Bruno Rossetto e Rafael Benevides.

Falando em Summa, quero dizer o quanto particpar desta companhia foi gratificante para mim. Pude participar ativamente de trabalhos que hoje são projeção nacional e exemplos do uso de Java no mundo. Projetos como loterias (sistema de processamento de lotérico e financeiro), ADSL Brasil Telecom, DDA (Débito Direto Autorizado), entre outros.

Foram 8 anos onde trabalhei com um time de profissionais competentes e dedicados, onde fiz amigos e partilhei tantos bons momentos e happy hours :)

Digo muito obrigado por terem me aceitado a participar deste incrível time e acredito que consegui contribuir para alavancar não só novas oportunidades, mas também conquistar amigos.



Escrito por claudio at 3:17 AM categorizado por Linux e F/OSS

Tags: linux java

Segunda-feira, 5 Abril 2010

Análise e melhoria de um teste com GC

Motivado pela liberação do teste de threads, quiz fazer um pequeno teste, que ajude a analisar o funcionamento do Garbage Collector e como algumas alterações podem melhorar o desempenho.

Quando se fala em teste, existe muita discussão sobre a validade dos resultados.

Então já digo que este é um teste caseiro, para ter sua opinião, faça o teste em seu ambiente.

1) Teste

O teste de threads (NumThreads.java, projeto completo), lança todas as threads enumeradas no parametro, em que cada thread faz uma série de processamento matemático, cada thread pode repetir o processamento em uma quantidade determinada.

o fluxo de criaçao, coloca em um array, depois faz o start de cada thread, depois faz um join para esperar o processamento de todas as threads.

O start de cada thread não começa imediatamente, existe um barreira (CyclicBarrier) que aguarda o contador de todas as threads que foram iniciadas para que todas possam de fato entrar em operação juntas.

Em uma configuração default da JVM não consegui inicar com mais de 2700 threads, 2000 operações matemáticas por thread, ocorriam erros da JVM (OOME, ThreadDeath, Stackoverflow, etc.)

A minha máquina é um laptop toshiba, Core2 Duo T2400 1.83 GHz com 3 GB de RAM.

2) Monitoramento

O monitoramento foi feito usando o vmstat, jvisualvm, jmap
No caso do vmstat, coloquei a data como prefixo.

3) Resultado (1a bateria)

O teste foi iniciado com os seguintes parametros, que geralmente é o comum, onde configura-se apenas o tamanho máximo do heap. Depoi veremos o que se pode melhorar neste teste.

$ time java -Xmx2g -classpath build/WEB-INF/classes/:src/conf/:src/java/ br.com.claudius.threads.NumThreads 2700 5000 60

O tempo total, deve ser descontado 60s que usei como pausa antes das threads começarem de fato (3o parametro)

real 3m11.948s
user 2m14.612s
sys 1m40.354s

O tempo total foi de 2min11s ou 131s O que chama a atenção na configuração default é o tamanho do Stack de 320 kb, bem grande.

$ jinfo -flag ThreadStackSize 18610
-XX:ThreadStackSize=320

A configuração do heap (apenas a parte importante)

$ jmap -heap 18610
Server compiler detected.
JVM version is 16.0-b13

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 2147483648 (2048.0MB)
NewSize = 4194304 (4.0MB)
MaxNewSize = 4294901760 (4095.9375MB)
OldSize = 4194304 (4.0MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 16777216 (16.0MB)
MaxPermSize = 67108864 (64.0MB)

Um pedaço do vmstat durante a execução

2010-04-02 20:47:16 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
2010-04-02 20:47:16 r b swpd free buff cache si so bi bo in cs us sy id wa
...
2010-04-02 20:48:44 51 0 0 283440 81520 1825480 0 0 0 0 1131 934 61 36 3 0
2010-04-02 20:48:48 50 0 0 286032 81528 1811856 0 0 0 11 1230 1291 64 30 5 0
2010-04-02 20:48:52 109 0 0 259780 81528 1811324 0 0 0 5 1133 1579 58 36 5 0

Percebe-se que a "run queue" (coluna r) possui um alto número de tarefas aguardando um tempinho da CPU para processar alguma instrução.

Vejam um screenshot do visualgc ao fim do teste


<info>

O VisualGC é um plugin do VisualVM. Na versão atual do Java, o visualvm faz parte do download do java, mas é chamado de jvisualvm.

Durante o teste ocorreram 115 ações do GC na área YOUNG que duraram 3.306 ms, enquanto a área OLD com seus 1,3 GB ociosos.


VisualGC 1

4) Análise

O objetivo do teste é a JVM e não a aplicação, então nem vamos olhar na aplicação.

Sempre em uma análise do GC, é importante diminuir o impacto do tempo do GC na aplicação. Sempre que puder diminuir o tempo total do GC ajuda o throughput da aplicação.

Em uma análise óbvia, percebe-se que a área OLD está ociosa, enquanto existe atividade intensa na área YOUNG, então seria natural aumentar a área YOUNG para um tamanho grande. Aqui que costuma ocorrer um erro comum também, onde aumentar uma área é proporcional ao tempo de GC, pelo tamanho maior a ser varrido.

Por esta applicação ser orientada a CPU (muitas threads), processamento matemático, sem sincronização, sem rede, sem banco de dados, então é uma análise orientada para menor consumo de CPU e otimização do funcionamento do Garbage Collector.


5) Resultado (2a bateria)

Será feito uma otimização na invocação do comando java

$ time java -server -XX:+AlwaysTenure -XX:+UseConcMarkSweepGC -Xss64k -Xms2g -Xmx2g -classpath build/WEB-INF/classes/:src/conf/:src/java/ br.com.claudius.threads.NumThreads 2700 2000 10
Parametros adicionais:

Parametro
Explicação
-server Usa otimizações específicas para o modo de aplicações servidoras.
-XX:+AlwaysTenure Não usa espaços Survivors da área YOUNG, a promoção vai direto da YOUNG para OLD.
-XX:+UseConcMarkSweepGC Usa o algoritmo concorrente na área OLD e Paralelo na área YOUNG (-XX:+UseParNewGC)
-Xss64k Reserva 64 kb para o tamanho do stack de thread.
-Xms2g Aloca inicialmente o tamanho do heap para 2 GB
     
real 1m5.618s
user 0m51.967s
sys 0m38.598s

Percebe-se a melhoria no tempo de 66s.

Descontar 10s deste tempo final, pois na aplicação tem uma pausa de 10s antes de começar o teste.

O visualgc mostra uma melhoria significativa, onde ocorreram 86 ações do GC com duração da atividade de  GC em 836 ms.

VisualGC 2

Ao efetuar a mesma medição com o jstat, percebe-se uma melhoria marginal no tempo total do GC, mas com boa diminuição na quantidade de GC.

$ jstat -gcutil 1451 3s
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 0,00 54,22 0,08 11,30 71 0,799 0 0,000 0,799
0,00 0,00 81,01 0,08 11,30 75 0,808 0 0,000 0,808
Ao diminuir o tamanho do stack para 48k (o mínimo aceito pela JVM), o tempo do GC melhorou bem.
Com -Xss48k
$ jstat -gcutil 4265 3s
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 0,00 44,52 0,08 11,30 75 0,670 0 0,000 0,670
0,00 0,00 97,33 0,08 11,30 79 0,685 0 0,000 0,685

O comportamente da CPU mostrado pelo vmstat, mostra um uso bem mais modesto da CPU, veja a coluna r (run queue)

2010-04-05 00:40:14 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
2010-04-05 00:40:14 r b swpd free buff cache si so bi bo in cs us sy id wa
...
2010-04-05 00:40:53 24 0 0 1386056 249416 953668 0 0 0 0 1190 631 52 32 16 0
2010-04-05 00:40:56 7 0 0 1390532 249424 953660 0 0 0 4 1199 645 59 32 10 0
2010-04-05 00:40:59 18 0 0 1395652 249424 953500 0 0 0 0 1196 609 54 34 12 0

Nota 2: o VisualGC é um plugin do VisualVM (Tools -> Plugins -> Available Plugins)

5) Conclusão

No 2o teste foi percebido uma melhoria significativa no tempo total e com menos impacto na utilização da CPU.

Não foi feito um super mega tunning para este exemplo, mas mostrar que com uma boa análise, alguns testes, é possível observar o comportamento da aplicação e aplicar as otimizações no lugar certo.

Tente executar um teste e análise em seu ambiente.

6) FAQ ?

6.1) Você usou o G1 ?

Usei o algorítimo G1 mas o resultado foi inferior ao concorrente, mas o pior neste caso foi que a ferramenta jstat não consegue exibir os resultados das áreas de memória.

Warning: Unresolved Symbol: sun.gc.generation.0.space.1.capacity substituted NaN
Warning: Unresolved Symbol: sun.gc.generation.0.space.1.used substituted NaN
...
Warning: Unresolved Symbol: sun.gc.collector.0.time substituted NaN
Warning: Unresolved Symbol: sun.gc.collector.1.time substituted NaN
S0 S1 E O P YGC YGCT FGC FGCT GCT
� � � � 30,33 � � � � �

6.2) Porque aumentar o stack size da aplicação de teste para monitorar ?

Parece que as ferramentas gráficas jconsole e visualvm exigem um stack de tamanho maior para monitorar, caso contrário ocorre um erro

*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at ../../../src/share/instrument/JPLISAgent.c line: 806
Segmentation fault

isso é assunto para outro blog

6.3) Porque não aumentar o tamanho da área YOUNG (-XX:+NewSize)

Ao aumentar o tamanho da área YOUNG diminuiu a quantidade de GC, mas o tempo total do GC aumentou e isso trouxe uma performance inferior ao teste final. Nem sempre aumentar o tamanho da YOUNG beneficia a aplicação. Cada caso tem de ser analisado diferente.

Escrito por claudio at 11:23 AM categorizado por Java

Tags: java performance

Quinta-feira, 1 Abril 2010

Voltando para Brasilia + DOTNET Certified Instructor

Ahhh, finalmente posso dizer isso agora.

Depois de um ano na ponte aérea Brasília/São Paulo, estarei voltando a firmar meu trabalho em Brasília.

Nestas viagens frequentes a SP, aprendi muitas tecnologias e novas fronteiras para o potencial técnico. Mas o meu dever familiar falou mais alto e tenho de voltar para Brasília.

E veio ao encontro desta necessidade um desafio na minha carreira, onde vou participar de um novo time em Brasília de evangelistas DOTNET no time da Microsostet, onde irei atuar com clientes governamentais e com a comunidade FSF.

Fiquei contente de ver que tenho outros colegas com quem já trabalhei, que tenho certeza vão agregar muito no time do c# e tenho certeza que esse empreendimento tem tudo para dar certo.

Aproveitando, quero parabenizar neste primeiro de abril o aniversário de meus amigos Marcelo Ribeiro e Alexandre Jeong, saúde e sucesso.

Escrito por claudio at 12:14 AM categorizado por Diversos

Tags: java noticias

Sexta-feira, 26 Março 2010

Padrão JavaDTV no Brasil

Vamos votar no padrão Java para TV Digital no Brasil !
Resumo dos passos para a votação:

1. Acesse o link http://www.abntonline.com.br/consultanacional/default.aspx
2. Será apresentada uma lista de CB . Escolha ABNT - CEE85 - Televisão  Digital
3. O projeto da Norma 06 Vol. 4 e a errata N06 Vol. 1 serão apresentados;
4. Um cadastro de email e senha será requisitado. Com o cadastro feito, você estará apto a votar.
5. Vote com a opção "Aprovado sem restrição".

=================

Se vocês ainda não sabem, o Ginga-J em sua versão definitiva, tendo como base o JavaDTV,
foi finalmente aprovado internamente no Fórum SBTVD e agora está em fase de
consulta pública aberta na ABNT.

Gostaria de pedir a vocês o grande favor de divulgar, votar e pedir votos neste período
da consulta pública.

Isso significa a aprovacão definitiva pelo público da *inclusão do Java nos
padrões do Ginga e da TV Digital Brasileira*. Isso também dará força à divulgação
do Java perante a comunidade de TV Digital dos países da América Latina que
já adotaram nosso padrão, mas estão em dúvidas sobre o Ginga (e sobre o o Ginga-J).

Por último isso significa a definitiva aceitação do JavaDTV, especificação
open source criada pela Sun e pelo Fórum SBTVD como base e núcleo do
Ginga-J (a especificação JavaDTV completa pode ser obtida aqui:
http://www.forumsbtvd.org.br/materias.asp?id=200).

Qualquer pessoa pode votar na ABNT e os passos para isso estão descritos abaixo.

É preciso se cadastrar online na ABNT (com um email válido) e depois votar.

A pessoa pode participar se colocando como filiada de uma empresa, organização
ou mesmo universidade (no caso de estudantes).

Notem que a votação termina em 05/Abril, por isso é importante rapidez na divulgação.

------------------------------

----------------------------------------------------------------------------------


O projeto da Norma 06/ Vol. 4 (Ginga-J) está sob consulta nacional até o próximo dia 5/4.

Ou  seja, estão disponíveis para a apreciação da sociedade, onde esta poderá recomendar através
do voto a aprovação do texto.

Com o Ginga -J  finalmente votado e aprovado, todas as normas do Ginga estarão oficialmente
publicadas antes da Copa do Mundo, e o Java estará finalmente dentro do padrão de TV Digital
ISDB-T Internacional, adotado hoje pelo Brasil, Peru, Argentina, Chile e Venezuela.

Vamos participar dessa votação, votando "Aprovado sem restrição".

Passos para a votação:

1. Acesse o link http://www.abntonline.com.br/consultanacional/default.aspx
2. Será apresentada uma lista de CB . Escolha ABNT - CEE85 - Televisão  Digital
3. O projeto da Norma 06 Vol. 4 e a errata N06 Vol. 1 serão apresentados;
4. Um cadastro de email e senha será requisitado. Com o cadastro feito, você estará apto a votar.
5. Vote com a opção "Aprovado sem restrição".

Escrito por claudio at 9:23 PM categorizado por Java

Tags: java noticias

Segunda-feira, 19 Outubro 2009

Geração de dumps (thread e memory) no WebSphere 6.x

Segue uma dica de como extrair um dump de threads e memória do WebSphere, funciona tanto em unix como em windows.

Acessar a interface administrativa e configurar os parametros

Navegação

Servers -> Application Servers -> Server1 -> Process Definition -> Java Virtual Machine -> Generic JVM arguments
Parâmetro:
-Xdump:system+heap+java:events=gpf+throw+user,filter=java/lang/OutOfMemoryError,request=exclusive+prepwalk
Navegação:
Servers -> Application Servers -> Server1 -> Process Definition > Environment Entries
Parâmetros:
IBM_HEAPDUMP=true
IBM_HEAPDUMP_OUTOFMEMORY=true
IBM_HEAPDUMPDIR=c:\temp

Agora criar um atalho para facilitar o acesso ao script wsadmin, no diretório WAS_HOME/bin.

Windows

* _wsadmin_comm.bat
wsadmin -conntype SOAP -user admin -password senha_do_admin %*

Unix

* _wsadmin_comm.sh
wsadmin -conntype SOAP -user admin -password senha_do_admin $*

Crie scripts JACL (script baseado em TCL) para invocação dos comandos.

Memory Dump

* heapdump.jacl
set jvm [$AdminControl queryNames type=JVM,*]
$AdminControl invoke $jvm generateHeapDump
Thread dump
* threaddump.jacl
set jvm [$AdminControl queryNames type=JVM,*]
$AdminControl invoke $jvm dumpThreads

Para gerar os dumps basta invocar os comandos

_wsadmin_comm.sh -f heapdump.jacl

Veja no diretório especificado em IBM_HEAPDUMPDIR ou no AppServer01 se os arquivos foram gerados em um deles.

Depois use ferramental adequado para analisar os dumps (Eclipse Memory Analyzer, IBM Thread Dump Analyzer).

Escrito por claudio at 4:49 PM categorizado por Java

Tags: dicas java

Palestra Java vs .Net


Irei participar do evento "Java vs .Net", que irá ocorrer em Brasília no dia 24 de outubro e 07 de novembro.

Veja o site para maiores informações.

Vou fazer uma palestra "Linguagem de programação Java e certificação" e participar de um debate com outro palestrante representante da tecnologia .Net.

Achei um momento oportuno de participar de uma discussão como esta, pois parece ainda existir dúvidas sobre a adoção da tecnologia Java ou .Net. Sem dúvida JAVA !

Não vou repetir o que já existe na internet sobre a discussão sobre Java x .Net. Pesquisem e testem por sí mesmos.

O que é importante é que a tecnologia Java é composto por um forte trio: plataforma, linguagem, bibliotecas. Que catapultaram Java para a linguagem de programação mais usada no mundo.

trabalhei com diversos clientes e sistemas de uso massivo, e todos eles usavam Java (óbvio) e Unix no servidor, pelo simples fato da plataforma windows não conseguir escalar (depoimento do próprio cliente e por experiência própria) e por consequência o .net.


Vejo algumas razões para alguém adotar .Net:

  • Não querer/poder desprender da tecnologia .Net
  • API para desktop e integração com o windows
  • Contratos de fornecimento de software combinado em larga escala

Quem tive maior curiosidade participe do evento, confira a programação de palestras.

Outros renomados palestrantes e profissionais do mundo Java irão participar do evento, assim como personalidades do mundo .net.

Conheço alguns dos palestrantes: Daniel de Oliveira (DFJUG), João Paulo Viragine (RedHat), Rafael Benevides (RedHat), Marcelo Ancelmo (Lado Servidor), Paulo Jeronimo (Lado Servidor).

Veja a chamada do evento:

O evento “Plataforma Java x Plataforma .NET - Edição DF 2009” tem como objetivo promover debates técnicos abordando diversos temas. Na edição DF 2009, o evento conta com palestrantes de alto nível técnico para representarem as plataformas Java e .NET. Diversos parceiros estão apoiando o evento, incluindo empresas, grupos de usuários, instituições de educação superior, revistas e Web Sites. O evento é beneficente e todas as inscrições representam doações para um projeto social.



Escrito por claudio at 4:25 PM categorizado por Java

Tags: java noticias palestra

Sexta-feira, 2 Outubro 2009

An internal error occurred while showing an internal error

An internal error occurred while showing an internal error.

Eclipse Internal Error

Tem coisas que só o Eclipse faz para você.

Escrito por claudio at 1:20 AM categorizado por Java

Tags: java

Terça-feira, 18 Agosto 2009

Palestra na Universidade Catolica

Dia 19 de agosto - quarta-feira - vou à Universidade Católica em Taguatinga, para participar do evento "Encontro Regional de Informática do Centro-Oeste I", fui convidado para participar com uma palestra. Irei falar sobre "Gerenciamento de Memória pela Maquina Virtual Java

Pretendo mostrar como funciona a alocação de memória e a limpeza automática (vulgo Garbage Collector), seus algoritmos e algumas boas práticas para o programador exercer um bom trabalho.

O evento será na Universidade Católica, Campus Taguatinga, Auditório Central do Prédio São João Batista de La Salle. O horário é 21h.

O evento conta com outras palestras sobre os temas: processamento de imagens, Datawarehouse e OLAP, processamento de sinais, Cloud Computing, Gestão de Segurança, Computação de Alto Desempenho, Computação Invisível.

Os minicursos também fazem parte do evento: Data Mining, PlayStation 3 em computação de alto desempenho, Ruby on Rails, Criptografia, Linux.

Update: A palestra está disponível para olhar ou copiar.

Escrito por claudio at 8:16 PM categorizado por Java

Tags: eventos java noticias palestra

Sexta-feira, 24 Julho 2009

Admin sem segurança

Vejam alguns consoles do JBoss em instalações na internet.

http://www.google.com/search?hl=all&q=inurl%3A%22%2Fjmx-console%2F%22+%22JMX+MBean+View%22

Esta pesquisa no google irá procurar por todas as urls que tenham "/jmx-console/" e a string completa "JMX MBean View".

Se quiserem ver sites brasileiros, adicionem a opção site:com.br ou site:gov.br

O console do JBoss tem esta String no console de administração, que visualiza os nomes JNDI.

Os administradores de sistema dos sites resultados da pesquisa deveriam habilitar a segurança do console de administração.

Vejam como habilitar o console de segurança.

Já usei o JBoss em diversos projetos desde 2002 e sempre que o projeto é colocado em produção, o console admin é removido ou é habilitado a segurança na autenticação.

Leiam isso apenas como aviso de como melhorar as instalações de sistemas. Acessei alguns consoles admin, para ver se a segurança estava realmente desabilitada. Não fiz nenhuma alteração no sistema. Recomendo que vocês também não o façam.

Escrito por claudio at 4:34 PM categorizado por Dicas e Scripts

Tags: dicas java

Sexta-feira, 6 Março 2009

Como reduzir espaço em disco do JDK em ambiente servidor

No decorrer dos anos, as novas versões do JDK estavam acompanhadas de novas funcionalidades, bibliotecas, etc.

E sempre existiram comentários na comunidade, sobre o tamanho do JDK e o espaço ocupado pelo JDK, após a instalação.

Pois vou dar uma dica de como remover arquivos desnecessários do JDK em ambiente servidor. Na maioria das vezes, isso só será necessário se uma economia de 100MB for importante. Ou instalações em rede com imagem, para poupar tempo de download para outras estações.

A dica é baseada em um ambiente Linux 32 bits, com uma instalação padrão do JDK 6 update 12.

A instalação padrão ocupa um espaço de 239 MB. Veja a ocupação de espaço nas versões anteriores do JDK.

82M     j2sdk1.4.2_18
141M    jdk1.5.0_16
239M    jdk1.6.0_12

Uma boa evolução no espaço ocupado.

Veja os arquivos que podem ser removidos, e o tamanho que será economizado em disco.

7.9M    sample/
20M     demo/
19M     src.zip
4.3M    db/demo/
18M     db/docs/
2.1M    db/javadoc/
96K     db/lib/derbyLocale_cs.jar
100K    db/lib/derbyLocale_de_DE.jar
92K     db/lib/derbyLocale_es.jar
100K    db/lib/derbyLocale_fr.jar
96K     db/lib/derbyLocale_hu.jar
92K     db/lib/derbyLocale_it.jar
108K    db/lib/derbyLocale_ja_JP.jar
104K    db/lib/derbyLocale_ko_KR.jar
96K     db/lib/derbyLocale_pl.jar
92K     db/lib/derbyLocale_pt_BR.jar
120K    db/lib/derbyLocale_ru.jar
96K     db/lib/derbyLocale_zh_CN.jar
96K     db/lib/derbyLocale_zh_TW.jar
23M     lib/visualvm/
94M     total

Uma economia de 94 MB

Estes arquivos não são necessários em ambiente servidor. Com exceção de alguns arquivos do visualvm, que possui as bibliotecas nativas para efetuar profiling remoto, mas isso geralmente não é necessário em ambiente servidor de testes ou produção, ou alguém faz prifiling em produção ?

No caso dos arquivos de i18n do derby, prefiro usar os termos em inglês, pois acho conveniente que os termos técnicos sejam em inglês (meu ponto de vista sobre o caso).

Escrito por claudio at 1:22 AM categorizado por Java

Tags: dicas java

Quinta-feira, 26 Fevereiro 2009

Reunião SouJava em São Paulo, dia 26/02

Hoje tem reunião do SouJava na cidade de São Paulo.

Veja a mensagem do anúncio

=======================================================

Nossa primeira reunião de 2009 irá acontecer HOJE.

Programação:

18:30 - Meeting
19:00 - Domain Driven Design (Sergio Lopes)
20:15 - Coffee-Break(Patrocínio da Caelum)
20:45 - JRuby on Rails: pronto para o prime time? (Fabio Kung)
22:00 - Encerramento

Local: Rua Tabapuã, 627, Itaim Bibi, São Paulo (no auditório da
Sucesu-SP, andar térreo).
http://www.sucesusp.org.br/site1/geral/localizacao.html

Por favor, enquanto o site do SouJava estiver sendo atualizado peço
que todos confirmem sua presença enviando um email para mim com o
título "CONFIRMAÇÃO REUNIÃO SOUJAVA - 26/02" e no corpo do email o
nome completo para o endereço:

jailton@soujava.org.br

Sua confirmação nos ajudará a organizar uma reunião muito melhor para
todos!! Obrigado.

Escrito por claudio at 3:12 PM categorizado por SouJava

Tags: soujava noticias

Quinta-feira, 2 Outubro 2008

Geração de heap dump no linux 64 bits

Estou em um trabalho para um cliente envolvendo melhorias de performance na aplicação e no ambiente operacional (appserver, sistema operacional, jvm).

O ambiente é Linux 64 bits (RedHat, kernel 2.6.18 SMP), JDK 5 e Glassfish v2 ur2.

Em um dado momento, precisei gerar um heap dump, mas ocorreu um erro  sun.jvm.hotspot.debugger.UnmappedAddressException.

# /usr/local/jdk/jdk1.6.0_07/bin/jmap -J-d64 -F -dump:file=java_dump_10791.hprof  10791
Attaching to process ID 10791, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 10.0-b23
Dumping heap to java_dump_10791.hprof ...
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.tools.jmap.JMap.runTool(JMap.java:178)
        at sun.tools.jmap.JMap.main(JMap.java:110)
Caused by: sun.jvm.hotspot.debugger.UnmappedAddressException
        at sun.jvm.hotspot.debugger.PageCache.checkPage(PageCache.java:208)
        at sun.jvm.hotspot.debugger.PageCache.getData(PageCache.java:63)
        at sun.jvm.hotspot.debugger.DebuggerBase.readBytes(DebuggerBase.java:205)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.readCInteger(LinuxDebuggerLocal.java:471)
        at sun.jvm.hotspot.debugger.DebuggerBase.readAddressValue(DebuggerBase.java:442)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.readOopHandle(LinuxDebuggerLocal.java:431)
        at sun.jvm.hotspot.debugger.linux.LinuxAddress.getOopHandleAt(LinuxAddress.java:115)
        at sun.jvm.hotspot.oops.Oop.getKlassForOopHandle(Oop.java:222)
        at sun.jvm.hotspot.oops.ObjectHeap.newOop(ObjectHeap.java:348)
        at sun.jvm.hotspot.utilities.HashtableEntry.literal(HashtableEntry.java:53)
        at sun.jvm.hotspot.memory.SymbolTable.symbolsDo(SymbolTable.java:106)
        at sun.jvm.hotspot.utilities.HeapHprofBinWriter.writeSymbols(HeapHprofBinWriter.java:830)
        at sun.jvm.hotspot.utilities.HeapHprofBinWriter.write(HeapHprofBinWriter.java:396)
        at sun.jvm.hotspot.tools.HeapDumper.run(HeapDumper.java:56)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:221)
        at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:77)

Tentei gerar o dump através de:

  • -XX:+HeapDumpOnCtrlBreak and kill -3
  • jmap -heap:format=b
  • gcore utility

Com isso decidi usar o JDK 6 u7 (changelog), mas ocorreu o mesmo problema.

UPDATE: A stacktrace mostrada acima, mostra a invocação de um comando jmap do JDK 6 u7, para uma VM 6 u7.
UPDATE: Anteriormente, quando estava com JDK 5 u12, tentei rodar o jmap a partir de uma VM 5 u12, mas o mesmo erro ocorreu
UPDATE: A VM não está com a opção -Xrs option.
UPDATE: O usuário que iniciou o processo é o mesmo que usei para invocar o comando jmap, root.

UPDATE: Alan Bateman, explicou sobre o uso da opção -F "A opção -F faz como que a ferramenta se conecte no processo de uma maneira não colaborativa e pode causa a geração de um dump inconsistente. Em outras palavras, não há garantia de que será um bom heap dump ao usar a opção -F", veja este comentário em inglês na seção de comentários abaixo.

Então encontrei um bug corrigido "Throws UnmappedAddressException while reading address from core file in shared area.", entao decidi usar o JDK 6 u10 RC.

Coloquei a opção -Xshare:off

E funcionou muito bem,o processo não foi derrubado e a aplicação funcionou normalmente.

Não esqueça que no momento do heap a JVM paralisa todas as threads e o arquivo gerado será tão grande (ou um pouco menor) como a memória RSS usada pelo processo.

Então, se for gerar heap dump em linux 64 bits, use o JDK 6 u10 RC com a opção -Xshare:off.

Ao final da geração do heap dump, as mensagens abaixo foram impressas

"Finding object size using Printezis bits and skipping over..."

Obrigado Tony, pelo seu trabalho no HotSpot.

Escrito por claudio at 1:28 AM categorizado por Java

Tags: java performance linux

Terça-feira, 9 Setembro 2008

Ferramentas de diagnóstico em performance na prática

3

Tenho efetuado a palestra sobre diagnóstico em problemas de performance, desde 2006 em diversos eventos.

Pelo feedback que recebo, percebo que este é um assunto de interesse para um numeroso grupo de profissionais.

Então, é por isso que você que é interessado em entender mais sobre performance, garbage collector, thread pools, thread dumps e memory dumps, deve comparecer no próximo dia 12 (sexta-feira) as 9h no Senac, onde ocorre o JustJava. Pois irei realizar um workshop na prática sobre este assunto.

O nome é "Diagnóstico e Resolução de Problemas de Performance em Java", é requerido trazer o laptop para máximo aproveitamento.

O workshop (hands-on lab), será um misto de palestra com exercícios sobre o tema. Será seguido (tentativa) o seguinte roteiro:

  • Explicação sobre um tópico
  • Demonstração
  • Fazer com que os atendentes resolvem um exercício

Os tópicos serão

  • Gerenciamento de memória do Java
  • Ferramentas para diagnóstico
  • Thread Dumps
  • Memory Dumps
  • Ferramentas para profiling

Para um máximo rendimento para o atendente, é necessário seguir alguns pontos:

Configurem as variáveis JAVA_HOME e PATH=$JAVA_HOME/bin

O uso do Linux não é obrigatório, mas facilita muito, e irei basear meus exemplos nele.

Note, que o tempo do workshop não será prejudicado, por aqueles que não possuem os sistemas instalados. Pois o tempo é curto para muito conteúdo de não fácil absorção.

Não posso esperar pela próxima sexta, para divertir com thread dumps, pools estourando e memória escorrendo pelos buracos do laptop.

Escrito por claudio at 2:57 AM categorizado por Java

Tags: eventos java noticias palestra justjava performance

Sábado, 6 Setembro 2008

Só Java

Só Java

Começou praticamente nesta semana o mês do Java no Brasil, uma iniciativa de diversos JUGs liderado pelo SouJava, onde teremos a participação de importantes membros da comunidade Java brasileira, pessoas experientes na tecnologia Java e que tem muito a compartilhar.

Teremos também a participação de diversos palestrantes internacionais, que irão a várias cidades do Brasil.

Confira quais são as cidades onde irá acontecer os eventos.

Serão muitas palestras onde as pessoas, vão ter acesso a informações sobre as novidades do mundo Java, melhores práticas, dicas, técnicas, ferramentas, frameworks, etc. Mostrando Java no lado servidor, em telefones celulares e pequenos dispositivos, no lado desktop/cliente.

Você simplesmente não pode perder esta oportunidade, é um investimento em sua carreira. Aprender com as palestras, fazer novos contatos, enriquecer o seu curriculo, tenho certeza que irá conseguir aproveitar muito bem.

O que sinto extremo orgulho de participar de uma comunidade como esta, é a capacidade de organização, comprometimento e realização de diversas pessoas dispersas geograficamente, para fazer um evento deste tipo.


JustJava 2008

O JustJava já está em sua 7a edição, isso mostra a tradição do evento em trazer boas palestras técnicas e informativas.

Eu participei de todos os JustJava e para mim foi muito bom, participar como palestrante e participante, assisti diversas palestras e aprendi muita coisa interessante.

E neste evento, você ainda pode ter a oportunidade de ganhar uma entrada gratuita.

O SouJava oferece uma entrada gratuita para, colaboradores que possam participar como Coordenador de Mesa.

O que faz um coordenador de mesa ?

- Anuncia o título e autor da palestra
- Ajuda ao palestrante se necessário;
- Controla o tempo da sessão
- Controla perguntas.

Quais as vantagens ?

- Entrada gratuita para o evento
- Visão privilegiada da palestra
- Interação com o palestrante
- Uma forma de contribuir com a comunidade, através do evento

Você quer ser um coordenador de mesa ? então preencha o formulário
abaixo, pois as vagas são limitadas.

http://soujava.org.br/display/v/Coordenador+de+Mesa

Mês de Java

O mês de Java, conta com a participação de diversos JUGs em várias cidades, vejam o mapa das cidades e datas que ocorrerão os eventos.

Eu já havia escrito sobre o mês de Java antes.

A atualização sobre o blog anterior, é a confirmação de diversos palestrantes internacionais que irão falar e demonstrar sobre Glassfish, Hudson, Sun Spot, NetBeans, Java ServerFaces.

Para quem não poderá ir nos principais eventos em São Paulo (JustJava e Sun Tech Days), poderá ir até alguma das cidades onde irá ocorrer o evento.


Escrito por claudio at 6:43 PM categorizado por Java

Tags: eventos java noticias palestra justjava

Quinta-feira, 21 Agosto 2008

HotSpot Internals

Encontrei um tempo atrás, um site wiki no endereço da Sun.com com informações interessantes para quem quer entender mais sobre HotSpot, mas não tem tempo para ler o código fonte, é o HotSpot Internals.

Como exemplo cito uma página sobre otimizações em código java, onde o HotSpot consegue tirar melhor proveito.

Escrito por claudio at 12:55 AM categorizado por Java

Tags: dicas java performance

Quinta-feira, 14 Agosto 2008

Reunião SouJava, Hoje 14/agosto/2008

Hoje (quinta-feira, 14 de agosto de 2008) terá uma reunião do SouJava.

Veja no link acima o anúncio completo e como fazer inscrições. Irá ter sorteio de assinaturas de revistas WebMobile, JavaMagazine e SQLMagazine.


IBM open source and Web 2.0 strategies (Estratégias IBM para open source e Web 2.0)

Palestrante: Steven Calello - IBM

Esta palestra será ministrada em inglês, porém disponibilizaremos um recurso de tradução simultânea que poderá ser utilizado por QUEM TROUXER UM RÁDIO FM!!! (celular ou walkman)


Escrito por claudio at 3:04 PM categorizado por SouJava

Tags: soujava noticias java

Sexta-feira, 8 Agosto 2008

Grupos do SouJava no Linkedin

Dia interessante hoje, 8/8/08

O SouJava criou alguns grupos no site de relacionamento profissional Linkedin, para facilitar o relacionamento de quem participa com o SouJava de alguma maneira.

Os grupos existentes hoje são:

  • SouJava

    Grupo aberto para quem quer manifestar apoio ao SouJava, já participou das reuniões e dos eventos, este grupo é aberto para qualquer participante.

  • SouJava Speakers

    Este grupo é para quem já fez alguma palestra em algum evento do SouJava, tanto reunião mensal, evento, workshop. A participação neste grupo é moderada. Para participar do grupo é necessário informar data, evento e nome da palestra que foi efetuada.

  • SouJava Admin

    Este grupo é restrito às pessoas que participam da organização do SouJava.
  • SouJava Campinas

    Este grupo é para o pessoal da região de Campinas. Este grupo não foi criado por nós, mas acredito que as as idéias são semelhantes.

Escrito por claudio at 12:09 PM categorizado por Java

Tags: java soujava

Quinta-feira, 7 Agosto 2008

Setembro: Mês de Java no Brasil

Próximo mês, em Setembro será o mês de Java no Brasil, onde os haverá diversos eventos sobre a tecnologia Java em 14 cidades.

Mês de Java

É uma iniciativa do SouJava com diversos outros JUGs e seus respectivos líderes, onde será promovido palestras e workshops, contando com palestrantes brasileiros e internacionais.

Alguns dos eventos mais conhecidos que irão acontecer em Setembro, é o JustJava e o Sun Tech Days.

Calendário e Local

Confira o calendário abaixo e as localidades onde acontecerá os eventos.

Fique atento a lista de notícias e ao site do SouJava onde iremos colocar mais informações sobre a programação de palestras, local, horário e o próprio site de cada cidade.

O Mauricio "Maltron" Leal escreveu no blog do java.net sobre esta iniciativa.

Escrito por claudio at 11:33 PM categorizado por Java

Tags: eventos java noticias soujava

Quarta-feira, 16 Julho 2008

Jetty no Solaris 10


Segue uma contribuição que fiz para o projeto Jetty, para inicializar/parar/reiniciar o Jetty, usando o serviço nativo SMF do Solaris 10.

Os softwares necessários

Outra versão do Jetty irá funcionar, basta adaptar o script jetty.sh

Essa contribuição está no OpenSolaris e no Jetty, pelo patch 639.

A vantagem do uso do SMF que fiz

  • Uso de portas privilegiadas por usuário não root (permissão de privilégios)
  • Restar do serviço automaticamente (watchdog)
  • Padronização para o ambiente Solaris no uso do serviço


Sobre o Jetty

Para quem não conhece o Jetty, é um servidor Java, como o Tomcat. Ele é muito bom, uso-o há muito tempo, inclusive ele foi o servidor web que acompanhava o JBoss antes do tomcat. Vejam alguns usuários do Jetty.

O Jetty é reconhecido por ter baixo consumo de memória e recursos, permitir o uso da API de maneira embutida (Embedded), já usei em projetos profissionais.

De fato o Jetty é usado neste site (claudius.com.br)  e no do SouJava (soujava.org.br).


Escrito por claudio at 2:10 PM categorizado por Java

Tags: dicas java solaris

Terça-feira, 15 Julho 2008

Quer dar uma palestra no JustJava 2008 ?

Dicas

JustJava 2008 - o Evento Java da Comunidade Brasileira

10 a 12 de Setembro de 2008
São Paulo - SP
Chamada de Trabalhos
http://www.sucesusp.org.br/justjava2008/

Eu participei de todos os eventos JustJava, foi muito legal assistir ao 1o em 2000, na av. Pompéia, com John Gage como keynote speaker.

Hoje o JustJava já está em sua 7a edição. E desde 2003, faço palestra no evento, onde consigo convidar a galera e mostrar o que considero importante no tema.

Alguns pontos altos de todos os eventos

  • Muitas palestras técnicas e de boa qualidade (ok, já teve algumas ruins também)
  • Muita troca de experiência e cultura de trabalho
  • Discussões sobre um tema nas muvucas, onde tinhamos até uma cerveja para acompanhar (hoje vai ser difícil com a nova lei de transito)
  • Aprender novidades, com outros feras no assunto

Então veja abaixo, um pouco mais sobre um PR do evento e o convite para submeter palestra.

O Evento

O JustJava é um evento técnico, feito por brasileiros, para brasileiros, e apresentado por desenvolvedores, para desenvolvedores!

O objetivo do evento é mostrar o que esta está acontecendo no mercado Java no Brasil, quais são os projetos Java mais importantes, como o desenvolvedor brasileiro tem usado a tecnologia, e principalmente, incentivar a integração daqueles que fazem a tecnologia Java crescer no Brasil - os desenvolvedores.

Você não pode ficar de fora do JustJava - o Evento Java da Comunidade Brasileira, e o grande evento de Java do ano no Brasil.

O JustJava, já na sua sétima edição, é o principal evento técnico realizado pela Sociedade de Usuários Java, um dos mais ativos grupos de usuarios Java do Brasil. Na primeira edição, o JustJava foi o maior
evento de Java realizado ate então no Brasil!

Venha ser um palestrante

Se você quer apresentar uma palestra no JustJava, o momento de submissao é agora. Ate o dia 18 de julho, estaremos recebendo e avaliando as palestras para compor e montar um evento técnico de alta qualidade.

Se você tem um projeto inovador e quer mostrar suas soluções criativas para os problemas encontrados, se você quer aprofundar as discussões sobre a tecnologia Java, seja um palestrante no JustJava.

Para submeter sua palestra, preencha o formulário que se encontra no site abaixo, na opção "Chamada de Trabalhos"

http://www.sucesusp.org.br/justjava2008/

Outras informações

http://www.soujava.org.br/display/v/JustJava+2008

Escrito por claudio at 3:25 AM categorizado por Java

Tags: eventos java noticias palestra justjava

Quarta-feira, 25 Junho 2008

Acontecimentos no Jazoon 2008

Estou em Zurich para o evento Jazoon, desde domingo, apreciando a cidade e o evento que começou com o Community Day na segunda-feira, onde participei da parte do Glassfish, enquanto a outra parte era dedicada ao NetBeans. Devo dizer que a organização do evento está muito boa.

Tenho encontrado alguns brasileiros que vieram participar do evento, bem como outros que moram na região. Notadamente o Felipe Gaúcho, onde o pude conhecer pessoalmente onde fez um tour da cidade comigo, muito obrigado. Também explicou como é trabalhar para o mercado Suiço e o choque cultural, é uma experiência muito interessante.

Fiz minha palestra ontem, a sala começou em torno de 20 pessoas, mas ao final devia ter algo em torno de 50 pessoas. Foi muito bom participar do evento, principalmente quando temos membros ilustres na audiência como Dr. Heinz Kabutz, Alexis Mouchine-Pouchkine (evangelista Sun/Glassfish).

O slide da palestra está disponível, vejam on-line ou façam download.

Antes de minha palestra, outro brasileiro fez palestra sobre The Java Platform and the future of user interaction, por Hildeberto Mendonça que faz doutorado na Bélgica.

Posteriormente conversei com Heinz Kabutz, sobre as ferramenas de análise de thread dump para detecção de conteção. Conversei com Alexis sobre a comunidade Glassfish no Brasil, onde temos muita oportunidade para mostrar a qualidade do projeto. Com Jerome Dochez comentei sobre alguns problemas encontrados no Glassfish v3 (em desenvolvimento), sobre logging, reload de módulos e build do glassfish v3 (posteriormente coloco os detalhes destas questões).

Anteriormente conversei com Terrence Barr, sobre um problema que enfrentei ano passado com certificaçao digital e Java Micro Edition, onde ele compartilhou do problema e que a Sun está tentando mostrar às empresas operadoras e fabricantes, sobre a importância da padronização em API e acesso a recursos nativos.

Hoje pela manhã assisti a palestra Web 2.0 development with JavaFx, Flex and AIR, muito interessante, pois eu já conhecia o site do parleys.com, e o Stephan Janssen, mostrou as motivações de ter escolhido a plataforma Adobe Flex para construir a UI do site. Em off conversando com ele, mostrou que ainda existem algumas marretadas a serem ajustadas para tornar aplicações Flex usáveis para usuários acostumados com HTML, como por exemplo indexação por robôs web (é necessário adicionar keywords no header), pesquisa por ctrl+f no browser, link direto em ancora. A interface visual do site é bem interativa e bonita. Ele também mostrou outras funcionalidades do site, onde será aberto para usuários realizarem uploads de vídeos, bem como usar uma ferramenta criada por ele para editar e sincronizar slides de palestras com áudio ou video. Isso é muito bacana, para quem não pode estar presente à um evento, e pode assistir fora do evento.

Uma palestra que estava com intenção de assistir, sobre Qi4j sobre um novo conceito em desenvolvimento de software, projeto liderado pelo Rickard Öberg, foi cancelada, não sei o motivo. Isso irá me forçar a assinar as listas de discussão deles para aprender mais sobre o projeto.

Em conversas com outras pessoas técnicas de países diferentes, verifiquei que compartilhamos algumas coisas em desenvolvimento de software, como o cliente não conseguir mostrar quais são os casos de uso mais importantes, efetuar testes funcionais quando a aplicação vai para produção, não terem requerimentos de performance, baixa qualidade do código desenvolvido em off-shore, conservadorismo no uso do software em produção.

Vejam algumas fotos (cidade de Zurich e parte do evento).

Escrito por claudio at 11:37 AM categorizado por Java

Tags: eventos java noticias jazoon performance

Sexta-feira, 13 Junho 2008

Palestra no Jazoon

Jazoon 2008

Na semana do dia 23, irei participar do evento Jazoon, com a palestra Tools and Tips to Diagnose Performance Issues, essa palestra é uma reformulação de outras que fiz em eventos anteriores.

Existe uma caravana de brasileiros que irá participar do evento, entre eles o Felipe Gaúcho que mora na cidade onde irá ocorrer o evento. Será uma boa semana, interagir com membros da comunidade Java internacional, entender o que é diferente na cultura de TI, entre outras coisas e conhecer Zurich.

Muito bacana participar deste evento, pois é o 2o Jazoon, e já é considerado um evento com muita qualidade, veja a lista dos palestrantes e palestras neste ano.

Muitas palestras de qualidade para assistir, compartilhar conhecimento, aprender, tanto do lado técnico como do lado cultural. 

Algo que achei muito interessante, é que o evento é realizado em um cinema, com uma tela gigante onde será projetado os slides. Veja algumas fotos do evento em 2007. Acredito não ser necessário reduzir o tamanho da fonte do console na demonstração (ROFL)



Mesmo se você não puder ir a Zurich assistir a palestra, pode ser preparar e ir ao evento WebDays que irá ocorrer em São Paulo no dia 22 e 23 de agosto. Onde vou apresentar essa palestra, mas em português.

Irei apresentar outra palestra, sobre produtividade na web com Wicket. Isso mesmo, Wicket !

Pois bem, eu já havia lido e feito alguns exemplos com este framework em 2006, mas não achei interessante (na época) o conceito dele de separação do HTML e código Java. Mas depois de trocar algumas informações com o Bruno Borges, percebi que o framework é bem rico em componentes, possibilita uma simplicidade incrível, não é necessário uma IDE com suporte completo ao framework, pois é necessário apenas HTML (XHTML para ser exato) e Java. Se quiser saber mais, vai ter de assistir a palestra, com direito a demonstração.

Escrito por claudio at 11:27 AM categorizado por Java

Tags: eventos java noticias palestra performance

Quarta-feira, 7 Maio 2008

Videos do JavaOne 2008

É possível acompanhar alguns vídeos de keynotes do JavaOne que ocorre esta semana, vejam alguns vídeos do CommunityOne e dos keynotes de ontem.

No endereço contém outros vídeos de outros eventos da Sun.

A Sun mantém outros sites com vídeos

Sun Feedroom

Sun News Center

Canal Sun no YouTube


Escrito por claudio at 2:00 PM categorizado por Java

Tags: eventos java javaone noticias

Sábado, 19 Abril 2008

Tradução de aplicações

Você conhece termos como "bean de ligação", "gerenciador de cronometro", "ligação ao espaço de nomes JNDI", "Aplicativos corporativos" (este talvez seja mais fácil), relacionados a plataforma Java Enterprise Edition ?

Pois para mim, são termos novos para incorporar ao festival de palavras difusas.

Isso não é nada mais que a tradução da da interface web de administração de um servidor Java EE.

Veja um exemplo abaxo: 


Clique na imagem para ampliar 

Nesta situação, acredito que a tradução irá causar mais problemas do que ajudar, no longo prazo.

Problemas

  • Maior custo do produto (exige uma equipe para tradução)
  • Maior tempo para releases
  • Termos não são apropriados para buscas na internet (tente efetuar uma busca por "gerenciador de cronometro")
  • Confusão de termos para quem usou outro fornecedor
  • Documentação suplementar, estará em inglês
  • Produtos de terceiros em inglês

Vantagens

  • Capacidade de usar a ferramenta, para quem não entende de inglês básico

Não consegui encontrar outras vantagens, por favor, escreva no comentário se encontrar alguma outra vantagem.

Na seção de problemas, o que verifico ser o pior deles, é quando o usuário da interface de administração, encontra alguma exceção e efetua a busca na internet, vai encontrar nada ou pouca informação.

E em outras telas da interface, termos em inglês são usados, causando confusão para os que não possuem inglês básico. (Como seria a tradução do termo "listener" ?)

Colocando um contexto na situação.

Considere um profissional para usar a ferramenta. Ele é um profissional que irá lidar com conceitos e conhecimento em:

  • cluster
  • balanceamento de carga
  • topologia
  • instalação de aplicação
  • components e módulos
  • criptografia
  • configuração de rede
  • classpath e classloader
  • mapeamento de nomes
  • etc.

E para entender isso e ser responsável pelo pleno funcionamento do ambiente, certamente É uma pessoa com bons conhecimentos técnicos em diversas áreas de informática, e com certeza um profissional que deve ter lido algum livro em inglês e/ou artigos na internet em inglês. Logo a interface web de um servidor Java, é necessário apenas inglês instrumental e ainda assim relacionado a área de informática.

Na situação onde precisei usar a interface de administração, uma das primeiras coisas que fiz, foi alterar o idioma da interface, pois estava complicado em demasiado, tentar decifrar o que significava a tradução do termo.

Javaum e feijões corporativos

O que lembro ainda hoje e é motivo de risadas, foi no evento Sun Tech Days em 2002, durante uma palestra em inglês, quando um colega que estava com o fone da tradução simultânea, perguntou para mim o que significava javaum, mas não precisei explicar, após ele escutar o termo feijões corporativos.

 

Crítica

Note que isso não é uma crítica ao incrível trabalho dos profissionais de tradução, que tem de lidar com esta situação de construir um dicionários de itens que não são passíveis de tradução, e não são pessoas técnicas.

Existem diversas ferramentas que precisam ser traduzidas, estas são as ferramentas para o usuário comum, usuário iniciante, ou pessoas que realmente não tem o inglês instrumental, mas desejam usar o sistema. Exemplo disso são os sistemas desktop (navegadores de internet, email, ferramentas desktop em geral).

Cito o NetBeans, como exemplo (onde tenho alguns colegas que participam da tradução), que é uma ferramenta que jovens que conhecem poucos termos em inglês e de informática, então diminue bastante a barreira de introdução à tecnologia.

Mas no longo prazo, o iniciante passa pelo intermediário e depois mais experiência, o que nesta fase, já passou pelo aprendizado da língua inglesa. O que vejo muito comum em fóruns e conversas de informática, é que sem o entendimento do idioma inglês na área de informática, o profissional terá poucas chances de sobreviver à evolução na carreira.

A minha crítica é para as empresas que querem traduzir este tipo de sistema, que como expliquei acima, não traz vantagens.

 

Escrito por claudio at 12:14 AM categorizado por Java

Tags: dicas java

Quarta-feira, 16 Abril 2008

Videocast do Javali e OpenSolaris

As palestras do evento Javali International Meeting e do OpenSolaris Day estão disponíveis para quem quiser assistir on-line, AGORA.

Site de streaming do evento

Escrito por claudio at 10:35 AM categorizado por SouJava

Tags: eventos fisl java javali noticias palestra

Segunda-feira, 14 Abril 2008

Javali International Meeting e OpenSolaris Day, de graça

Dicas

Javali International Meeting e OpenSolaris Day 

No dia 16 de abril, nesta próxima quarta-feira, em um pré-evento ao FISL, irá ocorrer o Javali International Meeting, uma série de palestras sobre Java com palestrantes nacionais e internacionais. Temas como OpenJDK, NetBeans, JavaFX, Glassfish bem como dois tutoriais, serão apresentados. Veja o site do evento para maiores informações.

Neste mesmo dia e loca, mas no período da tarde irá ocorrer o OpenSolaris Day, nos mesmos moldes do Javali. Com palestras sobre High Performance Computing, OpenSolaris Kernel, Virtualização de redes.

Palestrantes como Bruno Souza, Gregg Sporar, Terrence Barr e Rich Sands participarão do evento.

Não perca esta oportunidade de presenciar demos, novidades e conversar com as pessoas que participam da criação de tecnologias. 

E não esquem do evento FISL que contam com cerca de 20 palestras Java em sua programação, e minha palestra no dia 19 (sábado), sobre "Produtividade na Web com Apache Wicket"

Escrito por claudio at 5:19 PM categorizado por SouJava

Tags: eventos java javali netbeans solaris palestra soujava

Sexta-feira, 4 Abril 2008

Palestras em 2008, eventos marcados

A temporada de eventos já começou e tenho marcado palestras em alguns eventos.

Jazoon 2008

Um evento anual em Zurique, Suiça. Tenho a palestra "Tools and Tips to Diagnose Performance Issues", marcada para o dia 24 de Junho. Veja a programação completa de palestras e horários.

Esta palestra tem sido melhorada desde os últimos eventos, e as pessoas que assistem dizem foi de boa utilidade em seus ambientes de trabalho. Tanto em emails que recebi como discussões em fórums e blogs na internet.

Olhando a lista de palestrantes, mostra que é um evento que mostra muita credibilidade, e vai permitir muita troca de informação.

Este evento é um dos maiores da europa, sobre a tecnologia Java. Vejam as fotos e fatos do evento em 2007, que informa muita coisa interessante.

FISL 9 - Forum Internacional de Software Livre

Esta será a 3 vez que participo do FISL (outras foram em 2004 e 2007), e o evento já é reconhecido como um dos maiores eventos do mundo no segmento de TI e Open Source.

Irei participar com a palestra "Produtividade na Web com Apache Wicket", marcada para o dia 19 de Abril. O que achei interessante é o nome das salas, a qual vou ocupar chama-se Tim Berners Lee, quanta honra.

Você pode ver a programação completa de palestras e horários

De fato esta palestra, assim como várias outras são organizadas dentro do evento Javali, que acontece desde 2004, que é um evento dedicado a tecnologia Java e organizado pelo SouJava. Veja a programação de palestras para o Javali.

Podem esperar fotos e blogs sobre estes eventos, pois tem muita coisa interessante.

Escrito por claudio at 7:07 PM categorizado por Java

Tags: eventos fisl java javali noticias palestra performance

Quarta-feira, 2 Abril 2008

Plugin NetBeans para configuração de inicialização

Escre vi um plugin para o NetBeans 6, que permite configurar as propriedade de inicialização, como: argumentos da JVM, diretório de usuário (user dir) e qual JDK usar. 

O JDK a ser usado e diretório do usuário, podem ter vários valores, bastando escolher um deles.

Veja o site do projeto no javaforge.com com maiores informações sobre o plugin.

A página do plugin no portal de plugins do NetBeans

Segue um screenshot


Escrito por claudio at 12:07 PM categorizado por NetBeans

Tags: dicas java netbeans

Quarta-feira, 20 Fevereiro 2008

Resolvendo memory leak - Identificando o comedor de memória

Resolvendo memory leak - Procurando o devorador de memória - parte 1


Algo que vejo recorrente em fóruns e listas de discussão, colegas que perguntam para mim, é "como detectar e resolver o memory leak ?"

Começarei uma série de dicas voltados a encontrar e resolver o problema de retenção de memória (memory leak) em aplicações Java. Posteriomente, será feito um tutorial para resolver problemas de CPU.

Estas dicas podem ser úteis para programadores que ainda não passaram por este problema ou não conhecem as ferramentas. Mesmo para profissionais experientes, espero que possa contribuir.

Isso é baseado em minha experiência, em ambiente linux e solaris. Será dado ênfase no uso de ferramentas gratuitas ou de código livre, para ajudar neste processo. Para ambiente windows, onde possível colocarei as dicas aplicáveis para este SO, mas devo dizer que não tenho especialidade neste SO, portanto desconheço as ferramentas mais adequadas.

Ambiente de produção e desenvolvimento

Também será mostrado como resolver esse problema, tanto em ambiente de produção como em ambiente de desenvolvimento, com as ferramentas disponíveis em cada amviente (exemplo: invocar profiler ou debug em ambiente de produção é bastante caro em termos de performance).

É importante endender que a aplicação pode sofrer monitoramento de maneira intrusiva e não intrusiva.

  • Intrusivo: quando é necessário modificar as configurações de inicialização da aplicação para permitir uma introspecção de suas chamadas de sistemas e quando ocorre uma interceptação destas chamadas de sistemas pelo esquema de monitoramento intrusivo. Um exemplo disso são os profilers e debuggers. Isso gera penalidade em performance, modificação da configuração do ambiente e instalação de ferramentas, o que em ambiente de produção pode ser um grande problema
  • Não intrusivo: Quando é usado ferramentas de monitoramento, que não geram interceptação das chamadas do sistema, não geram impacto negativo em desempenho e não precisam de instalação de software adicional.

Existem uma série de passos, começando por descobrir onde ocorre problema de retenção, até sua resoluçao.

Qual processo do sistema operacional consome memória em demasiado ?


Este é o 1o passo, para identificar se o programa (desktop ou servidor) consome memória sem manter estável.

É importante entender que a aplicação deve ter passado por todas as etapas de criação de objetos e recursos, que já tenha passado por um ciclo de vida. Isso pode ser alcançado, navegando pela aplicação, consultando relatórios, etc.

É necessário usar apenas o SO e suas ferramentas, para descobir qual o processo está neste estado.

Ferramentas:

  • Linux: top, htop, ps
  • Solaris: prstat, ps
  • Windows: gerenciador de tarefas

Segue um exemplo de um programa que consome memória (propositadamente), e sua medição pelos respectivos utilitários do SO.

Vejam que existe um processo java que consome muita memória. O que neste caso interessa saber o PID (process ID) e a linha de comando.

Linux top

Percebe-se uma visualização com cores, linha de comando completa e ordenação diferentes, isso pode ser alcançado por atalhos

z => modifica o esquema de cores

c => mostra a linha de comando completa

shit M => ordena pelo consumo de memória

W => Torna esta configuração o padrão nas próximas invocações do comando top

O top tem uma vantagem, que ele já vem instalado em qualquer linux, então não é necessário efetuar download e instalá-lo. Já o htop, fornece uma visualização melhorada, mas é necessário efetuar download e instalar.

Para saber o consumo da memória por processo, veja na coluna RSS (ou RES), este é o valor de memória física consumido pelo processo (de fato, existem algumas discussões em fórums sobre o comando RSS ser bem uma aproximação do valor real, mas fico devendo uma explicação melhorada sobre isso em outro blog)

Linux htop

Este utilitário, fornece uma visualização melhorada sobre os processos e os recursos.

Linux ps

$ ps -eo pid,user,%cpu,rss,vsz,etime,nlwp,args
  PID USER     %CPU   RSS    VSZ     ELAPSED NLWP COMMAND
 7642 claudio   0.7 343536 658804      05:23   12 java TestReferences

A diferença do comando ps e top, é apenas a visualização, já que o ps recupera um snapshot do sistema.

O diferencial deste comando, é que mostra também a quantidade de threads por processo, na coluna NLWP.

Solaris prstat

$ prstat -s rss
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
   617 claudio   102M   78M sleep   59    0   0:00:01 2.1% java/9
   554 root      106M   32M sleep   59    0   0:00:01 0.2% ns-httpd/71
     7 root       11M   10M sleep   59    0   0:00:03 0.0% svc.startd/12
     9 root       11M 9384K sleep   59    0   0:00:07 0.0% svc.configd/17
   308 root       12M 8528K sleep   59    0   0:00:01 0.0% fmd/16
   553 root       27M 8088K sleep   59    0   0:00:00 0.0% ns-httpd/2
   618 root     8936K 4416K sleep   59    0   0:00:00 0.0% sshd/1

Foi usada a opção prstat -s rss para ordenar a apresentação baseada no consumo de memória. Outra informação é a quantidade de threads por processo, na coluna NLWP

Windows task manager


Então foi identificado qual é o sistema que consome mais memória. Com isso é possível ter um ponto de partida na análise do processo.

No próximo blog, que pretendo escrever em dois dias (espero), será mostrado como detectar se existe memory leak.

Escrito por claudio at 12:45 AM categorizado por Java

Tags: dicas java linux performance solaris

Quarta-feira, 16 Janeiro 2008

Livros Java e Revistas JavaMagazine de graça

Tenho alguns livros sobre Java e UML e algumas revistas JavaMagazine, que estou disposto a doar. Não vou ler eles novamente. O único custo é o frete.

Vou copiar uma sugestão do Urubatan, e vou doar o livro para quem escrever algum artigo sobre Java.

Veja as regras logo abaixo:

Os livros (todos em inglês), estão em ótimo estado.

Atualização: os livros marcados com um traço horizontal, não estão mais disponíveis.

As edições da JavaMagazine que tenho são as seguintes abaixo, os números entre parenteses significa a quantidade que possuo de cada edição, quando estiver sem parenteses, então possuo apenas uma.

1 (3)
2 (2)
3
4 (3)
5 (4)
6 (2)
7 (4)
8 (3)
9
11
12
13

Regras:

  • Escrever no comentário desta página, o seu nome, email e livro ou edição da JavaMagazine deseja.
  • Escrever um artigo técnico sobre Java (escolha um tópico), e informe o link para o meu site. O formato do artigo não vale notícia.
    Se você não tiver site, tudo bem. Eu publico o artigo em meu site com os devidos créditos para o autor.
  • Depositar em uma conta fornecida por mim, o valor do frete.
  • O critério de desempate, quando duas pessoas solicitarem o mesmo livro/revista, será o de quem disponibilizar o artigo primeiro e me avisar.
  • Limite de 1 livro ou 2 revistas por pessoa.
  • Se você tiver um blog ou site, colocar um link permanente para o meu site.

 


Escrito por claudio at 11:30 PM categorizado por Java

Tags: java netbeans

Sexta-feira, 16 Novembro 2007

Ler arquivos do office com Java

Dicas

No passado existiu uma situação no projeto, em que existiam vários documentos de projeto (guia, arquitetura, requisitos, manual, etc.), vindo de diferentes fontes (diretório de backup, cdrom), e são documentos office (doc, xls, ppt), e vários documentos repetidos, mas de origens diferentes.

Então como saber qual é o último arquivo e remover os antigos ?

Uma maneira é abrir cada arquivo e olhar nas propriedades do mesmo, mas fazer isso manualmente com cerca de 300 arquivos, poxa não sou mais estagiário para isso :-D (nada contra os estagiários).

Então fiz um programa em java, que usa a API SDK do OpenOffice para ler estas propriedades e mostrar as datas da última modificação e o autor.

Claro que é possível usá-lo para ler qualquer outra propriedade ou expandir para outros usos.

Atualmente a pesquisa é efetuada nos seguintes arquivos com extensão: sxw doc xls odt ods pps odt odp ppt 

Altere o DocViewer.java para adicionar outras extensões. 

Faça o download do código fonte: DocViewer.java
(remova a extensão .txt)

Requerimentos: 

Em tempo de compilação é necessário as seguintes bibliotecas:

$OO_HOME/program/classes/juh.jar
$OO_HOME/program/classes/jurt.jar
$OO_HOME/program/classes/jut.jar
$OO_HOME/program/classes/ridl.jar
$OO_HOME/program/classes/unoil.jar

A variável OO_HOME aponta para o diretório de instalação do OpenOffice. No meu caso uso o BrOffice, que está instalado em /opt/broffice.org2.3

Em runtime:

  • Instalação do OpenOffice
  • X Virtual Frame Buffer (Xvfb)
  • Java (testei com a versão 5)

Compilação

Essa parte é simples, use sua IDE favorita ou o javac

javac -classpath /opt/broffice.org2.3/program/classes/\* src/claudius/DocViewer.java

Usei o classpath wildcards, válido apenas para o Java 6

Uso

Para colocar o openoffice em modo servidor, usei um servidor X virtual, isso é para ambiente servidor, onde não é necessário ter um monitor nem interface gráfica. No caso foi instalado o X Virtual Frame Buffer.

Se não puder instalar um servidor X virtual e iniciar a aplicação openoffice manualmente, tudo bem, basta não informar qual o servidor X a ser usado. Veja o exemplo abaixo:

Com servidor X virtual 

Xvfb :5 -screen 0 800x600x16 & 
/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -display :5 -headless -norestore -invisible &

Sem servidor X virtual

/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -headless -norestore -invisible &

Invocar o programa Java

A sintaxe para invocar é

java -classpath $CP claudius.DocViewer <path do arquivo ou diretório>

O classpath $CP é o mesmo usado na compilação, em adição ao diretório da classe DocViewer compilada.
O path, pode ser um arquivo único ou diretório, que neste último caso irá pesquisar nos subdiretórios também. 

Exemplo 

java -classpath build/classes/:/opt/broffice.org2.3/program/classes/\* claudius/DocViewer arquivo-projeto.odt

O resultado:

dir  = /home/claudio/resources/palestras/2007/10_justjava
file = diagnostico2.odp
Modified by: Claudio Miranda 5/10/2007 17:46:8

Se essa dica foi útil para você, deixe uma mensagem comentando como isso lhe ajudou.

Escrito por claudio at 3:36 PM categorizado por Java

Tags: dicas java linux

Quarta-feira, 14 Novembro 2007

Palestra "Performance em Aplicações Java" disponível

A palestra que ministrei no evento Conexão Java 2007 está disponível para download. Ou você pode assistir on-line à apresentação.

Nesta palestra coloquei mais algumas dicas de performance em Java, bem como houve uma sessão de QA ao final.

Quero agradecer à organização do evento pela oportunidade e à galera que aguentou firme 1,5h de assunto um tanto pesado.

Escrito por claudio at 5:20 AM categorizado por Java

Tags: java noticias palestra performance

Sábado, 10 Novembro 2007

450 GB de HEAP

Conversei com alguns colegas sobre um artigo que li há um tempo, onde mostrava que o BEA JRockit foi usado em um heap da ordem de terabytes.

Pois eu confundi, e o heap é de 450 GB. Vejam o artigo

Escrito por claudio at 8:14 PM categorizado por Java

Tags: java performance

Quinta-feira, 8 Novembro 2007

Slides das palestras do JustJava 2007, disponíveis para download

Dicas

Os slides das palestras do JustJava 2007, estão disponíveis para download.

Estão em diferentes formatos, PDF, OpenOffice e PowerPoint.

Recebemos uma avalanche de pedidos para acesso aos slides, finalmente eles estão disponíveis.
 

Escrito por claudio at 12:09 PM categorizado por SouJava

Tags: eventos java justjava noticias soujava

Segunda-feira, 5 Novembro 2007

Conversão de charset para UTF-8

Em ambientes de desenvolvimento heterogêneos, onde existem diferentes sistemas operacionais e IDEs, é comum encontrar problemas de caracteres com encoding diferentes, como ISO-8859-1, UTF-8, etc.

No projeto que trabalho atualmente, existem windows e linux (por enquanto não tem apple), então é comum existirem arquivos com ISO-8859-1, ASCII e UTF-8.

Então não é uma boa idéia gravar arquivos .java, vogais com acentos e gravar em ISO-8859-1 e outro colega abrir esse arquivo em seu linux com UTF-8, uma bagunça.

Então segue um script para linux que verifica os encodings dos arquivos e outro que converte para UTF-8. Note que o script não mostra o arquivo se ele já estiver em UTF-8.

É necessário o utilitário konwert. Já usei anteriormente o recode e iconv, mas achei o konwert mais prático. E ele oferece uma opção interessante, onde ele tenta descobrir qual o encodingo do arquivo, através da opção any/pt/all-test

Script 1 - checagem do encoding

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para pesquisar os arquivos .java "
    exit 1
fi

find $1 -name \*.java -exec file {} \; | egrep -v 'ASCII|UTF' | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;  
	file $ff; 
	echo " charset   "; konwert any/pt/all-test  $ff; 
done

Script 2 - Conversão para UTF-8

#!/bin/sh

if [ $# -lt 1 ] ; then
    echo ""
    echo " Informe um diretório para converter os arquivos .java para UTF-8"
    exit 1
fi

find . -name \*.java -exec file {} \; | grep 8859 | while read s; do 
	ff=`echo $s | awk -F ':' '{print $1}'`;   
	konwert cp1252-utf8 -O  $ff; 
done                      

No script de conversão é usado a opção -O, que faz com que o arquivo original seja trocado pelo arquivo com encoding UTF-8 

Escrito por claudio at 1:46 PM categorizado por Dicas e Scripts

Tags: linux dicas java

Sexta-feira, 26 Outubro 2007

Descobrindo senha de banco de dados

Dicas

Você já passou por aquela situação de desconfiança, onde ao informar a senha de acesso ao banco de dados e pensou "poxa, tenho de informar a senha em texto limpo ?", desejando que a senha estivesse cifrada.

Isso por padrão ocorre em alguns servidores de aplicativos, onde a senha de acesso ao banco de dados é informada em texto limpo, em outros servidores de aplicativos a senha ecoa em asteriscos, deixando o usuário confortável que a senha está segura. Bem, não acredite nisso, a senha não está segura.

O que quero mostrar é que a senha pode ser extraida de outras maneiras, como inspecionar os pacotes de mensagens IP. O que pode garantir a senha é uma combinação de práticas e configurações para deixar o ambiente mais seguro.

Passo aqui um exemplo de como obter a senha do oracle configurado em um servidor de aplicativos conhecido no mercado.

Vejam abaixo na configuração da conexão, que a senha esta protegida por asteriscos


Faça os seguintes passos, para ver a senha no log

  1. Usar a biblioteca JDBC de debug da oracle: ojdbc14_d.jar
  2. Usar o driver XA oracle.jdbc.xa.client.OracleXADataSource
  3. Incluir as seguintes propriedades de JVM
    -Doracle.jdbc.Trace=true
    -Doracle.jdbc.LogFile=/var/tmp/oracle-trace/trace1
    
  4. Reiniciar o servidor de aplicativos

Basta acompanhar o log de trace do oracle ou do servidor de aplicativos, que a senha será impressa desta maneira

INFO: OracleXADataSource.getXAConnection()
03/10/2007 15:33:16 oracle.jdbc.xa.client.OracleXADataSource getXAConnection
INFO: OracleXADataSource.getXAConnection(user = claudio, passwd = admin123)
03/10/2007 15:33:16 oracle.jdbc.driver.PhysicalConnection setAutoCommit

Bonito não é ?

Para o Oracle é usado uma funcionalidade documentada, que é o trace das chamadas. Mas infelizmente, a senha é impressa junto. E vejam que nem com SSL, a senha é protegida.

E é necessário ter privilégios de administração do servidor de aplicativos.

Quando que isso pode ser útil ?

Já trabalhei em lugares onde a senha do banco de dados, era digitada no console do appserver, pelo próprio pessoal da equipe de DBA, e em algumas situações era necessário realizar alguma pesquisa no BD, então essa dica vale a pena.

Em banco de dados de código livre fica mais fácil, basta usar o código fonte do driver JDBC, modificar o código fonte para imprimir a senha e pronto.

Em banco de dados que não são de código livre, basta criar sua classe que estende DataSource e sobrecarregar o método getConnection e fazer um proxy para o DataSource do driver JDBC.

Então, percebam que os asteriscos no textfield não significam segurança para a senha do banco de dados.

Tenho essa dica há uns 3 anos e percebi que não escrevi sobre ela ainda.

Se essa dica foi útil para você, deixe um comentário, informando como ela lhe ajudou ! 

Escrito por claudio at 7:17 AM categorizado por Dicas e Scripts

Tags: java dicas

Quarta-feira, 24 Outubro 2007

Conexão Java 2007 - Palestra sobre performance

Conexão Java 2007, eu vou !

Já percebi outros blogueiros comentando sobre o Conexão Java 2007, próximo dia 09 de novembro em São Paulo. Então eu já estava atrasado para escrever sobre isso.

Recebi um convite para efetuar uma palestra sobre Performance de Aplicações Java, e aceitei com honra participar de tal evento que conta com prestígio da comunidade Java.

Performance é um tema bastante abrangente, e como tenho uma certa atração por esta área, então tenho muitas horas para conversar e explicar sobre esse tema, cobrindo, análise, ferramentas, técnicas, ambientes, código e infraestrutura. Provavelmente o evento não irá ceder o auditório para 3h de palestra + discussão.

Então nesta palestra coloco como foco a performance em aplicações Java, mostrando os problemas comuns em um projeto que não consdera a performance desde a concepção, e como consequência a aplicação não se comporta bem em produção.

Como irei focar no problema e sua solução não posso deixar de mostrar as ferramentas que dão suporte a resolução desses problemas. Basicamente irei mostrar esses tópicos

  • Performance na concepção do sistema
  • Problemas e soluções comuns de memória e CPU
  • Ferramentas e Técnicas


O objetivo nesta palestra é fornecer um conjunto de técnicas, dicas e ferramentas de como abordar e resolver o problema.

Se você trabalha em alguma empresa ou projeto que está com problemas em desempenho, venha e conheça um pouco do que será mostrado.


Escrito por claudio at 2:46 PM categorizado por SouJava

Tags: soujava java palestra eventos performance

Quinta-feira, 18 Outubro 2007

Controle sua apresentação OO pelo seu telefone celular

Em palestras, é muito comum o palestrante controlar o avanço e retrocesso dos slides, pressionando o botão do teclado ou mouse.

Mas sempre tem uma galera que não fica contente com as coisas convencionais, então que tal usar seu telefone celular para controlar o avanço/retrocesso dos slides ?

É exatamente isso que faz a aplicação Mobile OpenOffice Controller, de autoria do Bruno Ghisi e Lucas Torri.

Testei e funcionou de primeira, recomendo a todos. Isso serve de uma boa demostração de tecnologias diferentes.

A aplicação usa

Faça você o teste também e dê um feedback sobre o funcionamento.

Escrito por claudio at 5:09 AM categorizado por Java

Tags: java dicas

Quarta-feira, 17 Outubro 2007

Mauricio Leal e Bruno Ghisi em podcast do java.net

Na comunidade de Mobile and Embedded do java.net, existem podcasts com entrevistas e notícias

Então aviso que foi publicado um podcast intitulado "Mobile & Embedded Community Stars", com entrevista de dois brasileiros membros da comunidade, Maurício Leal e Bruno Ghisi. Fica meu agradecimento e paráens a ambos pelo trabalho que conduzem junto a comunidade Java Mobile. 

O Maurício Leal, amigo foi motivo de outro podcast "Mobility and the Mobile and Embedded Community",  e participa em eventos compartilhando seu conhecimento em Java Mobile.

O Bruno Ghisi, conheci no JustJava, onde conversamos um pouco sobre Java Mobile e alguns problemas da plataforma, que ainda não foram solucionados (como certificação digital). O Bruno é líder do projeto Marge (framework para desenvolvimento em Java com Bluetooth).

Parábens ambos profissionais e membros da comunidade Java brasileira.

Vi que no site do projeto Marge uma referência ao projeto mOOo Impress Controller, uma aplicação que é possível controlar o avanço dos slides do OpenOffice, através do telefone celular. Fiz o download e amanhã coloco minhas impressões.

Escrito por claudio at 5:21 PM categorizado por SouJava

Tags: soujava java noticias

Terça-feira, 9 Outubro 2007

Vídeo do SouJava

Fiz um vídeo que mostra um pouco do que o SouJava já fez. Fiz de última hora, mas ficou bem legal.

Já recebi sugestões para melhorias e uma versão em inglês.

Se você tiver alguma sugestão, deixe um comentário ou escreva para mim: claudio em claudius com br

Escrito por claudio at 5:37 PM categorizado por SouJava

Tags: soujava java

Quarta-feira, 3 Outubro 2007

JustJava 2007, nos vemos por lá

Dicas

O evento JustJava começa hoje, e pela programação de palestras, tem muita informação importante.

São 3 dias de intensa informação, com tópicos que cobrem quase todos os aspectos da tecnologia Java. E apenas uma informação, coloquei um mapa fácil para chegar ao SENAC Santo Amaro.

O Mauricio Leal, escreveu uma série de mensagens que mostram um pouco de cada palestra e seu palestrante, procurem pelas mensagens com a palavra justjava.

Também vou assistir algumas palestras, sobre tuning e garbage collector, JavaServer Faces, AOP. Como chegarei ao evento apenas na quinta-feira, não conseguirei assistir algumas palestras que gostaria.

Minha palestra "Ferramentas e Técnicas para Resolução de Problemas em Desempenho de Aplicações em Java", marcada para sexta-feira as 16h, irei mostrar por onde começar a olhar o problema, quais ferramentas usar, qual o nível de intrusão no ambiente e problemas comuns.

As muvucas irão ocorrer na quarta e quinta-feira as 19:30. Para quem ainda não conhece, as muvucas são reuniões efetuadas após o eventos, cujo objetivo é reunir experts e interessados em um tópico, com sessões de perguntas/respostas e dicas. Considero a muvuca uma das partes mais bacanas do evento, pois permite ter uma interatividade maior com palestrantes, onde podem perguntar algo sobre a palestra que não teve tempo, durante a palestra.

Escrito por claudio at 3:22 PM categorizado por SouJava

Tags: soujava java palestra eventos performance justjava

Segunda-feira, 10 Setembro 2007

Veja a programação do JustJava 2007 no seu celular

Dicas O evento JustJava 2007 está próximo, será no dia 03 a 05 de outubro em São Paulo. A grade de eventos já foi publicada.

O evento conta com muitas palestras bacanas e ótimos palestrantes, tratando de temas que podem lhe ajudar a resolver problemas do seu trabalho ou mesmo influenciar próximas decisões profissionais.

Uma das palestras é sobre "MIDP 3, o futuro do Java ME" que será ministrada por Marlon Luz e Luiz Anjos, que trata dos avanços da tecnologia Java usada em telefones e palmtops. O Marlon e Luiz criaram uma aplicação Java capaz de mostrar a programação de palestras do evento, veja no site uma demonstração, copie e instale no seu telefone celular, ficou muito bacana.

Escrito por claudio at 2:16 PM categorizado por SouJava

Tags: soujava java justjava

Evento Java em Cuiabá, 4o JAVAC

Próximo dia 15 de setembro em Cuiabá, irá ocorrer o evento JAVAC "Java em Cuiabá", organizado pelo JUG cuiabano CAJU (Cuiabá Java Users).

Dicas Clique na imagem ao lado para ver o cartaz do evento, completo com a programação e local.

Cuiabano bom que sou, aceitei com muito prazer participar do evento, que visa agregar e disseminar a tecnologia Java na região cuiabana.

Veja a programação do evento

08:00  Abertura do Evento
08:30   Engenharia de Software e Práticas Aconselháveis de Implementação Java
Marcos Daniel / Shimokawa
10:00  Produtividade no Desenvolvimento JavaEE com Software Livre
Fernando Lozano
14:00 NetBeans e Mustang: Acelerando o seu desenvolvimento Java
Claudio Miranda
15:00 Acelerando o Desenvolvimento Através de Frameworks
Tiago Lacerda / Ed Fernando
16:30 Apache Struts 2 - Turbinando o Desenvolvimento Web
Claudio Miranda
18:00   Entrega dos Alimentos
Encerramento do Evento

Em anos anteriores participei do evento, e realizando justa causa, parabenizo o Thiago Lacerda, Ed Fernando e a comunidade Java em Cuiabá, pois não é fácil manter um JUG, efetuar palestras, cuidar de eventos, tudo isso no tempo livre.

Já convidei colegas que já trabalhei anteriormente para prestigiar o evento.

Escrito por claudio at 1:46 AM categorizado por SouJava

Tags: soujava java palestra eventos

Segunda-feira, 30 Julho 2007

Como encontrar uma classe ?

Dicas Nesta dica mostrarei duas dicas que me ajudam muito no dia a dia.

1) Encontrar em qual biblioteca está uma classe 

Existem diversas situações onde é necessário encontrar em qual biblioteca encontra-se uma determinada classe Java.

Em 2004 coloquei uma dica de um script bash que resolve isso. Esse script mostra todos os arquivos que ele vasculhou para procurar a classe, mesmo que a classe não estivesse no arquivo, ele seria mostrada mesmo assim, causando desperdício de tempo e de tela.

Então aproveitei um tempinho e arrumei o script, onde é mostrado apenas o arquivo que contém a classe procurada e ainda arrumei a impressão da tela.

#!/bin/sh

usage="Uso:        findJavaClass directory ClassName   "

if [ $# -lt 2 ] ; then
    echo $usage
    exit 1
fi

if [ -d $1 ] ; then
    FIND_CMD="find $1"
else 
    echo "Diretorio nao existe"
    exit 1    
fi

$FIND_CMD -name \*.jar | while read jar_file ; 
do
    found_class=`unzip -l $jar_file | awk '{print $4}' | grep  $2`
    num_classes=`echo $found_class | wc -c`
    if [ $num_classes -gt 1 ] ; then 
        echo ""
        echo "Arquivo:"
        echo "    $jar_file"
        echo "Classes:"
        echo $found_class | sed 's/\ /\n/g' | sed 's/^.*/\ \ \ \ &/g'
    fi
done

  

E o um resultado como exemplo:

$ findJavaClass ~/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/ Task

Arquivo:
    /home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/http.jar
Classes:
    sun/net/httpserver/ServerImpl$ServerTimerTask.class

Arquivo:
    /home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/jaxb-xjc.jar
Classes:
    com/sun/istack/tools/ProtectedTask$AntElement.class
    com/sun/istack/tools/ProtectedTask.class
    com/sun/tools/jxc/AptBasedTask$1.class
    com/sun/tools/jxc/AptBasedTask$AptAdapter.class
    com/sun/tools/jxc/AptBasedTask$InternalAptAdapter.class

  

2) Como mostrar o conteúdo de um arquivo que está compactado ?

Quantas vezes por dia você descompacta um arquivo só para olhar o conteúdo do manifest ?

Então segue mais uma dica, onde não é necessário descompactar o arquivo.

$ unzip -c /home/claudio/javaSoftware/netbeans-5.5.1/ide7/modules/ext/jaxws21/jaxb-xjc.jar META-INF/MANIFEST.MF
  

Escrito por claudio at 2:56 AM categorizado por Dicas e Scripts

Tags: linux dicas java

Sábado, 28 Julho 2007

Completar números com zeros a esquerda

Ao lidar com impressão de números em relatórios, geralmente é necessário preencher todas as posições com o número zero a esquerda.

Exemplo:

É necessário preencher um campo de 10 posições, onde dado um número qualquer, que seja menor do que a quantidade de posições, então as posições do lado esquerdo devem ser preenchidos com o número zero.

Número Impressão
382 0000000382
450018 0000450018


Uma das técnicas mais comuns é usar a quantidade total de números do campo e adicionar com zeros a esquerda e depois remover os zeros excedentes.

int n = 38002;
String zeros = "0000000000";
String numero = zeros + n;
System.out.println(numero.substring(numero.length() - 10));

No Java 5 existe um método printf, copiado da linguagem C que permite formatar a impressão do resultado. 

int n = 38002;
System.out.printf("%010d", n);

Esta é apenas uma das funcionalidades adicionadas ao Java 5 que aos poucos são incorporadas no dia a dia dos projetos.

Atualização em 28/julho:

Nem tudo é impresso no console, mas manipulações de variáveis, então basta usar outro método que retorna uma String. No exemplo abaixo, a variável f, contém o número formatado.

String f = String.format("%010d", n);
System.out.printf(f);

Escrito por claudio at 5:07 AM categorizado por Dicas e Scripts

Tags: java dicas

Sexta-feira, 27 Julho 2007

Oportunidade de trabalho na Summa Technologies

Summa-Tech

Segue algumas oportunidades para trabalho na Summa-Tech

1 Estágio
1 Desenvolvedor Júnior
1 Desenvolvedor Pleno

Envie seu currículo para a Thais
 

Estágio


Curso:
  • Engenharia da Computação e afins
  • Ciências da Computação
  • Sistemas de Informação
Requisitos Técnicos:
  • Desenvolvimento de aplicações em JAVA

Mandatório:

  • Conhecimento em OO
  • Lógica e programação e Conhecimento de Algoritmos

Desenvolvedor Junior

Experiência:
Acadêmica ou profissional nos desenvolvimento de aplicações Java

Recém-formado:

  • Engenharia da Computação e afins
  • Ciências da Computação
  • Sistemas de Informação

Requisitos Técnicos:

  • Conhecimento de OO
  • Linguagem Java
  • Lógica de programação, Conhecimento de Algoritmos e Estrutura de dados
  • SQL Básico

Desejável:

  • Tecnologias Java JEE
  • Tecnologias Web
  • Unix (Linux, BSD, Solaris...)
  • IDEs Java: Eclipse, Netbeans etc.

Diferencial:

  • Sun Certified Java Programmer

Desenvolvedor Pleno

Experiência:
Profissional nos desenvolvimento de aplicações Java JSE

Formação:

  • Engenharia da Computação e afins
  • Ciências da Computação
  • Sistemas de Informação

Requisitos Técnicos:

  • Conhecimento avançado em Java SE
  • Sockets
  • IO / NIO
  • Multi-threading
  • Protocolos de Rede
  • Programação Concorrente
Desejável:

  • Java 2D/3D
  • Flash
  • Tecnologias Java EE
  • Tecnologias Web
  • Sistemas Operacionais: Windows e Unix
  • Bancos de Dados Relacionais

Diferencial:

  • Sun Certified Java Programmer
  • Sun Certified Java Developer

Escrito por claudio at 2:49 AM categorizado por Summa-Tech

Tags: summa oportunidade vaga java

Terça-feira, 3 Julho 2007

JustJava 2007, Palestras, tutoriais, discussões técnicas

JustJava 2007

JustJava 2007, será a 6a edição de um evento que já marca o cenário brasileiro de desenvolvimento de software para a tecnologia Java. Lembro que ainda morava em São Paulo, quando assisti ao 1o JustJava localizado na Av. Pompéia, e teve a presença do John Gage junto com Bruno Souza, comentando sobre as novidades do JavaOne.

O tempo passou e temos um evento com duração de 3 dias, com tutoriais, palestras técnicas, discussões e muito networking. Tenho participado dos eventos anteriores e este ano continua um prazer colaborar com a disseminação da tecnologia Java.

Neste ano o JustJava será efetuado novamente nas instalações do SENAC Santo Amaro, veja os dados do evento:

Local: SENAC Santo Amaro,
Avenida Engenheiro Eusébio Stevaux, n. 823
Data 02 a 04 de agosto
Horário 8:30h a 19h
 

 


Marquem em suas agendas a data e fique ligado no website e lista de notícias do SouJava e JustJava pois será divulgado a programação do evento e formulário de inscrições.

Escrito por claudio at 6:29 PM categorizado por SouJava

Tags: soujava java justjava palestra eventos

Palestras do JustJava em Análise

Recebemos muitas submissões de palestras para o evento JustJava 2007. Como de sempre, muitos temas, cobrindo desde Java no Desktop, Servidor, Java FX, Scripting, Java 3D, etc.

Estamos com um time que começou a análise de palestras, e temos a intenção de disponibilizar uma grade preliminar esta semana. Será publica na lista de noticias do SouJava, site do SouJava e no site do JustJava.

Agradeço ao pessoal que submeteu as palestras, fique ligado nos próximos dias.

Escrito por claudio at 4:04 PM categorizado por SouJava

Tags: soujava java justjava

Quinta-feira, 14 Junho 2007

Aberta a submissão de palestras para o JustJava 2007

Preparem os teclados, afinem as idéias, abram o editor de texto, pois começou a submissão de palestras para o evento JustJava 2007

JustJava 2007

Nestes eventos além de aprender sobre as novidades da tecnologia Java, podemos conversar e trocar informações com profissionais. Tenho participado de todas as edições do JustJava, desde 2000. É muito bacana, conhecer pessoalmente as pessoas que muitas vezes apenas lemos em blogs, revistas, artigos, etc.

Pessoas como Michael Nascimento Santos (Mister M), Bruno Souza, Fabio Velloso, Edgar Silva, Mauricio Leal, Paulo Silveira, Marcelo Mayworm, Rodrigo Urubatam, Helder da Rocha, Leonardo Galvão, Allan Jones, Paulo Jeronimo, ufa, vou parar por aqui. E também rever amigos e colegas que conheci de outros eventos.

Em resumo, eu recomendo muito a participação no evento, como palestrante ou participante, das duas maneiras é gratificante.

Submissão de trabalho: até 20 de junho.
Notificação sobre a aceitação: 30 de Junho.

Data: de 02 à 04 de agosto
Horário: 8h30min às 19h00
Local: SENAC - CAMPUS SANTO AMARO
         Avenida Engenheiro Eusébio Stevaux, n. 823
         Santo Amaro

Escrito por claudio at 4:47 PM categorizado por SouJava

Tags: soujava java justjava

Terça-feira, 5 Junho 2007

Quantidade de threads por processo

Regularmente preciso verificar a quantidade de threads em um processo. Tanto em solaris como em linux. Coloco primeiro a versão para linux e depois a versão para Solaris.

Linux

Então coloco aqui o comando ps completo e logo abaixo um script para facilitar o monitoramento.

O comando ps

ps -p PID -o pid,user,%cpu,rss,etime,nlwp,args

Exemplo de invocação

$ ps -p 5124  -o pid,user,%cpu,rss,etime,nlwp,args
  PID USER     %CPU   RSS     ELAPSED NLWP COMMAND
 5124 claudio   8.0 122160      39:37   11 /usr/local/firefox/firefox-bin

A quantidade de threads é mostrada na coluna NLWP, que neste exemplo mostra 11 threads.

A opção -o informa quais colunas devem ser mostradas. Veja o manual do comando ps para verificar outras opções.

Note que o comando ps tem apenas uma invocação, o que torna difícil o monitoramento. Então criei um script bash, que tem as seguintes vantagens:

  • Aceita uma quantidade de repetições.
  • Repete o cabeçalho em 15 linhas
  • Aceita uma string como argumento, ao invés do nome do processo. Para não ter de ficar procurando o PID a todo momento.

threads_per_process.sh

Solaris

No solaris o comando é mais fácil: prstat

Ele aceita um parametro de repetição, que é útil para monitoramento.

Comando

prstat -c -p PID 1 3

Exemplo de invocação

$ prstat -c -p 15409 1 3
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 15409 claudio   171M  120M sleep   59    0   4:22:25 6.6% java/29
Total: 1 processes, 29 lwps, load averages: 0.25, 0.27, 0.29
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 15409 claudio   171M  120M sleep   59    0   4:22:25 6.3% java/29
Total: 1 processes, 29 lwps, load averages: 0.26, 0.27, 0.29

A quantidade de threads é mostrada na última coluna, chamada de NLWP, ao lado do nome do binário, que neste exemplo, mostra 29 threads.

Este monitoramento permitiu que pudesse avaliar um teste de threads que precisei realizar um tempo atrás. 

Se isto é útil para você, deixe um comentário sobre como isso lhe ajudou.

Escrito por claudio at 8:25 PM categorizado por Dicas e Scripts

Tags: java solaris dicas performance linux

Reunião do SouJava - Especial JavaOne

Hoje (dia 05/junho) irá haver uma reunião no SouJava em São Paulo, com a presença de algumas pessoas que participaram do evento neste ano.

Os palestrantes serão: Bruno Souza, Fabiane Nardon, Mauricio Leal e Fabio Velloso.

Serão mostrados e discutidos as principais novidades que ocorreram lá. Minha presença estaria garantida, se eu estivesse em São Paulo.
Compareça à reunião, pois é importante a sua presença, para discutir, fazer contatos, ganhar alguns brindes

Será efetuado o sorteio de brindes e camisetas.

Por favor, enquanto o site do SouJava estiver fora do ar peço que todos confirmem sua presença enviando um email para bianca.spazziani [at] soujava.org.br com o título "CONFIRMAÇÃO REUNIÃO SOUJAVA - 05/06" e no corpo do email o
seu nome completo para o endereço;

Sorteios:
- 2 assinaturas semestrais (6 edições) da revista JavaMagazine
- 2 assinaturas semestrais da revista SQL Magazine
- 1 assinatura anual da revista WebMobile
- 1 licença de IntelliJIDEA 6.0
- Brindes especiais

Escrito por claudio at 4:24 PM categorizado por SouJava

Tags: soujava java javaone

Quinta-feira, 17 Maio 2007

Mais oportunidades na Summa Technologies

A Summa Technologies do Brasil, continua com vagas disponíveis para serem preenchidas.

Se você tem interesse em trabalhar com um excelente time de profissionais, com tecnologia de ponta e desafios profissionais, então veja a notícia abaixo:

Mais oportunidades na Summa Technologies do Brasil. 

Nesse momento, a Summa possui oportunidades de trabalho para profissionais com os seguintes perfis: (curriculos deverão ser enviados com os nomes dos perfis abaixo)

    Contato........: Thais Fernandes
    E-Mail.........: curriculo(arroba)summa-tech.com

Perfis: (Serão analisados somente curriculos nesses perfis. Curriculos com outros perfis serão descartados)

  • Arquitetos/Desenvolvedor
  • Desenvolvedor Senior
  • Líder técnico
  • Analista de QA
  • Analista de requisitos
  • Analista de infraetrutura
Formação: Engenharia de Software ou Ciência da Computação

Área de Desenvolvimento:

  • Experiência e conhecimento em integração de sistemas e produtos/frameworks de mercado;
  • Sólidos conhecimentos de banco de dados, servidores de aplicações, técnicas de desenvolvimento (Design Patterns, etc), frameworks de mercado
    • (Struts, Hibernate, Spring, Genesis ou similares), ferramentas e ambientes de desenvolvimento;
  • Extensiva experiência no desenvolvimento de aplicações Java EE, incluindo análise, arquitetura e modelagem (UML), preferencialmente como líder técnico e arquiteto;
  • Boa capacidade de comunicação (português e inglês), rápida absorção de novas tecnologias, liderança, motivação e espírito de equipe.

Características adicionais desejáveis:
  • Certificação Java, de preferência Sun Certified Java Programmer e/ou Enterprise Architect;
  • Mestrado, MBA ou especializações em áreas correlatas;
  • Experiência no desenvolvimento de portais e Web Services;
  • Palestras em eventos de tecnologia, participações em JUGs e projetos open source.

Infraestrutura:

  • Experiência consolidada em infraestrutura de SO solaris, linux e windows.
  • Experiência em servidores de aplicativos Sun Application Server 7 e 8.x ou outro AS de mercado (WebSphere, JBoss, BEA)
  • Conhecimento básico em linguagem java, para diagnóstico de problemas
  • Desenvoltura e pró-atividade
  • Experiência em linguagens de script unix: perl, bash, ksh
  • Experiência em configurações de cluster, balanceador de carga, tolerância a falhas

Para seus funcionários, a Summa fornece como diferenciais um excelente ambiente de trabalho, oportunidades de crescimento profissional à frente de projetos inovadores, remuneração e valorização profissional compatíveis com o perfil e experiência de cada pessoa. 

Escrito por claudio at 6:17 PM categorizado por Summa-Tech

Tags: summa java

Terça-feira, 15 Maio 2007

Qual é a quantidade máxima de threads suportada por um sistema ?

Tive de efetuar um teste para um cliente, onde é necessário verificar qual é a quantidade máxima de threads suportada por uma determinada máquina.

Parece simples não é ? Pois só parece, pois existem fatores que podem variar muito o resultado

  • Tamanho da pilha: -Xss
  • Tamanho máximo do heap: -Xmx
  • Capacidade computacional disponível, para funcionar o teste. Tome cuidado ao rodar isso na sua máquina de produção.
  • Em um ambiente de servidor real, o mesmo usa mecanismos de pool e prioridades, onde este teste não considera isso. Logo o sistema irá sempre suportar mais threads do que o resultado desta medição.
  • Cada thread efetua vários cálculos matemáticos, enquanto que em uma aplicação real cada thread faz operações diferentes.

Fiz um guia no ClaudiusWiki, onde as existem mais informações sobre isso e onde estão os arquivos para download, com as respectivas instruções.

Escrito por claudio at 7:49 PM categorizado por Java

Tags: java dicas performance

Sexta-feira, 4 Maio 2007

Permissão em arquivo policy

Alguns dias atrás foi necessário habilitar um mode trace do driver DB2, em uma aplicação do cliente. No entanto ocorria o seguinte erro ao usar o trace:

Caused by: java.security.AccessControlException: access denied (java.lang.reflect.ReflectPermission suppressAccessChecks)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:568)

Então, pensei "É só colocar o grant com codebase e permissão e está tudo resolvido. Então coloquei a seguinte linha no policy do AppServer. Sendo que no caminho do driver, são vários arquivos .jar

grant codeBase "file:///caminho/driver-db2/-" {
        permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};

Mas ao rodar a aplicação novamente, ocorreu o mesmo erro de falta de permissão (access denied), como mostrado anteriormente.

Então após mais alguns testes e variações desta configuração, resolvi remover o codeBase do grant. E funcionou. Claro que deixar isso desabilitado tem questões de segurança envolvido. Convenhamos que se alguém quiser fazer algum malefício, essa opção não ira colaborar imensamente. Visto que alguns outros appservers nem habilitam o security manager.

Escrito por claudio at 5:16 AM categorizado por Dicas e Scripts

Tags: java

Segunda-feira, 23 Abril 2007

Visita do Jeanfrancois em Brasilia

Na última semana, o SouJava Brasília, recebeu o Jeanfrancois Arcand, engenheiro da Sun que trabalha no projeto Glassfish, servidor de aplicativos Java EE. 

Pudemos colocar o Jeanfrancois em contato com alguns clientes e universidades, para que ele pudesse apresentar sobre as últimas novidades em Glassfish, APR, Web 2.0, Grizzly. Pudemos levar o Jeanfrancois na Caixa Economica Federal, Tribunal de Contas da União, Universidade de Brasilia, equipe técnica da Sun e Ministério da Educação.

Foi bem legal participar dessas apresentações e conversar com o Jeanfrancois, pois aprendi um pouco mais sobre os costumes de Quebéc.

Vejam algumas (poucas) fotos.

Visita do Jeanfrancois

Escrito por claudio at 6:54 PM categorizado por SouJava

Tags: soujava java

Sexta-feira, 20 Abril 2007

Oportunidade de trabalho na Summa Technologies

Mais uma oportunidade se abre na Summa Technologies do Brasil. 

Nesse momento, a Summa possui oportunidades de trabalho para profissionais com os seguintes perfis: (curriculos deverão ser enviados com os nomes dos perfis abaixo)

    Contato........: Thais Fernandes
    E-Mail.........: curriculo(arroba)summa-tech.com

Perfis: (Serão analisados somente curriculos nesses perfis. Curriculos com outros perfis serão descartados)

  • Arquitetos/Desenvolvedor
  • Desenvolvedor Senior
  • Líder técnico
  • Analista de QA
  • Analista de requisitos
  • Analista de infraetrutura
Formação: Engenharia de Software ou Ciência da Computação

Área de Desenvolvimento:

  • Experiência e conhecimento em integração de sistemas e produtos/frameworks de mercado;
  • Sólidos conhecimentos de banco de dados, servidores de aplicações, técnicas de desenvolvimento (Design Patterns, etc), frameworks de mercado
    • (Struts, Hibernate, Spring, Genesis ou similares), ferramentas e ambientes de desenvolvimento;
  • Extensiva experiência no desenvolvimento de aplicações JEE, incluindo análise, arquitetura e modelagem (UML), preferencialmente como líder técnico e arquiteto;
  • Boa capacidade de comunicação (português e inglês), rápida absorção de novas tecnologias, liderança, motivação e espírito de equipe.

Características adicionais desejáveis:

  • Certificação Java, de preferência Sun Certified Java Programmer e/ou Enterprise Architect;
  • Mestrado, MBA ou especializações em áreas correlatas;
  • Experiência no desenvolvimento de portais e Web Services;
  • Palestras em eventos de tecnologia, participações em JUGs e projetos open source.

Infraestrutura:

  • Experiência consolidada em infraestrutura de SO solaris, linux e windows.
  • Experiência em servidores de aplicativos Sun Application Server 7 e 8.x ou outro AS de mercado (WebSphere, JBoss, BEA)
  • Conhecimento básico em linguagem java, para diagnóstico de problemas
  • Desenvoltura e pró-atividade
  • Experiência em linguagens de script unix: perl, bash, ksh
  • Experiência em configurações de cluster, balanceador de carga, tolerância a falhas

Para seus funcionários, a Summa fornece como diferenciais um excelente ambiente de trabalho, oportunidades de crescimento profissional à frente de
projetos inovadores, remuneração e valorização profissional compatíveis com o perfil e experiência de cada pessoa. 

Escrito por claudio at 4:15 AM categorizado por Summa-Tech

Tags: summa oportunidade vaga java

Terça-feira, 17 Abril 2007

Certificação Digital em Aplicações Java ME

Em uma thread de discussão do SouJava sobre assinatura de aplicações Java ME com certificados, lembrei-me de um trabalho que fiz um tempo atrás sobre isso, e colaboro com a discussão. Respondi esta mensagem na lista de email, para ser arquivado e coloco no meu blog também.

Recentemente tive de investigar isso para celulares motorola e outros fabricantes, onde uma aplicação envia mensagens SMS e não é para aparecer um alerta solicitando permissão para efetuar a conexão. Para isso é necessário assinar a aplicaçao com um certificado emitido por uma autoridade certificadora (CA), e este CA já deve existir no telefone celular (geralmente na parte de configurações e segurança)

Tem um documento no site de desenvolvedores da motorola "Midlet Testing and Signing" que mostra bem os passos para assinatura de aplicações em telefones motorola. Recomedo a leitura.

Na página 10 do documento é possível requisitar um certificado de desenvolvimento (é um processo burocrático). Note que esse processo será usado para a obtençao de um certificado de produção. E mostra que o telefone motorola suporta certificados emitidos pelo CA da motorola, CA da operadora ou UTI (Unified Testing Initiative, do programa Java Verified). O CA da motorola somente é usado, quando existe um acordo como partner da morotola (envolvendo contratos, NDA, etc) e quando usar alguma característica específica da API da motorola.

Sobre o UTI, é burocrático também e caro. Pois exige o envio da aplicação para o UTI, então pode-se escolher uma empresa para testar a aplicação eles testam e se der qualquer erro, eles cancelam o programa de testes, então é necessário submeter uma versão da aplicação corrigida e o teste refeito. E para cada teste e cada device é cobrado um preço, veja preços de dois fornecedores. Note que este preço inclui  teste e a asssinatura se der tudo certo.

Outro cenário é saber se todos os telefones o CA ROOT da UTI. Veja os telefones que o suportam na tabela existente no website.

Para os devices que não suportam o UTI é necessário checar com o fabricante, qual o CA ROOT que é disponibilizado em cada aparelho. Para saber isso é necessário checar no website de desenvolvedores de cada fabricante os certificados suportados em cada device. Ou olha em cada aparelho qual é o CA ROOT disponível.

Um exemplo, eu tenho o telefone Nokia 3650, que tem instalado o CA ROOT: Verisign, Thawte, Cybertrust, etc. Então não suporta o UTI, teria de pagar para a Thawte por um certificado de para assinatura de aplicações, que custa US$ 159. Se a mesma aplicação tiver de ser instalada em outro telefone que não suporta Thawte, teria os custos de certificado desse CA ROOT.

Informações complementares, que encontrei no website da motorola (é necessário ter login no website):

I am a Motorola Partner, how do I obtain Partner Access to the MOTODEV website?
Development MIDlet Signing Process
Signing Midlets with a VeriSign or Thawte Certificate

E um blog comentando sobre a assinatura de aplicações Java ME.

Escrito por claudio at 2:28 PM categorizado por Java

Tags: java certificacao

Sábado, 14 Abril 2007

FISL, dia 13/abril

Ao chegar ao evento no FIERGS, vejo que o local é muito bom, tem muitos stands de empresas privadas e públicas, com stads para grupos de usuários e com conexão a internet, wireless e por cabo. Muito bom. Com sala de palestrantes (onde pude dar um último retoque na minha palestra).

Enquanto estava na sala, encontrei com o Fabio Velloso, Edgar Silva, Brian Leonard, Charlie Hunt e Jean Francois Arcand.Conversamos um pouco sobre ferramentas para monitoramento e diagnóstico para maperar problemas de desempenho em servidores Java, onde o Charlie indicou o Sun Studio, depois tenho de dar uma olhada nesta ferramenta. Conversei com o Jean Francois que usei o Apache MINA, framework de NIO, onde perguntei algumas comparações com o Grizzly, onde ele disse que pelos testes dele, tem um desempenho superior ao MINA. Hoje vou assistir a palestra dele e do Charlie Hunt sobre o Grizzly Framework.

Com o Brian e Edgar, comentei que no Apache Struts 2, existe uma funcionalidade similar ao In/Out do JBoss Seam, que é o Scope Interceptor, que permite ao desenvolvedor não se preocupar em manter os dados de um formulário, na sessão (ou outro objeto), no preenchimeno de formulários de múltiplas etapas.

Alguns minutos antes, eu já estava na sala Hopper, local de minha palestra, onde o Bruno Souza estava coordenando "Open Source Java Fishbowl: An Interactive Discussion", com membros do time do OpenJDK.

Então começei minha palestra, no horário certo. E o que é incrível, é que consegui terminar a palestra no tempo certo, e dando espaço para perguntas. Isso eu achei incrível, pois eu sempre estouro o tempo (outros colegas, também partilham dessa situação). Antes de começar a palestra, pensei que era pouca informação, poucos slides (apenas 26). Mas seguindo uma dica do Bruno Souza, concentrei as informações no que julguei ser mais importante. Ao final tiveram várias perguntas, que achei excelente, que mostra o interesse do pessoal. E depois o tradicional lançamento de camisetas.

Coloquei o material de minha palestra disponível.

Então após assisti um pouco da palestra do Fabio Velloso "SOA Open Source com Java Enterprise Edition", onde ele mostrou quais são os projetos de código livre, que suportam SOA e suas principais funcionalidades e limitações: Apache Service Mix, MULE, Sun Open ESB, JBoss ESB.

Encontrei também com o Mauricio "Maltron" Leal, Alexandre Gomes e Clediston (Sea Tecnologia). Uma das partes interessantes ao participar de eventos, é reencontrar os amigos.

A noite no jantar com toda a galera do SouJava, Sun e amigos, conversei com o Francois Orsini, onde ele deu muitas dicas, sobre ir morar nos EUA, como é morar por lá, foi muito bacana isso.

Enfim foi um dia muito bacana, mas como existe a lei de murphy, tem de ter algum problema. Ao chegar no hotel, minha reserva não foi encontrada. Mas a sorte foi que o hotel não estava lotado, então pude fazer outra reserva e dormir tranquilo.

Bom, agora tenho de correr, para fazer umas perguntas difíceis na palestra de uns amigos, só para ver divertir um pouco.

Tirei algumas fotos de minha palestra. Prometo tirar mais fotos e colocar por aqui.

8o Fórum Internacional de Software Livre

Escrito por claudio at 4:36 PM categorizado por SouJava

Tags: soujava palestra javali fisl struts

Quarta-feira, 11 Abril 2007

Eventos Java nos próximos dias

Nesta semana e na próxima o Brasil terá 3 grandes eventos que eu acredito serem de muita importância para o cenário Java nacional. Eu já havia escrito sobre eles antes, relacionando os palestrantes e palestras principais, e apenas quero enfatizar novamente, para o caso de alguém ter perdido isso.

Os eventos e suas respectivas datas:

  • Fórum Internacional de Software Livre
    Terá uma grade com muitas palestras Java, é o evento Javali, com palestrantes internacionais de renomados projetos de código livre
    Dias 12,13 e 14 de abril em Porto Alegre
    https://soujava.dev.java.net/servlets/ReadMsg?list=noticias-list&msgNo=4867
    http://fisl.softwarelivre.org

  • Sun Tech Days Brasil
    Evento da Sun, com eventos de comunidades: NetBeans, Solaris e Java ME. Terá laboratórios com pequenos tutoriais (Hands on Lab)
    Dias 18, 19 e 20 de abril e São Paulo
    http://www.suntechdays.com.br/
    https://soujava.dev.java.net/servlets/ReadMsg?list=noticias-list&msgNo=4869

  • Reunião especial do SouJava em São Paulo, com palestrantes internacionais, com ínicio as 17h e 4 palestras. O evento é gratuito.
    Dia 17 de abril na sede da SUCESU-SP.
    Para confirmar participação, é obrigatório, o envio de email para bianca.spazziani 'arroba' soujava,org,br com o título "CONFIRMAÇÃO REUNIÃO SOUJAVA - 17/04" e no corpo do email o seu nome completo para o endereço
    Além da participação em uma reunião bastante interessante, terá o sorteio de revistas e licença da IDE IntelliJIDEA 6.0

O evento do FISL é duplamente bacana, pois junta duas comunidades gigantescas, que é a Java e Linux, então é possível encontrar, discutir, perguntar, bater fotos, tomar uns drinks, etc, com toda uma galera diferenciada, para enriquecer as opiniões linux-javanesas, se é que você me entende. Em 2004, após o evento do FISL, fui com o Bruno Souza, Simon Phipps e a Paloma Costa em uma cidade nas redondezas, descemos cerca de 900 degraus para ver uma cachoeira, (a subida de volta foi... digamos, não tão boa como a descida), então tive de voltar as 15h, pois meu vôo era as 16, então fiz um trecho de viagem em cerca de 30min que normalmente é feito 50min, ao final percebi o alívio do pessoal quando larguei o volante :-D

Eu participarei no evento do FISL com a palestra "Apache Struts 2 - Turbinando o Desenvolvimento Web", no dia 13, as 18h, na sala Hopper.

Só fico torçendo para que o meu vôo na sexta-feira tenha "pouco" atraso. Incrível isso, a falta de pontualidade já é parte da nossa vida em qualquer momento.

Vários amigos já estão no evento do FISL, espero usar bem meu tempo por lá.

Escrito por claudio at 6:20 PM categorizado por SouJava

Tags: soujava palestra javali fisl struts

Quarta-feira, 28 Março 2007

Javali e FISL

Irá acontecer em abril, nos dias 12, 13 e 14, o Fórum Internacional de Software Livre, em Porto Alegre. Evento que é um dos maiores do mundo neste segmento, na organização, quantidade de participantes e palestras. Conta com palestrantes internacionais e nacionais de várias especialidades no mundo de software livre e Java.

FISL                                  

O FISL conta com um track somente Java, é o Javali, que contará apenas com temas ligados a tecnologia Java.

O evento cobre toda a área de TI, e neste anúncio será focado na representatividade da tecnologia Java. Veja alguns nomes que estarão presente ao evento:

 Veja algumas palestras:

Eu participarei com a palestra "Apache Struts 2 - Turbinando o Desenvolvimento Web", no dia 13 de abril:

Struts é o framework MVC para Java de maior adoção do mercado. A recente versão 2, adiciona muitas funcionalidades, correções e melhorias no modelo de programação. Esta palestra irá mostrar as principais funcionalidades e vantagens do Struts 2.0 como: Novo modelo de programação baseado em Actions e POJOs, internacionalização facilitada, anotações, validações, plugins, AJAX, programação por convenção, integração com Spring, templates com freemarker. Serão mostrados demos e exemplos de códigos.

Se você mora na região, não deixe de participar, é bom para fazer contatos, acompanhar o que há de mais recente em TI, opinar e compartilhar opinião, conversar com participantes de comunidades de software, oportunidades de trabalho e alguma diversão.

Eu participei do evento em 2004 e a experiência foi muito boa. Recomendo!


Escrito por claudio at 5:16 AM categorizado por Java

Tags: java soujava javali software livre fisl

Quarta-feira, 21 Março 2007

Desabilitar o login gráfico no solaris 10

Tenho usado o Solaris em uma vmware, e como preciso apenas de aplicações servidoras, e poupar o uso computacional de minha maquina, então desabilito o que não preciso, como sendmail, ftp e o login gráfico.

No caso do login gŕafico, para desabilitar, basta invocar o comando svcadm, como abaixo:

svcadm disable svc:/application/graphical-login/cde-login:default

Veja outra dica para habilitar/desabilitar serviços no solaris 10 

Escrito por claudio at 1:00 PM categorizado por Dicas e Scripts

Tags: java solaris dicas

Tutorial SouJava sobre Performance

Tutorial do SouJava

Desempenho é um tema que tenho forte interesse, pois lida com situações onde é necessário aproveitar os recursos computacionais existentes e tornar mais satisfatório o uso de uma aplicação.

Pois que no próximo sábado irá acontecer em São Paulo um tutorial gratuito "Envenenando Java - Dicas e Truques de Otimização", esta é a parte 1 de duas. O palestrante é Maurício "Maltron" Leal, amigo que tem presença marcante nos eventos Java nacionais.

Recomendo a todos que vão pois o Maurício tem boa didática e o tema é bastante importante para nossas profissão.

Para confirmar presença no tutorial que tem quantidade de assentos limitado, basta enviar um email para a Bianca Spazzianni, com o assunto "Confirmação tutorial SouJava - 24/03" e informe o seu nome completo no corpo do email.

Escrito por claudio at 2:00 AM categorizado por Java

Tags: java soujava tutorial performance

Quinta-feira, 8 Março 2007

Scripts no JDK 6

Renato Camara, novo colega de trabalho na Summa irá apresentar uma palestra sobre scripting em java, no dia 13 de março, na sede da SUCESU em SP, as 19h.

O legal de participar desse evento:

  • É de graça
  • Você aprende um pouco mais sobre java
  • Estabelece contatos, novos colegas, potenciais novos trabalhos
  • Concorre a sorteios de revistas (JavaMagazine, SQL Magazine e WebMobile)
  • E concorre a uma licença de IntelliJ IDEA 6

Bom, só tem a ganhar não é ?

Se eu pudesse estaria presente com certeza.

Veja na página oficial de scripting em java (faz parte do JDK 6) do que esta poderosa ferramenta é capaz de oferecer.

Veja a mensagem completa sobre a palestra e maneiras de se inscrever.

Escrito por claudio at 1:42 AM categorizado por Java

Tags: soujava palestra

Terça-feira, 13 Fevereiro 2007

Encontrar o DN root de LDAP

Publiquei há alguns dias uma maneira de encontrar o DN raiz de um MS Active Directory, através de uma ferramenta windows.

Então verifiquei que existe uma maneira (mais fácil) de descobrir todos os DN root configurados:

ldapsearch -x  -h 199.199.199.180 -p 389 -s base -b "" "objectClass=*" namingContexts

Escrito por claudio at 6:17 PM categorizado por Dicas e Scripts

Tags: dicas java ldap

Quarta-feira, 7 Fevereiro 2007

Mister M em nova JSR Date and Time API

Michael Nascimento Santos, que trabalha conosco na Summa, fez um clone seu para trabalhar em uma nova JSR a Date and Time API. Essa JSR terá influência do projeto de código livre Joda Date and Time API, pois o autor é participante da JSR também.

Ainda não li a proposta da JSR, mas algo que causa um pouco de trabalho, é atualizar o horário de verão, pois como as datas de ínicio e término variam em todas as ocorrências, é necessário atualizar o SO e JVM para refletir corretamente essas datas.

Até o ano passado era necessário efetuar o download do código fonte do JDK (não é o src.zip) e compilar o pacote javazic e baseado no arquivo de timezone novo (arquivo texto), gerar o novo arquivo de timezone (binário) e colocar no $JAVA_HOME/jre/lib/zi. Atualmente isso já consegue ser aliviado através da ferramenta TZUpdate que a Sun lançou ano passado.

Não sei se essa parte estará na JSR (vou ler mais tarde).

Ademais a API de Date e Time do Java precisa de algumas melhorias na API, para tornar mais fácil o uso dela. Ainda não esbarrei em algum problema sério que fizesse que eu usasse o JodaTime por exemplo (pelo que visualizei no guia de exemplo, é bem fácil).

Pela brincadeira do clone do Michael Nascimento, pois possui tantas atividades, que só clonando para conseguir fazer tantas atividades.

Desejo sucesso e que a API esteja disponível no JDK 7.

Escrito por claudio at 3:14 PM categorizado por Java

Tags: java jsr

Domingo, 28 Janeiro 2007

Blojsom3.1 + Jetty 6.1.1 + H2 Embedded, atualizado

Em novembro escrevi sobre a instalação do sistema de blog Blojsom 3.1 (que usa Spring, Hibernate, banco de dados SQL), usando o Jetty e Apache Derby. Depois de alguns testes, verifiquei que o footprint do derby era um pouquinho maior. Então resolvi testar com o H2, o que demonstrou ser um pouco melhor.

Então fiz a atualização do sistema de blog Blojsom para a versão 3.1 (usava a versão 2.3). O legal é que no Blojsom, tem uma maneira de migrar o sistema anterior para o atual, considerando tudo o que escrevi, comentários de leitores, imagens, etc. 

A atualização foi realizada com sucesso, a única exceção foi a customização nos templates do velocity. Na atualização os templates customizados foram copiados, (oba!), mas o problema é que algumas macros do velocity não funcionaram adequadamente. Então o que fiz, foi copiar os templates novos (blojsom 3.1) e customizar novamente. Mas isso, foi bem fácil, eram apenas 3 templates.

O maior problema, foi o seguinte. Na atualização do blojsom, tem alguns passos a seguir e se depois foi feito tudo com sucesso, então o modo de atualização deve ser desabilitado do bean factory (isso mesmo, agora o spring é usado para gerenciar o Blojsom), na próxima reinicialização.

Então, o espertão aqui, parou o webserver, mudou algumas outras coisas e ESQUECI de desabilitar o modo de atualização. Resultado: ferrou a instalação. Com uma exception: org.hibernate.NonUniqueResultException: query did not return a unique result: 2

O console de administração não funcionava mais. Ô cabeça de bagre. Mas, nem tudo estava perdido. Como é baseado em SQL, então era só verificar como estavam as tabelas do banco de dados. Como uso o H2, foi só levantar o servidor web e acessar pelo browser (detalhe, tive de colocar a opção -webAllowOthers true) inspecionar as tabelas e verificar alguma inconsistência.

Verifiquei que foi criado outro usuário e criado uma categoria raiz. Arrumei isso e (ufa) passou tudo a funcionar direitinho.

O detalhe é que, anteriormente eu fiz um ambiente de teste em meu computador local, onde tudo funcionou direitinho. O único detalhe, quando fui aplicar no meu servidor de produção, foi esquecer de desabilitar o modo de atualização do Blojsom.

Escrito por claudio at 6:46 PM categorizado por Java

Tags: java blojsom h2 derby

Segunda-feira, 27 Junho 2005

JavaOne 2005

Para começar não estou no em San Francisco assistindo ao JavaOne, mas estou assistindo ao webcast

Alguns anuncios e coisas importantes

Escrito por claudio at 6:26 PM categorizado por Java

Tags: javaone

Quinta-feira, 16 Junho 2005

Palestra JustJava: NetBeans e Mustang

Estarei em SP amanhã para o JustJava, vou efetuar a palestra: NetBeans e Mustang: Acelerando o seu desenvolvimento Java.
Não irei mostrar uma introdução a IDE com coisas básicas e que todo mundo já conhece.

Mostrar os diferenciais do NetBeans, veja mais sobre o que vou mostrar sobre o NetBeans, em adicional:

  • Plugins de integração com JBoss, WebSphere e WebLogic
  • Refactoring
  • Java Hints

Sobre o Mustang (JDK 5) pretendo:

  • Mostrar desenvolvimento colaborativo do JDK 5
  • Novidades interessantes de API: Trayicon, espaço em disco, splash screen nativo, etc.
  • Demonstrações
Bem, tenho de correr muito com a palestra para tudo isso, mas com o horário, poderei estender um pouco mais :-D

Escrito por claudio at 4:21 PM categorizado por Java

Tags: soujava eventos netbeans

Quinta-feira, 9 Junho 2005

Palestra SouJava Brasilia e JustJava

Hoje será realizado palestra do SouJava Brasilia

1a Reuniao Mensal do Soujava-Brasilia
Data: quinta-feira (09 de junho - hoje)
Horário: 19h
Local: Auditorio Sao Francisco de Assis - UCB - 916 Norte
Temas: Spring Framework e Netbeans + Tiger Eu irei realizar a palestra de NetBeans e Mustang, oops,  o anúncio saiu errado, é sobre o Mustang que vou apresentar
- principais características
- changelog significativo

JustJava 2005

Irei realizar palestra sobre o NetBeans e Mustang, com algumas demonstrações bem bacanas.
Vou comentar sobre as novas características do NetBeans
- hotswap de classes,
- integração com servidores de aplicativos,
- debug e profiling remoto em servidores J2EE,
- desenvolvimento drag\'d drop desktop com swing,
- performance com mustang,
- telemetria com JFluid,
- suporte ao desenvolvimento de agentes JMX,
- desenvolvimento visual de aplicações J2ME,
- características RAD no desenvolvimento J2EE e Swing,
- estendendo NetBeans com plugins,
- dicas e truques pouco usuais do NetBeans.

Veja o resumo da palestra

Escrito por claudio at 5:03 PM categorizado por Java

Tags: soujava netbeans mustang

« Setembro »
SegTerQuaQuiSexSábDom
  12345
6789101112
13141516171819
20212223242526
27282930   
       
Próxima página »     Última página »
 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »