Java - The Alphabet (Sopa de Letrinhas)

Apresentação Sobre o Universo Java. 

The Beginning:

    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 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. É 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)

    É 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)

    É 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)

    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)

    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)

    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)

    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)

    É 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)

    É 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)

    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)

    É 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)

    É 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

    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)

    É uma implementação feita pela IBM para o desenvolvimento de telas desktop.

Exemplo tela com SWT:



Servlet(Pequeno Servidor)

    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  e montar uma
estrutura de retorno seguindo um protocolo web como o html criando assim páginas web.

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

JSP - Java Server Pages(Servidor de Páginas Java)
    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)

    É 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)

    É 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)

    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)

    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)

   É um conjunto de princípios de arquitectura usado para desenvolver 
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)

    É um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída. É um um conjunto de regras codificadas que pode ser montado utilizando outros protocolos como RPC(Remote Procedure Call), XML e HTTP.

JSON - JavaScript Object Notation(Notação de Objeto Javascript)

    É 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

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

ANT - (Formiga)

    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) 

      Ferramentas para salvar e gerenciaar histórico de todas as alterações em arquivos e documentos.

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

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

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

Exemplos de Servidores:

GlassFish
    É 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

    É 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)

    É 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).