sexta-feira, 19 de setembro de 2008

String, StringBuffer e StringBuilder.

Hoje vou mostrar a diferença entre as classes String, StringBuffer e StringBuilder.

Porque não usar String?
Toda vez que você faz uma concatenação de strings, você está alocando um novo objeto na memória, imagine isso em um laço de repetição.
Por isso que criaram a classe StringBuffer e StringBuilder.
Com StringBuffer sendo instanciada uma vez, você pode utilizar .append() e assim sempre utilizando o mesmo objeto da memória, com a StringBuilder é igual, porem somente a StringBuffer é synchronized.

Testando esse código você verá por que! :D

int val = 100000;
//É sincronizada, utiliza o mesmo objeto.
StringBuffer sb = new StringBuffer();
long time = System.currentTimeMillis();
for (int i = 0; i < val; i++) {
sb.append("a");
//System.out.println(sb.toString());
}
System.out.println("StringBuffer tempo total da Excecução: " + (System.currentTimeMillis() - time) + "ms");

//Não é sincronizada, utiliza o mesmo objeto.
StringBuilder sb2 = new StringBuilder();
time = System.currentTimeMillis();
for (int i = 0; i < val; i++) {
sb2.append("a");
//System.out.println(sb2.toString());
}
System.out.println("StringBuilder tempo total da Excecução: " + (System.currentTimeMillis() - time) + "ms");

//Cria diversos objetos para cada concatenação.
String s = "";
time = System.currentTimeMillis();
for (int i = 0; i < val; i++) {
s += "a";
//System.out.println(s);
}
System.out.println("Tempo total de Excecução da concatenação de strings: " + (System.currentTimeMillis() - time) + "ms");



T+
Leandro kersting

terça-feira, 2 de setembro de 2008

Netbeans 6.5 beta + Facelets

Estava eu com problemas de adaptar o plugin do nbfaceletssupport no netbeans 6.1, e parece que outros já tiveram o mesmo problema, o que acontece depois das atualizações, causando um erro por causa do jspParser.

Pois então seus problemas acabaram, baixando o netbeans 6.5 beta que já vem com suporte a facelets e adicionando o nbfaceletssupport tudo funciona perfeitamente.
insight/completion, syntax highlight etc.

Voce pode baixar ele diretamente do CVS e seguir todos os passos que existem aqui neste link.

http://blogs.sun.com/poting/entry/build_and_install_facelets_support
http://blogs.sun.com/poting/entry/use_facelets_support_modules_on

Ou vc pode pegar ele pronto aqui neste link do Marcio Borges.
http://www.marciowb.net/blog/2008/07/facelets-com-o-netbeans-61

Bom acho que é isso.

Abraços.
Leandro Kersting

terça-feira, 26 de agosto de 2008

Ações da Sun em queda

É parece que as ações da Sun estão em queda, estavam sendo negociadas á 24,92 dólares em outubro de 2007, caíram para menos de 10 dólares na semana passada.


here link

De acordo com alguns analistas a Sun poderá ser vendida por 4 bilhões de dólares. here link ou here ou here .

Bom, será que isso vai acontecer?
Será que a Microsoft vai comprar? Ou a Google? Ou a IBM?

bom acho isso uma tremenda besteria, mas enquanto isso esperamos para ver.

T+
Leandro Kersting

domingo, 24 de agosto de 2008

Monte seu Eclipse

Bom faz algum tempo que não atualizava este blog, e agora voltado estou postando aqui um link do blog do Márcio d'Avila acho o blog dele muito bom.

Então, umas das principais coisas que aconte com o pessoal que está iniciando é não conseguir configurar o eclipse, por não entender a diferença entre tantos plugins, neste link: aqui você poderá ver todos os plugins mais utilizados e para que cada um serve.




T+
Leandro Kersting

segunda-feira, 28 de abril de 2008

NetBeans 6.1 Final



Parece que hoje a partir das 2 horas da manha, foi liberado a Release do NetBeans 6.1, apesar
da demora, pois a previsão desta release estava previsto para dia 23 de abril de 2008.
http://www.netbeans.org/issues/show_bug.cgi?id=132997


porem se você for ao site http://www.netbeans.org/index.html estará visível o anuncio da versão 6.1 RC (Release Candidade),



