jul 5 2009

JVM – Java Virtual Machine

Dentro da linguagem de programação Java existe um importante “instrumento”, que permite às aplicações desenvolvidas nessa linguagem seja multi-plataforma, esse “instrumento” é o que conhecemos como JVM (Java Virtual Machine).

Antes de entrar no que é exatamente a JVM, precisamos saber como as aplicações desenvolvidas em outras linguagens, como C ou Pascal funcionam diante de cada sistema operacional.

Para essas linguagens, o código fonte é compilado de acordo com o sistema operacional, isso se faz necessário pois após a compilação aquela aplicação conversará apenas com aquele determinado sistema operacional.

Nesse cenário teremos um executável da aplicação para Linux, outro para Windows, etc.

A JVM tem o importante papel de traduzir o que a sua aplicação (Java) está requisitando, para  a cada uma das camadas do sistema operacional onde aquela aplicação está rodando.

Isso é feito através do Bytecode, o qual é interpretado pela JVM e após é enviado ao sistema operacional.

O bytecode é composto por uma sequência de instruções para JVM, onde cada uma dessas instruções consiste em Opcode seguido por zero ou mais operadores. O Opcode indica quais medidas a JVM deve tomar.

O número total de opcodes é pequeno o suficiente para que ocupem apenas um byte.

Java é lento…

Hoje, graças às otimizações da JVM, é possível que o Java tenha desempenho similar a linguagens como C, isso possível graças a otimizações como a compilação especulativa, que aproveita o tempo ocioso do processador para pré-compilar bytecode para código nativo.

Além disso, ainda existem outros mecanismo que permitem um desempenho ainda melhor, é o caso do HotSpot.

Trata-se de uma tecnologia que a JVM utiliza para detectar os “pontos quentes” da aplicação (código executado muitas vezes) e, quando a JVM julgar necessário transformar aquilo em linguagem nativa.

O compilador responsável por isso é o JIT - Just inTime Compiler, o compilador que aparece “bem na hora” que você precisa.

Entretanto isso ainda possui algumas desvantagens…  A pré-compilação exige tempo, o que faz com que programas Java demorem um tempo significativamente maior para começarem a funciona

Porém isso não é um grande problema para programas que rodam em servidores e que deveriam ser inicializados “apenas uma vez” (a cada início do SO).

O Java hoje já é utilizado em diversas aplicações de grande escala, como podemos ver no link - Java in Action

Você pode encontrar mais informações sobre a JVM no Ebook VM Spec


dez 14 2008

jboss

A JBoss passara a contribuir efetivamente com o projeto GWT do Google atraves de um acordo assinado dia 11/12/2008 com o Google.


Além do compromisso no desenvolvimento de novas features atraves do time JBoss, com este acordo a Red Hat contara com o GWT integrado em seu modelo de subscription (formato para GWT a ser elaborado e concluído em 2009), ou seja, assim como ocorre com Hibernate, Seam, JBoss AS, e outras tecnologias, será possível contar com suporte corporativo para desenvolvedores GWT.

Alguns frameworks do JBoss já possuem extensões fortementes ligadas ao GWT, como o jBPM, Drools (Jboss Rules) e JBoss Seam.


nov 25 2008

Como aprender Java!

Além de treinamento policial no rio de janeiro o BOPE também leciona treinamentos de Java (vide imagem)…

java bope

java bope


nov 24 2008

Soa – Service-Oriented Architecture

Service-Oriented Architecture (SOA) – ou, em português, Arquitetura Orientada a Serviços – é um termo que descreve duas coisas muito diferentes. As duas primeiras palavras expressam uma metodologia para desenvolvimento de software.

A terceira palavra é um panorama de todos os ativos de software de uma empresa, assim como uma planta arquitetônica é uma representação de todas as peças que, juntas, formam uma construção. Portanto, “service-oriented architecture” é uma estratégia que proclama a criação de todos os ativos de software de uma empresa via metodologia de programação orientada a serviços.

PDF – Introdução ao SOA por Rodolpho Ugolini Neto – IBM


nov 23 2008

Introdução ao Java

Quando dizemos na programação orientada a objetos que devemos abstrair os objetos da vida real e transforma-los em objetos de software muitos acham que isso não é possível.

Esse video nos mostra extamente o contrario…


nov 22 2008

Java is Everywhere

Mesmo sem perceber o Java está presente em muitas das coisa de nosso dia-a-dia, invisível. Está presente no celulares que usamos, no nossos cartões de credito, no bancos, nos médicos, nos sites, etc…


