Fragmental

8/31/2005

Spring em Ação

Não, não é lançamento de livro em português, não ainda (agradeçam, esse livro não é legal e não vale a grana).

Está acontecendo mais uma vez. Assim como com o Struts, o Spring está ganhando a luz do dia nas empresas após ganhar força na comunidade (e, assim como o Struts, em algum tempo perceberemos que podemos fazer bem melhor...).

Para quem (ainda) não sabe, o Spring é um container leve (container leve é um conceito vasto, mas neste caso quer dizer um container de POJOs, segundo o time do Spring). Com ele você pode ter praticamente todos os benefícios de Java Enterprise Edition (JCA, JTA, Servlets, Pools, JMS, TMX, JavaMail, JDBC...) sem utilizar EJBs. Você não precisava de EJBs para usar estas coisas, mas geralmente as pessoas se apegavam a estes por serem a maneira "mais fácil" de lidar com os outros recursos.

O Spring provê uma API fácil e bem utilizável para utilizar estes recursos, mantendo seus objetos independente destes com um bom uso de AOP (que é facilmente configurável por qualquer um).

O problema atual do Spring é como é chato configurar seu XML. A semântica do negócio é simples, mas é muito ruim ter que digitar aquilo tudo (não me apontem uma ferramenta, não é isso que torna as cosias produtivas), mas ainda assim é *muito* mais simples que configurar EJBs e seus descritores, interfaces, pools, JNDI names e tudo mais, fora as gambiarras como Service Locators e Business Delegates.

Existe um velho refrão que diz algo como Não use um canhão para matar uma mosca. Esta frase mais que sábia diz muito sobre quando usar EJBs (praticamente nunca), mas também tem suas complicações.

Um caso típico é o de programas em ASP clássico/PHP/CGI. Estas plataformas são extremamente limitadas para aplicações de grande porte, praticamente qualquer integração com middleware é feita por banco de dados (bleargh) ou hoje em dia por XML sobre HTTP. Eu trabalhei muito tempo com ASP, e quando estava estudando minha diversão era fazer cosias improváveis, como editores de texto completos, editores de vídeo e outras coisinhas complexas em ASP puro (não adianta usar componentes, muitas vezes você não consegue instalá-los no servidor do cliente).

E ficava aquela gambiarrada toda. Trocas de mensagens através de tabelas no SGBD, arquivos temporários de download... etc. Esse é o caso contrário do ditado que acabei de falar, neste caso podemos aplicar o refrão: Não use um mata-moscas para matar um mamute.

Existem aplicações que não são mamutes, não são moscas, mas ainda assim precisam de algum suporte de plataformas coorporativas, como transacionamento XA, pools, conectores, ciclo de vida controlados, mensageria... a maioria das aplicações que são mais que um simples site de Internet tem pelo menos uma dessas necessidades. Neste cenário, coisas como o Spring são perfeitas, você usa apenas o que precisa, não precisa engolir o elefante de novo para usar o que quer.

Neste cenário, fica mais fácil produzir aplicações Orientadas a Objetos de verdade, sem as aberrações de BusinessDelegates/SessionFaçade/ServiceLocator/DTO/TO/VO que vieram trazer alguma usabilidade aos EJBs. Mas se você é amigo dos EJBs, ou realmente tem um caso onde els são úteis (chamadas RMI são um dos raros exemplos), pode continuar utilizando sua plataforma.

Se você está no mercado, estude Spring. Provavelmente quando a sua empresa for enfim usar haverá coisa melhor, mas por enquanto, essa é a opção mais sensata para aplicações médias. Não que paltaformas como Pico/Nano Container sejam ruins, pelo contrário, só que o Spring tem maior suporte e um apaltaforma mais vasta, cobrindo muita coisa que você precisa hoje.

A fila anda...

8/30/2005

WebLogic & Mercado Carioca

Dois assuntos que tem muito pouco a ver, mas me ocorreram hoje.

