sexta-feira, 13 de fevereiro de 2009

Exercício – Imãs com código



Um programador Java funcional está todo misturado sobre a porta da geladeira. Você conseguiria reorganizar os trechos de código para criar um programa Java funcional que produzisse a saída listada abaixo? Algumas das chaves caíram no chão e são muito pequenas para que as recuperemos, portanto, fique a vontade para adicionar quantas delas precisar.

/**
*
* @author thiago_azeredo
*/
public class ImasComCodigo {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

int x = 3;

if (x > 2){

System.out.println("Print AAAAAAA");
}

}

quinta-feira, 12 de fevereiro de 2009

Bate Papo entre compilador e JVM

Conversa de hoje: O compilador e a JVM discutem a questão.
Quem é mais importante?
A Máquina Vitual Java
- O que, você está brincando? Olá. Sou o Java. Sou eu quem efetivamente faz um programa ser executado. O compilador apenas lhe oferece um arquivo. É só. Apenas um arquivo. Você pode imprimir e usá-lo como papel de parede, para acender fogo, forrar a gaiola de pássaros ou seja lá o que for, mas o arquivo não fará nada a menos que eu esteja lá para executá-lo.

O Compilador
- Não aprecio esse tom.

A Máquina Vitual Java

- E esse é outro problema, o compilador não tem senso de humor. Lógico, se você tivesse que passar o dia inteiro verificando pequenas violações na sintaxe munuciosamente...

O Compilador
- Desculpe, mas sem a minha presença, o que exatamente você executaria? Há uma razão para o Java ter sido projetado para usar um compilador de bytecode, se você não sabe. Se ele fosse uma linguagem de puramente interpretada, onde - no tempo de execução – a máquina virtual tivesse que converter código-fonte diretamente de um editor de texto, o programa Java seria executado a uma velocidade comicamente lenta. O Java já demorou tempo suficiente para convencer as pessoas de que é rápido e poderoso o bastante para a maioria dos trabalhos.

A Máquina Vitual Java
Não estou falando que você é, digamos, completamente inútil. Mas conversamos, o que você faz? Sério. Não faço idéias. Um programador poderia apenas escrever bytecode manualmente, e eu o usaria. Você pode ficar sem trabalho em breve, amigo.


O Compilador
Desculpe, mas esse é um ponto de vista bem displicente (para não dizer arrogante). Embora seja verdade que – teoricamente – você possa executar qualquer bytecode formatado aproximadamente mesmo se ele não vier de um compilador Java, na prática isso é absurdo. Um programador escrevendo bytecode manualmente é como se você executasse se processamento de palavras usando postScript pura. E eu apreciaria se não se dirigisse a mim como “amigo”.


A Máquina Vitual Java
(Vou continuar insistindo na veia irônica.) Mas você ainda não respondeu minha pergunta, o que faz realmente?

O Compilador
Lembre-se de que o Java é uma linguagem fortemente tipificada, o que significa que não posso permitir que as variáveis armazenadas dados com o tipo errado. Esse é um recurso de segurança crucial e posso bloquear a grande maioria das violações antes que elas cheguem até você. Além disso.

A Máquina Vitual Java
Mas algumas ainda passam! Possa lançar exceções ClassCastException e às vezes vejo pessoas tentando inserir o tipo errado de coisa em uma matriz que foi declarada como contendo algo e -

O Compilador
Desculpe, mas não terminei. E sim, há algumas exceções de tipo de dado que podem surgir no tempo de execuções, mas algumas delas têm que ser permitidas, para que outro recurso Java importante tenha suporte – a vinculação dinâmica. No tempo de execução, um programa Java pode incluir novos objetivos que não eram conhecidos nem mesmo pelo programador original, portanto, tenho que permitir um certo nível de flexibilidade. Mas meu trabalho é bloquear qualquer coisa mais séria – poderia ser – bem sucedida no tempo de execução. Geralmente consigo saber quando algo não vai funcionar, por exemplo, se um programador tentasse acidentalmente usar um objetivo Button como uma conexão de soquete, eu detectaria isso e evitaria que ele causasse danos no tempo de execução.

A Máquina Vitual Java
OK. Certo. Mas e quanto à segurança? Veja que eu faço com relação à segurança e você fica, digamos, procurando sinais de ponto-e-virgula? Ooooh, mas grande risco à segurança! Muito obrigado”


