sexta-feira, 28 de agosto de 2009

Tecnologia Java:

Sumário: A linguagem de programação, A plataforma,O ambiente de desenvolvimento,O ambiente de Implementação,Grupos da Tecnologia, JSR


Quando falamos em java, oque te surge a cabeça?
- A linguagem de programação
- A Plataforma independente - JVM
- O ambiente de desenvolvimento - javac, java, javap,javadoc,jar etc
- O ambiente de Implementação - SDK, JRE ou navegador web/


Minha idéia é não só, mostrar a linguagem em si, mais a PLATAFORMA Independente(JVM).



Oque é uma plataforma?
É a junção de um Sistema Operacional e Hardware, as mais conhecidas são windows,Unix, Solaris,Linux etc.(São conhecidas como plataformas nativas).



Oque é uma plataforma indepedente?
É a emulação de uma plataforma nativa, é uma plataforma de Software que roda em cima de uma Plataforma Nativa.


A Plataforma indepedente é dividida em 2 partes:
- Java Virtual Machine(JVM)
- Java Application Programming Interface(API's)




Clique na imagem para ampliar


Na maoria das linguagens de programação quando você compila um programa, você obtem um arquivo compilado e ligado com bibliotecas nativas da plataforma nativa(o compilador dessas linguagens ja é um LINK EDITOR que é quem faz essa ligação com bibliotecas nativas), quando você quer utilizar esse programa compilado para um plataforma nativa em outra, você tem que fazer novamente o programa(em muitos casos recompilar não funciona).

Clique na imagem para ampliar
Esse executável de Windows so funcionara em plataformas Nativas Windows

Plataforma dependente:
Com a compilação de seu algoritmo na linguagem de programação você obtem um programa ESPECIFICO da CPU.


Plataforma independente de java:
Com a compilação de seu algoritmo na linguagem de programação você obtem um programa em bytecode.

Programas de Plataforma dependente:
O tipo de compilador usado por essas plataformas converte seu programa em um código específico daquela CPU. O executavel como chamado nada mais é Doque a junção desse código específico daquela CPU + bibliotecas de código nativo, quem faz essa junção é o link Editor. Ou seja temos um binário daquela CPU mais código nativo.


Programas de Plataforma independente:
Programas na tecnologia java podem ser executado em qualquer combinação de CPU com Sistema Operacional. O compilador de java transforma seu programa em bytecode ao invéz de Código de CPU específico a uma Plataforma.
Como java não usa editor de links na compilação quando a JVM vai interpretar os bytecodes a JVM necessita das API's para entender as instruções específicas daquela Plataforma nativa.Ou seja existe a necessidade da JRE para a intepretação dos bytecodes.

Depois que eu obtive meu bytecode, quem executará ele?
Na verdade quem interpretará seu bytecode é a Máquina Virtual Java.
Java é considerado uma linguagem interpretada e portavel.

Oque é a máquina virtual java?
A Maquina virtual java é um programa específico da plataforma nativa que entende bytecodes de uma plataforma independente(ou seja, seja la o S.O. que compilou) a JVM consegue interpretar eles na plataforma nativa.


Clique na imagem para ampliar


Alem da Máquina Virtual, oque mais preciso para Executar um programa em java?
Alem da máquina virtual, você necessita de um conjunto(uma biblioteca) que são as API's de java. O conjunto JVM(Java virtual Machine) e API's é conhecido como JRE(Java Runtime Environment).


Oque são API's?
API é um coleção de "programas" prontos que fornecem ajuda no desenvolvimento.Muitas coisas você não precisará fazer, ja tem pronto em java.

A JRE é por plataforma nativa?
Sim a JRE é derivada de plataforma para plataforma nativa e é necessaria para fazer a interpretação de qualquer programa em java que você queira que vire processo.

Quais são as funções da JVM?
- Carregar Class Files(arquivo.class), Verificar código(para ver se ele atende a segurança de código previsto em java), Interpretar código.


Como é o nome do compilador de java?
javac

Oque são bytecodes?
Toda vez que você compila um programa em java, você cria um class File(arquivo.class) esse class File será interpretado pela JVM da JRE e causará em um processo na Plataforma nativa.

Se eu compilar esse exemplo:

public class Exemplo{


}


Vou obter isso em bytecode:

Compiled from "Exemplo.java"
public class Exemplo extends java.lang.Object{
public Exemplo();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."":()V
4: return


Oque eu preciso então para interpretar esse meu Programa.class?
Precisa fazer Download da JRE da sua Plataforma Nativa depois, abra o Terminal(DOS, VI) e digite:
java NomeDoSeuPrograma

java = Launcher java, é quem diz para a JVM que é hora de trabalhar


Oque eu preciso para Desenvolver um programa em java?
1 - Saber a linguagem
2 - Um bloco de notas
3 - O SDK


Oque é o SDK?
Software Development kit, A escolha é de Plataforma nativa para Plataforma Nativa.

Oque eu tenho incluso no SDK?
- JRE(JVM + API's)
- javac(compilador)
- Documentação das API's(download separado)
- Utilitários como: jar,javap,javadoc etc
- Exemplo de programas da tecnologia java


Como eu verifico os bytecodes do meu Class file?
1 - abra o terminal
2 - ache o caminho do arquivo, aonde ele esta.
3 - javap -c MeuPrograma

Quais são os grupos da Tecnologia java?
- SE - Standard Edition -Applets e Programas Desktop.Todo mundo começa por aqui, é padrão, Desktop ou Applet.
- EE - Enterprise Edition - Softwares empresariais, Normalmente são via internet,eCommerce, webShoppings, Paginas de Web etc
- ME - Micro Edition - São Softwares para Mobile(celular etc)

Cada Grupo da Tecnologia tem o seu SDK(que permite compilar, executar e criar programas em java)
Temos então:

Java SE SDK
Java SE SDK applet
Java EE SDK
Java ME SDK

Quais são os passos para Desenvolver um programa em java?
1 - Baixe do site da SUN o SDK do SE
2 - Instale o arquivo, abre o terminal(DOS,VI) e digite java - version, se aparecer algo dizendo a versão de java, estamo no caminho(Senão instale novamente)
3 - Abra o bloco de notas
4 - Escreva seu código em java
5 - Salve o seu código com NomeDaClasse.java
6 - Compile seu arquivo: javac NomeDaClasse.java
7 - Mande A JVM trabalhar: java NomeDaClasse


Applets:
- São programas escritos na linguagem de programação java que residem no Servidor Web, são baixados por um navegador no Sistema no cliente e são executados por esse navegador.
- Os Applets são chamados via uma página de web
- O navegador tem uma implementação própria da Jvm para executar os Applets.
-Foi a primeira utilização de java, que naquele tempo tinha outro nome "OAK" e foi uzado na implementação de aplicativos logo no inicio da Internet.
- Sâo iniciadas em um web browser


Gerenciamento automático de memória(coletor de lixo):

- Muitas linguagens de programação passam a responsabilidade de alocação e desalocação de memoria ao programador, Oque se for mal feito, gera problemas de memoria.(Ponteiros etc)
- Em java o coletor de lixo faz a desalocação de memória automática, oque quer dizer que você não precisa se preocupar com DESALOCAÇÃO de memória.

Oque é JSR?

Quando o primeiro grupo da criação da Linguagem java, chamado "Oak" estava no mercado, eles criaram uma proposta de projetos, que foi chamada Request for Programming(RFP), que futuramente se Tornaria a JSR(Java Specification Requests ) que são especificações criadas para a implementação da Tecnologia java, São tipo padrões. Quem controla isso é o :
http://jcp.org/en/home/index
Java Community Process o qual é um grupo formado por empresas e associados que visa a melhoria da Tecnologia java, discutindo e implementando melhorias dia por dia.
Para asseguar a portabilidade de seus programas em java, Toda JRE segue uma especificação, a mesma esta disponivel se alguem quiser criar sua própria JVM e compilador. Chama-se JSR.


Qual a versão de java?
Existe dois tipos de versões?
- Versão de desenvolvimento = 1.6
- Versão de Marketing = 6.0
Ambas são iguais, so depende da onde você usa.

Versões de java:
Java 1.02 -> 250 Classes, Applet era o Grande atrativo da linguagem
Java 1.1 -> 500 Classes, Se tornando Popular, melhor GUI
Java 2 -> 2300 Classes , Somente em 3 versões agora, SE, EE,ME
Java 5 -> 3500 Classes,Conhecido como Tiger

A mudança de 1.1 para 2 foi tão grande que não dava para seguir o ritmo de 1.2, 1.3 foi então que lançaram java 2 como se fosse um novo produto, Para quem não conhece é o ciclo conhecido como End-of-life(Eol) do Product Life Cycle(PLC).


Quais linguagens a JVM entende?
Não somente java, a JVM entende muitas outras linguagens, Pyton, Ruby etc(Se você pesquisar na Internet: Programming Languages for JVM, verá a quantidade)

Quem carrega Classes na JVM?
Existe um "programa" dentro da JVM que é quem carrega Classes em java, se CHAMA CLASS LOADER, ele so carrega sobre necessidade(ou seja ele so carrega sa que você utilizar).



Comsumer Device é sempre relevante a Clientes de dispositivos mobiles.

Garbage collector -> você não roda ele, você sugere que ele rode, a COleta de lixo ocorre automaticamente durante a vida de um programa java, porem , a coleta de lixo varia de implemtação da JVM para Implementação da JVM.


JVM -> Class Loader = alem de fazer carregamento de classes tem mecanismos de segurança como um separador de classes locais e as da rede, isso impede vacalos de tróia pois, as classes locais são carregadas primeiro.



É hora da revisão:

- A tecnologia java não é somente a linguagem de programação
- A JVM é quem interpreta o seus Class Files
- Todo programa compilado em java se transforma em um Class File
- javac é o compilador de java
- java é o launcher de java
- javap -c é utilizado para ver os bytecodes do seu Class File
- Existem 3 grupos em java(SE, EE,ME)
- Para programar em java, você precisa do SDK
- Para interpretar programas em java, você precisa da JRE
- a JRE é a junção de JVM + API's

Bom por hoje é só!!!
CYA DUDES

Nenhum comentário:

Postar um comentário