A coordenação do RioJUG foi convidada junto com clientes e parceiros para uma demonstração do novo Bea WebLogic 9 (aquele com o diabinho que parece desenhado pelo mesmo cara que desenhou o Tomcat, confira abaixo).

Eu considero a Bea uma empresa muito razoável no que faz, e pela apresentação a nova versão do WebLogic traz coisas muito, muito, muito legais, como possibilidade de rodar duas instâncias de uma mesma aplicação com versões diferentes, configuração atômica (nada de urânio, plutônio ou deuteronômio, apenas transacional) e scripting.

Eu tenho um pet project que não avançou muito de colocar um Shell no JBoss. Onde eu trabalhava (já falei que mudei de emprego?) isso era muito útil, principalmente acessando máquinas dos clientes via uma VPN fedorenta, tendo que atravessar mil servidores para chegar na máquina de produção... enfim. A minha alternativa (como o que pretendo no Funky) é algo independente da linguagem, mas bem focada em Groovy (BeanShell é legal também).

Eu estava ansioso por saber como é o scripting do WL, e não é que eles usam...Python! Pelo que o cara de marketing falou (aliás, pausa aqui: O cara de marketing era muito, mas muito mesmo mais técnico que todos os outros que já conheci, seja da IBM, Sun, Microsoft, Novell...o cara deu um parecer técnico-porém-marketeiro muito legal) que ele roda sobre Jython. Não tive a chance de perguntar o porque, vou pesquisar por aí, alguém sabe de algo?

Não me entendam mal, Python é legal, a Bea investir em algo aberto como Jython é legal... mas o JCP está padronizando três linguagens de script (Groovy, BeanShell e JavaScript), pra que uma tão alienígena?

Eles estão trabalhando junto com o Rod Johnson para prover um suporte melhor ao Spring que outros AS. Vamos ver...

Eu curto o estilo deles. Tá certo que tudo que a Bea faz é comprar empresas que fazem algo legal (Tuxedo, WebLogic...), mas eu curto. Apesar disso, ainda sou adepto ao JBoss, mas num ambiente onde software-livre não entra, seria minha primeira escolha.

O problema da Bea é tentar vender toda aquela parafernalha quase-RAD com Workshop, Beehive, portal, blablabla. O velho truque de vender ferramentas que vão esconder o fato dos seus "profissionais" serem apertadores de parafuso. Vão mesmo?

Ah, o logo:

A imagem “http://contact2.bea.com/bea/www/diablo/banner_diablo_dnload.gif” contém erros e não pode ser exibida.

Gostei da audácia do slogan, parece coisa do WinAmp :)

Só eu que acho eles parecidos?

A imagem “http://www.javaportal.it/images/NEWSS5/diablo.gif” contém erros e não pode ser exibida.

A imagem “http://jakarta.apache.org/tomcat/images/tomcat.gif” contém erros e não pode ser exibida.

Nota: Não ganhei comissão (aidna, ao menos) por este post. Na verdade não ganhei nem um CDzinho demo do Diablo :(

Por último, conversando com as pessoas no evento, vi o que já é fato conhecido: está todo mundo procurando desenvolvedor no Rio. Você não acha ninguém bom sem emprego e/ou ganhando pouco.

Achar um profissional JSP+JavaBean é mole. Profissional razoável? Prepare-se para gastar uma grana. Profissional bom? Conheço gente que está procurando ha um ano, literalmente. O emrcado aqueceu e os desenvolvedores sumiram... cadê vocês?

8/26/2005

Avaliação CJ2005

Você que foi no CJ2005 não deixe de preencher a ficha de avaliação. Desta forma teremos um evento aida melhor ano que vem ;)

Camadas na Reunião Mensal do RioJUG

Como falei aqui, vou falar um pouco sobre Camadas na reunião mensal do RioJUG.


Para quem se itneressar, a entrada é gratuita e não é necessário fazer pré-inscrição, basta aparecer por lá ;)

Arquitetura de Camadas em Java Enterprise Edition