mas já está disponível a versão NetBeans 6.1 Final, hoje dia 28 de abril de 2008.

Basta Fazer o Download.
http://download.netbeans.org/netbeans/6.1/final/

e para maiores informações.
http://www.netbeans.org/features/
http://www.netbeans.org/community/releases/61/index.html


T+
Leandro Kersting

quarta-feira, 23 de abril de 2008

JavaOne


Está Chegando o Dia.
6,7,8,9 de Maio de 2008, será o encontro para este JavaOne.
para quem quiser ficar por dentro do que está acontencendo.
entre em:
ou mande email para:
T+
Leandro Kersting

quarta-feira, 2 de abril de 2008

Nova Versão JBoss RichFaces 3.2.0

Pois é, à 2 Dias atrás, Dia 31/03/08, foi anunciado a Nova Versão 3.2.0 do framework Richfaces.
O JBoss Richfaces é um framework baseado em JSF 1.2.
RichFaces é uma rica biblioteca de componentes JSF, e um avançado quadro para integrar facilmente AJAX com capacidades empresariais em desenvolvimento de aplicativos.

O RichFaces componentes vêm prontos para usar, de forma imediata, Desenvolvedores podem economizar tempo e aproveitar os componente e recursos para criação de aplicações Web com muito mais Rapidez.

Abaixo segue a imagem de Alguns Componentes.

Tree




ContextMenu



Calendar



ComboBox



DataScroller



ColumnGroup


DropDownMenu



FileUpload


GMap



InplaceInput



InplaceSelect


ListShuttle




ModalPanel

OrderingList



Paint2D


PanelBar


PanelMenu


PickList


ProgressBar


SuggestionBox


TabPanel


ToolBar


ToolTip

DataTable



Para Maiores Informações Acesse os Sites:
JBoss Richfaces
Live demo

RichFaces Developer Guide
T+
Leandro Kersting



segunda-feira, 10 de março de 2008

VisualVM

Desde o JDK 1.4.2 até o Java SE 6, têm evoluído cada vez mais os recursos e as ferramentas para gerenciamento e instrumentação de máquinas virtuais Java (JVMs) e de aplicações executando nelas, local ou remotamente.
Estes potencialidades, em maior parte, são possíveis graças à tecnologia Java Management Extensions (JMX), que se tornou parte padrão da plataforma Java SE no J2SE 5.0. Através de JXM, pode-se construir mecanismos padronizados para desde coletar informações e estatísticas até atuar dinamicamente em parâmetros e recursos de componentes Java. A própria máquina virtual Java HotSpot da Sun usa extensivamente JMX para oferecer amplos recursos de instrumentação para os mais diversos aspectos da JVM, como alocação de memória, uso de CPU, threads e opções de execução. Servidores de aplicação Java livres (Tomcat, JBoss, Glassfish…) e comerciais também utilizam JMX para oferecer recursos de monitoramento e gerenciamento em tempo real.




A iniciativa mais recente é a ferramenta gráfica VisualVM, projeto de software livre (licença GPLv2+CE) sendo desenvolvido no portal java.net. A VisualVM visa integrar diversas ferramentas de gerenciamento de software existentes no JDK e recursos para profiling de memória e CPU, mas creio que principalmente o JConsole.
VisualVM ainda está no Milestone 3 (lançado em 19 de fevereiro), mas já mostra bem suas possibilidades de aplicação no monitoramento, instrumentação e profiling.

Para saber mais, artigos e guias das ferramentas de gerenciamento Java (em inglês):

Visual VM: Free and Open Source Java Troubleshooter, por Geertjan Wielenga, 2008-02-21, Javalobby.

Getting Started Extending VisualVM - Parte 1 (2008-02-26),
Parte 2 (2008-02-27),
Parte 3 (2008-02-28),
Parte 4 (2008-02-29),
Parte 5 (2008-01-03);
por Geertjan Wielenga, em seu blog, Sun Microsystems, Praga, República Tcheca.
Getting Started with Java Management Extensions (JMX): Developing Management and Monitoring Solutions,
por Qusay H. Mahmoud, 2004-01-06, SDN.
JSR 255: Java Management Extensions (JMX) Specification, version 2.0.
Especificação que atualiza as APIs JMX e JMX Remote para Java SE 6.0.
Monitoring and Management for the Java Platform,
parte da documentação de Java SE 6.0. Em especial, veja o guia
Overview of Java SE Monitoring and Management
e a documentação das ferramentas JConsole, jps, jstat, jstatd. Esta documentação
também existe para o JDK 5.0.
Using JConsole to Monitor Applications, por Mandy Chung, dezembro 2004.
Monitoring Local and Remote Applications Using JMX 1.2 and JConsole,
por Russell Miles, 2004-09-29, O’Reilly ONJava.com.
jvmstat 3.0, SDN Code sample.

