quinta-feira, 24 de abril de 2014

If e else em java

O if funciona com uma forma de tomar decisões dentro do seu programa. Ele funciona da seguinte forma:

if (condição) {
      // Do My Code Now
}

Onde condição é qualquer expressão que retorne true ou false.

Você pode usar os operadores <, >, <=, >= e outros. Um exemplo:

int dataNascimento = 1992;
int ano = 2014;

if( (ano - dataNascimento  )  <  18) {
       System.out.println("Desculpe a festa é para maiores de idade. 
                                                       \n Volte quando tive 18 anos ou mais.");
}


O else é usado quando você precisa que seja executado algo quando a expressão dentro do if seja falsa. 
Exemplo:

int dataNascimento = 1992;
int ano = 2014;

if( (ano - dataNascimento  )  <  18) {
       System.out.println("Desculpe a festa é para maiores de idade. 
                                                       \n Volte quando tive 18 anos ou mais.");
} else {
       System.out.println("Seja bem-vindo a diversão!");
}


Você pode concatenar expressões booleanas através dos operadores lógicos "E” e "OU”.O"E” é representado pelo && e o "OU” é representado pelo ||.

Um exemplo seria vericar se ele tem menos de 18˜ anos e se ele não é amigo do dono:

int dataNascimento = 1992;
int ano = 2014;
boolean amigoDoDono = true;

if( (ano - dataNascimento  )  <  18 &&  amigoDoDono  == false) {
       System.out.println("Desculpe a festa é para maiores de idade. 
                                                       \n Volte quando tive 18 anos ou mais.");
} else {
       System.out.println("Seja bem-vindo a diversão!");
}

O codigo poderia ficar mais legivel usando o operador (!) NOT.

int dataNascimento = 1992;
int ano = 2014;
boolean amigoDoDono = true;

if( (ano - dataNascimento  )  <  18 &&  !amigoDoDono) {
       System.out.println("Desculpe a festa é para maiores de idade. 
                                                       \n Volte quando tive 18 anos ou mais.");
} else {
       System.out.println("Seja bem-vindo a diversão!");
}

A expressão !amigoDoDono  e amigoDoDono  == false são iguais. A função do operador ! é negar a expressão.


O operador de igualdade é o ( == ), e verifica de valores são iguais.

int dia = 20;

if( dia = 5) {
       System.out.println("Dia de pagamento!");
}

Lembrando que o operador de atribuição é o ( = ) e não ( == ).



Referencia:

Apostila do curso FJ-11 - Java e Orientação a Objeto. Endereço: http://www.caelum.com.br/apostila-java-orientacao-objetos/ visitado em 03/04/2014 às 20:35:25 pm.



segunda-feira, 21 de abril de 2014

IDE - Ambiente de desenvolvimento integrado

IDE, do inglês Integrated Development Environment ou Ambiente Integrado de Desenvolvimento, é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo.

Geralmente os IDEs facilitam a técnica de RAD (de Rapid Application Development, ou "Desenvolvimento Rápido de Aplicativos"), que visa a maior produtividade dos desenvolvedores.

As características e ferramentas mais comuns encontradas nos IDEs são:


  • Editor - edita o código-fonte do programa escrito na(s) linguagem(ns) suportada(s) pela IDE;
  • Compilador (compiler) - compila o código-fonte do programa, editado em uma linguagem específica e a transforma em linguagem de máquina;
  • Linker - liga (linka) os vários "pedaços" de código-fonte, compilados em linguagem de máquina, em um programa executável que pode ser executado em um computador ou outro dispositivo computacional.
  • Depurador (debugger) - auxilia no processo de encontrar e corrigir defeitos no código-fonte do programa, na tentativa de aprimorar a qualidade de software;
  • Modelagem (modeling) - criação do modelo de classes, objetos, interfaces, associações e interações dos artefatos envolvidos no software com o objetivo de solucionar as necessidades-alvo do software final.
  • Geração de código - característica mais explorada em Ferramentas CASE, a geração de código também é encontrada em IDEs, contudo com um escopo mais direcionado a templates de código comumente utilizados para solucionar problemas rotineiros. Todavia, em conjunto com ferramentas de modelagem, a geração pode gerar praticamente todo o código-fonte do programa com base no modelo proposto, tornando muito mais rápido o processo de desenvolvimento e distribuição do software;
  • Distribuição (deploy) - auxilia no processo de criação do instalador do software, ou outra forma de distribuição, seja discos ou via internet.
  • Testes Automatizados (automated tests) - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatório, assim auxiliando na análise do impacto das alterações no código-fonte. Ferramentas deste tipo mais comuns no mercado são chamadas robôs de testes.
  • Refatoração (refactoring) - consiste na melhoria constante do código-fonte do software, seja na construção de código mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. A refatoração, em conjunto com os testes automatizados, é uma poderosa ferramenta no processo de erradicação de "bugs", tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou da característica sendo reconstruída.


As IDE's java mais conhecidas são:
Eclipse, netbeans, Intelij Idea.

Neste post vamos instalar o eclipse que a IDE líder de mercado.


Baixe o Eclipse do site oficial http://www.eclipse.org. Apesar de ser escrito em Java, a biblioteca gráfica usada no Eclipse, chamada SWT, usa componentes nativos do sistema operacional. Por isso você deve baixar a versão correspondente ao seu sistema operacional.
Descompacte o arquivo e pronto, basta rodar o executável.

Entre no site do eclipse mencionado acima:



Clique para fazer o download de acordo com o seu SO, nesta instalação estamos usando o linux Ubuntu.



Clique no link para o download.






Clique em OK para salva o arquivo para seu computador.





Vá na pasta onde você salvou o arquivo.





Agora descompacte o arquivo em um diretório onde você ira deixar os arquivos e acessa-los.














Vá na pasta do eclipse.






Clique no arquivo executável do eclipse.






Seria iniciado o eclipse.




Selecione o workspace.

O workspace é onde ficaram os projetos que você desenvolvera.




E esta pronto.
Esta é a tela de boas vinda do eclipse.
























Fontes:
http://en.wikipedia.org/wiki/Integrated_development_environment.





quinta-feira, 17 de abril de 2014

Garbage Collector

Objetos são criados com a palavra chave new mas não existe nenhuma palavra operação para deleta-los.



Quando você termina de usar um objeto você, simplesmente para de acesse-lo ou atribui null a ele.


No momento em que um objeto para de ser referenciado, ele fica livre para ser coletado pelo coletor de lixo (garbage collector). O garbage collector fara a limpeza dos seus dados não referenciados.

A coleta de lixo é dividida em duas partes:

I - separação de objetos vivos de objetos mortos.
II - E depois limpa a memoria utilizada por objetos mortos.

Os objetos vivos são aqueles que podem ser alcançado por um código em execução.
Os objetos mortos são os que não podem ser alcançado por um código em execução. Ou seja é o lixo a ser coletado.

Para interagir com o Garbage Collector temos alguma métodos da classe Runtime:


  • gc() - solicita a execução do Garbage Collector.
  • runFinalization() - solicita a finalização de que não são alcançáveis.
  • freeMemory() - retorna um estimativa de bytes livre na memoria do sistema.
  • totalMemory() - retorna o total de bytes da memoria do sistema.
  • maxMemory() -  retorna quantidade máxima de memoria em bytes que a maquina virtual sempre tentara utilizar.


Segue uma classe para exemplifica a utilização do Garbage Collector.


// importações de classes
import java.util.ArrayList;
import java.util.List;

// Classe Coletor
public class Coletor {

// Carregar memoria
public static long carregarMemoria() {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 100_000; i++) {
list.add(i);
}
// Retornando quantidade livre de memoria.
return Runtime.getRuntime().freeMemory();
}

// Método principal
public static void main(String[] args) {

// Instanciando a classe Runtime
Runtime rt = Runtime.getRuntime();
int MB = 1_048_576; // Total em bytes em 1MB

// Saber a quantidade disponivel em MB
double total = rt.maxMemory() / MB;

// Calculando quantidade de memoria apois execução
//do metodo de carregar memoria.
double inicio = total - (carregarMemoria()/MB);

// Exibindo valores.
System.out.println(inicio);
System.out.println(total);

// Finalizando
rt.runFinalization();
// Chamando o GC - Garbage Collector
rt.gc();

// Exibindo total de memoria.
double fim = total - (rt.freeMemory()/MB);
System.out.println("Inicio: " + inicio + "\nFim: " + fim);

}

}


Baixe o arquivo no seguinte link:




Fontes:
https://www.youtube.com/watch?v=f3xgQ-IjZas&list=PLA03DEA5320ECBF85




segunda-feira, 14 de abril de 2014

Mais sobre Strings em java.


Antes de mais nada gostaria fazer uma observação sobre o post anterior no qual acabei falando que Strings eram tipos primitivos em java. E neste post farei uma correção sobre o que foi dito.

String (cadeia de caracteres) não são um tipo primitivo em java.

String é uma classe em java e umas das classes mais usadas. A qual possui um numero bastante grande de métodos que auxiliam os programadores na manipulação de textos.

Em Java, o importante é entender que string não é um tipo de dado, mas sim uma classe. E suas variáveis são, na verdade, objetos dessa classe.
Em síntese, tanto um array de caracteres como uma string se apresentam da mesma forma.

Então, qual a vantagem de se usar uma classe e não um array de tipo primitivo?

A resposta se baseia exatamente no uso da orientação a objetos e no fato de que existem muitos métodos que podemos utilizar em um objeto instanciado da classe String, mesmo sendo os objetos desta classe imutáveis, ou seja, uma vez instanciados não podemos mudar o que está guardado dentro do objeto String.

Dentre as possibilidades oferecidas pela classe String podemos destacar algumas como:

  • Concatenação;
  • Tamanho da String;
  • Converter para maiúsculas ou minúsculas;
  • Fazer comparações que incluem verificações no início e no fim;
  • Extrair um carácter específico da string;
  • Achar um índice da string, inclusive recursivamente (de trás para frente);
  • Substituir uma parte da string ou ela completamente;
  • Verificar se uma string contém outra;
  • Dividir uma string em array ou vetor;
  • Obter uma porção da string inteira, o que chamamos de substring.


Objetos Strings podem ser instanciadas usando um array de caracteres ou bytes com o operador new. Ou por meio de uma string literal. String literal é qualquer sequência de caracteres que estiver entre aspas (").



Concatenação

Concatenação nada mais é do que juntar strings numa só. Isto pode ser feito de duas formas: uma usando o método concat() da classe String ou usando o sinal de adição (+) como operador de concatenação.
O método concat() retorna uma nova string formada da junção da string principal com a string indicada como parâmetro.
De uma forma mais simples, podemos usar o + para juntar várias strings ao mesmo tempo.



Tamanho da string - length():




Mais exemplos sobre a classe String:

// Manipulando String 
//Criar classe
public class FuncoesStrings {

// criar metodo principal
public static void main(String[] args) {
// declarando um objeto
String mensagem = "Aprendendo java - Aula 4";
String mensagem1 = " Aprendendo java ";
// recebendo o valor inteiro de mensagem
int tamanho = mensagem.length();
// Visualizando string e tamanho
System.out.println("String: " + mensagem);
System.out.println("Tamanho da string: " + tamanho);
// retornando caracter da string
System.out.println("Caracter = " + mensagem.charAt(5));
// retornando um conjuto de caracteres da string
for(int indice = 10; indice <= 14; indice++) {
System.out.println( mensagem.charAt(indice) );
}
// Copiando o conteudo da string
// utilizando método substring
System.out.println("Do 3o caracter até o fim: " + mensagem.substring(2));
System.out.println("Do 1o caracter até o 10o: " + mensagem.substring(0, 10));
System.out.println("Do 11o caracter até o 24o: " + mensagem.substring(11, 24));
// tirando os espaços antes e depois da string
System.out.println();
System.out.println("String com espaços *" + mensagem1 + "*");
System.out.println("String sem espaços *" + mensagem1.trim() + "*");
System.out.println();
//localizando e substituindo caracters
System.out.println("Trocar caracter 'a' por 'u'" + mensagem1.replace('a', 'u'));
System.out.println("Trocar caracter 'n' por 'N'" + mensagem1.replace('n', 'N'));
System.out.println("Trocar caracter 'v' por 'V'" + mensagem1.replace('v', 'V'));
//Colocando tudo em maiusculo.
System.out.println();
System.out.println("Tudo em maiusculo " + mensagem1.toUpperCase());
System.out.println();
System.out.println("Tudo em minusculo " + mensagem1.toLowerCase());
System.out.println();
}

}

Baixe os arquivos desse post no link abaixo:


Fontes:
http://www.tiexpert.net/programacao/java/string.php. acessado as 00:34 - 15/04/2014

quinta-feira, 10 de abril de 2014

Casting

Você pode se deparar em uma situação, em que precise atribuir um valor de um tipo de variável a outro tipo. Tal como atribuir um valor um inteiro a um double (ponto flutuante), neste caso esta operação funcionara normalmente.
Porem se você tentar fazer o contrario atribuir a uma variável tipo double a uma variável do tipo inteiro.  

double d = 3.1415;
int i = d; // não compila

Este código não compilaria. O código acima é bem parecido com isso:

int i =  3.1415;

O mais interessante, é que nem mesmo o seguinte código compila:

double d = 5; // ok, o double pode conter um número inteiro
int i = d; // não compila

Apesar de 5 ser um bom valor para um int, o compilador não tem como saber que valor estará dentro desse
double no momento da execução. Esse valor pode ter sido digitado pelo usuário, e ninguém vai garantir que
essa conversão ocorra sem perda de valores.

Já o caso a seguir ocorre o contrario:

int i = 5;
double d2 = i;

O código acima compila sem problemas, já que um double pode guardar um número com ou sem ponto žutuante. Todos os inteiros representados por uma variável do tipo int podem ser guardados em uma variável
double, então não existem problemas no código acima.

Às vezes, precisamos que um número quebrado seja arredondado e armazenado num número inteiro. Para
fazer isso sem que haja o erro de compilação, é preciso ordenar que o número quebrado seja moldado (casted) como um número inteiro. Esse processo recebe o nome de casting.

double d3 = 3.14;
int i = (int) d3;

O casting foi feito para moldar a variável d3 como um int. O valor de i agora é 3. O mesmo ocorre entre valores int e long.

long x = 10000;
int i = x; // não compila, pois pode estar perdendo informação

E, se quisermos realmente fazer isso, fazemos o casting:

long x = 10000;
int i = (int) x;


Alguns castings aparecem também:

float x = 0.0;

O código acima não compila pois todos os literais com ponto žflutuante são considerados double
pelo Java. E float não pode receber um double sem perda de informação, para fazer isso funcionar
podemos escrever o seguinte:

float x = 0.0f;

A letra f, que pode ser maiúscula ou minúscula, indica que aquele literal deve ser tratado como float. 

Outro caso, que é mais comum:

double d = 5;
float f = 3;
float x = f + (float) d;


Você precisa do casting porque o Java faz as contas e vai armazenando sempre no maior tipo que
apareceu durante as operações, no caso o double. E, uma observação: no mínimo, o Java armazena o resultado em um int, na hora de fazer as contas. 

Até casting com variáveis do tipo char podem ocorrer. O único tipo primitivo que não pode ser
atribuído a nenhum outro tipo é o boolean.

Abaixo estão relacionados todos os casts possíveis na linguagem Java, mostrando a conversão de
um valor para outro. A indicação Impl. quer dizer que aquele cast é implícito e automático, ou
seja, você não precisa indicar o cast explicitamente (lembrando que o tipo boolean não pode ser
convertido para nenhum outro tipo).


Tamanho dos tipo 
Na tabela abaixo, estão os tamanhos de cada tipo primitivo do Java.







Referências:
Apostila do curso FJ-11 - Java e Orientação a Objeto. Endereço: http://www.caelum.com.br/apostila-java-orientacao-objetos/ - acessado em 06/04/2014 às 19:35:25 pm.



Strings

Na linguagem Java, o tipo string é um dos mais importantes e mais utilizados. O tipo string é usado para o armazenamento de texto (sequência de caracteres). Observe, nos exemplos abaixo, que o texto que deve ser armazenado nas variáveis é definido dentro de aspas duplas.

String nome = "Paula Ferreira";

Escreva um programa que exiba seu nome na tela. Crie uma variável para o nome e outra para sobrenome ambas do tipo String.

Código:

Resposta


Baixe o arquivo fonte desse post no seguinte link: https://mega.co.nz/#!uEMzFI7Q!v6AX9qplRuqjFcC5gahINL9lGmTSRhdW_WycNgch0Gw

Tipos de Básicos ou tipos primitivos em java

As linguagens Java  possui tipos básicos de variáveis. Esses tipos são os mais utilizados e
servem como base para a criação de outros tipos. A seguir, veja os tipos básicos da linguagem Java.




Tipos primitivos java: http://mapaseconcursosdeti.blogspot.com.br/2012/12/tipos-primitivos.html



Como as conversões são feitas em java:


























Referências:

Apostila do curso . Endereço: http://www.k19.com.br/cursos/logica-de-programacao - acessado em 10/04/2014 às 19:35:25 pm.

Blog: Mapas mentais para concursos de TI. Endereço: http://mapaseconcursosdeti.blogspot.com.br/2012/12/tipos-primitivos.html

quarta-feira, 9 de abril de 2014

Exercícios com variáveis

Na empresa onde trabalhamos, há tabelas com o quanto foi gasto em cada mês. Para fechar o balanço do
primeiro trimestre, precisamos somar o gasto total. Sabendo que, em Janeiro, foram gastos 15000 reais,
em Fevereiro, 23000 reais e em Março, 17000 reais, faça um programa que calcule e imprima o gasto total
no trimestre.


Resposta:
































Vamos compilar o programa:





Vamos executar pra ver como ficou:






No mesmo programa adicione código (sem alterar as linhas que já existem) na classe anterior para imprimir a média mensal de gasto, criando uma variável mediaMensal junto com uma mensagem. Para isso, concatene a String com o valor, usando "Valor da média mensal = "+ mediaMensal.


Resposta:




Vamos compilar:









Vamos executar:













Espero que tenham gostado.


Baixe o aquivo java do exercício no posta, no link a seguir:

https://mega.co.nz/#!TN1VFJDA!FFTyokm0W_-O_RRcIlrStz-iecaPujmNCWvvLhTx0uc

Até a próxima...

terça-feira, 8 de abril de 2014

Variáveis primitivas em java

Em java toda variável tem um  tipo que deve ser definido na hora da declaração da variável. E apos declarado, esse tipo dita qual o dado que esta variável ira armazenar.
Uma vez declarado este tipo não pode ser alterado.

tipoDeDado nomeVariavel;

Exemplo de uma variável para armazenar uma idade de alguém:

int idade;

Na linha acima você declara uma variável chamada de idade do tipo de dado int (Inteiro). Que a partir desse momento passara a existir para que você possa atribuir valores e usa-los posteriormente.

Atribuindo um valor a variável idade:

idade = 15;

Ou seja idade recebe o valor inteiro 15.

Agora vamos mostra como usar o valor que foi atribuído a variável. usaremos o uma instrução para exibir o valor de idade na saída padrão :

// Declara a variável idade
int idade;

//Atribui o valor 15 a idade
idade = 15;

// Exibindo a idade na saída padrão
System.out.println(idade);

Vamos usar o valor idade para outro proposito. Criaremos uma segundo variável que recebera o calculo de qual será a idade daqui a três anos.

// Calcula qual será a idade daqui a três anos
int idadeDaquiATresAnos = idade + 3;

Você também pode usar operadores como os a seguir:
+ soma,
- subtração,
* Multiplicação,
/ Divisão.

Alem desses operadores básicos temos também o operador de modulo da divisão %, que nada mais é que o resto de uma divisão inteira. Veja alguns exemplos:

int quatro = 2 + 2;
int cinco = 6 - 1;

int nove = 3 * 3;
int dezesseis = 64 / 4;

int um = 5 % 2; // 5 dividido por 2 dá 2 e tem resto 1;
// o operador % pega o resto da divisão inteira

Outro tipo de variável muito utilizado é o double, que armazena um número com ponto žflutuante
(e que também pode armazenar um número inteiro).

double pi = 3.14;
double x = 5 * 10 * 2;

O tipo boolean armazena um valor verdadeiro ou falso, e só: nada de números, palavras ou endereços, como em algumas outras linguagens.

boolean verdade = true;

true e false são palavra reservadas da linguagem java. É muito comum usarmos expressões booleanas para atribuirmos valores as variáveis do tipo boolean.

Expressões booleanas são operações que retornam como resultado true ou false.

Exemplo:

int idade = 15;

boolean passe = idade < 18;

O tipo char armazenar apenas um carácter. Este carácter deve está envolto entre aspas simples.
Não se esqueça dessas duas características de uma variável do tipo char! Por exemplo, ela não pode guardar um código como " pois o vazio não é um caractere!

char letra = 'a';
System.out.println(letra);

Variáveis do tipo char são pouco usadas no dia a dia. Veremos mais a frente o uso das Strings, que usamos
constantemente, porém estas não são denidas por um tipo primitivo.

Tipos primitivos e valores.


Esses tipos de variáveis são tipos primitivos do Java: o valor que elas guardam são o real conteúdo da variável. Quando você utilizar o operador de atribuição = o valor será copiado.

int i = 5; // i recebe uma cópia do valor 5
int j = i; // j recebe uma cópia do valor de i
i = i + 1; // i vira 6, j continua 5

Aqui, i fica com o valor de 6. Mas e j? Na segunda linha, j está valendo 5. Quando i passa a valer 6, será
que j também muda de valor? Não, pois o valor de um tipo primitivo sempre é copiado.
Apesar da linha 2 fazer j = i, a partir desse momento essas variáveis não tem relação nenhuma: o que
acontece com uma, não reflete em nada com a outra.

Vimos aqui os tipos primitivos que mais aparecem. O Java tem outros, que são o byte, short,
long e float. Cada tipo possui características especiais que, para um programador avançado, podem fazer
muita diferença.

Referências:
Apostila do curso FJ-11 - Java e Orientação a Objeto. Endereço: http://www.caelum.com.br/apostila-java-orientacao-objetos/ - acessado em 06/04/2014 às 19:35:25 pm.

domingo, 6 de abril de 2014

Versões do java

As versões mais antigas do java são as versões 1.0 e 1.1 que já incorporavam muitas bibliotecas importantes como o JDBC e o java.io.

Com o Java 1.2 houve um aumento grande no tamanho da API, e foi nesse momento em que trocaram a
nomenclatura de Java para Java2, com o objetivo de diminuir a confusão que havia entre Java e Javascript.
Mas lembre-se, não há versão “Java 2.0”, o 2 foi incorporado ao nome, tornando-se Java2 1.2.

Depois vieram o Java2 1.3 e 1.4, e o Java 1.5 passou a se chamar Java 5, tanto por uma questão de marketing e porque mudanças significativas na linguagem foram incluídas. É nesse momento que o “2” do nome Java desaparece. Repare que para fins de desenvolvimento, o Java 5 ainda é referido como Java 1.5.

Hoje a última versão disponível do Java é a 8.

Comentários

Inserção de comentários em aquivos fontes java.

// - comentário de apenas uma linha
/*  */ - comentário de uma linha ou mais
/** */ - comentários java doc usados para fins de documentação de nossas aplicações.


Os comentários não são executados pelo compilado. São apenas uma forma de deixar claro para todos, o que certos trechos de códigos fazem.


Veja a imagem abaixo:





Primeiro Programa em Java o famoso "Hello World".

Vamos compilar nosso primeiro programa em java.

O programa que vamos fazer exibira na tela a sequencia de caracteres "Hello World". O famoso Olá mundo.

Abra o notepad++ e vamos começar.

Digite o seguinte código:




Salve o código:
No meu caso irei salvar na Área de trabalho mesmo.



Abra o prompt de comando.




Vá para o diretório onde você salvou o arquivo fonte use o comanda CD (Change Directory).




Vamos compilar o arquivo fonte digite: Javac HelloWorld.java.




Agora vamos executar o nosso programa.

Antes vamos limpar a tela do prompt. Digite CLS.





Agora digite o seguinte comando no prompt:

java HelloWorld

Não digite nenhuma extensão no final do comando.




Esta será a saída no nosso programa:




Entendendo o código:

class - define uma nova classe todo programa em java deve está contido em uma classe.
{} - define um bloco de código.
public static void main(String[] args) - é o ponto de partido ou seja por onde sua aplicação vai começar. Todo programa deve ter um método main(), para ser executado.
System.out.println("") - exibe o texto que estiver entre aspas na tela.


Baixe o arquivo fonte neste link:
https://mega.co.nz/#!GBVTHLQJ!TpN7rm5TfRTJZZPlxNZEQ1gS_7dAMVtTMjKC50Vy4xI




Máquina Virtual

Em algumas linguagens de programação como o C/C++ e Pascal. Tínhamos a seguinte situação ao compilarmos o código fonte:

Arquivo fonte compilando em linguagem C/C++












Neste exemplo o código fonte é compilado para um código de maquina que seria executado para a plataforma onde foi compilado e sistema operacional. Algumas vezes o código fonte era escrito visando uma unica plataforma.

Este código executável( binário), será capaz de conversar apenas com o sistema especifico para o qual foi compilado ou seja poderá ser executado apenas nesse sistema operacional.

Execução de binário feito para OS especifico.


Com isso pode-se ver como será complicado se quisermos que no executável(binário) seja executado em diferentes sistemas operacionais. Teríamos que compilar uma vez para Windows, outra para Linux, Mac Os e assim por diante.
Muitas vezes suas aplicações vão utilizar bibliotecas, que poderão não existir em outros sistemas operacionais. Que é o caso da biblioteca utilizada para criar interfaces gráficas no Windows a qual em sistemas Linux é totalmente diferente, pôs o Linux tem a sua própria biblioteca para criação de interfaces.

Então surge a grande pergunta:

Como criar então uma aplicação que rode de forma parecida nos
dois sistemas operacionais?

Precisamos reescrever um mesmo pedaço da aplicação para diferentes sistemas operacionais, já que eles não são compatíveis.

Java utiliza do conceito de máquina virtual, onde existe, entre o sistema operacional e a aplicação, uma
camada extra responsável por “traduzir” - mas não apenas isso - o que sua aplicação deseja fazer para as
respectivas chamadas do sistema operacional onde ela está rodando no momento:


Conceito de maquina virtual.


Dessa maneira se abrirmos uma janela no Linux é a mesma no Windows. Nisto ganhamos independência de sistema operacional.  Ou, melhor ainda, independência de plataforma em geral: não é preciso se preocupar em qual sistema operacional sua aplicação está rodando, nem em que tipo de máquina, configurações, etc.

Sua aplicação sempre conversara com a maquina virtual, que por sua vez conversara com o sistema operacional nunca conversando diretamente com o sistema operacional.

A JVM (Java VirtualMachine) é a maquina virtual java.

A maquina virtual possui um conceito bem mais amplo do que a de um mero interpretador. O nome virtual já sugere tudo, maquina virtual "computador de mentira": possui tudo que um computador possui.
Em outras palavras, ela é responsável por gerenciar memória, threads, a pilha de execução, etc.

Essa característica é interessante: como tudo passa pela JVM, ela pode tirar métricas, decidir onde é melhor
alocar a memória, entre outros. Uma JVM isola totalmente a aplicação do sistema operacional. Se uma JVM termina abruptamente, só as aplicações que estavam rodando nela irão terminar: isso não afetará outras JVMs que estejam rodando no mesmo computador, nem afetará o sistema operacional.

Essa camada de isolamento também é interessante quando pensamos em um servidor que não pode se sujeitar a rodar código que possa interferir na boa execução de outras aplicações.
Essa camada, a máquina virtual, não entende código java, ela entende um código de máquina específico.
Esse código de máquina é gerado por um compilador java, como o javac, e é conhecido por “bytecode”, pois existem menos de 256 códigos de operação dessa linguagem, e cada “opcode” gasta um byte. O compilador Java gera esse bytecode que, diferente das linguagens sem máquina virtual, vai servir para diferentes sistemas operacionais, já que ele vai ser “traduzido” pela JVM.

E é dai que vem o grande slogan que a Sun usava para o Java, já que você não precisa reescrever partes da sua aplicação toda vez que quiser mudar de sistema operacional.

Slogan do JAVA feito pela SUM.
















Referências:
Apostila do curso FJ-11 - Java e Orientação a Objeto. Endereço: http://www.caelum.com.br/apostila-java-orientacao-objetos/ - acessado em 06/04/2014 às 19:35:25 pm.

Universidade XTI - Curso de Java 7. Endereço: https://www.youtube.com/user/ricardolopescosta - acessado em 06/04/2014 às 19:39:25 pm.

quinta-feira, 3 de abril de 2014

O que é Java?



Para entender a plataforma java e seu sucesso, sabe um pouco da sua historia é essencial. Pense na década de 1990.

Quais eram os seus maiores problemas?

  •  ponteiros?
  •  gerenciamento de memória?
  •  organização?
  •  falta de bibliotecas?
  • ter de reescrever parte do código ao mudar de sistema operacional?
  • custo financeiro de usar a tecnologia?

A linguagem de programação java veio no intuito de resolve esses problemas, viam a tempos atormentando o usuários de outras linguagens de programação. Alguns desses problemas foram particularmente atacados porque uma das grandes motivações para a criação da plataforma Java era de que essa linguagem fosse usada em pequenos dispositivos, como tvs, videocassetes, aspiradores, liquidicadores e outros. Apesar disso a linguagem teve seu lançamento focado no uso em clientes web (browsers) para rodar pequenas aplicações (applets). Hoje em dia esse não é o grande mercado do Java: apesar de ter sido idealizado com um propósito e lançado com outro, o Java ganhou destaque no lado do servidor.
O Java foi criado pela antiga Sun Microsystems e mantida através de um comitê (http://www.jcp.org) . Seu
site principal era o java.sun.com, e java.com um site mais institucional, voltado ao consumidor de produtos
e usuários leigos, não desenvolvedores. A Sun foi comprada pela Oracle em 2009, muitas URLs e nomes
tem sido trocados para režfletir a marca da Oracle. 

Visite a página principal do Java é: http://www.oracle.com/technetwork/java/.


Historia do Java 


A Sun criou um time (conhecido como Green Team) para desenvolver inovações tecnológicas em 1992. Esse time foi liderado por James Gosling, considerado o pai do Java. O time voltou com a ideia de criar um
interpretador (ou máquina virtual, falaremos o que é isso mais a tarde) para pequenos dispositivos, facilitando a reescrita de soŸftware para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de
TV a cabo.
A ideia não deu certo. Tentaram fechar diversos contratos com grandes fabricantes de eletrônicos, como
Panasonic, mas não houve êxito devido ao conflito de interesses e custos. Hoje, sabemos que o Java domina o mercado de aplicações para celulares com mais de 2.5 bilhões de dispositivos compatíveis, porém em 1994 ainda era muito cedo para isso.
Com o advento da web, a Sun percebeu que poderia utilizar a ideia criada em 1992 para rodar pequenas
aplicações dentro do browser. A semelhança era que na internet havia uma grande quantidade de sistemas
operacionais e browsers, e com isso seria grande vantagem poder programar numa única linguagem, independente da plataforma. Foi aí que o Java 1.1 foi lançado: focado em transformar o browser de apenas
um cliente magro (thin client ou terminal burro) em uma aplicação que possa também realizar operações
avançadas, e não apenas renderizar html.
Os applets deixaram de ser o foco da Sun, e nem a Oracle nunca teve interesse. Nota-se que o java foi criado com um objetivo em mente, foi lançado com outro, porém no final de contas acabou decolando no desenvolvimento de aplicações do lado do servidor.
Java FX vem atualmente, tentando dar força para o Java não só no desktop mas como aplicações ricas na web, mas muitos não acreditam que haja espaço para tal, considerando o destino de tecnologias como Adobe Flex e MicrosoftŸ Silverlight.

Veja este vídeo super curioso sobre a historia do java: http://tinyurl.com/histjava.

No ano de 2009 a Oracle compra a Sun, fortalecendo a marca.
Em 2014 surge a versão 8 do Java trazendo mudanças interessantes e poderosas na linguagem.



















Referências:

Apostila do curso FJ-11Java e Orientação a Objeto. Endereço: http://www.caelum.com.br/apostila-java-orientacao-objetos/ visitado em 03/04/2014 às 20:35:25 pm.