por Phillip Calçado

Dia: 12/Setembro/2005 (segunda)
Horário: 19:00 horas
Local: Auditório do SENAC - Rua Santa Luzia, 735/7º andar
Dica de Acesso: Estação Cinelândia do Metrô pela saída Santa Luzia, atrás do Consulado Americano
Entrada: Gratuita

A Palestra

Algumas pessoas acreditam que uma aplicação Java Enterprise Edition utiliza Camadas por si só.
Outros acreditam que o Modelo MVC garante o uso de Camadas, muitos ainda nunca ouviram uma definição do que seriam as tais Camadas.
Nesta breve apresentação, os conceitos de Camadas serão apresentados e discutidos no contexto de aplicações Java EE, incluindo novas tendências como IoC e AOP.

O Palestrante
Phillip Calçado é JUG Leader do Grupo de Usuários Java do Rio de Janeiro (RioJUG) e do GUJ, o maior fórum brasileiro sobre a tecnologia.

Programa em Java desde 2003 e já atuou nas áreas de previdência privada, gestão de conteúdo, redes de telefonia e energia.
Instrutor, coach, conferencista e escritor ocasional.
Participa de projetos open-source e mantêm um site e blog em www.fragmental.com.br

8/25/2005

Conexão Java 2005 - Parte II: O Workshop

Olá,

Muito feliz, continuo o relato do CJ2005 :)

Eu dirigi o workshop Aumente o QI dos seus objetos: camada de negócios de verdade com Spring, no domingo. O objetivo era mostrar como cosntruir uma aplicação focada na camada de negócios, sem usar DTOs e derivados, e de quebra aprender um pouco de Spring e IoC...enfim, o que descrevi aqui.