T+

Leandro Kersting

sexta-feira, 7 de março de 2008

sábado, 1 de março de 2008

Java Persistence API - JPA

Criada para ser o padrão de persistência e mapeamento Objeto-Relacional, a Java Persistence API - JPA - foi concebida na mesma JSR, de número 220, que definiu a nova versão dos Enterprise JavaBeans.

Com preocupações sobre a evolução desta API, existe a expectativa de se criar uma JSR exclusiva para ela. Mas, ainda, não existe nada de concreto neste sentido.

Originalmente a idéia era simplificar a especificação dos EJBs Entity Beans do tipo CMP(Container Managed Persistence), daí a JPA ter sido desenvolvido na mesma JSR dos EJB. Porém, o Expert Group percebeu que seria melhor fazer uma especificação seguindo o estilo dos frameworks de persistência disponíveis no mercado: Hibernate, Toplink e JDO. Unindo as melhores idéias em cada um deles. O que motivaria a criação de uma nova JSR.

Se você tiver um ambiente de produção com uma JVM atualizada para a versão 5 é uma das melhores atualizações que podem ser utilizadas nos seus próximos sistemas.

Antes de escrever um tutorial sobre o assunto, vou listar alguns dos tutoriais que eu já li para implementar meu primeiro sistema com a JPA:

  1. An Introduction to Java Persistence for Client-Side Developers: Explica de forma clara como funciona a API usando como exemplo uma agenda. É um ótimo ponto de partida para conhecer a especificação e ter alguma coisa rodando. Utiliza a implementação TopLink Essentials;
  2. More Persistence for Client-Side Developers: Continuação do artigo anterior explica conceitos sobre o ciclo de vida dos objetos no EntityManager e fala sobre relacionamentos entre objetos. Utiliza a implementação Hibernate;
  3. Persistence Pays Offs: Advanced Mapping with JPA: Explicações mais avançadas sobre mapeamento. Herança e associações * * são abordadas neste artigo.

  4. Using Composite Keys with JPA: Tutorial sobre mapeamento de chave primária composta. Recomendado apenas quando o banco de dados já existe.
  5. TopLink JPA: Tutorial da Oracle. Utiliza a implementação TopLink Essentials, que é a Implementação de Referencia(RI), e está disponível junto com o novo servidor de aplicações JEE - GlassFish;
  6. Eclipse DALI: Plugin do Eclipse para auxiliar na utilização do JPA. Tem uns links para os tutoriais dos provedores de persistência.
  7. Managing JPA Entity Mappings: Tutorial desenvolvido pela BEA para mostrar o suporte visual dado pelo Workshop Studio para o desenvolvimento de aplicações de JPA.
  8. The Java Persistence API - A Simpler Programming Model for Entity Persistence: Comparação entre a versão anterior do EJB EntityBean CMP e a JPA apresentada pela Sun Microsystem.
  9. Field- vs. Property-Based access in JPA: Uma reflexão, feita por Adam Bien, sobre a forma de acesso aos atributos da entidade pelo EntityManager;
  10. Property Based Access in JPA - is an Emerging Antipattern: Crítica a utilização de anotações JPA feita em métodos getXXX(), também conhecido por Propety Based Access.
  11. Using Java Web Start with the Java Persistence API: Usando JPA com JavaWebStart.

T+

Leandro Kersting

sábado, 26 de janeiro de 2008

Lucro da Sun dobra em um ano e atinge US$ 260 milhões no 2º trimestre

A Sun Microsystems conseguiu dobrar seus lucros em um ano, embora a receita da companhia tenha apresentado crescimento pouco significativo no segundo trimestre fiscal de 2008.

