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