O objetivo era levantar uma discussão e desenvolver o sistema em cima desta, mas como a turma era heterogênea, haviam pessoas com muita experiência e pessoas que nunca haviam visto Java. O CJ precisa definir tracks :(

Então a parte mais teórica da apresentação foi legal, mas a parte prática foi prejudicada. Não conseguimos criar mais que o esqueleto de uma estória (um casode uso) e não chegamos no Spring (problemas nos meus CDs e máquinas sem rede ajudaram também). A galera ficou frustrada :(

Eu acredito que quem foi gostou, mas teria sido melhor um tutorial ou palestra. Ficou um mini-curso teórico demais para o gosto de qualquer um :P

Em breve vou estar liberando aqui os slides e o código de exemplo, por enquanto os slides estão disponíveis no GUJ (em breve estarão também no site do evento).

8/23/2005

Rapidinhas: Olho nos Trilhos

Se voce nao levou a serio meu post sobre Rails do outro dia, saiba que tem gente grande de olho.

Confirmado...?

Será?

Conexão Java 2005 - Parte I: O Debate

Eu não ia conseguir falar sobre o CJ2005 hoje, estou extremamente atarefado, mas vou ter que comentar algo.

Para quem não sabe, o tal "TBC" (To be Confirmed) da grade no debate era eu. Fui chamado pelo Rafael Steil e depois pelo louds (Rodrigo Kumpera) para participar do debate com o hammett, o Hamilton Veríssimo. Eu conhecia o hammet de nome, me parece que quando eu entrei definitivamente para a comunidade Java ele estava indo apra o .Net.

A culpa por não ter meu nome no evento foi minha, que não consegui participar efetivamente da organização da atividade, mas enfim, rolou. Minha impressão é que foi muito bem.

Antes de continuar, o Hamilton provou que é um profissional extremamente competente e confiante. Ele aceitou a proposta de participar de um evento sobre Java falando mal de .Net. Você faria isso com a sua tecnologia? Convidamos outras pessoas para compôr a mesa, mas ninguém teve coragem, por isso o debate foi 1 a 1.

Para quem ainda não percebeu (tem gente muito lenta por aí..), o debate foi o contrário do normal (apelidamos carinhosamente de !debate). Eu meti o pau no Java e o hammett no .Net, a visão era de quem usa a tecnologia, não um cara xingando a mãe do outro que nem conhece.

Parece que mesmo assim tem gente que prefere xingar tudo e todos sem entender. Questionam a qualificação técnica do participante (engraçado ler os comentários nos blogs depois que eles "descobrem" que o hammet é commiter de projetos super respeitados e autor de livro sobre ASP.Net...além de entender muito de Java) e até conceitos básicos de Ciência da Computação como listas ordenáveis.

Pessoas que nem sequer foram no evento tentar desmerecer os participantes. Pessoas que foram e não repararam nem que o Rodrigo era o moderador, não participante, questionam.

"Ah, é porque eles são de .Net, esse povinho é assim mesmo" ...ah é? Na verdade eu ainda estou esperando reações parecidas do lado Java, bem parecidas. Muito parecidas.


O Hamilton postou uma resposta de altíssimo nível no seu blog. Não sou indicado para falar de .Net (e por isso nem poderia participar dum debate normal deste tipo), mas acho que foi na mosca.

8/18/2005

Groooooooooooooooooovy

Você tem que alterar os pacotes no import de 1000 arquivos. Opção? sed, claro.

No meu caso, acho que foi mais rápido escrever este scriptizinho em groovy do que ler as páginas de manual dos pipelines que teria que fazer.

#!/usr/bin/env groovy

new File(this.args[0]).eachFileRecurse(){
input ->
filename = input.getAbsolutePath();
output = new File(filename+".REPLACING");
if(!input.isDirectory() && (input.getName().matches("^.*java\$"))){

println("################# UPDATING FILE ["+ input.getAbsolutePath()+"] ##############################");
input.eachLine{
line -> modified = line.replaceAll(this.args[1], (this.args[2]+"\n"));
output.append(modified)
}
}
input.delete();
output.renameTo(new File(filename));
}



Ele recebe três parâmetros: [0] diretorio onde começar [1] regexp com linha a substituir [2] texto para colocar no lugar. Como sou newbie em Groovy, acho que dá pra melhorar muito...sugestões?

(não o algoritmo em si, eu sei que tá uma merda, mas otimizar script que você vai usar uma vez na vida é um tanto quanto perda de tempo demais para mim, quero saber sintaxe e truques)

8/17/2005

Ouvindo



Cara, como eu rodei pra achar esse CD!

CJ2005: Esquentando os Motores

Para quem não sabe,e ste fim de semana estarei no Conexão Java 2005. Alémd e ajduar na organização como colaborador do GUJ, estarei minsitrando um workshop (não é exatamente um minicurso) sobre implementação de uma Camada de Negócios com objetos de verdade, utilizando como infra-estrutura o Spring Framework.

Ao contrário do que muitos pensam, não é curso de Spring. Minha propsota é simples:
  1. Breve explicação sobre o tema de camadas
  2. Apresentação de um pequeno problema
  3. Modelagem do Probleama utilizando Objetos
  4. Integração de Camadas Utilizando o Spring
Coisa simples, mesmo porque o tempo é limitadíssimo (2 horas apenas) e os recursos didáticos também. A idéia é montarmos um sisteminha (só a camada de negócios, o resto eu levo de casa :P ) e irmos desenvolvendo a idéia.

Sem "classes de lógica", "classes de dados", VO/DTO/TO, EJB, JavaBeans ou qualquer outra coisa. Apenas POJOs e alguns padrõezinhos. Mesmo o Spring é coadjuvante.

Espero vocês lá :)

Ah! Para quem é do Rio e não vai poder comparecer (tsc, tsc...) devo fazer algo aprecido por aqui em breve ;)

Matando a Curiosidade

Algumas pessoas me pergutnaram porque eu chamo o McDonald's de McDonald's, nada demais, mas taí a resposta.

Oi, Bruno,

Eu vi seu comentário há pouco, ainda não pude postar nada lá, trabalho tá complicado.