O Compilador
Desculpe, mas sou a primeira linha de defesa, como dizem. As violações de tipo de dado que descrevi anteriormente poderiam danificar um programa se fosse permitido que elas se manifestassem. Também sou eu que impeço as violações de acesso, como, por exemplo, um código que tentasse chamar um método privado, ou alterar um método que – por razões de segurança – não pudesse nunca ser alterado. Impeço as pessoas de mexer em códigos que tentem acessar dados críticos de outra classe. Demoraria horas, talvez dias, para eu conseguir descrever a importância de meu trabalho.

A Máquina Vitual Java
Não Importa. Acabo tendo que fazer a mesma coisa só para me certificar se alguém obteve acesso depois de você e alterou o bytecode antes de executá-los.

O Compilador
É claro, mas com descrevi anteriormente, se eu impedisse o que talvez chegue a 99% dos problemas potenciais, você acabaria travando. E parece que não temos mais tempo, portanto, teremos que voltar a isso um bate-papo em um bate-papo posterior.

A Máquina Vitual Java
Oh, pode contar com isso. Amigo.

terça-feira, 10 de fevereiro de 2009

PARÁFRASE PAG 12

Teste meu novo código de paráfrase e você falará engenhosamente como o chefe ou o pessoal de marketing.

package parafrasePag12;

/**
*
* @author thiago_azeredo
*/
public class PhraseOMatic {

/**
* @param args the command line arguments
*
* Códido de Paráfrases.
*
* -> Teste meu novo código de paráfrase e você falará engenhosamente
* como o chefe ou o pessoal de marketing
*
*/
public static void main(String[] args) {
// TODO code application logic here

// crie três conjuntos de palavras onde será feita a seleção. Adicione
// o que quiser!

String [] wordListOne = { "24/7", "várias camadas", "30.000 pés",
"B-to-B", "Todos ganham", "front-end", "baseado na web", "difundido",
"inteligente","seis", "sigma", "caminho crítico","dinâmico"};

String []wordListTwo = { "habilitado", "adesivo", "valor agragado", "orientado",
"central", "distribuído", "agrupado", "solidificado", "independente da máquina",
"posicionado", "en rede", "dedicado", "alavancado", "alinhado", "destinado",
"compartilhado", "cooperativo", "acelerado"};

String [] wordListTheree = {"processo", "ponto máximo", "soluções", "arquitetura",
"habilitação no núcleo", "estratégia","mindshare","portal","espaço","visão",
"paradigma","missão"};

// Descubra quantas palavras existem em cada lista
// a "função" length verificará a quantidade de palavras (word) em cada Lista !
int oneLength = wordListOne.length;
int twoLength = wordListTwo.length;
int ThereeLength = wordListTheree.length;

System.out.println("One: " + oneLength + " Two: " + twoLength + " Theree: " + ThereeLength);

// Gere trê números aleatórios
int rand1 = (int) (Math.random() * oneLength);
int rand2 = (int) (Math.random() * twoLength);
int rand3 = (int) (Math.random() * ThereeLength);

// Agora phrase (frase) ( Construindo uma frase )
String phrafe = wordListOne[rand1] + " " + wordListTwo[rand2] + " " + wordListTheree[rand3];

// Exibindo a frase
System.out.println("Procedimentos -> " + phrafe);
}
}


Certo, quer dizer que a canção da cerveja não era na verdade um aplicativo empresarial profissional. Ainda precisa de algo prático para mostrar ao chefe?
Veja o código da paráfrase.
Nota: quando você digitar isso em um editor, deixe o código criar sua própria quebra de palavra/linha! Nunca pressione a tecla enter quando estiver digitando uma string ( algo entre “aspas”) , ou ela não será compilado. Portanto, os hífens vistos nessa nessa página são reais e você pode digitá-los, mas não pressione a tecla Enter antes de terminar uma string.

SEGUNDA DE MANHÃ NA CASA DE BOB