No período encerrado em 31 de dezembro, a companhia registrou lucro de 260 milhões de dólares, com ganho de 31 centavos de dólar por ação. No mesmo período do ano anterior, o lucro da Sun era de 133 milhões de dólares, com ganho de 15 centavos de dólar por ação, anunciou a empresa na quinta-feira (24/01).

A receita da Sun, no entanto, atingiu 3,62 bilhões de dólares, apresentando um crescimento de apenas 1,4% em um ano. O resultado se deve ao aumento de 5% nas vendas de serviços corporativos da empresa. Já a divisão de servidores e soluções de armazenamento apresentou uma ligeira queda de 0,5% no segundo trimestre fiscal, em relação ao mesmo período de 2007.

Os negócios da Sun não foram bem nos Estados Unidos, onde a receita da empresa teve uma queda anual de 8% no segundo trimestre fiscal. Já a região que engloba Europa, Oriente Médio e África apresentou um crescimento anual de 7% em receita, sendo responsável por 39% dos negócios da Sun no período.

Apesar do crescimento pouco expressivo da empresa, o Chief Financial Officer (CFO) da Sun, Mike Lehman, declarou que a receita para todo o ano fiscal de 2008 deve crescer mais de 5% em relação ao ano anterior.

O salto nos lucros da empresa se devem a um programa de corte de custos, ainda em fase de implantação, que já representou uma série de demissões na companhia. O lucro de 260 milhões de dólares registrado no segundo trimestre fiscal da companhia inclui uma despesa de 32 milhões de dólares com a reestruturação.


Por IDG News Service
http://computerworld.uol.com.br/mercado/2008/01/25/lucro-da-sun-dobra-em-um-ano-e-atinge-us-260-milhoes-no-2o-trimestre/

T+

Leandro Kersting

sexta-feira, 25 de janeiro de 2008

Quando e porquê usar static?

Quando e porquê usar static?

Hoje me deparei com um problema, no qual era algo bem simples mas fiquei remando horas e horas até que descobri que era um problema estático.

Então resolvi postar aqui o assunto com um exemplo bem simples.

static é uma das palavras-chave do Java, e é também motivo de muita confusão e dúvidas entre o pessoal que esta começando. Aliás, mesmo os mais experientes confundem-se às vezes em usar ela. O método static mais famoso de todos é o main.
É através dele que vimos nosso primeiro programa em Java nascer, e é sempre via main que nossos programas criam vida. Por definição da linguagem Java, o método main precisa necessariamente ter acesso public, ser static, não retornar coisa alguma ( void ) e receber como argumento um array de String (String args[]).

Como regra geral, tenha isso em mente: dentro de métodos static somente é possível pode acessar outros métodos e variáveis que também sejam static.
Dentro do método pode-se definir qualquer tipo de variável, static ou não.
Caso seja necessário acessar algum método ou membro não-static, é necessário criar uma instância da classe e então chamar o que quiser. Já o contrario é um pouco diferente: dentro de membros não-static, é possível acessar tanto propriedades static quanto as não-static.

O fato de ser preciso primeiramente criar uma instância da classe para só então chamar algum método não-static ou acessar uma variável comum dentro de um método static deve-se ao fato que dentro dele não existe uma referência para o ponteiro this. O ponteiro this é utilizado para referenciar propriedades da classe em que estamos trabalhando.

Ao contrário do que o nome soa, static não significa que a variável ou método sera estática do ponto de vista que seu valor não pode mudar ( final é usado para estes casos ). static nos garante que somente haverá uma, e não mais que uma, referência para determinada variável ou método disponível em mémoria.
Em outras palavras, declarando alguma coisa como static, todas as instâncias da classe irão compartilhar a mesma cópia da variável ou método.

Declarar algo como static também permite você acessar as coisas diretamente, ou seja, sem precisar criar uma instância da classe. Existe inclusive um Design Patter baseado no uso de static: Singleton.



class StaticTemporaria {
public static int contador_static = 0;
public int contador_normal = 0;

public StaticTemporaria() {}

public static void incrementaStatic(){
contador_static++;
System.out.println("Contador STATIC agora é = " + contador_static);
}
public void incrementaContador() {
contador_normal++;
System.out.println("Contador NORMAL agora é = "+ contador_normal);
}
}