respondendo a sua dúvida, não é nada demais, é apenas uma comparação do tipo pagou-passou.

Você entra no mcDonald's, escolhe o que quer, paga, espera e recebe.

Você entra na Estacio, escolhe o que quer fazer, paga, espera e recebe
o diploma ;)

[]s

8/16/2005

Pequeno Dicionário da Reusabilidade em Software

Componente:
Um componente é um pedaço reutilizável de software. É utilizado de forma genérica e significa desde uma simples classe até um subsistema.

Teoricamente, um componente:
  • Tem múltiplo-uso, é criado para ser reutilizável
  • Independente do contexto: Não depende das suas aplicações clientes
  • Pode formar compoentnes maiores se agrupado com outros componentes
  • Encapsulado, provendo uma interface para acesso á suas funcionalidades
  • Instalado e desenvolvido independentemente da aplicação cliente
  • Implementação substituível desde que mantida a interface exposta pelo componente
Da wikipedia, tirei esta figura:

Framework:
Um framework é um conjunto de componentes de software que provêem uma arquitetura e estrutura básica para o desenvolvimento de uma aplicação. É uma aplicação semi-pronta que deve ser extendida e personalizada.

Recentemente, têm se utilizado a palavra framework para designar qualquer conjunto de bibliotecas, se perdendo seu sentido real.

Bilbioteca(Libraries):
Subprograma ou coleção de subprogramas reutilizadas em aplicações. Contêm implementações de rotinas úteis que podem ser reutilizadas em outras aplicações.

Container:
Gerencia o ciclo de vida de componentes e provê serviços a estes.

API:
Interface exposta por um componente.

Camada Lógica (Layer):
Separação de componentes por responsabilidades.

Camada Física (Tier):
Separação de Camadas Lógicas por vários nós (máquinas).

8/10/2005

Pilhas Proprietárias, Pilhas Livres e Pilhas Padronizadas

Qual é o clima atual no mundinho JEE (ou J2EE se você ainda não está nos novos tempos) ?

Há Muito Tempo Atrás, Numa Galáxia Muito Distante...
No início, havia o caos. A única pseudo-padronização no mundo das aplicações cooporativas de massa era o MTS com COM. Quem podia, contava com Tuxedo e UNIX, mas isso não era muito comum fora dos bancos e operadoras de telecomunicações (que tem dinheiro de sobra).

Se você queria contruir uma aplicação transacional, distribuída (CORBA ou DCOM, únicas opções levadas a sério), escalável, cheirosinha, você tinha que escolher um fornecedor. Ao contrário de JEE, os fornecedores não lhe davam uma implementação, eles lhe davam toda a tecnologia, você ficava preso a ela.

JEE Ao Resgate (ou Desgaste)
Então, alguém pensou em usar aquela linguagem de applets para produzir aplicaçõs de verdade e foram surgindo as especificações que culminaram no JEE, com o poderoso EJB como seu Rei e Deus.

A pilha JEE é comsota por tantas especificaçõe sque abrangeriam quase tudo necessário para uma aplicação de grande porte.

O grande problema, como quase sempre, foi a dose excessiva de hype. Toda documentação sobre JEE pré-2003 vai te falar em objetos distribuídos, componentes distribuídos, aplicações distribuídas, transações distribuídas, interfaces distribuídos... e surgiu a Primeira Lei da Distribuição de Objetos, de Fowler:
Não Distribua Seus Objetos
Distribuir objetos num sistema é de uma forma bem geral desnecessário e complexo, mas JEE faz pensar que se você não distribui (ou não consegue distribuir) objetos, você é um marsupial, já que tem toooodas aquelas maravilhas tecnológicas para suportar isso. Para ter uma noção, basta saber que a especificação de EJB 1.0 não previa acesso local, apenas remoto, aos componentes.

Apesar dos problemas, JEE surgiu e se manteve como a plataforma de facto para aplicações enterprise (seja lá o que isso signifique de verdade).

