Esse update é 10: Novos applets e JavaFX

Propaganda
Esse update é 10:
Novos applets e JavaFX
Jorge Diz
Instrutor Globalcode
Globalcode – Open4Education
Objetivos
Objetivos:
Mostrar o que vem por ai no desktop/ browsertop
Ver se os applets agora vão pegar
Onde está JavaFX ?
Globalcode – Open4Education
Agenda
>Applets: a volta dos que não foram
>O que há de novo no front
>Java 6 Update 10
>Consumer JRE
>Java Plug-in
>Convergência applets / JNLP
>Plataforma Java FX
>Detachable Applets
>Conclusões
Globalcode – Open4Education
Applets:
a volta dos que não foram
>Applets = mini-aplicativos
>Executam numa JVM embutida no browser web
>São baixados junto com a página web
>Iniciam automaticamente
>Área de visualização contida na página HTML
>Interface rica AWT / Swing
Globalcode – Open4Education
Applets:
a volta dos que não foram
>browser com
capacidade para rodar
applets (1995)
Globalcode – Open4Education
Applets:
a volta dos que não foram
> Os outros browsers (Netscape, Internet Explorer)
incorporaram logo a tecnologia
> Despertaram muito interesse no início do Java
> Modelo de segurança efetivo (sandbox)
Globalcode – Open4Education
Applets:
a volta dos que não foram
> Mas ...
>Tempo de carga demorado
>Dependências de versões da JVM usada pelo
browser.
>Mínimo comum denominador puxado para baixo
pela JVM 1.1 da Microsoft
>Surgimento de alternativas para RIA (DHTML,
Flash, AJAX)
Globalcode – Open4Education
Applets:
a volta dos que não foram
>=> desinteresse por soluções baseadas em applets
>=> desinteresse pela plataforma Java ...
> ... (revertida pelo uso cada vez maior do lado do
servidor Web, a partir de 1997)
>=> percepção negativa do mercado:
> “Applets == promessa não cumprida”
> “Java só presta do lado do servidor”
Globalcode – Open4Education
O que há de novo no front ?
>Crescimento do paradigma de aplicações ricas
conectadas (RIAs: rich internet applications)
>Fim do litígio em torno da Microsoft JVM (2004)
>Investimento da Sun para corrigir os problemas
>Compatibilidade entre browsers: novo Java Plugin
>Tempo de carga: JVM modular (Consumer JRE)
Globalcode – Open4Education
O que há de novo no front ?
>Migração entre JVMs de applets sendo executados
>Convergência applets / aplicativos desktop
iniciados via JNLP (Java Web Start)
>Plataforma Java FX + linguagem Java FX Script
>Escrita de applets em outras linguagens via Java
Scripting API (JSR 223)
>Suporte a características do Java SE no Java ME
>Suporte a mídias ricas.
Globalcode – Open4Education
O que há de novo no front ?
> ... mas nem tudo é pra já:
>parte das melhorias estão sendo implementadas
>a plataforma Java FX ainda não é estável
>facilidade / robustez de implantação ainda não se
compara a outras soluções (AJAX, Flash, Flex)
>perfil de web designer ainda não tem “a”
ferramenta
>plugins para IDEs ainda imaturos
Globalcode – Open4Education
O que há de novo no front ?
> Boa notícia:
> Atualização para Java 6 (estável) está
programada para outubro/2008: update 10
> Beta (27) já é bem robusto
>==> não será necessário esperar até o Java 7
Globalcode – Open4Education
Java 6 update 10
>Atualmente em beta
>Incorpora boa parte das tecnologias:
>Tempo de carga reduzido
>Novo Java Plugin para o browser
>Compilador Java FX Script e bibliotecas FX
>Detachable applets
>Applets podem ser também aplicações JNLP
Globalcode – Open4Education
Consumer JRE
>Modularização das bibliotecas incluídas na JRE:
>Tempo de carga reduzido
>Download sob demanda de partes da biblioteca
Globalcode – Open4Education
Deployment Toolkit
>Biblioteca JavaScript para verificar capacidades
do Java Plugin / JVM disponível
> Opção preferencial para implantar applets
> Substitui tags <applet>, <embed>
> Incluir na página web como:
<script
src=“http://java.com/js/deployJava.js”
></script>
Globalcode – Open4Education
Novo Java Plugin
> Plugin mais inteligente para o browser
> Suporte a Firefox 3, IE 6 e 7 ...
> ... em Windows, Linux, Solaris (sem MacOS)
> Melhor integração Java X JavaScript
> Interage com o Deployment Toolkit
Globalcode – Open4Education
Java FX
>Conjunto de tecnologias da Sun baseado em
Java para aplicações ricas
> Ainda desenvolvido fora do JCP
> Ainda não é totalmente open source
> As mesmas aplicações executam em ambiente
browser, desktop e mobile
>Segundo a Sun: “todas as telas da sua vida”
Globalcode – Open4Education
Histórico de Java FX
> F3 = “Form follows function”:
> Framework de UI de Chris Oliver para a SeeBeyond:
> Forma (sintaxe declarativa) segue a função
(descrever GUIs)
> SeeBeyond adquirida pela Sun em 2007
> SavaJe
> Sistema operacional para dispositivos móveis, da
empresa do mesmo nome
> Baseado em Linux + Java SE
> Apresentado no JavaOne 2006
> SavaJe adquirida pela Sun em 2007
Globalcode – Open4Education
Histórico de JavaFX
> JavaFX
>
>
>
>
Anúncio da Sun no JavaOne 2007
F3 → JavaFX Script (em beta)
SavaJe → JavaFX Mobile (não publicado)
Java FX SDK (…o beta está próximo)
Globalcode – Open4Education
Família Java FX
> JavaFX: Conjunto de tecnologias com foco em
interface usuário (desktop, browsertop,
mobiletop)
> JavaFX SDK: Biblioteca para RIAs (animação,
gráficos vetoriais, mídias ricas)
> JavaFX Script: “linguagem de script declarativa,
com tipagem estática” (Chris Oliver - autor)
> JavaFX Mobile: plataforma para aplicativos em
dispositivos móveis.
Globalcode – Open4Education
Java FX
X os outros
> JavaFX no browser roda como applet
> => depende do runtime Java (JRE)
> => herda prós e contras dos applets
> Prós:
> Acesso a todas as APIs do Java
> Modelo de segurança de Java.
> Contras (a serem tratados pelo update 10):
> Tempo de carga muito alto
> Inicialização demorada
> Melhora em relação aos applets “antigos”:
> Interfaces + ricas
> Sintaxe declarativa
Globalcode – Open4Education
Java FX
X os outros
> Java FX Script executa na JVM (JRE)
> JavaScript está em todos os browsers, e é base
para AJAX.
> Flash é um plugin, mas está disponível para as
principais plataformas e a instalação
/atualização / tempo de carga são bem rápidos.
> ActiveX é restrito a plataformas Microsoft
> Silverlight, baseado em .NET (ou Mono).
> Google Gears, persistência no browser +
JavaScript (em beta).
Globalcode – Open4Education
Java FX: SDK
>Conjunto de bibliotecas Java para suporte das
funcionalidades da plataforma Java FX na JVM
>Construído em cima de:
>AWT/Swing
>Java 2D
>Suporte a mídias ricas
>Pacotes javafx.*
Globalcode – Open4Education
Java FX Script
>Linguagem de script orientada a objetos
>Antes interpretada, agora compilada
>Usa o suporte da JSR 233 (Scripting API)
>Linguagem específica de domínio para interfaces
gráficas
>Fortemente tipada, com tipos inferidos
>Parecida com Java … e com outras
Globalcode – Open4Education
Java FX Script
>Linguagem de consulta ~SQL
>~JavaScript
>Linguagem de marcação (~JSON)
>~SVG (gráficos vetoriais)
>Primitivas para animação, multi-threading
>Sintaxe para binding variáveis X eventos
>Orientação a aspectos: triggers ~ advices
>Tratamento de eventos assíncronos
>Closures
Globalcode – Open4Education
Hello, Java FX
> Hello.fx:
import javafx.ui.*;
Frame {
width: 400
height: 300
content : Label {
text: "Oi, Galera”
}
visible: true
}
}
Globalcode – Open4Education
Java FX Script:
alguns contras
>Sintaxe não trivial, diferenças irritantes para
quem conhece Java.
>Modelo da linguagem não é tão simples
>{[{[{[[{{
>~JSON, ~LISP
>Melhor que XML, pior que o YAML do RoR
>Binding padrão do Swing não é suportado
Globalcode – Open4Education
Java FX Script:
mudanças desde 2007
> interpretador compilador
> => melhor integração entre Java e Java FX
Script
> Disponibilização do SDK (semi-escondido)
> Sintaxe ficou mais padronizada
Globalcode – Open4Education
JavaFX Mobile
> Plataforma para aplicativos móveis
Aplicativos
em
Aplicativos
em
Java
/
Java
FX
Script
Java / Java FX Script
JavaFX Mobile
Java
Java
JVM
JVM++Middleware
Middleware
Sistema
Operacional
Sistema
Operacional
(Linux
Mobile)
(Linux Mobile)
Nativo
Nativo
Globalcode – Open4Education
JavaFX Mobile
X os outros
> Por quê JavaFX Mobile?
> vs. Java ME: menos limitações de programação
> vs. S.O.'s proprietários: menos variações de
ambiente e suporte a APIs
> vs. iPhone: aplicativos em plataforma Java, sem as
limitações de AJAX / kit nativo.
> vs. Brew: baseado em tecnologias opensource,
licenciamento amigável ao desenvolvedor.
> vs. OpenMoko: aplicativos em plataforma Java em
vez de código nativo em C/C++.
> vs. Android (“Google Phone”): tende ser padronizado
antes (Sun)
Globalcode – Open4Education
JavaFX Mobile
X os Outros
> Prós:
> Maturidade de Java SE como plataforma (coleta de
lixo, threads, frameworks).
> Ambiente homogêneo para implantação (JSRs de
Java ME)
> Arquitetura mais aberta que a maioria das
alternativas
> Contras:
> Ainda não disponível
> Dependência da adoção pelos fabricantes.
> Operadoras hostis ao celular como plataforma aberta.
Globalcode – Open4Education
Convergência Applet –
Aplicação JNLP
> Empacotamento que permite escolher a
instalação sem alterar o código
> Applets agora tem um descritor JNLP
> Suporte a JNLP e applet no mesmo arquivo .jar
Globalcode – Open4Education
Detachable Applets
> Funcionalidade para arrastar-e-soltar um applet
sendo executado no browser para continuar
executando no desktop.
> Demo
Globalcode – Open4Education
Detachable Applets
> Como isso é possivel ?
> “Toda tecnologia suficientemente avançada
não pode ser distinguida da magia”
Richard Feynmann
Globalcode – Open4Education
Detachable Applets
>O applet migra da JVM do browser para a JVM
do desktop.
>Migrar ==
>ser “passivado” numa JVM (começa a arrastar
no browser), ...
> ... tele-transportado ...
> ... e ativado em outra (JVM no desktop)
>Quando soltar, tenho a opção de virar aplicativo
desktop (JNLP) com suporte a atualização
automática
Globalcode – Open4Education
Conclusões:
>A infra já está ai, mas não está tão fácil de usar
>Foco ainda no perfil de programador, não de web
designer.
>Regressão do update 10 beta está OK: já pode
ser usado como a instalação de Java do dia-a-dia
>Diferenças entre desktop/browsertop/mobiletop
estão diminuindo
Globalcode – Open4Education
Download