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