Mas.. com o passar do tempo a coisa foi pegando fogo. Pessoas desenvolveram alternativas bem viáveis aos recursos de JEE criticados (EJBs, quase sempre), e surgiram ferramentas fantásticas como o Spring Framework e o Hibernate, mas que são proprietárias (são software livre, mas não são um padrão).

O Hibernate, depois de ganhar gás ao ser incluído no JBoss, virou modelo para o EJB 3.0. O Spring, apesar de uma plataforma comprovadamente (pelo menos por mim) excepcional, não teve a mesma sorte, e agora que a nova especificação de EJB traz recursos de IoC, começou uma guerrinha entre projetos. A projeto Hibernate vem tratando com hostilidade o povo do Spring, já que eles "não são o padrão".

Piratas, Padrões e Picaretas
Se você for começar um projeto hoje, que tecnologias vai utilizar?

Se você for uma ameba ou trabalhar para amebas, vai usar EJB sem nem ler requisitos. Se você for um cara que sabe avaliar a melhor ferramenta para o serviço, come vegetais e exercita o cérebro, vai acabar numa senhora dúvida.

A pilha JEE oferece muitos serviços e muita complexidade, mas pelo menos é padrão.

O Spring oferece serviços de uma forma leve e bonitinha, mas não é padrão (seus objetos de negócio não estão presos ao Spring, não é tão difícil migrar os serviços para alternativas caso queira),e é apenas um entre muitos.

Claro que se você prefere que os outros façam a escolha por você, algumas empresas estão criando suas próprias pilhas, empacotando projetos Open Source e formando suas próprias visões do Java para aplicações de grande e médio porte (Pequeno porte? Por favor, esqueça JEE, se não Java. Conhece o Rails?). Temos uma brasileira, inclusive.

Então, temos um problema.
Temos mesmo?

Liberdade de Escolha
A confusão tem seu lado bom. Se fosse nos antigos tempos negros do Java Enterprise Edition, você não teria escolhas, tinha que usar EJB e pagar milhões num Servidor de Aplicações. Hoje você pdoe resolver o mesmo problema de milhões de maneiras diferentes e com um Tomcat (ou Jetty se você for um cara esperto).

Leia a seçaõ acima de novo, mas com outros olhos. Você pode escolher. Isso é muito importante.

Infelizmente, escolher bem é difícil. No mínimo você deveria conhecer um pouco sobre o cenário atual, o cenário futuro e muito sobre tecnologia. Existem pessoas que simplesmente precisam que alguém lhes diga o que fazer, o que usar, e para estes um cenário mais fechado é o ideal.

Seja lá o que você escolher, considere alguns pontos:
  • Empresas podem acabar, cuidado ao se prender a uma
  • Projetos de Open Source Software podem acabar, mas o código esta lá (você acha que se o Struts for definitivamente e indubitavelmente depreciado ninguém vai mantê-lo?)
  • Não use uma tecnologia onde mais de 20% do código construído por seus programadores (ou ferramentas) é pumbling (configuração, adaptadores, gambiarras) e não regra de negócio
  • Não ache que uma ferramenta (Editor, IDE, plugin, Ant Task) vai reduzir complexidade gerando código (código gerado conta nos 20% da regra anterior, bytecode gerado não conta)
  • Não se prenda a uma plataforma que não permita integração com o padrão JEE (mes mo EJB)
Por esses pontos, hoje, eu escolheria o Spring em boa parte dos meus projetos. Qual a sua escolha?

(Este post foi motivado pelo do Floyd Marinescu)

8/09/2005

De Volta ao MCDonald's

Começaram as aulas no McDonald's.

Eu me inscrevi em algumas matérias com títulos bem ttneressantes: Tópicos Especiais I e II e Tópicos Especiais em Linguagem de Programação.

Tópicos I foi ontem. JSP e Servlets. Imagine um treinamento meia-boca sem computador. Eu não acho que aula de computação tenha que ter computador sempre, porém aquilo não é uma aula, é um overview.

