Java - The Alphabet (Sopa de Letrinhas)
Autor: Marcelo Mariano | Publicado: 2014-05-09T14:12:00-07:00


Apresentação Sobre o Universo Java.&nbsp;

The&nbsp;Beginning:
&nbsp; &nbsp; O Java foi criado em 1992 por uma equipe de engenheiros de tecnologia da sun.




Inicialmente batizado de oak(carvalho) e em 1995 foi rebatizado para&nbsp;Java. Existem várias histórias sobre a origem do nome. Ela foi criada para ser uma linguagem limpa(green-sem poluição) e assim ser independente
de plataforma e poder rodar em dispositivos eletronicos como video-cassestes, televisores, etc.
Como foi criado para ser uma linguagem limpa o conceito de maquina virtual foi o principio de tudo.&nbsp;É a JVM(Java Virtual Machine) que faz a mágica acontecer. Que interpreta os arquivos java e assim começa o desenrolar do "Alfabeto Java".

JVM – Java Virtual Machine(Máquina Virtual Java)
&nbsp; &nbsp; É responsável por carregar os programas e fazer a conversão do
bytecodes em Linguagem de Máquina, definida para cada estrutura de (SO)Sistema Operacional.
Trocando em miúdos, o desenvolvedor pode criar um código que será independente de SO.

JRE – Java Runtime Environment(Ambiente de Tempo de Execução)
&nbsp; &nbsp; É o Java que vem instalado nos computadores novos. Serve para que os softwares feitos em
java possam rodar nos pcs.

JSE – Java Standard Edition(Java Edição Básico)
&nbsp; &nbsp; Ambiente com a estrutura básica necessária para criação de programas Java, contém a JVM,
o compilador e as bibliotecas Java necessárias.

JEE – Java Enterprise Edition(Java Edição Empresarial)
&nbsp; &nbsp; Assim como JSE, o JEE é uma edição do ambiente Java para desenvolvimento de programas,
porém, com número de recursos superior, permitindo o desenvolvimento em multicamadas,
componentes distribuídos, ambientes de internet, etc. Hoje se encontra na versão JEE6.

JME – Java Micro Edition(Java Micro Edição)
&nbsp; &nbsp; Edição do Java voltado para dispositivos capacidade de memória compacta como
celulares, PDAs, e outros dispositivos.

JSDK – Java Standard Development Kit(Java Kit Básico de Desenvolvimento)
&nbsp; &nbsp; Contém o JRE, JSE, os fontes das classes Java e o JavaDoc, com isto, fornecendo o
ambiente para desenvolvimento e execução de programas Java.

API - Application Programming Interface(Interface de Programação de Aplicativos)
&nbsp; &nbsp; É o conjunto de padrões de programação que permite a construção de aplicativos e a sua
utilização de maneira não tão evidente para os usuários.
É um conjunto de Classes prontas disponíveis para uso.

JPA - Java Persistence API(API de Persistencia Java)
&nbsp; &nbsp; É uma especificação para a persistencia de dados.
Ela define um padrão de mapeamento objeto-relacional que frameworks devem implementar para
poderem ser considerados frameworks padrão JEE.

Hibernate (Hibernador)
&nbsp; &nbsp; Implementa a especificação JPA e facilita o mapeamento objeto-relacional além de inúmeras
outras utilidades que auxiliam no desenvolvimento Java.

Framework (FrameWork)
&nbsp; &nbsp; É uma estrutura de suporte definida em que um outro projeto de software pode ser
organizado e desenvolvido para servir a outros. Ou seja, voce pode utilizar vários
frameworks para desenvolver seu software. Para desenvolvimento de telas,
de camadas de negócio, de cálculos, de persistência de dados, etc.

Alguns exemplos de Frameworks:

AWT - Abstract Window ToolKit(Kit de Ferramentas para Telas Abstratas)
&nbsp; &nbsp; É um framework que contém uma gama de componentes básicos utilizados no desenvolvimento
de telas desktop. Alguns consideram o AWT uma API.

Exemplo tela com AWT:















SWING
&nbsp; &nbsp; Possui uma diversidade maior de componentes para serem utilizados no desenvolvimento de
Telas Desktop.


Exemplo tela com Swing:















SWT - Standard Widget Toolkit(Kit de Ferramentas Básicas para Componentes Gráficos)
&nbsp; &nbsp; É uma implementação feita pela IBM para o desenvolvimento de telas desktop.

Exemplo tela com SWT:


Servlet(Pequeno Servidor)
&nbsp; &nbsp; São classes java que, ao serem configuradas e implantadas em um servidor ou
container Java vão o mesmo vai interpretar o código dessas classes &nbsp;e montar uma
estrutura de retorno seguindo um protocolo web como o html criando assim páginas web.

EJB -&nbsp;Enterprise JavaBeans(Componentes de nìvel&nbsp;Empresarial)
&nbsp; &nbsp; É&nbsp;um componente da plataforma&nbsp;JEE. Consiste em fornecer um desenvolvimento rápido e simplificado de aplicações&nbsp;Java,&nbsp;com base em componentes distribuídos, transacionais, seguros e portáveis.


