Java além das aplicações comerciais convencionais Leonardo Simberg Solution IT Architect IBM Professor Pós-Graduação - IBTA leosimberg@gmail.com v setembro de 2009
O que é uma aplicação Comercial Tradicional? 2
Tecnologias normalmente utilizadas Desktop (Java FX, SWF, ) Web (JSF, Java FX,..) Mobile (JME, ) Dados (Derby, Hibernate,..) Integração (WS,REST, EAI ) 3
Mas Java é muito mais! Veja alguns exemplos: Desktop (Java FX, SWF, ) Web (JSF, Java FX,..) Mobile (JME, ) Dados (Derby, Hibernate,..) Integração (WS,REST, EAI ) SOA (SCA, SDO, ) Processos (BPM, Workflow,..) Cloud Computing (SAS,..) Sistemas Distribuídos (Grid, Javaspace, ) Orientação a aspectos (AspectJ, ) TV Digital (Java TV, Xlet, ) Blu-Ray (BDJ) Games 3D (JMonkey, JOGL,...) Sistemas Embarcados (JSTAMP,SPOT,..) Massivamente Paralela (HPC, Concurrent, ) Real Time (JSR 1 RTSJ) Robótica (MAX, ) Visualização (Java 2D, Java 3D,..) Inteligencia Artificial (JOONE, ) Java Card 4
Mas Java é muito mais! Alguns exemplos: Desktop (Java FX, SWF, ) Web (JSF, Java FX,..) Mobile (JME, ) Dados (Derby, Hibernate,..) Integração (WS,REST, EAI ) SOA (SCA, SDO, ) Processos (BPM, Workflow,..) Cloud Computing (SAS,..) Sistemas Distribuídos (Grid, Javaspace, ) Orientação a aspectos (AspectJ, ) TV Digital (Java TV, Xlet, ) Blu-Ray (BDJ) Games 3D (JMonkey, JOGL,...) Sistemas Embarcados (JSTAMP,SPOT,..) Massivamente Paralela (HPC, Concurrent, ) Real Time (JSR 1 RTSJ) Robótica (MAX, ) Visualização (Java 2D, Java 3D,..) Inteligencia Artificial (JOONE, ) Java Card 5
Blu-ray Disc 6
Blu-ray Disc O que é? Novo formato de mídia de óptica para eletrônicos de consumo, computadores e vídeo games (PS3). Excelente qualidade de áudio e vídeo: Blu-ray Disc: 1920x1080 DVD: TV analógica: 720x480 352x240 Alta capacidade 25GB (single layer) / 50GB (double layer) Futuramente 200GB (multi-layer) 7
Uma Plataforma -> Dois modelos High-Definition Movie (HDMV) Modelo criado através da extensão de funcionalidades do DVD. Blu-ray Disc Java (BD-J) Modelo baseado em uma plataforma completamente programável com suporte a conectividade e novos modos de interação. * Todos os aparelhos compatíveis com Blu-ray devem suportar ambos os modelos 8
Visão geral do Blu-ray Disc Java (BD-J) 9
Profiles do Blu-ray 10
Alguns títulos com o BD-J 11
Menus mais elaborados * Menus podem ser abertos em cima do filme em execução sem interrupção! 12
Criação de jogos Use the embedded cross-hair to shoot either heroes or foes, in this rather lame, early game from Fox Studios for The League of Extraordinary Gentlemen. 20th Century Fox Studios. 13
Criação de jogos Ratatouille: Gusteau's Gourmet Game - The Walt Disney Company. 14
Algumas idéias de uso para o BD-J Menus elaborados Interatividade In-movie Jogos Persistência de Informações Download de conteúdo Comercio eletrônico associado com o filme Download de legendas Eventos sincronizados Compartilhamento de experiências em comunidades Versatilidade de design Internet Banking 15
Impactos Um mercado potencial de mais de 1 Bilhão de aparelhos novos rodando a Máquina Virtual Java (JVM); Milhares de títulos que podem ser incrementados com Java, abrindo um grande mercado para desenvolvedores; Uma nova plataforma para comercio eletrônico interativo, onde você pode comprar os objetos que estão aparecendo no filme! Novo método de integração entre os usuários sem a necessidade de um desktop. 16
Referências Hollywood Studios and Blu-ray Disc Interactivity Using BD-J; Malik, Sumit; http://www.blueboard.com/bluray/pdf/2007_5_23_tv_kickoff.pdf Blu-ray BD-J Application Development using Java ME; http://www.blueboard.com/bluray/ 17
Jogos 3D em Java 18
Por que um jogo em Java deveria ser assim? 19
Se ele pode ser assim? 20
Principais mitos sobre jogos 3D em Java O Java é muito lento para ser usado em jogos 3D! ERRADO! A partir do Java 1.4.2 o Java resolveu os principais problemas de desempenho, além de grande parte do trabalho pesado do processamento nos jogos é feito pelo hardware, principalmente pelas placas gráficas. Falta de qualidade visual e sonora! ERRADO! O Java contêm APIs gráficas poderosas como Java 3D e Java 2D, além de ser integrado com OpenGL e DirectX. E possui recursos poderosos de audio através da integração com o OpenAL. Pergunta: Será que Java conseguirá a curto prazo ser mais poderoso ou igualar as Engines em C, como por exemplo a Unreal? Por que? 21
Arquitetura típica de um jogo 3D em Java API Gráfica Nativa (OpenGL) Código do Jogo (Personalisado) Controle de Jogo (JMonkey) Wrapper Java + Utilitários (LWJGL) API Áudio Nativa (OpenAL) Interface de Entrada Nativa + Java (JInput) Wrapper Java (JME-Physics) API de Cálculos Físicos Nativa (ODE) 22
Exemplo de arquitetura de um jogo em Java 23
JMonkey Engine DEMO 24
Inteligência Artificial e outros facilitadores Enquanto deixamos os gráficos e sons para bibliotecas especializadas em C/Assembler, podemos nos preocupar com o enredo do jogo e a inteligência artificial que pode ser desenvolvida de mais alto nível, como o Java. Existem diversos algoritmos e api s em java: JSR94 Java Rule Engine (JESS, JBOSS DROOLS) JMonkey, LWJGL, JME-Physics Reconhecimento de Voz Reconhecimento de Vídeo e Movimento Sintetização de voz Comunicação 25
Jogos MMOG (Massively Multiplayer Online Games) Grande quantidade de usuários simultâneos; Controle de interação entre usuários e objetos em um mesmo espaço; Gerenciamento de comunicação; Segurança; Velocidade; Tolerância a falhas; Baixa latência; Alta capacidade de processamento. Servidor central 26
Projeto Darkstar What is Project Darkstar? Project Darkstar is software infrastructure that aims to simplify the development and operation of massively scalable online games, virtual worlds, and social networking applications. Originally created by Sun Microsystems, it is today advanced as an open source project through the Project Darkstar Community. What problems does Project Darkstar solve? Project Darkstar is designed to help developers and operators avoid a range of serious, yet typical, problems associated with massive scale online games today, including zone overloading, data corruption, and server under-utilization. In addition, Project Darkstar will enable developers to support new dimensions of play such as evolvable virtual worlds and very large scale battlefields. ** Informações extraídas do site do projeto Darkstar, http://www.projectdarkstar.com/ 27
Impactos Um mercado cada vez mais crescente de jogos sendo desenvolvidos em Java, tanto a parte 3D, como a parte server; Criação de interfaces mais ricas para os sistemas comerciais desenvolvidos em Java; Avanço nas técnicas de Inteligência Artificial que podem ser utilizadas em outras áreas, como por exemplo o Algorithm Trade no mercado de ações; Uso de mundos virtuais dos MMOGs para outros usos, como gerenciamento/fechamento de compra e vendas de ações para Bolsas de Valores; 28
Referências Creating Games on the Java Platform with the jmonkeyengine; Slack, Joshua; Herlitz, Rikard; http://developers.sun.com/learning/javaoneonline/2008/pdf/ts-5711.pdf JMonkeyEngine; http://www.jmonkeyengine.com Jogos 3D na Prática; Mundo Java; número 24 Project Darkstar; http://www.projectdarkstar.com/ Editora Apress: http://www.apress.com/book/view/1590598172 Versão online: http://books.google.com/books?id=jl_yt-azk- 8C&pg=PA10&lpg=PA10&dq=java+3dgames&source=web&ots=Ipg5xX 2Ahx&sig=LmjLd_DitZUrzz4ThkCatc8nE&hl=en&sa=X&oi=book_result&resnum=9&ct=result 29
Sistema Embarcados com Java 30
O que é um sistema embarcado (Embedded System)? Um sistema embarcado (ou sistema embutido) é um sistema microprocessado no qual o computador é completamente encapsulado ou dedicado ao dispositivo ou sistema que ele controla. Diferente de computadores de propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos específicos. ; Wikipedia 31
Sistemas prontos para uso: JStamp JStamp é um produto da Systronix pronto para uso, ele contem o Hardware e software (VM) já implementado em um dispositivo comercial de aproximadamente $150 pronto para uso. Este pode processar mais de 3 milhões de byte codes Java por segundo. 32
Sun Spot Dispositivo programável em Java composto por camadas A camada de sensor pode ser trocada, existe uma placa demo que contém os seguintes elementos: Acelerômetro Sensor de luz Sensor de temperatura Botões do tipo push buttons 8 LEDs RGB 6 Entradas analógicas 5 Entradas/Saídas de uso geral 4 Saídas de alta corrente 33
Exemplo de Uso Avançado: Perrone Robotics 34
Vários Sun Spot criam uma rede mesh 35
Máquina Virtual para sistema embarcado da SUN: SquawK 36
Máquina Virtual para sistema embarcado: NanoVM The NanoVM is a java virtual machine for the Atmel AVR ATmega8 CPU, the member of the AVR CPU family used e.g. in the DLR Asuro robot, manufactured by AREXX engineering. With the NanoVM, the Asuro can be programmed in the popular Java language using the standard Sun JDK. The NanoVM and its tools are distributed under the GPL and can be used on other AVR based systems as well. 37
Impactos Criação novas soluções cada vez mais baratas, inteligentes e conectadas; Junção de software e eletrônica, melhorando a interação dos aparelhos comuns como Geladeira, Carro, Máquina de Lavar, Brinquedos até sistemas industriais como Máquinas Operatrizes e Robôs; Um mercado crescente de desenvolvimento embarcados e Java é um grande candidato, pois as aplicações estão ficando cada vez mais complexas, mais conectadas e os microcontroladores estão cada vez mais rápidos; Desenvolvimento de novas ferramentas de desenvolvimento e metodologias; 38
Referências Embedded Systems Glossary; Barr, Michael; http://www.netrino.com/embedded-systems/glossary The Nano VM; http://www.harbaum.org/till/nanovm/index.shtml JStamp; http://www.jstamp.com/ Project Sun SPOT: A Java Technology-Enabled Platform for Ubiquitous Computing; http://developers.sun.com/learning/javaoneonline/j1sessn.jsp?sessn=ts- 6495&yr=2008&track=javame 39
Java além das aplicações comerciais convencionais Leonardo Simberg Solution IT Architect IBM Professor Pós-Graduação - IBTA leosimberg@gmail.com v setembro de 2009