Hoje foi Tópicos Especiais em Linguagens, matéria de último (8º) período. PHP. PHP? PHP! Essa foi especial, o professor falou que vai usar as três primeiras aulas (umas 4,5 horas/aula) para instalar o PHP e o Xitami em Windows (nem Apache o cara usa!). Ah, essa é sem computador também, essas aulas vão ser no datashow. Três trabalhos, um em HTML, um em PHP e um em XML (validando cotnra um DTD, parece).

Não é um curso de extensão, não é uma matéria optativa, é uma matéria do bacharelado.

Eu também tive que ouvir que não existe linguagem mais rápida na web que PHP, que esta não tem máquina virtual, pelo contrário, o objetivo de PHP é ser "perto da máquina".

Teoricamente, estes alunos já viram C, C++, Java (um semestre cada), conhecem todas as camadas do TCP/IP (dois semestres), o básico de sistemas operacionais e sistemas distribuídos (dois semestres), e bancos de dados relacionais (dois semestres). E ninguém sabe nada.

Depois me perguntam porque eu não levo a Estácio a sério. Depois me perguntam porque sou contra regulamentar a profissão e exigir diploma de terceiro grau.

Ah, e isso não acontece só no McDonald's não, que fique bem claro. Além de tantas outras concorrentes, eu conheço vários bacharelandos e mestrandos de universidades excelentes que não sabem absolutamente nada de nada.

A diferença é que estes tiveram uma chance de aprender. E de graça.

8/08/2005

Do Not Disturb

Meu sumiço recente tem vários motivos, dentre eles a preparação do minicurso do Conexão Java 2005, que tem tomado bastante tempo (estou organizando uma caravana do Rio de Janeiro, quem quiser ir, entre em contato ;) ). Os outros vão ficando claros aos poucos (como já dizia Dona Filó: Mistéééééééééééééééééééério...).

Ontem, o Vinci me deu uma dica muito legal: Workrave. Este programinha te ajuda a prevenir LER calculando o tempo que você usa o computador e propondo paradas e exercícios. Não sei se vou realmente conseguir usar isso muito tempo, mas estou tentando. Na verdade estou me sentido bem confortável usando, sei lá, consciência menos pesada...

Mais detalhes no whitepaper, está em inglês mas o programa tem I18N e fica em português ;)

8/01/2005

Inscrições Abertas para o ConexãoJava'05!

O evento da comunidade Java brasileira, Conexão Java 2005, já está com inscrições abertas.

A segunda edição do evento consegue superar a primeira, com muito conteúdo para todos os paladares. Veja a grade aqui.

Eu devo estar tentando manter a atenção de quem se atrever a assitir meu mini-curso no domingo. Java, OOP e Spring na camada de negócios, para quem acredita que só código procedural salva.

Bom, inscrições gratuitas abertas por curto tempo aqui ;)

Pérolas de Lista de Discussão I

Mon, Aug 1, 2005 at 2:57 PM
Reply-To: java-x@yahoogrupos.com.br
Olá pessoal!!!

Como faço para arredondar para mais um valor contido em uma variável do
tipo int?
Desde já, obrigado.

Abraçcos,

C.O.B.
ABCD Mon, Aug 1, 2005 at 2:58 PM
Reply-To: java-x@yahoogrupos.com.br

uai..naum tem como vc arredondar um int. ele ja é arredondado!

Garota de Ipanema!?!

Já que eu já escracehi minha tietice pela melhor banda de seattle ever, mais um pouco não faz mal :P

Pode ser boato, pode ser pegadinha, pode ser o diabo a quatro, mas no site oficial do Pearl Jam
vocês podem ouvir, com clareza, a calma voz de Tom Jobim cantando um clássico da MPB.

Nada nas datas, mas muitos boatos na Internet.

Será que pela primeira vez na vida vou conseguir ir a um show de uma
banda que eu curto antes dela acabar?!?!?!

Shoes, que paga quanto for por esse teorico show


 
f