JSP - Java Server Pages(Servidor de Páginas Java)
&nbsp; &nbsp; Foi uma das primeiras tecnologias Java para Web utilizadas para simplificar o processo de
desenvolvimento de páginas dinâmicas.

JSTL - Java Standard Tag Library(Biblioteca Básica para Etiquetas JavaServer)
&nbsp; &nbsp; É um framework utilitário de desenvolvimento que estende a especificação JSP.
Era utilizado como complemento no desenvolvimento das páginas JSP.

JSF - Java Server Faces(Servidor Java de Faces)
&nbsp; &nbsp; É um framework java usado para construção de interfaces de usuário baseadas em
componentes para aplicações web. O JSF é uma evolução do JSP pois além de possibilitar o
desenvolvimento de componentes customizados ele abstraiu a utilização de JSTL.
Ou seja, utilizando JSF o desenvolvimento realmente tornou-se ágil.

Implementções mais conhecidas de JSF:
RichFaces - http://showcase.richfaces.org/
Primefaces - http://primefaces.org/

Ajax - Asynchronous JavaScript And XML(Javascript Assíncrono e XML)
&nbsp; &nbsp; Ajax é um conjunto de tecnologias (JavaScript, DOM, CSS e XML) que permite buscar de forma
assíncrona os dados requisitados no servidor sem ter que retornar todas as informações que
já estavam na tela. Ou seja, não causa o chamado “reload” na tela ou tela branca enquanto
carrega os dados da requisição.

Webservices(Serviços Web)
&nbsp; &nbsp; Web service é uma solução utilizada na integração de sistemas e na comunicação entre
aplicações diferentes. Permitem que sistemas desenvolvidos em plataformas diferentes
sejam compatíveis.

REST - Representational State Transfer(Transferência de Estado Representacional)
&nbsp; &nbsp;É um conjunto de princípios de arquitectura usado para desenvolver&nbsp;
serviços web simplificados utilizando XML, HTTP, JSON, etc.
Com relativa facilidade de integração e Escalabilidade.

SOAP -Simple Object Access Protocol(Protocolo Simples de Acesso a Objetos)
&nbsp; &nbsp; É um&nbsp;protocolo&nbsp;para troca de informações estruturadas em uma plataforma descentralizada e&nbsp;distribuída.&nbsp;É um&nbsp;um conjunto de regras codificadas&nbsp;que pode ser montado utilizando outros protocolos como&nbsp;RPC(Remote Procedure Call),&nbsp;XML e HTTP.

JSON -&nbsp;JavaScript Object Notation(Notação de Objeto Javascript)
&nbsp; &nbsp;&nbsp;É uma estrutura de dados em javascript. Assim como o xml segue um padrão de estrutura de formatação de dados o json tem seu próprio padrão de estrutura. Por ser mais simples de trabalhar o json é muitas vezes mais rápido de trabalhar do que xml.

MAVEN
&nbsp; &nbsp; É uma ferramenta de&nbsp;automação de compilação&nbsp;utilizada primariamente em projetos&nbsp;Java.
Ou seja, é uma ferramenta que serve para montar toda a estrutura de um projeto.

ANT - (Formiga)
&nbsp; &nbsp; Também é uma ferramenta de compilação de projetos. É considerada o "pai" do maven. Mas com muito menos automação.

Versionadores(Controladores de versão)&nbsp;
&nbsp; &nbsp; &nbsp; Ferramentas para salvar e gerenciaar histórico de todas as alterações em&nbsp;arquivos e documentos.

CVS -&nbsp;Concurrent Versions System(Sistema de Versões Concorrentes)
&nbsp; &nbsp; &nbsp;É&nbsp;um dos mais antigos e famosos&nbsp;sistemas de controle de versão.
SVN -&nbsp;Subversion(Subversão)
&nbsp; &nbsp;É&nbsp;um&nbsp;sistema de controle de versão&nbsp;desenhado especificamente para ser um substituto moderno do&nbsp;CVS.


Git -&nbsp;"GIT" é uma gíria inglesa para “idiota, estúpido, ou pessoa que não vale a pena”
&nbsp; &nbsp; É um sistema de&nbsp;controle de versão&nbsp;distribuído e um&nbsp;sistema de gerenciamento de código fonte, com ênfase em velocidade.

Servidores:
&nbsp; &nbsp; Aplicações que rodam aplicativos comuns normalmente em rede. Também chamados de Containers.

Exemplos de Servidores:
GlassFish
&nbsp; &nbsp; É o servidor padrão da especificação do Java. Ou seja, todos os outros servidores para serem considerados de padrão JEE devem ter, no mínimo, as mesmas funcionalidades do glassfish.

TomCat
&nbsp; &nbsp; É um servidor Java, mas não é um servidor padrão JEE pois ele não faz tudo que o glassfish faz. Como rodar EJB.

JBoss - Versão atual é chamada de WildFly(Vôo Selvagem)
&nbsp; &nbsp; É um servidor de aplicações enterprise JEE6. Considerado um dos melhores servidores de aplicações Java do mercado. Implementa a especificação, ou seja, ele segue o padrão mínimo do glassfish. Mas ele possui funcionalidades além do mesmo. Dividido em versões org(free) e eap(é free mas o suporte é pago).