public class Static{
public static void main(String args[])
{
System.out.println("\n1ª Instância -----");
StaticTemporaria s1 = new StaticTemporaria();
s1.incrementaStatic();
s1.incrementaContador();

System.out.println("\n2ª Instância -----");
StaticTemporaria s2 = new StaticTemporaria();
s2.incrementaStatic();
s2.incrementaContador();

System.out.println("\n3ª Instância -----");
StaticTemporaria s3 = new StaticTemporaria();
s3.incrementaStatic();
s3.incrementaContador();

System.out.println("\n4ª Instância -----");
StaticTemporaria s4 = new StaticTemporaria();
s4.incrementaStatic();
s4.incrementaContador();
}
}


A saída gerada por este programa será:

1ª Instância -----
Contador STATIC agora é = 1
Contador NORMAL agora é = 1

2ª Instância -----
Contador STATIC agora é = 2
Contador NORMAL agora é = 1

3ª Instância -----
Contador STATIC agora é = 3
Contador NORMAL agora é = 1

4ª Instância -----
Contador STATIC agora é = 4
Contador NORMAL agora é = 1

Note que o atributo "contador_static", que é static, não teve seu valor zerado a cada novo objeto criado da classe StaticTemporaria, mas sim incrementado, enquando "contador_normal", que é um atributo comum, ficou sempre em 1, pois zeramos o valor no construtor da classe.

Então é isso ae, espero ter esclarecido este assunto.

T+

quinta-feira, 24 de janeiro de 2008

fisl9.0




O fisl9.0 (Forum Internacional do Software Livre) este ano acontecerá no Centro de Eventos PUCRS, 17, 18 e 19 de Abril de 2008.

Início
Abertas as inscrições para o fisl9.0
21/12/2007 - Já estão abertas as inscrições para o 9º Fórum Internacional Software Livre – fisl9.0, que será realizado nos dias 17, 18 e 19 de abril de 2008, no Centro de Eventos PUCRS, em Porto Alegre, RS, Brasil. Até o dia 1º de fevereiro o valor da inscrição para pessoa física, é de R$ 83,00. De 2 de fevereiro até o dia 7 de março, R$ 103,00. E de 8 de março a 11 de abril, R$ 123,00.

Após 11 de abril, as inscrições só serão aceitas na Secretaria do fisl9.0, no Centro de Eventos PUCRS. Do dia 17 ao dia 19 de abril, o valor cobrado será de R$ 153,00. Estudantes de estabelecimentos cadastrados pelo MEC terão 50 % de desconto, mediante comprovante ou atestado de matrícula do primeiro semestre de 2008, e os membros de caravanas, mediante o código promocional emitido ao responsável pela caravana.

Está adicionado ao valor da inscrição a quantia de R$ 3,00 (inscrição + R$ 3.00) que serão destinados à compra de sementes para o Projeto Banco de Sementes Livres, TV Software Livre, projetos de inclusão digital e de neutralidade em carbono.

As inscrições podem ser feitas pelo site http://www.fisl.org.br/.
Mais informações através do e-mail inscricoes2008@softwarelivre.org.
Preços:

dia. individual/empresas1. estudante2/caravanas3.governo/empenho5
01/02/2008 ..........R$ 83,00 ...............R$ 43,00....................R$ 153,00
07/03/2008...........R$ 103,00 .............R$ 53,00....................R$ 153,00
11/04/2008............R$ 123,00..............R$ 63,00....................R$ 153,00
durante o evento4..R$ 153,00..............R$ 78,00


Estendida Chamadas de Avaliadores do fisl9.0 até 26 de Janeiro

Atendendo a pedidos da comunidade, este ano o fisl está abrindo o processo de avaliação das palestras para qualquer pessoa que tenha experiência na área e queira participar. Esta é a sua oportunidade de fazer o fisl ficar um pouco mais do jeito que você gostaria que fosse, para que juntos continuemos a construir o evento preferido da comunidade Sofwtare Livre brasileira.

Você tem experiência com Software Livre? Participa de projetos de desenvolvimento, tradução ou documentação? Já participou ou palestrou no fisl? Organiza algum grupo de usuário ou evento em sua região? Se a resposta para as perguntas acima é sim, então entre em contato com o Comitê de Programa e participe do processo de avaliação das propostas!

Este ano batemos mais um recorde, com quase 600 propostas enviadas, então este trabalho certamente será vital para garantir a qualidade do conteúdo do evento.