nov 6 2008

Como um programador mata um dragão.

Java
Chega, encontra o dragão. Desenvolve um framework para aniquilamento de dragões em múltiplas camadas.
Escreve vários artigos sobre o framework, mas não mata o dragão.

.NET
Chega, olha a idéia do Javanês e a copia, tenta matar o dragão, mas é comido pelo réptil.

ASP
Os componentes necessários para levantar a espada são proprietários e caros. Outros tantos componentes proprietários para achar a localização do dragão, e mais outros tantos a localização da princesa. Chama então seu amigo programador de PHP.

C
Chega, olha para o dragão com olhar de desprezo, puxa seu canivete, degola o dragão. Encontra a princesa, mas a ignora para ver os últimos checkins no cvs do kernel do linux.

C++
Cria um canivete básico e vai juntando funcionalidades até ter uma espada complexa que apenas ele consegue entender … Mata o dragão, mas trava no meio da ponte por causa dos memory leaks.

COBOL
Chega, olha o dragão, pensa que tá velho demais para conseguir matar um bicho daquele tamanho e pegar a princesa e, então, vai embora de volta ao seu mundinho.

Pascal
Se prepara durante 10 anos para criar um sistema de aniquilamento de dragão… Chegando lá descobre que o programa só aceita lagartixas como entrada.

VB
Monta uma arma de destruição de dragões a partir de vários componentes, parte pro pau pra cima do dragão e, na hora H, descobre que a espada só funciona durante noites chuvosas…

PL/SQL
Coleta dados de outros matadores de dragão, cria tabelas com N relacionamentos de complexidade ternária, dados em 3 dimensões, OLAP, demora 15 anos para processar a informação. Enquanto isso a princesa virou lésbica.

PHP
Pesquisa bancos de scripts e acha as classes de construção de espada, manuseio da espada, localização da princesa e dragão. Remenda tudo e coloca umas firúlas próprias.
Mata o dragão e casa com a princesa. Como tudo foi feito com gambiarras, o dragão um dia vai ressuscitar e comer os dois.

Ruby
Chega com uma p*t* fama, falando que é o melhor faz tudo, quando vai enfrentar o dragão mostra um videozinho dele matando um dragão … O dragão come ele de tédio.

Smalltalk
Chega, analisa o dragão e a princesa, vira as costas e vai embora, pois eles são muito inferiores.

ASSEMBLY
Acha que está fazendo o mais certo e enxuto, porém troca um A por um D, mata a princesa e transa com o dragão.

Shell
Cria uma arma poderosa para matar os dragões, mas na hora H, não se lembra como usá-la.

Shell (2)
O cara chega no dragão com um script de 2 linhas que mata, corta, estripa, pica em pedacinhos e empalha o bicho, mas na hora que ele roda, o script aumenta, engorda, enfurece e coloca álcool no fogo do dragão.

Fortran
Chega, desenvolve uma solução com 45000 linhas de código, mata o dragão e vai ao encontro da princesa… mas esta o chama de tiozinho e sai correndo atrás do programador Java que era elegante e ficou rico.

FOX PRO
Desenvolve um sistema para matar o dragão, por fora é bonitinho e funciona, mas por dentro está tudo remendado. Quando ele vai executar o aniquilador de dragões lembra que esqueceu de indexar os DBF’s.

CLIPPER
Monta uma rotina que carrega um array de codeblocks para insultar o dragão, cantar a princesa, carregar a espada para memória, moer o dragão, limpar a sujeira, lascar leite condensado com morangos na princesa gostosa, transar com a princesa, tomar banho, ligar o carro, colocar gasolina e voltar pra casa. Na hora de rodar recebe um “Bound Error: Array Access” e o dragão come ele com farinha.

ANALISTA DE PROCESSOS
Chega ao dragão com duas toneladas de documentação desenvolvida sobre o processo de se matar um dragão genérico, desenvolve um fluxograma super complexo para libertar a princesa e se casar com ela, convence o dragão que aquilo vai ser bom pra ele e que não será doloroso. Ao executar o processo ele estima o esforço (usando FPAs) e o tamanho do estrago que isso vai causar, consegue o aval do papa, do Buda e do Raul Seixas para o plano, e então compra 2 bombas nucleares, 45 canhões, 1 porta aviões, contrata 300 homens armados até os dentes, quando na verdade necessitaria apenas da espada que estava na sua mão o tempo todo.