Esse update é 10: Novos applets e JavaFX Jorge Diz Instrutor Globalcode
Objetivos Objetivos: Mostrar o que vem por ai no desktop/ browsertop Ver se os applets agora vão pegar Onde está JavaFX?
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
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
Applets: a volta dos que não foram >browser com capacidade para rodar applets (1995)
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)
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)
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
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)
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.
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
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
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
Consumer JRE >Modularização das bibliotecas incluídas na JRE: >Tempo de carga reduzido >Download sob demanda de partes da biblioteca
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>
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
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
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
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)
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.
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
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).
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.*
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
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
Hello, Java FX > Hello.fx: import javafx.ui.*; } Frame { width: 400 height: 300 content : Label { text: "Oi, Galera } visible: true }
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
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
JavaFX Mobile > Plataforma para aplicativos móveis Java Aplicativos Aplicativos em Java // Java em Java FX FX Script Script JavaFX Mobile JVM JVM + Middleware Middleware Java Java Sistema Sistema Operacional (Linux Operacional (Linux Mobile) Mobile) Nativo Nativo
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)
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.
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
Detachable Applets > Funcionalidade para arrastar-e-soltar um applet sendo executado no browser para continuar executando no desktop. > Demo
Detachable Applets > Como isso é possivel? > Toda tecnologia suficientemente avançada não pode ser distinguida da magia Richard Feynmann
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
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