É desejável que os avaliadores possam ler inglês e espanhol, já que recebemos propostas também nestes idiomas.

Como se inscrever? Envie um e-mail para reviewers EM softwarelivre PONTO org até o dia 26 de janeiro ao meio-dia (horário de Brasília), contendo os seguintes dados:

1) Nome completo
2) E-mail
3) Telefone para contato
4) Tem experiência com Software Livre? Conte pra nós em no máximo 10 linhas! (desenvolvimento, bugfixes, documentação, tradução, organização de eventos)
5) Já participou do fisl? Quantas vezes?
6) Já palestrou no fisl? Quantas vezes?
7) Já foi avaliador ou contribuiu com o evento de alguma forma? Como?
8) Quais trilhas tem interesse de avaliar ?

O que eu ganho com isso? Avaliando ao menos 1 trilha (com mais de 20 propostas) ou 2 trilhas completas (o que significa avaliar todas as propostas para aquele tema), você ganhará inscrição grátis para o evento, e seu nome estará no site e livro de anais como participante da comissão avaliadora das palestras. Além disso, você ganha um fisl com cada vez melhor qualidade de palestras! Você ganha, o fisl ganha, e a comunidade Software Livre ganha! Participe!


T+
Leandro Kersting


Sun paga US$ 1 Bilhão e compra MySQL AB

Uma Noticia um pouco atrasada, mas não poderia faltar.

A Sun Microsystems fechou acordo com a desenvolvedora sueca MySQL AB e vai adquirir a empresa.
O CEO da Sun, Jonathan Schwartz, concordou em pagar US$ 1 bilhão para controlar a companhia que desenvolve o banco de dados aberto mais popular do mundo.
O MySQL está instalado em mais de 10 milhões de máquinas no mundo e é utilizado pelo sistema de buscas do Google, no engine do Facebook e está presente, por exemplo, nos produtos da Nokia.
Com a compra, a Sun acredita que poderá usar sua força para aproximar o MySQL de um número maior de grandes corporações.

t+

Leanro Kersting

terça-feira, 22 de janeiro de 2008

Revista MundoJava edição 27.

Olá Pessoal!!!


Nas bancas a nova revista MundoJava:


Está edição acompanha um Poster com a Primeira Parte do Resumo para certificação SCJP.





Modelagem Ágil: Aprenda como utilizar a modelagem em UML de forma mais eficiente dentro de um ambiente ágil.


Model Driven Architecture (MDA) : Entenda como esse paradigma extrai o máximo dos modelos no processo de desenvolvimento de software.


MDA Prático com AndroMDA : Primeiros Passos Aprenda como utilizar os seus modelos em UML para gerar o código através desta poderosa ferramenta de código livre. Eu Uso ?


Modelagem Ágil e MDA : Veja a opinião de quem utiliza e aprova na prática cada uma dessas duas técnicas.


Integrando Frameworks Open-Source em uma Aplicação Web : Veja como integrar Spring, Spring MVC, Hibernate, SiteMesh, Lucene, Acegi Security, JUnit e MySQL através de uma análise técnica do site ?Mercado de Serviços?.


Instalando o ambiente do SAP NetWeaver CE 7.1 SR3: Veja como instalar e configurar os softwares SAP que acompanham a edição da revista no DVD.


Gerenciamento de Conteúdo Web com OpenCMS: Aprenda como gerenciar o conteúdo do seu site de forma simples e produtiva através da ferramenta OpenCMS.


ProfessorJ: O Primeiro e os Próximos Passos em Aplicações Swing: Aprenda os primeiros passos para programação com Swing e veja como dar os passos seguintes para obter produtividade nesse tipo de aplicação.


SOA na Prática: Processos Executáveis usando BPEL Veja como usar a linguagem BPEL para construção de processos executáveis baseados em serviços, com um exemplo passo-a-passo desde a concepção até o teste.


Tendências em Foco: Desenvolvimento Colaborativo Veja como dar os primeiros passos no mundo SOA e não ficar por fora da principal tendência do mercado na construção de aplicações corporativas.


Brindes: Poster com a Primeira Parte do Resumo para certificação SCJP DVD SAP NetWeaver Composition Enviroment Espero que todos gostem!!! Postem suas opiniões!!!


Então é isso ae.


T+


Leandro Kersting