O despertador de Bob toca às 08:00 da manhã de segunda, como em todos os outros dias da semana. Mas Bob leve um fim de semana e procura o botão SNOOZE. E aí que a ação começa e os aparelhos habilitados com Java despertando.
Primeiro, o despertador envia uma mensagem para a cafeteira. “Ei, o espertinho está dormindo de novo, atrase o café em 12 minutos.”
A cafeteira envia uma mensagem para a torradeira Motorola. “Sugere a torrada, Bob está tirando uma soneca.”
Em seguida, o despertador envia uma mensagem para o celular Nokia Navigator de Bob: “Chama Bob às 9 horas e diga para ele que estamos ficando um pouco atrasado.”
Para concluir, o despertador envia uma mensagem para a coleira sem fio de Sam (Sam é o cachorro dele), com um sinal bastante familiar que significa: “Pegue o jornal, mas não espere ser levado para um passeio.”
Alguns minutos depois, o despertador toca novamente. E mas uma vez Bob aperta o botão SNOOZE, e os aparelhos começam a se comunicar. O despertador toca uma terceira vez. Mas, assim bob alcança o botão SNOOZE, o despertador envia o sinal “Salte a lata” para a coleira da Sam. Trazido à consciência por esse choque, Bob se levanta, grato por suas aptidões em Java e um pequeno passeio à Radio Shake terem melhorando a rotina diária de sua vida.
Sua torrada está pronta.
Seu café está quente.
Seu jornal está esperando.
Apenas mais uma maravilhosa manhã na Casa Habilitada com Java.
Você também pode ter um lar habilitado com Java. Adote sensata que use Java, a Ethenet e a tecnologia Jini. Cuidado com imitações ao usar outras plataformas “plug and play” (que na verdade significa “conecte e perca os próximos três dias tentando fazer funcionar”) ou “portáveis”. A irmã de Bob, Betty, testou uma dessas outras plataformas e os resultados foram, digamos, não muito atraente, ou seguros. Também não deu certo com seu cachorro ...

Essa história poderia ser verdadeira? Sim ou não. Embora haja versão de Java sedo executadas em dispositivos, dentre os quais os PDAs, telefones celulares (principalmente nos telefones celulares), pagers, alarmes, cartões, inteligentes e outros – talvez você não encontre uma torradeira ou colecione com Java. Mas mesmo se você não conseguir encontrar uma versão habilitada para Java de seus aparelhos favoritos, ainda poderá executá-los como se fossem um dispositivo Java, controlando-os através de algumas outras interface (como seu laptop) que esteja executando Java. Isso é conhecido como arquitetura substantiva Jini. Sim, você pode ter essa casa dos sonhos de um nerd.
• IP multicast se você for sistemático com relação a protocolos

sexta-feira, 6 de fevereiro de 2009

CODIFICANDO UM APLICATIVO EMPRESARIAL REAL

Colocaremos todas as suas novas aplicações em Java em uso como algo prático. Precisamos de uma classe com método main(), um tipo int e uma variável String, um loop while e teste IF. Mais alguns retoques e você estará construindo esse back-end empresarial sem demora. Mas antes examinará o código dessa rotina e pensará por um instante em você codificaria esse grande clássico, “99 garrafas de cervejas”.
OBS: Há erros tente encontrar o ERRO na rotina !

public class BeerSong {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

int beerNum = 99;

String word = "bottles";

while (beerNum > 0) {

if (beerNum == 1){
word = "bottle"; // no singular, uma Garrafa
}

System.out.println(beerNum + " " + word + " of beer on the wall") ;
System.out.println("Take one down.");
System.out.println("Pass it around");

if (beerNum > 0){
System.out.println(beerNum + " " + word + " of beer on the wall");

}else{
System.out.println("No more bottles of beer on the wall");
}

}
}

APONTE O LÁPIS EX2

RAMIFICAÇÃO CONDICIONAL

Em Java, um IF é basicamente o mesmo que o teste booleano de um loop while – só que em vez de dizer “while (enquanto) ainda houve cerveja ...”, você dirá “ IF (se) ainda houver cerveja ...”
public class IfTest {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

int x = 3; // atribui o número 3 a uma variavel do tipo inteiro !

if (x == 3){ // == se x for realmente iqual a 3 ( iqualdade )

System.out.println("x deve ser iqual a 3");
}else{

System.out.println("Isso será executado de qualquer forma");
}
}

O código anterior executará a linha que exibe “x deve ser igual a 3” somente se a condição (x é iqual a 3) for atendida. Independentemente de ser verdadeira, no entanto, a linha que exibe “Isto será executado de qualquer forma” será executada. Portanto, dependendo do valor de x, uma ou duas instruções serão exibidas.
Mas podemos adicionar uma instrução else à condição, para podermos dizer algo como “IF ainda houver cerveja, continue a codificar, else (caso contrário) pegue mais cerveja e então continue ...

public class IfTest2 {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

int x = 2; // atribuição

if (x == 3){

System.out.println("x deve ser igual a 3");
}else{
System.out.println("x NÃO é igual a 3");
}
System.out.println("Isso será executado de qualquer forma");
}