Archive for August, 2005

CJ2005: Esquentando os Motores

Wednesday, August 17th, 2005

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

Wednesday, August 17th, 2005

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

Pequeno Dicionário da Reusabilidade em Software

Tuesday, August 16th, 2005

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).

Pilhas Proprietárias, Pilhas Livres e Pilhas Padronizadas

Wednesday, August 10th, 2005

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)

De Volta ao MCDonald’s

Tuesday, August 9th, 2005

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.

Do Not Disturb

Monday, August 8th, 2005

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 ;)

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

Monday, August 1st, 2005

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

Monday, August 1st, 2005
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!?!

Monday, August 1st, 2005

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