SlideShare una empresa de Scribd logo
1 de 71
Descargar para leer sin conexión
Coordena¸ao do Curso de Ciˆncia da Computa¸ao
          c˜                e                c˜
   Universidade Estadual de Mato Grosso do Sul



Desenvolvendo um Estudo de Caso
Utilizando a Plataforma Java ME




     Lais Claudia Zanfolim
    Rodolfo Chaves Fernandes


      Andr´ Chastel Lima (Orientador)
           e
     Celso G. Camilo Jr (Co-orientador)




                Dezembro de 2009
Desenvolvendo um Estudo de Caso
Utilizando a Plataforma Java ME


        Lais Claudia Zanfolim
       Rodolfo Chaves Fernandes




                 Este exemplar corresponde a reda¸ao final
                                              `      c˜
                 da monografia da disciplina Projeto Final de
                 Curso devidamente corrigida e defendida por
                 Lais Claudia Zanfolim
                 Rodolfo Chaves Fernandes e aprovada pela
                 Banca Examinadora, como parte dos requisi-
                 tos para a obten¸ao do t´
                                 c˜      ıtulo de Bacharel em
                 Ciˆncia da Computa¸ao.
                   e                 c˜




                       Dourados, 11 de dezembro de 2009.




                       Andr´ Chastel Lima (Orientador)
                           e




                       Celso G. Camilo Jr (Co-orientador)


                  ii
Coordena¸ao do Curso de Ciˆncia da Computa¸ao
                        c˜                e                c˜
                 Universidade Estadual de Mato Grosso do Sul




             Desenvolvendo um Estudo de Caso
             Utilizando a Plataforma Java ME


                        Lais Claudia Zanfolim
                       Rodolfo Chaves Fernandes
                                Dezembro de 2009




Banca Examinadora:

  • Andr´ Chastel Lima (Orientador)
        e

  • Celso G. Camilo Jr (Co-orientador)

  • Raquel Marcia M¨ller
                   u

  • Nielsen Cassiano Sim˜es
                        o




                                         iii
Resumo

    A plataforma Java Micro Edition ´ o conjunto de tecnologias que permitem o de-
                                        e
senvolvimento de aplica¸oes Java para dispositivos com processamento, mem´ria e v´
                        c˜                                                    o       ıdeo
limitados, como celulares e smartphones. Assim como as outras edi¸oes Java, essa pla-
                                                                       c˜
taforma foi desenvolvida com o mesmo intuito, a portabilidade, al´m de possuir diversas
                                                                    e
APIs para o desenvolvimento, o Java ME tamb´m fornece compatibilidade entre as edi-
                                                  e
¸oes Java, possibilitando a comunica¸˜o com aplica¸oes constru´
c˜                                    ca               c˜         ıdas em Java SE e Java
EE. Mantendo o foco em Java Micro Edition, este trabalho prop˜e o desenvolvimento de
                                                                  o
uma aplica¸ao m´vel que una as tecnologias Java ME e Java EE. Como o Java Enterprise
            c˜   o
Edition possui v´rias funcionalidades de redes e Internet e cont´m classes especialmente
                 a                                               e
desenvolvidas para acesso a servidores e banco de dados, parte da aplica¸˜o foi constru´
                                                                          ca           ıda
usando esta tecnologia, possibilitando a comunica¸ao entre dispositivos m´veis e um servi-
                                                    c˜                     o
dor disposto na rede local ou Internet. Portanto, neste trabalho foi abordado, juntamente
com a plataforma Java ME, o uso de Servlets dentro da arquitetura Java EE, interagindo
com um cliente m´vel atrav´s do protocolo HTTP para estabelecer a comunica¸˜o com
                   o         e                                                    ca
celulares e smartphones. Visto que um Servlet pode efetuar qualquer processamento ine-
rente a uma classe Java e enviar respostas na forma de documentos XML, para efetuarmos
a troca de dados entre um dispositivo m´vel e o servidor remoto de dados, que alimenta o
                                         o
sistema m´vel, utilizamos os recursos que a linguagem XML nos oferece. Para auxiliar o
           o
desenvolvimento do estudo de caso, a metodologia agil extreme programming foi utilizada
                                                     ´
juntamente com diagramas da UML com o intuito de organizar o processo de desenvolvi-
mento. A aplica¸ao desenvolvida durante o trabalho ´ respons´vel por agilizar o processo
                c˜                                      e      a
de vendas de uma distibuidora de bebidas, a fim de automatizar a for¸a de vendas e foi
                                                                         c
testada em celulares e smartphones com o sistema operacional m´vel Symbian e Windows
                                                                 o
Mobile, interagindo com o servidor via requisi¸oes HTTP.
                                                c˜

Palavras Chave: Java ME, mobilidade, celulares e smartphones.




                                            iv
Abstract

    The platform Java Micro Edition is the set of technologies that enable the develop-
ment of Java applications for devices with limited processing, memory and video, such
as cell phones and smartphones. As with other Java editions, this platform was develo-
ped with the same intention, portability, and have different APIs for the development,
Java ME also provides compatibility between Java editions, enabling communication with
applications built on Java SE and Java EE. Keeping the focus on Java Micro Edition,
this paper proposes the development of a mobile application that gather the technologies
Java ME and Java EE. As the Java Enterprise Edition has several networks and Internet
features and contains classes designed specially to access servers and databases, part of
the application was built using this technology, enabling communication between mobile
devices and server requirements of a local network or Internet. Therefore, in this study
was discussed, along with the Java ME platform, the use of Servlets in the Java EE archi-
tecture, interacting with a mobile client via the HTTP protocol to communicate with cell
phones and smartphones. Since a servlet can perform any processing associated with a
Java class and submit answers in the form of XML documents, to effectuate the exchange
of data between a mobile device and the remote database, which feeds the mobile system,
we use the resources that XML language offers. To assist the development of case study,
the agile eXtreme Programming was used together with UML diagrams in order to orga-
nize the development process. The application developed during the work is responsible
for streamlining the sales process of a beverage distributor, to automate the sales force
and has been tested on mobile phones and smartphones with mobile operating system
Symbian and Windows Mobile, interacting with the server via HTTP requests.

Keywords: Java ME, mobile, cell phones and smartphones.




                                           v
Agradecimentos

   Agradecemos primeiramente a Deus, por ter nos aben¸oado durante toda nossa vida
                                                          c
e principalmente por ter nos dado for¸as durante todo o decorrer do trabalho.
                                     c
   Aos nossos familiares, pela confian¸a, apoio e educa¸ao durante toda nossa caminhada.
                                     c                 c˜
   Ao nosso orientador Andr´ Chastel Lima, pelo apoio e compreens˜o.
                              e                                      a
   Ao nosso co-orientador Celso Camilo, pelo incentivo e paciˆncia.
                                                               e
   A toda academia, que nos proporcionou as condi¸oes necess´rias para o desenvolvi-
                                                      c˜         a
mento deste trabalho, em especial os professores Odival Faccenda e Glaucia Gabriel Sass.
   Aos funcion´rios da eXclaim, por nos dar a oportunidade de estagiar na empresa e
               a
desenvolver projetos com a tecnologia Java ME.
   Aos leitores e colaboradores do javamovel.com, pela lealdade e por nos incentivar a
estudar o tema do projeto.
   Enfim, agradecemos todos aqueles que contribu´   ıram para o sucesso desta caminhada
e que de forma injusta n˜o tiveram seus nomes inclu´
                        a                            ıdos aqui.




                                           vi
Sum´rio
   a

Resumo                                                                                                                                                      iv

Abstract                                                                                                                                                    v

Agradecimentos                                                                                                                                              vi

1 Introdu¸˜o
         ca                                                                                                                                                 3
  1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                     4
  1.2 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                    4
  1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                                     5

2 Sistemas operacionais para dispositivos m´veis   o                                                                                                         6
  2.1 Dispositivos M´veis . . . . . . . . . . . . . . . .
                    o                                                                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    6
  2.2 Sistemas Operacionais e suas tecnologias . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
       2.2.1 Symbian . . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
       2.2.2 Android . . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    7
       2.2.3 Windows Mobile . . . . . . . . . . . . .                                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8
       2.2.4 Palm OS . . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    8
       2.2.5 BlackBerry OS . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
       2.2.6 Iphone OS . . . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
  2.3 An´lise do Mercado . . . . . . . . . . . . . . . .
          a                                                                                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10

3 Java Micro Edition                                                                                                                                        11
  3.1 Vis˜o geral . . . . .
          a                   .   .   .   .   .   .   .   .   .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
  3.2 Configura¸˜es . . .
                co            .   .   .   .   .   .   .   .   .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
  3.3 Perfis . . . . . . . .   .   .   .   .   .   .   .   .   .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
  3.4 M´quinas Virtuais
        a                     .   .   .   .   .   .   .   .   .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
  3.5 Pacotes Opcionais .     .   .   .   .   .   .   .   .   .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16




                                                              vii
4 Perfil MIDP                                                                                                                                       17
  4.1 Vis˜o Geral do MIDP . . . .
          a                               .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
  4.2 MIDlets . . . . . . . . . . .       .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
  4.3 MIDlets Suite . . . . . . . .       .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
      4.3.1 JAR . . . . . . . . .         .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
      4.3.2 JAD . . . . . . . . .         .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  4.4 Interface . . . . . . . . . . .     .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
  4.5 Armazenamento Persistente           .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
      4.5.1 RMS . . . . . . . . .         .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27

5 APIs e Frameworks para         Java ME                                                                                                           28
  5.1 APIs . . . . . . . . . .   . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
  5.2 Frameworks . . . . . .     . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
      5.2.1 Floggy . . . . .     . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
      5.2.2 KXML . . . . .       . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   32
      5.2.3 LWUIT . . . .        . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33

6 Comunica¸˜o com o Servidor
            ca                                                                                                                                     35
  6.1 A Plataforma Java EE . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
      6.1.1 Servlets . . . . . . . . . . . . . . .                         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
  6.2 XML - Linguaguem de marca¸˜o extens´
                                   ca          ıvel                        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   38
      6.2.1 An´lise de documentos XML . . . .
                a                                                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   39

7 Estudo de Caso                                                                                                                                   41
  7.1 Extreme programming . .         .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
  7.2 Arquitetura do sistema . .      .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   42
  7.3 Vis˜o geral do sistema . .
          a                           .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43
  7.4 Diagrama de Caso de Uso         .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43
  7.5 Est´rias . . . . . . . . . .
          o                           .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   44
  7.6 Release 1 . . . . . . . . . .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   46
      7.6.1 Itera¸ao A . . . . .
                   c˜                 .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   46
      7.6.2 Itera¸ao B . . . . .
                   c˜                 .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   47
  7.7 Release 2 . . . . . . . . . .   .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   48
      7.7.1 Itera¸ao A . . . . .
                   c˜                 .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   48
      7.7.2 Itera¸ao B . . . . .
                   c˜                 .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   48
  7.8 A Aplica¸˜o . . . . . . . .
               ca                     .   .   .   .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   49

8 Considera¸˜es Finais
           co                                                                                                                                      57



                                                      viii
Lista de Figuras

 3.1    Elementos da plataforma Java ME. . . . . . . . . . . . . . . . . . . . . . . 12
 3.2    Arquitetura da plataforma Java. . . . . . . . . . . . . . . . . . . . . . . . . 13

 4.1    Ciclo de vida do MIDlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
 4.2    Hierarquia de classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
 4.3    Record Management System. . . . . . . . . . . . . . . . . . . . . . . . . . . 27

 6.1    Arquitetura da plataforma Java EE. .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
 6.2    Servlet container. . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
 6.3    Ciclo de vida do servlet. . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   38
 6.4    Estrutura do XML. . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   40

 7.1    Esquema de comunica¸˜o. . . . . . . . . . . . . .
                              ca                                               . . . . . . .               .   .   .   .   .   .   .   42
 7.2    Diagrama de Caso de Uso. . . . . . . . . . . . . .                     . . . . . . .               .   .   .   .   .   .   .   43
 7.3    Est´ria 1-A: Consulta de produtos. . . . . . . . .
           o                                                                   . . . . . . .               .   .   .   .   .   .   .   44
 7.4    Est´ria 1-B: Consulta e cadastro de clientes. . . .
           o                                                                   . . . . . . .               .   .   .   .   .   .   .   44
 7.5    Est´ria 2-A: Cadastro de pedidos. . . . . . . . . .
           o                                                                   . . . . . . .               .   .   .   .   .   .   .   45
 7.6    Est´ria 2-B: Altera¸˜o de pedidos. . . . . . . . . .
           o               ca                                                  . . . . . . .               .   .   .   .   .   .   .   45
 7.7    Est´ria 2-C: Envio dos dados para o banco central
           o                                                                   da empresa.                 .   .   .   .   .   .   .   46
 7.8    Diagrama de classe de projeto - Produto. . . . . .                     . . . . . . .               .   .   .   .   .   .   .   47
 7.9    Diagrama de classe de projeto - Cliente. . . . . .                     . . . . . . .               .   .   .   .   .   .   .   47
 7.10   Diagrama de classes de projeto. . . . . . . . . . .                    . . . . . . .               .   .   .   .   .   .   .   48
 7.11   Autentica¸ao do usu´rio. . . . . . . . . . . . . . .
                  c˜        a                                                  . . . . . . .               .   .   .   .   .   .   .   50
 7.12   Menu principal da aplica¸˜o m´vel. . . . . . . . .
                                 ca    o                                       . . . . . . .               .   .   .   .   .   .   .   51
 7.13   Cadastro de Clientes. . . . . . . . . . . . . . . . .                  . . . . . . .               .   .   .   .   .   .   .   52
 7.14   Busca de Produtos. . . . . . . . . . . . . . . . . .                   . . . . . . .               .   .   .   .   .   .   .   53
 7.15   Detalhamento de produto. . . . . . . . . . . . . .                     . . . . . . .               .   .   .   .   .   .   .   54
 7.16   Cadastro de pedidos. . . . . . . . . . . . . . . . .                   . . . . . . .               .   .   .   .   .   .   .   55
 7.17   Lista de pedidos. . . . . . . . . . . . . . . . . . .                  . . . . . . .               .   .   .   .   .   .   .   56




                                            ix
Lista de Siglas

AM - Application Manager
API - Application Programming Interface
CDC - Connected Device Configuration
CGI - Common Gateway Interface
CLDC - Connected Limited Device Configuration
CVM - Compact Virtual Machine
DTD - Document Type Declaration
FP - Foundation Profile
GP - Game Profile
GPS - Global Positioning System (Sistema de Posicionamento Global)
HTTP - HyperText Markup Language
HTTP - Hypertext Transfer Protocol
J2SE - Java 2 Standard Edition
JAD - Java Decompiler
JAR - Java Archive
Java EE - Java Enterprise Edition
Java ME - Java Micro Edition
JCP - Java Community Process
JNI - Java Native Interface
JSP - Java ServerPages
JVM - Java Virtual Machine
KVM - K Virtual Machine
LWUIT - LightWeight User Interface Toolkit
MIDP - Mobile Information Device Profile
MMAPI - Mobile Media API
MMS - Multimedia Messaging Service (Servi¸o de Mensagem Multim´dia)
                                          c                      ı
MSA - Mobile Service Architecture
OpenCL - Open Computing Language
OpenGL - Open Graphics Library


                                       1
2



PBP - Personal Basis Profile
PC - Personal Computer
PDA - Personal Digital Assistants
PDAP - PDA Profile
PP - Personal Profile
RAD - Rapid Application Development
RAM - Random Access Memory
RIM - Research in Motion
RMI - Remote Method Invocation
RMIP - Remote Method Invocation Profile
RMS - Record Management System
SDK - Software Development Kit
SMS - Short Message Service
SO - Sistema Operacional
UML - Unified Modeling Language
VM - Virtual Machine
W3C - World Wide Web Consortium
WAV - WAVEform audio format
WTK - Wireless ToolKit
XML - eXtensible Markup Language
Cap´
   ıtulo 1

Introdu¸˜o
       ca

    Com a expans˜o da Internet e da utiliza¸˜o de aplica¸˜es, surgiram diversas linguagens
                  a                         ca          co
de programa¸˜o, tendo destaque as de multiplataforma, como ´ o caso do Java, que pode
             ca                                                  e
ser aplicado em diversos setores, como aparelhos eletrˆnicos, telefones celulares, aplica¸oes
                                                      o                                  c˜
para Web e desktop, entre outros. Levando em considera¸ao os diferentes setores, tornou-
                                                          c˜
se necess´rio a cria¸˜o de kits de desenvolvimento diferenciados.
          a         ca
    A proposta inicial parte do interesse pela linguagem de programa¸ao Java, em espe-
                                                                         c˜
c´                                      ´
 ıfico Java Micro Edition - Java ME. E uma plataforma que permite o desenvolvimento
de aplica¸˜es Java para dispositivos com processamento, mem´ria e v´
          co                                                     o       ıdeo limitados, tais
como celulares e smartphones. Assim como as outras edi¸oes Java, essa tecnologia foi
                                                             c˜
desenvolvida com o mesmo intuito, a portabilidade, al´m de possuir diversas APIs (Ap-
                                                        e
plication Programming Interface) para o desenvolvimento. O Java ME tamb´m fornecee
compatibilidade entre as edi¸˜es Java, possibilitando a comunica¸ao com aplica¸oes Java
                             co                                    c˜               c˜
SE (Java Standard Edition) e Java EE (Java Enterprise Edition).
    A Java Community Process - JCP, especifica o Java ME em dois grupos:
   • CDC - Connected Device Configuration: para dispositivos com maior capacidade
     computacional.

   • CLDC - Connected Limited Device Configuration: para dispositivos com menor
     capacidade computacional e normalmente usado em aplica¸oes embarcadas.
                                                           c˜
Dentro desta ultima configura¸ao existe uma outra classifica¸ao que define os perfis dos
               ´               c˜                            c˜
dispositivos. No caso de celulares e smartphones a classifica¸ao usada ´ o MIDP, Mobile
                                                            c˜         e
Information Device Profile. Dentro desta classifica¸˜o, se ocorrer a migra¸ao de aplica¸oes
                                                  ca                     c˜          c˜
para outros celulares com a mesma configura¸˜o elas n˜o perdem sua funcionalidade
                                               ca         a
(TOPLEY, 2002).
    Para otimizar o funcionamento de aplica¸oes em celulares a Sun desenvolveu m´quinas
                                           c˜                                    a
virtuais Java espec´
                   ıficas para cada configura¸ao, que manipulam de maneira mais eficiente
                                           c˜

                                             3
1.1. Objetivos                                                                         4



a codifica¸˜o desse tipo de dispositivos.
         ca
    Com a cria¸ao deste ambiente de desenvolvimento torna-se vi´vel a constru¸˜o de
               c˜                                                  a            ca
aplica¸˜es para dispositivos m´veis com maior produtividade e portabilidade (MUCHOW,
      co                      o
2001).


1.1     Objetivos
   O objetivo principal deste trabalho ´ desenvolver um estudo de caso aplicando os prin-
                                       e
cipais conceitos da plataforma Java ME e utilizar a plataforma Java EE para constru¸˜o
                                                                                     ca
de um servidor que ser´ respons´vel pela troca de dados com a aplica¸ao m´vel.
                       a         a                                    c˜    o
   Para alcan¸ar o objetivo principal, as seguintes etapas foram efetuadas:
               c

   • Fazer um breve estudo sobre as plataformas de dispositivos m´veis;
                                                                 o

   • Estudar a plataforma Java ME, voltada para dispositivos m´veis;
                                                              o

   • Estudar a plataforma Java EE para a constru¸˜o de um servidor remoto;
                                                ca

   • Estudar a comunica¸ao entre o servidor e a aplica¸˜o m´vel;
                       c˜                             ca   o

   • Estudar alguns frameworks Java ME e definir quais ser˜o utilizados no estudo de
                                                         a
     caso;

   • Definir os padr˜es da Engenharia de Software que ser˜o utilizados na aplica¸ao;
                   o                                    a                      c˜

   • Definir o estudo de caso;

   • Desenvolver e testar o estudo de caso.


1.2     Justificativa
   Segundo dados divulgados pela Agˆncia Nacional de Telecomunica¸oes (Anatel), o
                                       e                              c˜
n´mero de linhas de telefones m´veis no pa´ chegou a aproximadamente 152,4 milh˜es,
 u                               o          ıs                                      o
                                                                     ˆ
em fevereiro de 2009, o que corresponde a 79,94% da popula¸ao (AGENCIAESTADO,
                                                             c˜
2009).
   Em n´ mundial, o n´mero de usu´rios de telefones m´veis chegou perto de 3 bilh˜es
         ıvel            u            a                  o                           o
em 2007, atingindo 48% da popula¸ao e a estimativa para o final de 2008 era de 4 bilh˜es,
                                   c˜                                               o
o que corresponde a 61%, segundo a Uni˜o Internacional de Telecomunica¸oes (UIT)
                                           a                                c˜
(REUTERS, 2008).
   Segundo Eric Klein, vice-presidente de marketing do Java, em entrevista a Reuters, o
                                                                           `
Java est´ instalado em 2,6 bilh˜es de telefones em todo o mundo (VIRKI, 2009). Visto
        a                      o
1.3. Metodologia                                                                       5



que o n´mero de usu´rios de aparelhos celulares ´ significativo, que est´ em crescimento e
       u            a                           e                      a
que a plataforma Java ME ´ bem aceita pelo mercado de software para dispositivos m´veis
                         e                                                          o
e tamb´m est´ em ascendˆncia no mercado, o desenvolvimento para esta plataforma se
       e      a          e
torna bastante atraente.


1.3     Metodologia
     Mantendo o foco em Java Micro Edition, propomos fazer uma revis˜o bibliogr´fica dos
                                                                        a         a
conceitos chaves desta plataforma e desenvolver uma aplica¸ao para celular ou smartphone
                                                               c˜
que una as plataformas Java ME e Java EE. Como o Java Enterprise Edition possui v´riasa
funcionalidades de redes e Internet e cont´m bibliotecas especialmente desenvolvidas para
                                           e
acesso a servidores e banco de dados, parte da aplica¸˜o ser´ constru´ usando esta
                                                            ca      a      ıda
plataforma, possibilitando a comunica¸ao entre dispositivos m´veis e um servidor disposto
                                       c˜                         o
na rede ou Internet.
     A plataforma Java EE cont´m uma s´rie de especifica¸oes, cada uma com funciona-
                                 e         e                   c˜
lidades distintas, entre elas, utilizamos servlets, utilizados para o desenvolvimento Web
com conte´do dinˆmico e cont´m uma API que simplifica os recursos do servidor Web
            u       a            e
para o programador (HALL, 1998).
     Foi realizado um levantamento de diferentes frameworks Java ME e os que se apresen-
taram mais vi´veis para o desenvolvimento da aplica¸ao foram utilizados.
                a                                       c˜
     Os dados foram padronizados em documentos XML (Extensible Markup Language),
padronizada pela W3C (World Wide Web Consortium), a fim de serem transferidos do
servidor para a aplica¸˜o m´vel.
                       ca    o
     O estudo de caso foi desenvolvido com base na metodologia agil extreme programming
                                                                    ´
- (XP), e diagramas da UML ser˜o apresentados para o melhor entendimento da aplica¸ao.
                                 a                                                     c˜
     Os testes foram realizados em celulares e smartphones com o sistema operacional
Symbian e Windows Mobile com a configura¸ao CLDC 1.1 e perfil MIDP 2.1, por´m a
                                                c˜                                   e
aplica¸˜o poder´ ser executada em outros sistemas operacionais m´veis que possuam uma
       ca         a                                                   o
m´quina virtual Java compat´ com estas caracter´
   a                           ıvel                    ısticas.
Cap´
   ıtulo 2

Sistemas operacionais para
dispositivos m´veis
              o

    A tecnologia da informa¸˜o atinge a maior parte das empresas e institui¸˜es de forma
                             ca                                             co
que fiquem dependentes de sistemas que ajudam ou otimizam o trabalho e a comunica¸ao    c˜
dentro das mesmas. Com a massifica¸ao de computadores e Internet surge um outro
                                        c˜
conceito: Mobilidade. O poder de carregar as informa¸oes para qualquer ambiente ´
                                                           c˜                             e
evidentemente util para empresas que trabalham com base de dados e um fator essencial
                ´
para se destacar no mercado ´ ter acesso as informa¸oes em tempo real.
                               e                     c˜
    Sendo evidente o impacto que solu¸˜es de softwares m´veis tˆm e ter˜o nos pr´ximos
                                       co                   o     e       a       o
anos, ´ de extrema importˆncia conhecer os sistemas operacionais m´veis do mercado
      e                      a                                          o
e quais tipos de aplica¸oes cada um deles suporta. Assim, ´ apresentada uma breve
                         c˜                                     e
an´lise dos principais sistemas operacionais para dispositivos m´veis mais importantes da
  a                                                             o
atualidade.
    Neste cap´
             ıtulo tamb´m s˜o explanados os principais tipos de dispositivos m´veis e suas
                         e a                                                   o
tecnologias, visando uma abordagem completa dos requisitos necess´rios para construir
                                                                      a
aplicativos de sucesso.


2.1     Dispositivos M´veis
                      o
    Primeiramente ´ importante esclarecer que o termo Palm ´ utilizado para PDAs (As-
                   e                                          e
sistente Pessoal Digital) ou Handhelds, que s˜o computadores de m˜o que fornecem as
                                              a                       a
fun¸˜es b´sicas de um computador pessoal, como acesso a Internet, programas de cadas-
    co    a
tros, agenda, controle financeiro, controle de vendas, planilhas, documentos entre outras
aplica¸˜es da categoria (PALMBRASIL, 2009a).
       co
    O smartphone ´ uma categoria de telefone celular com caracter´
                  e                                                ısticas que antes eram
encontradas somente em Palms e PCs (Personal Computers). PoketPC ´ o nome que
                                                                            e

                                            6
2.2. Sistemas Operacionais e suas tecnologias                                           7



a Microsoft usa para a categoria de PDAs, que difere dos smartphones por agregar ca-
racter´
      ısticas como uma tela maior e sens´ a toque, suporte wi-fi, bluetooh, integra¸ao
                                        ıvel                                      c˜
com GPS (Global Positioning System), enfim, tecnologias que o tornam mais robusto
(MICROSOFT, 2009b).


2.2     Sistemas Operacionais e suas tecnologias
   Nesta se¸ao abordaremos as principais caracter´
            c˜                                   ısticas dos sistemas operacionais m´veis
                                                                                    o
mais utilizados no mercado, bem como suas tecnologias.


2.2.1    Symbian
    Come¸aremos ent˜o com o sistema operacional para telefones m´veis que desde 1998
         c            a                                               o
lidera o mercado mundial, o Symbian OS, ou simplesmente Symbian. Ele possui suporte
MMS (Multimedia Messaging Service), bluetooh, wireless, infra-vermelho, entre outras
fun¸˜es que tornam-se extremamente importantes quando o assunto ´ mobilidade. Este
    co                                                                  e
SO possui um sistema gr´fico bem simples e atualmente ´ o sistema mais usado pelos
                           a                                 e
maiores fabricantes de telefones m´veis do mundo, por´m com o surgimento de novas
                                      o                   e
tecnologias e plataformas, vem apresentando queda. Por ser um sistema operacional
que controla muito bem o consumo de mem´ria, o consumo de energia, o processamento,
                                             o
entre outros fatores essenciais, as empresas mais poderosas da telecomunica¸˜o investiram
                                                                            ca
bastante para que este fosse um sistema promissor para o mercado.
    Empresas como Nokia, Samsung, Panasonic, Ericsson e Sony Ericsson, foram as res-
pons´veis pela ascendˆncia desse modelo de sistema operacional m´vel. Segundo a INFO
     a                 e                                            o
(2008), atualmente a Nokia possui a totalidade das a¸˜es da empresa britˆnica de software
                                                     co                   a
(Symbian), liderando o mercado mundial com 38,9% de participa¸ao e promete concorrer
                                                                   c˜
com o mais novo sistema operacional para dispositivos m´veis - Android.
                                                           o
    O Symbian suporta sistemas divididos em m´dulos, desta forma cada empresa pode
                                                   o
criar sua pr´pria interface. Permite o uso de v´rias linguagens de programa¸ao, entre
            o                                      a                            c˜
as mais importantes est˜o: Symbian C/C++, Java ME, FlashLite, Perl, Python, Ruby,
                         a
entre outras. Assim se o aparelho n˜o possui certa funcionalidade, fica f´cil de integrar a
                                      a                                   a
mesma (SYMBIANBRASIL, 2009).


2.2.2    Android
    O Android ´ um sistema operacional baseado em Linux voltado para smartphones,
               e
criado pela Google em cons´rcio com mais de 40 empresas. Utiliza uma m´quina virtual
                           o                                          a
que foi projetada para otimizar a mem´ria e os recursos de hardware em um ambiente
                                     o
2.2. Sistemas Operacionais e suas tecnologias                                             8



  o     ´
m´vel. E a primeira plataforma open source para desenvolvimento de aplica¸˜es m´veis,
                                                                              co     o
portanto ´ livre para incorporar novas tecnologias. Por ser um SO mais novo no mercado
          e
est´ em aceita¸˜o, positiva por sinal, pelos usu´rios e desenvolvedores, pois agrega todas
   a           ca                                a
                                                                    ´
as funcionalidades que os aparelhos m´veis mais atuais fornecem. E importante ressaltar
                                        o
que os servi¸os da Google passam a ser facilmente acoplados com as tecnologias m´veis
            c                                                                         o
ap´s o surgimento do Android, j´ que o interesse e os investimentos atuais da empresa
   o                               a
visam a mobilidade.
    Entre os servi¸os oferecidos est˜o: Cliente de e-mail, programa para SMS (Short Mes-
                  c                 a
sage Service), calend´rio, mapas, navegador e gerenciador de contatos. Tudo constru´
                      a                                                                 ıdo
em Java, desta forma os desenvolvedores Java podem construir aplicativos e disponibiliz´- a
los. Os desenvolvedores tem acesso a mesma API utilizada nos aplicativos centrais, po-
dendo aproveit´-las livremente.
                a
    Al´m dos aplicativos feitos em Java, o Android possui um conjunto de bibliotecas
      e
C/C++ usadas por diversos componentes que permitem trabalhar com arquivos de m´        ıdia,
exibi¸ao de conte´do em 2D e 3D, inclusive bibliotecas implementadas utilizando OpenGL
     c˜           u
(Open Graphics Library) e um poderoso banco de dados relacional, o SQLite (Developers,
2009).


2.2.3    Windows Mobile
    Windows Mobile ´ um sistema operacional para dispositivos m´veis, projetado para
                     e                                              o
realizar boa parte das fun¸˜es existentes no Windows para PC. Ele pode ser instalado
                           co
em PDAs, PocketPC, smartphones e aparelhos de multim´     ıdia em geral. (MICROSOFT,
2009b).
    Possui uma interface intuitiva, ´ seguro, permite acesso a Internet, inclusive envio e
                                    e
recebimento de e-mails, possui conectividade bluetooth e wi-fi, al´m de vers˜es m´veis
                                                                   e           o     o
dos aplicativos da Microsoft Office, como: Word, Excel e Power Point. O SO suporta
aplicativos desenvolvidos em linguagens como C, C#, VB.Net, Java ME, Visual Basic,
Python, FlashLite, entre outras, al´m de possuir um interpretador para PHP (MICRO-
                                    e
SOFT, 2009a).


2.2.4    Palm OS
   Palm OS ´ um sistema operacional desenvolvido pela PalmSource para rodar em PDAs.
             e
Entre as vers˜es da linha temos: O Palm OS Garnet e, o atualmente mais usado, Palm
              o
OS Cobalt.
   No Palm OS Cobalt o sistema roda em 32 bits, possibilitando que os aplicativos fiquem
muito mais r´pidos e com recursos extras. No Palm OS Garnet (5.x) apenas algumas
             a
partes dos aplicativos s˜o em 32 bits, j´ que maior parte simula processadores antigos da
                        a               a
2.2. Sistemas Operacionais e suas tecnologias                                            9



Motorola. A desvantagem ´ que as aplica¸oes criadas utilizando os novos recursos n˜o
                            e              c˜                                       a
ir˜o funcionar em equipamentos com vers˜es anteriores do sistema.
  a                                      o
    As linguagens mais utilizadas para o desenvolvimento de aplica¸oes no Palm OS ´
                                                                    c˜                e
o Pascal e o C/C++. Vale ressaltar que a ultima possui uma grande quantidade de
                                               ´
frameworks e ´ mais usada no desenvolvimento de jogos. Importante dizer que existem
               e
aplicativos que convertem aplica¸˜es em Java para que possam ser utilizadas em Palm
                                 co
OS, uma otima sa´ para escapar do padr˜o de desenvolvimento em palms. Existem
           ´       ıda                       a
ainda outras linguagens para Palm OS, mas que n˜o possuem tantos recursos, tais como:
                                                 a
Satellite Forms, Codewarrior, AppForge, NSBasic, CASL e PDAToolBox.
    Existem ferramentas RAD (Rapid Application Development) muito bem documenta-
das para auxiliar no desenvolvimento em Palm OS, ´ o caso da Handheld Basic (HB++),
                                                   e
que ´ muito bem aceita pela comunidade de desenvolvedores . O PocketStudio ´ outra
     e                                                                         e
ferramenta de desenvolvimento do tipo RAD, semelhante ao Delphi, que ajuda muitos
desenvolvedores a construir aplica¸oes com maior facilidade para o Palm OS. Atualmente
                                  c˜
essas s˜o as mais usadas no desenvolvimento de aplica¸˜es comerciais para palms.
       a                                               co
    Ap´s a PalmSource ser comprada pela Access as pr´ximas vers˜es devem ser baseadas
       o                                               o          o
no sistema operacional Linux. Atualmente os dispositivos palms est˜o sendo comerciali-
                                                                    a
zados tamb´m com Windows Mobile justamente pelas restri¸˜es para o desenvolvimento
             e                                              co
no sistema operacional Palm OS (PALMBRASIL, 2009b).


2.2.5    BlackBerry OS
    O BlackBerry OS ´ o sistema operacional para smartphones BlackBerry da empresa
                       e
Canadense RIM (Research in Motion). O SO possui como ponto sobressalente a sua
consagrada ferramenta de sincroniza¸ao de e-mails. Assim que o servidor recebe o e-mail
                                      c˜
este ´ enviado para o dispositivo. Inicialmente deixava a desejar no quesito design, por´m
     e                                                                                  e
passa por constantes aprimoramentos neste quesito e em outros recursos. Suas vers˜es    o
mais atuais apresentam recursos como menus recolh´  ıveis, navega¸ao por fotos, gerenciador
                                                                 c˜
de arquivos dedicado e oferece suporte para aplicativos desenvolvidos em Java ME (RIM,
2009).
    ´
    E o terceiro sistema operacional para dispositivos m´veis mais vendido do mundo e o
                                                         o
segundo dos Estados Unidos. Teve um crescimento muito r´pido, chegando a ser o mais
                                                              a
vendido nos Estados Unidos no primeiro trimestre de 2009 (ADMOB, 2009).


2.2.6    Iphone OS
   O Iphone OS ´ o sistema operacional propriet´rio do Iphone, desenvolvido pela Apple.
               e                               a
Atualmente conhecido como Mac OS X Snow Leopard, semelhante ao sistema OS X que
roda nos computadores Macintosh. Este SO introduziu diversas tecnologias de primeira
2.3. An´lise do Mercado
       a                                                                              10



linha com uso de 64 bits, proporcionando a mais r´pida implementa¸˜o de javascript e
                                                      a               ca
acesso a Web, chegando a ser 53 vezes mais r´pido quando usa o mini navegador Safari.
                                                a
Outra poderosa tecnologia implementada ´ o OpenCL(Open Computing Language) que
                                            e
possibilita aos desenvolvedores maior otimiza¸ao em aplica¸˜es que usam recursos gr´fi-
                                                c˜          co                       a
cos. Possui uma tecnologia de multicondutores que agiliza a distribui¸˜o de tarefas em
                                                                        ca
multiplos processadores (APPLE, 2009a).
    Em compara¸˜o ao Android por exemplo, ´ not´vel que o sistema operacional do
                 ca                                e    a
Iphone ´ muito superior em qualidade e eficiˆncia, ainda mais se compararmos o acesso a
         e                                    e
Web, pois o Iphone j´ conquista e domina o mercado e n˜o deixa a desejar em nenhum
                       a                                  a
aspecto, com exce¸ao do custo. A linguagem de desenvolvimento para o iPhone ´ o
                    c˜                                                               e
Objective-C, que ´ muito utilizada na plataforma MAC. Ela ´ orientada a objetos e
                   e                                             e
difere do C no acr´scimo de transmiss˜o de mensagens, ao estilo da linguagem Smalltalk.
                   e                  a
Tamb´m existem iniciativas Open Source para converter c´digos em Python para C ou
       e                                                    o
tamb´m de Java para Objective-C.
      e
    Para desenvolver aplicativos para o Iphone OS ´ necess´rio utilizar o Cocoa, um con-
                                                     e     a
junto de frameworks orientado a objetos que disponibiliza um ambiente de execu¸ao para
                                                                                 c˜
as aplica¸oes serem executadas em MAC OSX e Iphone OS. E ´
           c˜                                                 ´ o unico ambiente de apli-
ca¸ao para Iphone OS. As aplica¸˜es existentes no MAC OSX e no Iphone OS s˜o Cocoa,
   c˜                            co                                            a
portanto para desenvolver aplica¸oes Java para o sistema operacional do Iphone ´ neces-
                                 c˜                                               e
s´rio usar ferramentas que convertem o c´digo Java para a implementa¸ao da biblioteca
 a                                        o                              c˜
Cocoa. Tamb´m existem frameworks para converter Python, Ruby, Perl, C# e Objective-
              e
Basic em Objective-C, utilizando o Cocoa (APPLE, 2009b).


2.3     An´lise do Mercado
          a

   As plataformas da Apple, Google e Palm s˜o, hoje, as que mais se destacam no mer-
                                               a
cado mundial. Segundo JONES (2009), analista de mobilidade e tecnologias sem fio do
Gatener, a Microsoft est´ lutando para sobreviver no celular, pois se voltou demais para
                        a
o mercado corporativo e deixou de lado o mercado dom´stico, ficando fraca diante do
                                                          e
iPhone, Symbian e Android.
   Apenas trˆs plataformas devem sobreviver, mas ´ dif´ dizer hoje exatamente quais
             e                                      e ıcil
       ´
s˜o. ”E uma batalha de ecossistemas que dependem de fatores como recursos do equi-
 a
pamento, estilo, pre¸o e oferta de aplicativos e n˜o s´ da plataforma em si.” (JONES,
                    c                             a o
2009).
Cap´
   ıtulo 3

Java Micro Edition

   Neste cap´
            ıtulo s˜o apresentadas as caracter´
                   a                          ısticas da plataforma Java Micro Edition
(Java ME), bem como suas tecnologias e arquitetura.


3.1     Vis˜o geral
           a
Segundo a SUN (2009b), o Java ME ´ uma cole¸˜o de tecnologias e especifica¸oes que criam
                                   e         ca                              c˜
uma plataforma que se ajusta aos requisitos de dispositivos m´veis tais como produtos de
                                                               o
consumo, dispositivos embarcados e dispositivos m´veis avan¸ados.
                                                   o          c
    O Java ME ´ a plataforma Java voltada para dispositivos que possuam capacidade de
                e
mem´ria, tela e processamento restritos. Foi constru´ com o objetivo de fornecer um
     o                                               ıda
ambiente de execu¸˜o Java capaz de lidar com as caracter´
                   ca                                     ısticas particulares de pequenos
dispositivos.
    Para utilizar a mesma plataforma em dispositivos diferentes o Java ME foi baseado
em trˆs elementos, especificados pela comunidade JCP, que define todos requisitos da
      e
plataforma Java, incluindo a especifica¸˜o de APIs. Os trˆs elementos citados s˜o: Con-
                                      ca                   e                      a
figura¸oes, perfis e pacotes opcionais, os quais funcionam sobre uma m´quina virtual
      c˜                                                                    a
Java, por sua vez ligada a um sistema operacional. Dessa forma podemos representar a
hierarquia dos elementos nas camadas apresentadas na Figura 3.1.




                                           11
3.1. Vis˜o geral
        a                                                                             12




                    Figura 3.1: Elementos da plataforma Java ME.


   Na camada de configura¸ao s˜o definidas as bibliotecas necess´rias para o funciona-
                           c˜ a                                a
mento da m´quina virtual. A JCP especificou o Java ME em duas configura¸oes de acordo
           a                                                          c˜
com as necessidades dos dispositivos: CLDC (Connected, Limited Device Configuration)
e CDC (Connected Device Configuration), de forma que:

   • CLDC especifica o ambiente Java para dispositivos com capacidades mais restritas,
     como telefones celulares, PDAs e smartphones.

   • CDC ´ destinada a dispositivos com maior capacidade de mem´ria e processamento,
          e                                                     o
     como TV digital, dispositivos sem fio de alto n´ e sistemas automotivos.
                                                   ıvel

    Dentro da configura¸ao existe uma outra classifica¸˜o, os perfis. Estes formam um
                        c˜                              ca
conjunto de aplica¸oes que complementa uma configura¸ao e fornece funcionalidades para
                   c˜                                   c˜
desenvolver um aplicativo para determinado dispositivo.
    O perfil associado a CLDC ´ o MIDP (Mobile Information Device Profile). E os asso-
                                e
ciados a CDC s˜o: FP (Foundation Profile), PP (Personal Profile), PBP (Personal Basis
                a
Profile), RMIP (Remote Method Invocation Profile) e GP (Game Profile) (JOHNSON,
2007).
    Os principais pacotes opcionais est˜o inseridos em um conjunto de APIs utilizadas com
                                       a
as configura¸oes e perfis para estender funcionalidades n˜o encontradas nos respectivos
             c˜                                            a
pacotes, como APIs para bluetooh e wireless.
    Quanto a m´quina virtual, a JCP especifica a CDC HotSpot Implementaion e a CLDC
                a
HotSpot Implementation, que substitu´    ıram respectivamente a CVM (Compact Virtual
Machine), vinculada a configura¸˜o CDC e a KVM (Kilo Virtual Machine), vinculada a
                                  ca
CLDC. A Figura 3.2 mostra a arquitetura da plataforma Java.
3.2. Configura¸oes
             c˜                                                                           13




                       Figura 3.2: Arquitetura da plataforma Java.


3.2      Configura¸oes
                 c˜
    A configura¸˜o define uma especifica¸ao padr˜o para uma mesma classe de dispositivos,
                 ca                        c˜      a
definidos por caracter´  ısticas individuais de hardware, como interface, processamento, me-
m´ria, v´
  o      ıdeo, tipo de conex˜o de rede, entre outras (TOPLEY, 2002). Esta camada possui
                              a
as bibliotecas b´sicas da linguagem, representando a plataforma m´
                  a                                                     ınima de desenvolvi-
mento para cada tipo de dispositivo. Tais configura¸oes s˜o definidas pelos fabricantes a
                                                       c˜     a
fim de proporcionar um ambiente de desenvolvimento para funcionar em um determinado
dispositivo.
    Cada configura¸ao consiste de uma m´quina virtual Java (Java Virtual Machine -
                     c˜                       a
JVM), seja da Sun, do pr´prio fabricante, ou de terceiros e de uma cole¸ao de classes
                              o                                                c˜
Java. Devido as restri¸oes de hardware dos dispositivos m´veis, as m´quinas virtuais
                          c˜                                     o           a
utilizadas na plataforma Java ME n˜o suportam todas as caracter´
                                        a                               ısticas da linguagem
Java, instru¸oes bytecodes e softwares de otimiza¸ao providenciados pela plataforma Java
             c˜                                     c˜
SE n˜o s˜o suportados, sendo assim diferentes das demais JVMs (TOPLEY, 2002).
      a a
    A JCP especificou duas configura¸oes para Java ME, CLDC e CDC. Dentre elas abor-
                                        c˜
daremos a configura¸ao CLDC, visto que esta aborda celulares e smartphones, cujo ´ o
                      c˜                                                                  e
objetivo deste trabalho.
    A Connected, Limited Device Configuration - CLDC ´ a configura¸˜o m´
                                                            e            ca     ınima do Java
ME, formada por um subconjunto de pacotes dispon´      ıveis na plataforma Java para desktop
3.2. Configura¸oes
             c˜                                                                         14



e abrange os dispositivos com grandes restri¸˜es de processamento, mem´ria e v´
                                             co                         o      ıdeo, como
celulares, smartphones, pagers e PDAs.
    Os dispositivos desta configura¸ao tˆm pelo menos 16 ou 32 bits, 160k de mem´ria
                                     c˜ e                                             o
n˜o vol´til (onde s˜o armazenadas as bibliotecas e a m´quina virtual), fonte limitada de
 a      a           a                                     a
energia e pelo menos 16 Mhz de velocidade. Al´m disso ´ necess´rio 192k de mem´ria
                                                   e        e       a                 o
para a plataforma Java e suportar conex˜o com rede sem fio, por´m com capacidade de
                                           a                       e
transmiss˜o limitada (JOHNSON, 2007).
          a
    A CLDC est´ dispon´ nas vers˜es 1.0 (JSR 30) e 1.1 (JSR 139) (SUN, 2006e). A
                 a         ıvel        o
principal caracter´ıstica da vers˜o 1.0 ´ a ausˆncia de opera¸oes que use ponto flutuante,
                                 a      e      e             c˜
por´m j´ existem classes que simulam esta propriedade para dada configura¸˜o (CLAU-
    e a                                                                      ca
SEN, 2003).
    Segundo a SUN (2007), as classes desta configura¸˜o est˜o restritas a apenas quatro
                                                        ca    a
pacotes:

   • java.io - Tratamento de entrada e sa´ de dados usando streams (abstra¸ao).
                                         ıda                              c˜

   • java.lang - Classes b´sicas da linguagem Java.
                          a

   • java.util - Classes de utilidades gen´ricas (estruturas de dados e manipula¸ao de
                                          e                                     c˜
     dados).

   • java.microedition.io - Exclusivamente da plataforma Java ME, incluindo as classes
     de conex˜o.
             a

   A CLDC 1.1 ´ uma configura¸˜o que engloba os pacotes da vers˜o 1.0 e suporta as
                  e         ca                                a
seguintes caracter´
                  ısticas:

   • Ponto flutuante - Possibilita opera¸oes com vari´veis do tipo float/double.
                                       c˜           a

   • ClassLoading - Classe abstrata respons´vel por carregar outras classes.
                                           a

   • Garbage Collector - Coletor de lixo dos objetos.

   • Finalize() - Com esse m´todo ´ poss´ liberar recursos e executar outras opera¸˜es
                             e     e     ıvel                                         co
     de limpeza antes que o objeto seja recuperado por coleta de lixo (garbage collector ).

   • JNI (Java Native Interface) - Classe de interface nativa que possibilita a m´quina
                                                                                 a
     virtual acessar bibliotecas acessadas com o c´digo nativo de um sistema.
                                                  o

   • ThreadGroups - Possibilita que os processos sejam executados simultaneamente,
     possibilitando a organiza¸ao das threads em grupos. A multiThreading suporta
                              c˜
     m´ltiplas linhas de execu¸ao atrav´s das fun¸oes start(), interrupt(), pause(), re-
       u                      c˜        e         c˜
     sume() e stop() para o controle das threads.
3.3. Perfis                                                                                  15



   • RMI (Remote Method Invocation) - Permite o acesso a objetos remotos que podem
     ser invocados de diferentes m´quinas Java.
                                  a


3.3      Perfis
    Perfil ´ definido como um conjunto de APIs que especificam o n´ de interface de
           e                                                                ıvel
aplica¸˜es para um classe de dispositivos (JCP, 2009c). Assim um perfil pode especificar
       co
v´rios tipos de servi¸os e funcionalidades de alto n´
  a                  c                                 ıvel, como o ciclo de vida da aplica¸ao,
                                                                                           c˜
elementos de interface gr´fica, persistˆncia de dados e meios de comunica¸˜o. Um perfil ´
                           a            e                                       ca            e
implementado no topo de uma configura¸ao, sendo assim intimamente ligado a esta, po-
                                            c˜
r´m compreende bibliotecas mais espec´
 e                                        ıficas que as disponibilizadas pelas configura¸oes,
                                                                                          c˜
ou seja, o perfil complementa a configura¸ao adicionando classes que fornecem caracte-
                                             c˜
r´
 ısticas apropriadas para um tipo particular de dispositivos. Tanto os perfis quanto as
configura¸oes s˜o especifica¸˜es de baixo n´
          c˜    a             co              ıvel.
    As aplica¸oes m´veis s˜o portanto constru´
              c˜     o       a                     ıdas sobre configura¸˜es e perfis e podem
                                                                         co
apenas usar bibliotecas especificadas por estas. Uma configura¸ao pode conter v´rios
                                                                       c˜                 a
perfis, por´m um perfil ´ ligado somente a uma configura¸ao. E um perfil ainda pode ter
           e             e                                     c˜
outros perfis ligados a ele (TOPLEY, 2002).
    Para a configura¸˜o CLDC temos o perfil MIDP (Mobile Information Device Profile
                     ca
- JSR 37 ), que ´ amplamente utilizado e providencia o desenvolvimento para pequenos
                  e
dispositivos, de recursos limitados e com capacidade de conex˜o sem fio, como os celulares,
                                                                  a
smartphones e alguns PDAs. No pr´ximo cap´
                                      o          ıtulo ser˜o abordados mais detalhes sobre o
                                                           a
perfil MIDP.


3.4      M´quinas Virtuais
          a
   A Sun especifica duas m´quinas virtuais para a configura¸ao CLDC: KVM e CLDC
                         a                               c˜
HotSpot Implementation.

   • KVM
     ´
     E uma m´quina virtual com fun¸oes reduzidas, com uma pequena mem´ria e com
              a                      c˜                                     o
     um coletor de lixo (garbage collector ) incorporado para a otimiza¸ao da mem´ria
                                                                       c˜        o
     (TOPLEY, 2002). Esta ´ uma VM (Virtual Machine) especificada pela SUN, que
                             e
     implementa as necessidades e restri¸oes impostas pela configura¸˜o CLDC. O K do
                                        c˜                          ca
     termo KVM surgiu para fazer alus˜o aos poucos kilobytes necess´rios para que a
                                        a                              a
     VM execute uma aplica¸ao. Ela n˜o compila o c´digo e sim o interpreta para o
                             c˜          a              o
     sistema operacional.
3.5. Pacotes Opcionais                                                                  16



   • CLDC HotSpot Implementation
     ´
     E uma VM de alto desempenho e robustez da SUN, para celulares e dispositivos
     de caracter´ısticas restritas. Foi implementada para ter um desempenho melhor
     que a KVM, utilizando a mesma quantidade de mem´ria restrita que os pequenos
                                                             o
     dispositivos oferecem. Esta m´quina virtual suporta CLDC 1.0 e 1.1, por´m agora
                                     a                                          e
     exige do processador pelo menos 32 bits com uma velocidade de clock de 60 MHz,
     600KB de mem´ria RAM e 2 MB de mem´ria flash e ROM. Aplica tecnologias
                      o                             o
     utilizadas na plataforma Java SE e Java EE, incorpora diversos designs inovadores,
     diminui o tempo de in´    ıcio das aplica¸oes, oferece vida longa a bateria e possui
                                              c˜
     compila¸˜o dinˆmica das instru¸oes de bytecode em instru¸oes nativas, chamada de
             ca      a                 c˜                        c˜
     compila¸˜o Just-in-time (SUN, 2008a).
             ca
      Segundo LUZ (2009), a compila¸˜o Just-in-time ´ uma das mudan¸as mais impor-
                                     ca               e                c
      tantes, pois a compila¸˜o dinˆmica pode ser cinquenta vezes mais r´pida que uma
                            ca     a                                    a
      instru¸ao interpretada.
            c˜


3.5     Pacotes Opcionais
    Pacotes opcionais s˜o componentes muito importantes da plataforma Java ME. Po-
                        a
demos enxergar como extens˜es de perfis, al´m de oferecerem apoio em ´reas com fun-
                               o                 e                           a
cionalidades restritas que alguns dispositivos e aplica¸oes precisam, tais como troca de
                                                          c˜
mensagens, multim´  ıdia, servi¸os e localiza¸ao geogr´fica.
                               c              c˜       a
    Os perfis podem concentrar-se em apoiar apenas as capacidades que a maioria ou
todos os dispositivos em uma classe necessitam, enquanto pacotes opcionais fornecem
tipos espec´
           ıficos de funcionalidades. Todos os pacotes opcionais do Java ME s˜o definidos
                                                                                a
pela JCP, estes pacotes tamb´m s˜o chamados de APIs. Podendo ser obrigat´rios ou
                                 e    a                                            o
n˜o, tal decis˜o cabe aos desenvolvedores ou fabricantes inclu´
  a           a                                                    ı-los em um determinado
produto.
    Os pacotes opcionais passam por um processo de aprova¸ao atrav´s da MSA (Mobile
                                                                c˜        e
Service Architecture) ap´s serem constru´
                          o                 ıdos pelos desenvolvedores. Depois de aprovados
s˜o disponibilizados seguindo as especifica¸oes da JCP. Alguns exemplos de pacotes opcio-
 a                                           c˜
nais s˜o: API para suporte bluetooth (JSR 82), API para acesso as funcionalidades nativas
      a
do aparelho como agenda, calend´rio e acesso a arquivos (JSR 75 - File Connection API ),
                                   a
API de seguran¸a e servi¸os confi´veis (JSR 177), entre outras (SUN, 2009a).
                c          c        a
Cap´
   ıtulo 4

Perfil MIDP

    Neste cap´ıtulo s˜o apresentadas as caracter´
                     a                          ısticas do perfil MIDP, bem como o fun-
cionamento de uma aplica¸ao. Ser˜o apresentados os principais conceitos relacionados `
                           c˜      a                                                 a
interface e armazenamento persistente.


4.1     Vis˜o Geral do MIDP
           a
    O MIDP - Mobile Information Device Profile ´ um perfil suportado pela configura¸˜o
                                                   e                                 ca
CDLC, onde juntos providenciam um ambiente padr˜o de execu¸ao Java para os mais
                                                       a           c˜
populares dispositivos m´veis, como os celulares e PDAs. Este perfil provˆ um conjunto de
                         o                                               e
bibliotecas e classes que fornecem suporte ao desenvolvimento de aplica¸˜es que referem-
                                                                         co
se a diferentes aspectos, como sistema de armazenamento persistente, interface com o
usu´rio, transa¸oes seguras, gerˆncia de sons, entre outros.
    a           c˜               e
    De acordo com JOHNSON (2007), o MIDP apresenta diversas funcionalidades, entre
elas est˜o a reprodu¸ao de multim´
        a             c˜            ıdia, suporte a protocolos dos tipos HTTP e sockets,
suporte ao sistema de cores RGB, defini¸˜o de formul´rios e itens, APIs para jogos e
                                           ca            a
valida¸ao de permiss˜es de seguran¸a e assinaturas digitais.
      c˜              o             c
    Segundo a SUN (2006e), os recursos m´   ınimos de hardware do perfil MIDP s˜o:
                                                                               a

   • 130KB de mem´ria n˜o vol´til para persistˆncia de dados e bibliotecas da CLDC
                 o     a     a                e

   • 32KB de mem´ria vol´til para a execu¸˜o do Java
                o       a                ca

   • Conectividade com algum tipo de rede sem fio

   • Interface gr´fica
                 a

   • Uma tela de pelo menos 96 pixels de largura por 54 de altura


                                          17
4.1. Vis˜o Geral do MIDP
        a                                                                              18



    Alguns recursos m´   ınimos de software tamb´m s˜o requeridos, tais como: possuir re-
                                                e   a
cursos suficientes para executar a m´quina virtual Java, tratamento de exce¸oes, pro-
                                        a                                       c˜
cessamento de interrup¸˜es, acesso de leitura e escrita ` rede sem fio, mecanismos para
                           co                            a
capturar a entrada de dispositivos de entrada, recursos para ler e gravar em mem´ria n˜o
                                                                                  o     a
vol´til, oferecendo suporte persistente aos dados e escrita de elementos gr´ficos na tela
   a                                                                        a
(JOHNSON, 2007).
    As especifica¸˜es deste perfil s˜o definidas pela JCP, definindo uma plataforma para
                  co                 a
desenvolvimento seguro e dinˆmico. Atualmente o MIDP possui as vers˜es 1.0 (JSR
                                 a                                           o
37), 2.0 (JSR 118), 2.1 (JSR 118) e 3.0 (JSR 271). Por´m esta ultima ainda n˜o est´
                                                           e        ´              a     a
dispon´ ıvel para utiliza¸ao. A vers˜o 1.0 trabalha integrada com a configura¸˜o CLDC
                          c˜          a                                        ca
1.0 ou 1.1. N˜o tem nenhuma API ativa para renderiza¸˜o, n˜o oferece suporte para
                a                                           ca    a
acesso direto aos pixels de imagens, n˜o tem suporte para full screen/full canvas sem
                                          a
uma API propriet´ria e tamb´m n˜o possui suporte direto para audio. Inclui APIs para
                    a           e     a                           ´
o ciclo de vida de aplica¸˜es, conectividade de redes HTTP, interface com o usu´rio e
                             co                                                      a
armazenamento persistente. O unico protocolo de rede que o MIDP 1.0 suporta ´ o
                                    ´                                                  e
HTTP (SUN, 2002).
    Segundo a SUN (2006c), os pacotes suportados pela vers˜o 1.0 s˜o:
                                                              a       a
   • javax.microedition.io - Fornece suporte ao framework GenericConnection da confi-
     gura¸ao CLDC.
         c˜

   • javax.microedition.lcdui - API que providencia um conjunto de caracter´
                                                                           ısticas para
     a implementa¸˜o de interfaces com o usu´rio.
                  ca                          a

   • javax.microedition.rms - Providencia um mecanismo de persistˆncia de dados para
                                                                 e
     MIDlets.

   • javax.microedition.midlet - O pacote MIDlet define aplica¸oes MIDP e intera¸oes
                                                                c˜             c˜
     entre as aplica¸˜es e o ambiente no qual a aplica¸ao ´ executada.
                    co                                c˜ e
    A vers˜o 2.0 ´ compat´ com a vers˜o 1.0 e adiciona novas melhorias como suporte
           a     e        ıvel           a
a conex˜o segura (HTTPS), biblioteca de multim´
`        a                                        ıdia, formul´rio de entrada de dados
                                                              a
aprimorada, sens´ melhoria na API de suporte a games, conceito de aplica¸˜es confi´veis
                 ıvel                                                     co       a
(trusted ) e n˜o confi´veis (untrusted ). Al´m de HTTPS, o MIDP 2.0 suporta HTTP,
              a        a                   e
datagramas, sockets e SMS (Short Message Service). Quanto a multim´   ıdia, um conjunto
de APIs foram introduzidas, que s˜o na verdade um subconjunto da Mobile Media API
                                   a
(MMAPI). Com estas APIs podem ser gerados simples toques, sequˆncias mais completas
                                                                  e
ou at´ mesmo m´sicas completas no formato WAV, al´m de poderem ser implementados
      e          u                                   e
em outros formatos.
    Dentre as mudan¸as nos formul´rios de entrada destacam-se a nova aparˆncia do Form
                      c           a                                       e
que ´ consideravelmente mais sofisticada do que era no MIDP 1.0 e a classe Item, onde
     e
4.1. Vis˜o Geral do MIDP
        a                                                                             19



agora podem ser especificados layouts horizontais, verticais, novas linhas antes ou depois
de itens, entre outros. Um novo item tamb´m foi criado, o Spacer, que serve pra colocar
                                           e
espa¸amentos entre os demais itens dispon´
     c                                   ıveis. Tamb´m foi introduzido o tipo pop up ao
                                                     e
item choiceGroup, que ser´ estudado a frente.
                           a         `
    No MIDP 2.0 tamb´m foram estendidos os comandos de manuseio. Adicionar co-
                        e
mandos aos itens agora ´ permitido. Tamb´m foi introduzida a classe CustomItem, que
                         e                  e
permite ao programador criar seus pr´prios itens. Nesta vers˜o o suporte a jogos ganha
                                     o                        a
uma melhoria com o suporte a camadas na tela. Uma camada pode conter um fundo, ou-
tra mostrar objetos, uma terceira camada poderia mostrar esfeitos especias ou qualquer
outra coisa. Outra mudan¸a ´ o surgimento da classe GameCanvas, uma subclasse de
                             c e
Canvas - classe de baixo n´ que proporciona o desenvolvimento de jogos. Nesta vers˜o
                           ıvel                                                       a
as imagens podem ser representadas em arrays de inteiros e tamb´m suporta imagens em
                                                                 e
RGB (SUN, 2002).
    Segundo a SUN (2006d), os pacotes que foram adicionados a esta vers˜o s˜o:
                                                                          a a

   • javax.microedition.lcdui.game - Providencia classes para o desenvolvimento de con-
     te´do rico para jogos em dispositivos wireless.
       u

   • javax.microedition.media - Compat´ com as especifica¸oes da API Mobile Media
                                      ıvel              c˜
     (JSR 135).

   • javax.microedition.media.control - Define o tipo espec´
                                                          ıfico, control, que pode ser
     usado como um player.

   • javax.microedition.pki - Autentica informa¸˜es para conex˜es seguras, atrav´s de
                                               co             o                 e
     certificados.

    A vers˜o 2.1 do MIDP refor¸a a especifica¸˜o MIDP 2.0 tornando a diretiva layout LC-
          a                    c            ca
DUI obrigat´ria, os pacotes javax.microedition.io.SocketConnection e javax.microedition-
             o
.io.HTTPConnection n˜o s˜o mais opcionais, entre outros requisitos para aprimorar a
                       a a
vers˜o 2.0.
    a
    A vers˜o 3.0 traz melhor suporte para dispositivos com telas maiores, suporte a MI-
          a
Dlets para desenhar em telas secund´rias, armazenamento RMS seguro e acesso remoto a
                                    a
bancos RMS (JCP, 2009a). Esta vers˜o requer no m´
                                     a               ınimo 1MB de mem´ria vol´til e tela
                                                                        o      a
de pelo menos 176x220 pixels. Ela ´ compat´ com o CLDC 1.0, mas o recomendado ´
                                   e        ıvel                                       e
o 1.1 e possui compatibilidade com as outras vers˜es do MIDP. No MIDP 3.0 a tela de
                                                   o
splash pode ser carregada sem a necessidade de ser criada uma classe em canvas com uma
imagem e tempo controlado manualmente. Isto pode ser feito atrav´s de um atributo no
                                                                    e
arquivo JAD, um arquivo de descri¸ao da aplica¸ao, que ser´ explicado posteriormente.
                                    c˜           c˜          a
Os protetores de tela agora s˜o aplica¸˜es que s˜o destru´
                              a        co         a        ıdas pelo gerenciador quando
4.2. MIDlets                                                                          20



alguma tecla ´ pressionada ou algum evento ´ disparado. Al´m destas funcionalidades,
             e                              e                e
o MIDP 3.0 apresenta suporte a IP vers˜o 6, o que possibilita fazer parse de um ende-
                                       a
re¸o IPv6 e a possibilidade de compartilhar bibliotecas entre os MIDlets em tempo de
  c
execu¸˜o, conhecido como LIBlets (LUZ, 2009).
      ca


4.2     MIDlets
    ´
    E uma aplica¸ao Java destinada para dispositivos m´veis desenvolvida com a utiliza¸ao
                 c˜                                    o                              c˜
do perfil MIDP, que est´ vinculado a configura¸˜o CLDC (MUCHOW, 2001).
                        a                       ca
    Todo dispositivo m´vel tem um gerenciador de aplicativos (AM - Application Mana-
                       o
ger ) que controla os aplicativos a serem instalados, onde e como ser˜o armazenados e
                                                                       a
como ser˜o executados. A comunica¸ao do gerenciador com o MIDlet acontece pela classe
          a                          c˜
MIDlet do pacote javax.microedition.midlet.MIDlet. Os MIDlets devem herdar esta classe
MIDlet que cont´m m´todos que inicializam, resumem, interrompem a execu¸˜o e des-
                  e    e                                                      ca
troem MIDlets.
    Uma aplica¸ao ´ iniciada quando o AM invoca o m´todo startApp(), colocando a
                c˜ e                                     e
aplica¸˜o no modo ativo. Enquanto estiver executando ela pode ser pausada pela AM
       ca
atrav´s do m´todo pauseApp(), isto pode ocorrer quando uma chamada for recebida por
      e       e
exemplo ou o pr´prio usu´rio pode pausar a aplica¸ao. E quando a aplica¸ao ´ encerrada
                 o        a                         c˜                   c˜ e
ela passa para o estado destru´ ıdo, atrav´s do m´todo destroyApp(), que limpa todos os
                                          e       e
recursos para fechar a aplica¸˜o (JOHNSON, 2007).
                             ca
    O ciclo de vida do MIDlet ´ apresentado na Figura 4.1.
                               e




                          Figura 4.1: Ciclo de vida do MIDlet.


    Estes trˆs m´todos, segundo MUCHOW (2001), trata-se da comunica¸˜o que parte
             e  e                                                        ca
do gerenciador de aplicativos para o MIDlet. Al´m destes m´todos, tamb´m existem
                                                e             e             e
outros trˆs onde a comunica¸ao parte do MIDlet para o gerenciador de aplicativos. Estes
         e                  c˜
m´todos s˜o:
  e        a
4.3. MIDlets Suite                                                                    21



   notifyDestroy(): Avisa ao gerenciador que pode desligar a MIDlet.
   notifyPaused(): Envia o pedido de pausa para o gerenciador caso a MIDlet queira
pausar.
   resumeRequest(): Avisa ao gerenciador que a MIDlet pode tornar-se ativa novamente.


4.3     MIDlets Suite
    MIDlet Suite consiste em um ou mais MIDlets que s˜o juntados em um Java Ar-
                                                           a
chive (JAR). E´ composto por classes Java, recursos e um arquivo de manifesto, que est˜o
                                                                                      a
situados dentro do arquivo JAR e um arquivo de descri¸ao, chamado Java Application
                                                         c˜
Descriptor (JAD). Dentre os recursos est˜o imagens, dados da aplica¸˜o, entre outros.
                                          a                           ca
No arquivo de manifesto, cuja extens˜o ´ .mf, est´ a descri¸ao do JAR. E o arquivo JAD
                                     a e         a         c˜
descreve os detalhes da aplica¸˜o, repetindo muitos do dados que est˜o no arquivo de
                              ca                                      a
manifesto, por´m este arquivo est´ fora do JAR e pode ser acessado antes de se insta-
               e                  a
lar o arquivo JAR no aplicativo (JOHNSON, 2007). As pr´ximas subse¸oes descrevem
                                                             o           c˜
detalhadamente cada um desses arquivos.


4.3.1    JAR
    Todas as MIDlets s˜o empacotadas antes de serem transferidas a um dispositivo, isso
                       a
´ feito atrav´s de um m´todo de compress˜o onde s˜o colocadas todas as informa¸oes em
e            e          e               a          a                             c˜
um unico arquivo cuja extens˜o ´ .JAR. Este arquivo engloba classes Java, recursos e
     ´                       a e
informa¸˜es do empacotamento, com citado anteriormente (MUCHOW, 2001).
         co
    O arquivo JAR providencia muitos benef´
                                          ıcios, como: seguran¸a, atrav´s de assinaturas
                                                              c        e
digitais; compress˜o; empacotamento de extens˜es, juntando v´rios tipos de extens˜es
                   a                            o              a                     o
diferentes em uma unica: o .JAR; portabilidade e o fato de quando ´ necess´rio fazer o
                     ´                                              e       a
download de uma aplica¸˜o apenas um arquivo deve ser baixado (SUN, 2008b).
                         ca


4.3.2    JAD
    Conforme estudado, al´m do JAR ´ criado um arquivo em separado de extens˜o .JAD
                           e          e                                          a
que cont´m informa¸oes sobre o MIDlet. Este arquivo ´ usado muitas vezes para preparar
        e          c˜                                   e
o JAR para ser instalado, otimizando a instala¸ao do aplicativo, por´m nem todos os
                                                  c˜                   e
aparelhos precisam ler o .JAD para realizar a instala¸˜o. O arquivo JAD possui a seguinte
                                                     ca
estrutura:
    MIDlet-Name: Nome da Suite MIDlet.
    MIDlet-Version: Vers˜o da MIDlet.
                          a
    MIDlet-Vendor : Desenvolvedor da MIDlet.
4.4. Interface                                                                        22



   MIDlet-Icon: Especifica o ´
                            ıcone da tela inicial da aplica¸ao.
                                                           c˜
   MIDlet-Description: Descri¸˜o da aplica¸˜o.
                              ca           ca
   MIDlet-info-URL: Endere¸o para um arquivo de informa¸oes (JAR).
                           c                                c˜
   MIDlet-DATA-Size: Tamanho dos dados.


4.4     Interface
    Os dispositivos m´veis que implementam o perfil MIDP possuem diversas restri¸oes
                      o                                                              c˜
quando se trata de interface, podendo variar em tamanho de tela, n´mero de cores apresen-
                                                                   u
tadas na tela, disposi¸˜o dos bot˜es, etc. E estas informa¸oes s˜o acessadas pela MIDlet
                      ca          o                        c˜   a
somente em tempo de execu¸ao. Sendo assim, o MIDP s´ permite a utiliza¸˜o de objetos
                             c˜                          o                 ca
visuais simples, n˜o sendo permitida a implementa¸˜o de objetos comuns na vers˜o Java
                  a                                 ca                            a
para desktop (JOHNSON, 2007).
    O Java ME tem como padr˜o para constru¸ao de interfaces a biblioteca LCDUI, que
                                a               c˜               `
´ respons´vel pelos componentes que formam a interface de aplica¸oes MIDP. Nesta se-
e         a                                                          c˜
¸ao estudaremos algumas classes desta biblioteca, que est˜o dispostas de acordo com a
c˜                                                          a
hierarquia mostrada na Figura 4.2.




                           Figura 4.2: Hierarquia de classes.
4.4. Interface                                                                         23



Display e Displayable
    Para desenvolver interfaces que se encaixem em dispositivos m´veis com diferentes
                                                                       o
caracter´ısticas de tela, as aplica¸˜es s˜o desenvolvidas com uma certa abstra¸ao. Para
                                   co    a                                         c˜
acessar as informa¸oes de um determinado aparelho existe a classe Display e cada MIDlet
                    c˜
possui sua pr´pria instˆncia desta classe que pode ser acessada pelo m´todo getDisplay(),
               o          a                                              e
que geralmente est´ contido no m´todo startApp(), pois o Display s´ pode ser acessado
                     a               e                                  o
depois que aplica¸˜o tenha sido iniciada.
                   ca
    Portanto, a tela do dispositivo ´ representada por uma instˆncia da classe Display,
                                       e                           a
que representa o hardware, e para que seja mostrado algo na tela devemos passar um
objeto Displayable para o objeto da classe Display. Displayable ´ uma classe abstrata
                                                                     e
que controla o que ´ mostrado na tela e os comandos enviados pelos usu´rios. Eles
                        e                                                        a
representam conte´dos de uma tela na qual h´ intera¸ao com o usu´rio (JOHNSON,
                    u                             a       c˜               a
2007). Cada aplica¸ao possui apenas uma instˆncia da classe Display, sendo assim podem
                     c˜                         a
existir v´rios objetos Displayable mas apenas um ´ mostrado por vez (MUCHOW, 2001).
         a                                           e
    Os objetos Displayable que est˜o na mem´ria, mas n˜o est˜o sendo mostrados est˜o no
                                    a         o          a      a                     a
chamado background e o objeto que est´ sendo mostrado est´ no foreground. Portanto os
                                           a                   a
objetos que est˜o no background n˜o tem acesso ao Display. Para mostrar um Displayable
                 a                  a
na tela usamos o m´todo setCurrent() e para obter qual objeto est´ sendo mostrado no
                      e                                                a
Display usamos o m´todo getCurrent() (JOHNSON, 2007).
                       e
    A classe Displayable da origem a duas outras classes: Screen e Canvas. Ambas s˜o    a
classes para representar interfaces, por´m a primeira classe, juntamente com suas subclas-
                                         e
ses formam componentes de interface de alto n´ e a segunda de baixo n´ (MUCHOW,
                                                ıvel                        ıvel
2001).

Screen
    Screen ´ uma classe que cont´m objetos gr´ficos prontos, onde cada uma pode ter uma
            e                   e            a
aparˆncia, variando de acordo com o dispositivo em que esta sendo executada a aplica¸ao
     e                                                                              c˜
(JOHNSON, 2007). Screen e suas heran¸as s˜o classificadas como objetos de interface de
                                       c    a
alto n´ (High-Level APIs) e as heran¸as desta classe s˜o as classes Form, List, Alert e
       ıvel                            c                a
Textbox (MUCHOW, 2001).

Form
    Form ´ um formul´rio o qual pode conter textos, imagens e outros componentes para
         e           a
serem exibidos no visor. V´rios componentes podem ser colocados em um Form e se
                            a
houver necessidade ele apresenta barra de rolagem autom´tica para mostrar todos estes
                                                        a
componentes visuais. Por´m nada muito extenso ´ vi´vel para aplica¸oes m´veis.
                         e                      e a                c˜    o
4.4. Interface                                                                       24



   Esses componentes que podem ser adicionados em um Form s˜o subclasses da classe
                                                              a
Item e ser˜o estudados posteriormente. Um Form possui m´todos para adicionar, inserir,
          a                                            e
apagar e substituir componentes. Estes componentes da classe Item s´ pode ser inseri-
                                                                   o
dos em um Form e n˜o em outras telas da classe Screen, como List, Alert ou Textbox
                      a
(MUCHOW, 2001).

Item
   Conforme mostrado um Item ´ um componente que pode ser inserido em um Form e
                             e
suas subclasses s˜o:
                 a

   • StringItem
     ´
     E um simples texto est´tico, ou seja, n˜o pode ser editado.
                           a                a

   • TextField
     ´
     E um campo para entrada e/ou edi¸ao de texto. Podendo ser associadas regras a
                                       c˜
     este. Por exemplo: aceitar somente n´meros, qualquer caracter, ser um campo de
                                         u
     senha, entre outros.

   • ImageItem
       Permite inserir uma imagem.

   • ChoiceGroup
     ´
     E uma lista de escolhas, dentro de um Form. Possui os tipos: m´ltiplo, exclusivo
                                                                   u
     ou pop up.

         1. M´ltiplo: Podem ser selecionadas v´rias op¸˜es, marcando uma caixa de che-
              u                               a       co
            cagem que acompanha os elementos da lista;
         2. Exclusivo: Pode ser selecionado apenas uma op¸ao e esta ´ marcada com um
                                                         c˜         e
            radioButton.
         3. Pop up: Pode ser selecionada apenas uma op¸ao. A lista ´ exibida como
                                                           c˜            e
            uma comboBox, ou seja, os elementos ficam escondidos e quando clicada esta
            lista toda ´ exibida. Ap´s a sele¸ao de um elementos os outros elementos s˜o
                       e            o        c˜                                       a
            escondidos novamente.

   • DataField
       Campo utilizado para exibir e/ou entrar com data e/ou hora.
4.4. Interface                                                                             25



   • Gauge
     ´
     E uma representa¸ao gr´fica de um n´mero inteiro. Ele permite que o usu´rio
                         c˜   a             u                                    a
     defina um n´  ıvel, como o volume por exemplo, se for um Gauge interativo. Se for
     n˜o interativo ´ somente o programa que o controla (MUCHOW, 2001).
      a              e

   • Spacer
       Determina um espa¸amento vertical e/ou horizontal m´
                         c                                  ınimo entre os componentes
       de um Form. Ele ´ utilizado por quest˜es de design de layout.
                       e                    o

   • CustomItem
       Utilizado para criar itens espec´
                                       ıficos, atrav´s de desenhos, utilizando a classe Graphics
                                                   e
       da API de baixo n´ (MATTOS, 2005).
                          ıvel

List
    ´
    E uma lista que permite ao usu´rio selecionar op¸oes. Estas podem ser tanto uma
                                   a                 c˜
String quanto uma imagem. O List pode ser exclusivo, m´ltiplo ou impl´
                                                        u            ıcito. Impl´
                                                                                ıcito ´
                                                                                      e
quanto a lista ´ exibida sem nenhum marcador e somente uma op¸˜o pode ser escolhida,
               e                                               ca
gerando um evento quando ´ selecionada uma das op¸oes. Os outros dois tipos funcionam
                            e                      c˜
igualmente ao ChoiceGroup (MATTOS, 2005).

Alert
    ´
    E uma tela de informa¸˜o ao usu´rio. Pode conter uma mensagem de erro, de sucesso,
                         ca         a
de informa¸ao, entre outras. Ele pode ser programado para ser exibido durante um tempo
          c˜
pr´ determinado, pode ser composto de um texto e uma imagem e sua aparˆncia varia de
  e                                                                       e
acordo com o dispositivo m´vel usado (MATTOS, 2005).
                            o

TextBox
                 e                                    c˜            ´
   Basicamente ´ uma tela que serve para entrada e edi¸ao de texto. E como se fosse um
Item textField, por´m s´ existe ele na tela. Em um textBox tamb´m podem ser usadas
                   e   o                                         e
regras, assim como em um textField (SUN, 2006b).

Canvas
   Canvas ´ uma classe de baixo n´
           e                     ıvel, que proporciona maior liberdade na implementa¸˜o
                                                                                    ca
      a                ´ destinada a aplica¸oes que necessitam de posicionamento preciso
dos gr´ficos e eventos. E                   c˜
dos elementos gr´ficos, sendo portanto muito utilizada para a cria¸ao de jogos.
                 a                                                c˜
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME
Desenvolvendo um estudo de caso utilizando a plataforma Java ME

Más contenido relacionado

La actualidad más candente

Apostila criação de web sites
Apostila   criação de web sitesApostila   criação de web sites
Apostila criação de web sitesLiana Leuck
 
Dois hiperespaços de aprendizagem
Dois hiperespaços de aprendizagemDois hiperespaços de aprendizagem
Dois hiperespaços de aprendizagemLurdesViana
 
Tecnologias da Comunicação em Educação p2
Tecnologias da Comunicação em Educação p2Tecnologias da Comunicação em Educação p2
Tecnologias da Comunicação em Educação p2Pedro Almeida
 
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware   emca 2010 - centro paula souza - taubaté,spProjeto airsoftware   emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware emca 2010 - centro paula souza - taubaté,spCaique Guilherme Faria Dias
 
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de softwareUm estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de softwareDiogenes Freitas
 
Trabalho de Conclusão de Curso
Trabalho de Conclusão de CursoTrabalho de Conclusão de Curso
Trabalho de Conclusão de CursoValmir Ferreira
 

La actualidad más candente (8)

TCC Camilo Anauate_39022_9rds
TCC Camilo Anauate_39022_9rdsTCC Camilo Anauate_39022_9rds
TCC Camilo Anauate_39022_9rds
 
67286679 web-sites
67286679 web-sites67286679 web-sites
67286679 web-sites
 
Apostila criação de web sites
Apostila   criação de web sitesApostila   criação de web sites
Apostila criação de web sites
 
Dois hiperespaços de aprendizagem
Dois hiperespaços de aprendizagemDois hiperespaços de aprendizagem
Dois hiperespaços de aprendizagem
 
Tecnologias da Comunicação em Educação p2
Tecnologias da Comunicação em Educação p2Tecnologias da Comunicação em Educação p2
Tecnologias da Comunicação em Educação p2
 
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware   emca 2010 - centro paula souza - taubaté,spProjeto airsoftware   emca 2010 - centro paula souza - taubaté,sp
Projeto airsoftware emca 2010 - centro paula souza - taubaté,sp
 
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de softwareUm estudo sobre o gerenciamento de variabilidade em LInha de produto de software
Um estudo sobre o gerenciamento de variabilidade em LInha de produto de software
 
Trabalho de Conclusão de Curso
Trabalho de Conclusão de CursoTrabalho de Conclusão de Curso
Trabalho de Conclusão de Curso
 

Similar a Desenvolvendo um estudo de caso utilizando a plataforma Java ME

Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos JavaMarcio Marinho
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...Paulo Steinhauser
 
Linguagem de Programação Comercial
Linguagem de Programação ComercialLinguagem de Programação Comercial
Linguagem de Programação ComercialTathiana Machado
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1PeslPinguim
 
Apresentação java
Apresentação javaApresentação java
Apresentação javamunosai
 
Estudo De Aplicabilidade Do PadrãO Mvc Fernando & Leonardo
Estudo De Aplicabilidade Do PadrãO Mvc   Fernando & LeonardoEstudo De Aplicabilidade Do PadrãO Mvc   Fernando & Leonardo
Estudo De Aplicabilidade Do PadrãO Mvc Fernando & LeonardoFernando A. Barbeiro Campos
 
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...Eder Nogueira
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo JavaTI Infnet
 
Curso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação javaCurso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação javaAlex Braz
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaPaulo César M Jeveaux
 
Projeto final rafael pimenta - adauto junior 2
Projeto final   rafael pimenta - adauto junior 2Projeto final   rafael pimenta - adauto junior 2
Projeto final rafael pimenta - adauto junior 2Rafael Pimenta
 
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisSimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisCaio Ribeiro Pereira
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Sciere sa breve apresentação - janeiro 2014 [3]
Sciere sa   breve apresentação - janeiro 2014 [3]Sciere sa   breve apresentação - janeiro 2014 [3]
Sciere sa breve apresentação - janeiro 2014 [3]lsalandin
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Rodrigo Marinho
 

Similar a Desenvolvendo um estudo de caso utilizando a plataforma Java ME (20)

Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
E-OBRAS: Proposta de Desenvolvimento do Protótipo de Sistema para Secretarias...
 
Linguagem de Programação Comercial
Linguagem de Programação ComercialLinguagem de Programação Comercial
Linguagem de Programação Comercial
 
Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1Curso Básico de Java - Aula 1
Curso Básico de Java - Aula 1
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Cursos
CursosCursos
Cursos
 
Estudo De Aplicabilidade Do PadrãO Mvc Fernando & Leonardo
Estudo De Aplicabilidade Do PadrãO Mvc   Fernando & LeonardoEstudo De Aplicabilidade Do PadrãO Mvc   Fernando & Leonardo
Estudo De Aplicabilidade Do PadrãO Mvc Fernando & Leonardo
 
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
UTILIZANDO O FRAMEWORK JBOSS SEAM PARA ACELERAR O DESENVOLVIMENTO DE APLICAÇÕ...
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Curso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação javaCurso Android - Dia 1 - Apresentação java
Curso Android - Dia 1 - Apresentação java
 
Tutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com JavaTutorial: Desenvolvimento de aplicacoes moveis com Java
Tutorial: Desenvolvimento de aplicacoes moveis com Java
 
Projeto final rafael pimenta - adauto junior 2
Projeto final   rafael pimenta - adauto junior 2Projeto final   rafael pimenta - adauto junior 2
Projeto final rafael pimenta - adauto junior 2
 
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas OperacionaisSimulaRSO - Simulador de Recursos de Sistemas Operacionais
SimulaRSO - Simulador de Recursos de Sistemas Operacionais
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
Sciere sa breve apresentação - janeiro 2014 [3]
Sciere sa   breve apresentação - janeiro 2014 [3]Sciere sa   breve apresentação - janeiro 2014 [3]
Sciere sa breve apresentação - janeiro 2014 [3]
 
Java
JavaJava
Java
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015
 
Tcc elisnaldo-prazer
Tcc elisnaldo-prazerTcc elisnaldo-prazer
Tcc elisnaldo-prazer
 

Último

GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxLusGlissonGud
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxedelon1
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 

Último (20)

GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
Apresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptxApresentação em Powerpoint do Bioma Catinga.pptx
Apresentação em Powerpoint do Bioma Catinga.pptx
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 

Desenvolvendo um estudo de caso utilizando a plataforma Java ME

  • 1. Coordena¸ao do Curso de Ciˆncia da Computa¸ao c˜ e c˜ Universidade Estadual de Mato Grosso do Sul Desenvolvendo um Estudo de Caso Utilizando a Plataforma Java ME Lais Claudia Zanfolim Rodolfo Chaves Fernandes Andr´ Chastel Lima (Orientador) e Celso G. Camilo Jr (Co-orientador) Dezembro de 2009
  • 2. Desenvolvendo um Estudo de Caso Utilizando a Plataforma Java ME Lais Claudia Zanfolim Rodolfo Chaves Fernandes Este exemplar corresponde a reda¸ao final ` c˜ da monografia da disciplina Projeto Final de Curso devidamente corrigida e defendida por Lais Claudia Zanfolim Rodolfo Chaves Fernandes e aprovada pela Banca Examinadora, como parte dos requisi- tos para a obten¸ao do t´ c˜ ıtulo de Bacharel em Ciˆncia da Computa¸ao. e c˜ Dourados, 11 de dezembro de 2009. Andr´ Chastel Lima (Orientador) e Celso G. Camilo Jr (Co-orientador) ii
  • 3. Coordena¸ao do Curso de Ciˆncia da Computa¸ao c˜ e c˜ Universidade Estadual de Mato Grosso do Sul Desenvolvendo um Estudo de Caso Utilizando a Plataforma Java ME Lais Claudia Zanfolim Rodolfo Chaves Fernandes Dezembro de 2009 Banca Examinadora: • Andr´ Chastel Lima (Orientador) e • Celso G. Camilo Jr (Co-orientador) • Raquel Marcia M¨ller u • Nielsen Cassiano Sim˜es o iii
  • 4. Resumo A plataforma Java Micro Edition ´ o conjunto de tecnologias que permitem o de- e senvolvimento de aplica¸oes Java para dispositivos com processamento, mem´ria e v´ c˜ o ıdeo limitados, como celulares e smartphones. Assim como as outras edi¸oes Java, essa pla- c˜ taforma foi desenvolvida com o mesmo intuito, a portabilidade, al´m de possuir diversas e APIs para o desenvolvimento, o Java ME tamb´m fornece compatibilidade entre as edi- e ¸oes Java, possibilitando a comunica¸˜o com aplica¸oes constru´ c˜ ca c˜ ıdas em Java SE e Java EE. Mantendo o foco em Java Micro Edition, este trabalho prop˜e o desenvolvimento de o uma aplica¸ao m´vel que una as tecnologias Java ME e Java EE. Como o Java Enterprise c˜ o Edition possui v´rias funcionalidades de redes e Internet e cont´m classes especialmente a e desenvolvidas para acesso a servidores e banco de dados, parte da aplica¸˜o foi constru´ ca ıda usando esta tecnologia, possibilitando a comunica¸ao entre dispositivos m´veis e um servi- c˜ o dor disposto na rede local ou Internet. Portanto, neste trabalho foi abordado, juntamente com a plataforma Java ME, o uso de Servlets dentro da arquitetura Java EE, interagindo com um cliente m´vel atrav´s do protocolo HTTP para estabelecer a comunica¸˜o com o e ca celulares e smartphones. Visto que um Servlet pode efetuar qualquer processamento ine- rente a uma classe Java e enviar respostas na forma de documentos XML, para efetuarmos a troca de dados entre um dispositivo m´vel e o servidor remoto de dados, que alimenta o o sistema m´vel, utilizamos os recursos que a linguagem XML nos oferece. Para auxiliar o o desenvolvimento do estudo de caso, a metodologia agil extreme programming foi utilizada ´ juntamente com diagramas da UML com o intuito de organizar o processo de desenvolvi- mento. A aplica¸ao desenvolvida durante o trabalho ´ respons´vel por agilizar o processo c˜ e a de vendas de uma distibuidora de bebidas, a fim de automatizar a for¸a de vendas e foi c testada em celulares e smartphones com o sistema operacional m´vel Symbian e Windows o Mobile, interagindo com o servidor via requisi¸oes HTTP. c˜ Palavras Chave: Java ME, mobilidade, celulares e smartphones. iv
  • 5. Abstract The platform Java Micro Edition is the set of technologies that enable the develop- ment of Java applications for devices with limited processing, memory and video, such as cell phones and smartphones. As with other Java editions, this platform was develo- ped with the same intention, portability, and have different APIs for the development, Java ME also provides compatibility between Java editions, enabling communication with applications built on Java SE and Java EE. Keeping the focus on Java Micro Edition, this paper proposes the development of a mobile application that gather the technologies Java ME and Java EE. As the Java Enterprise Edition has several networks and Internet features and contains classes designed specially to access servers and databases, part of the application was built using this technology, enabling communication between mobile devices and server requirements of a local network or Internet. Therefore, in this study was discussed, along with the Java ME platform, the use of Servlets in the Java EE archi- tecture, interacting with a mobile client via the HTTP protocol to communicate with cell phones and smartphones. Since a servlet can perform any processing associated with a Java class and submit answers in the form of XML documents, to effectuate the exchange of data between a mobile device and the remote database, which feeds the mobile system, we use the resources that XML language offers. To assist the development of case study, the agile eXtreme Programming was used together with UML diagrams in order to orga- nize the development process. The application developed during the work is responsible for streamlining the sales process of a beverage distributor, to automate the sales force and has been tested on mobile phones and smartphones with mobile operating system Symbian and Windows Mobile, interacting with the server via HTTP requests. Keywords: Java ME, mobile, cell phones and smartphones. v
  • 6. Agradecimentos Agradecemos primeiramente a Deus, por ter nos aben¸oado durante toda nossa vida c e principalmente por ter nos dado for¸as durante todo o decorrer do trabalho. c Aos nossos familiares, pela confian¸a, apoio e educa¸ao durante toda nossa caminhada. c c˜ Ao nosso orientador Andr´ Chastel Lima, pelo apoio e compreens˜o. e a Ao nosso co-orientador Celso Camilo, pelo incentivo e paciˆncia. e A toda academia, que nos proporcionou as condi¸oes necess´rias para o desenvolvi- c˜ a mento deste trabalho, em especial os professores Odival Faccenda e Glaucia Gabriel Sass. Aos funcion´rios da eXclaim, por nos dar a oportunidade de estagiar na empresa e a desenvolver projetos com a tecnologia Java ME. Aos leitores e colaboradores do javamovel.com, pela lealdade e por nos incentivar a estudar o tema do projeto. Enfim, agradecemos todos aqueles que contribu´ ıram para o sucesso desta caminhada e que de forma injusta n˜o tiveram seus nomes inclu´ a ıdos aqui. vi
  • 7. Sum´rio a Resumo iv Abstract v Agradecimentos vi 1 Introdu¸˜o ca 3 1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Sistemas operacionais para dispositivos m´veis o 6 2.1 Dispositivos M´veis . . . . . . . . . . . . . . . . o . . . . . . . . . . . . . . . 6 2.2 Sistemas Operacionais e suas tecnologias . . . . . . . . . . . . . . . . . . . 7 2.2.1 Symbian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.2 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2.3 Windows Mobile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.4 Palm OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.5 BlackBerry OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.6 Iphone OS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 An´lise do Mercado . . . . . . . . . . . . . . . . a . . . . . . . . . . . . . . . 10 3 Java Micro Edition 11 3.1 Vis˜o geral . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Configura¸˜es . . . co . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.4 M´quinas Virtuais a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.5 Pacotes Opcionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 vii
  • 8. 4 Perfil MIDP 17 4.1 Vis˜o Geral do MIDP . . . . a . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2 MIDlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.3 MIDlets Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3.1 JAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.3.2 JAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.4 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.5 Armazenamento Persistente . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5.1 RMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5 APIs e Frameworks para Java ME 28 5.1 APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.2 Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2.1 Floggy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.2.2 KXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2.3 LWUIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6 Comunica¸˜o com o Servidor ca 35 6.1 A Plataforma Java EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.1.1 Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6.2 XML - Linguaguem de marca¸˜o extens´ ca ıvel . . . . . . . . . . . . . . . . . . 38 6.2.1 An´lise de documentos XML . . . . a . . . . . . . . . . . . . . . . . . 39 7 Estudo de Caso 41 7.1 Extreme programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.2 Arquitetura do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.3 Vis˜o geral do sistema . . a . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.4 Diagrama de Caso de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.5 Est´rias . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.6 Release 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.6.1 Itera¸ao A . . . . . c˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.6.2 Itera¸ao B . . . . . c˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.7 Release 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.7.1 Itera¸ao A . . . . . c˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.7.2 Itera¸ao B . . . . . c˜ . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.8 A Aplica¸˜o . . . . . . . . ca . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 8 Considera¸˜es Finais co 57 viii
  • 9. Lista de Figuras 3.1 Elementos da plataforma Java ME. . . . . . . . . . . . . . . . . . . . . . . 12 3.2 Arquitetura da plataforma Java. . . . . . . . . . . . . . . . . . . . . . . . . 13 4.1 Ciclo de vida do MIDlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 Hierarquia de classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.3 Record Management System. . . . . . . . . . . . . . . . . . . . . . . . . . . 27 6.1 Arquitetura da plataforma Java EE. . . . . . . . . . . . . . . . . . . . . . . 36 6.2 Servlet container. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.3 Ciclo de vida do servlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.4 Estrutura do XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.1 Esquema de comunica¸˜o. . . . . . . . . . . . . . ca . . . . . . . . . . . . . . 42 7.2 Diagrama de Caso de Uso. . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.3 Est´ria 1-A: Consulta de produtos. . . . . . . . . o . . . . . . . . . . . . . . 44 7.4 Est´ria 1-B: Consulta e cadastro de clientes. . . . o . . . . . . . . . . . . . . 44 7.5 Est´ria 2-A: Cadastro de pedidos. . . . . . . . . . o . . . . . . . . . . . . . . 45 7.6 Est´ria 2-B: Altera¸˜o de pedidos. . . . . . . . . . o ca . . . . . . . . . . . . . . 45 7.7 Est´ria 2-C: Envio dos dados para o banco central o da empresa. . . . . . . . 46 7.8 Diagrama de classe de projeto - Produto. . . . . . . . . . . . . . . . . . . . 47 7.9 Diagrama de classe de projeto - Cliente. . . . . . . . . . . . . . . . . . . . 47 7.10 Diagrama de classes de projeto. . . . . . . . . . . . . . . . . . . . . . . . . 48 7.11 Autentica¸ao do usu´rio. . . . . . . . . . . . . . . c˜ a . . . . . . . . . . . . . . 50 7.12 Menu principal da aplica¸˜o m´vel. . . . . . . . . ca o . . . . . . . . . . . . . . 51 7.13 Cadastro de Clientes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.14 Busca de Produtos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.15 Detalhamento de produto. . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.16 Cadastro de pedidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.17 Lista de pedidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ix
  • 10. Lista de Siglas AM - Application Manager API - Application Programming Interface CDC - Connected Device Configuration CGI - Common Gateway Interface CLDC - Connected Limited Device Configuration CVM - Compact Virtual Machine DTD - Document Type Declaration FP - Foundation Profile GP - Game Profile GPS - Global Positioning System (Sistema de Posicionamento Global) HTTP - HyperText Markup Language HTTP - Hypertext Transfer Protocol J2SE - Java 2 Standard Edition JAD - Java Decompiler JAR - Java Archive Java EE - Java Enterprise Edition Java ME - Java Micro Edition JCP - Java Community Process JNI - Java Native Interface JSP - Java ServerPages JVM - Java Virtual Machine KVM - K Virtual Machine LWUIT - LightWeight User Interface Toolkit MIDP - Mobile Information Device Profile MMAPI - Mobile Media API MMS - Multimedia Messaging Service (Servi¸o de Mensagem Multim´dia) c ı MSA - Mobile Service Architecture OpenCL - Open Computing Language OpenGL - Open Graphics Library 1
  • 11. 2 PBP - Personal Basis Profile PC - Personal Computer PDA - Personal Digital Assistants PDAP - PDA Profile PP - Personal Profile RAD - Rapid Application Development RAM - Random Access Memory RIM - Research in Motion RMI - Remote Method Invocation RMIP - Remote Method Invocation Profile RMS - Record Management System SDK - Software Development Kit SMS - Short Message Service SO - Sistema Operacional UML - Unified Modeling Language VM - Virtual Machine W3C - World Wide Web Consortium WAV - WAVEform audio format WTK - Wireless ToolKit XML - eXtensible Markup Language
  • 12. Cap´ ıtulo 1 Introdu¸˜o ca Com a expans˜o da Internet e da utiliza¸˜o de aplica¸˜es, surgiram diversas linguagens a ca co de programa¸˜o, tendo destaque as de multiplataforma, como ´ o caso do Java, que pode ca e ser aplicado em diversos setores, como aparelhos eletrˆnicos, telefones celulares, aplica¸oes o c˜ para Web e desktop, entre outros. Levando em considera¸ao os diferentes setores, tornou- c˜ se necess´rio a cria¸˜o de kits de desenvolvimento diferenciados. a ca A proposta inicial parte do interesse pela linguagem de programa¸ao Java, em espe- c˜ c´ ´ ıfico Java Micro Edition - Java ME. E uma plataforma que permite o desenvolvimento de aplica¸˜es Java para dispositivos com processamento, mem´ria e v´ co o ıdeo limitados, tais como celulares e smartphones. Assim como as outras edi¸oes Java, essa tecnologia foi c˜ desenvolvida com o mesmo intuito, a portabilidade, al´m de possuir diversas APIs (Ap- e plication Programming Interface) para o desenvolvimento. O Java ME tamb´m fornecee compatibilidade entre as edi¸˜es Java, possibilitando a comunica¸ao com aplica¸oes Java co c˜ c˜ SE (Java Standard Edition) e Java EE (Java Enterprise Edition). A Java Community Process - JCP, especifica o Java ME em dois grupos: • CDC - Connected Device Configuration: para dispositivos com maior capacidade computacional. • CLDC - Connected Limited Device Configuration: para dispositivos com menor capacidade computacional e normalmente usado em aplica¸oes embarcadas. c˜ Dentro desta ultima configura¸ao existe uma outra classifica¸ao que define os perfis dos ´ c˜ c˜ dispositivos. No caso de celulares e smartphones a classifica¸ao usada ´ o MIDP, Mobile c˜ e Information Device Profile. Dentro desta classifica¸˜o, se ocorrer a migra¸ao de aplica¸oes ca c˜ c˜ para outros celulares com a mesma configura¸˜o elas n˜o perdem sua funcionalidade ca a (TOPLEY, 2002). Para otimizar o funcionamento de aplica¸oes em celulares a Sun desenvolveu m´quinas c˜ a virtuais Java espec´ ıficas para cada configura¸ao, que manipulam de maneira mais eficiente c˜ 3
  • 13. 1.1. Objetivos 4 a codifica¸˜o desse tipo de dispositivos. ca Com a cria¸ao deste ambiente de desenvolvimento torna-se vi´vel a constru¸˜o de c˜ a ca aplica¸˜es para dispositivos m´veis com maior produtividade e portabilidade (MUCHOW, co o 2001). 1.1 Objetivos O objetivo principal deste trabalho ´ desenvolver um estudo de caso aplicando os prin- e cipais conceitos da plataforma Java ME e utilizar a plataforma Java EE para constru¸˜o ca de um servidor que ser´ respons´vel pela troca de dados com a aplica¸ao m´vel. a a c˜ o Para alcan¸ar o objetivo principal, as seguintes etapas foram efetuadas: c • Fazer um breve estudo sobre as plataformas de dispositivos m´veis; o • Estudar a plataforma Java ME, voltada para dispositivos m´veis; o • Estudar a plataforma Java EE para a constru¸˜o de um servidor remoto; ca • Estudar a comunica¸ao entre o servidor e a aplica¸˜o m´vel; c˜ ca o • Estudar alguns frameworks Java ME e definir quais ser˜o utilizados no estudo de a caso; • Definir os padr˜es da Engenharia de Software que ser˜o utilizados na aplica¸ao; o a c˜ • Definir o estudo de caso; • Desenvolver e testar o estudo de caso. 1.2 Justificativa Segundo dados divulgados pela Agˆncia Nacional de Telecomunica¸oes (Anatel), o e c˜ n´mero de linhas de telefones m´veis no pa´ chegou a aproximadamente 152,4 milh˜es, u o ıs o ˆ em fevereiro de 2009, o que corresponde a 79,94% da popula¸ao (AGENCIAESTADO, c˜ 2009). Em n´ mundial, o n´mero de usu´rios de telefones m´veis chegou perto de 3 bilh˜es ıvel u a o o em 2007, atingindo 48% da popula¸ao e a estimativa para o final de 2008 era de 4 bilh˜es, c˜ o o que corresponde a 61%, segundo a Uni˜o Internacional de Telecomunica¸oes (UIT) a c˜ (REUTERS, 2008). Segundo Eric Klein, vice-presidente de marketing do Java, em entrevista a Reuters, o ` Java est´ instalado em 2,6 bilh˜es de telefones em todo o mundo (VIRKI, 2009). Visto a o
  • 14. 1.3. Metodologia 5 que o n´mero de usu´rios de aparelhos celulares ´ significativo, que est´ em crescimento e u a e a que a plataforma Java ME ´ bem aceita pelo mercado de software para dispositivos m´veis e o e tamb´m est´ em ascendˆncia no mercado, o desenvolvimento para esta plataforma se e a e torna bastante atraente. 1.3 Metodologia Mantendo o foco em Java Micro Edition, propomos fazer uma revis˜o bibliogr´fica dos a a conceitos chaves desta plataforma e desenvolver uma aplica¸ao para celular ou smartphone c˜ que una as plataformas Java ME e Java EE. Como o Java Enterprise Edition possui v´riasa funcionalidades de redes e Internet e cont´m bibliotecas especialmente desenvolvidas para e acesso a servidores e banco de dados, parte da aplica¸˜o ser´ constru´ usando esta ca a ıda plataforma, possibilitando a comunica¸ao entre dispositivos m´veis e um servidor disposto c˜ o na rede ou Internet. A plataforma Java EE cont´m uma s´rie de especifica¸oes, cada uma com funciona- e e c˜ lidades distintas, entre elas, utilizamos servlets, utilizados para o desenvolvimento Web com conte´do dinˆmico e cont´m uma API que simplifica os recursos do servidor Web u a e para o programador (HALL, 1998). Foi realizado um levantamento de diferentes frameworks Java ME e os que se apresen- taram mais vi´veis para o desenvolvimento da aplica¸ao foram utilizados. a c˜ Os dados foram padronizados em documentos XML (Extensible Markup Language), padronizada pela W3C (World Wide Web Consortium), a fim de serem transferidos do servidor para a aplica¸˜o m´vel. ca o O estudo de caso foi desenvolvido com base na metodologia agil extreme programming ´ - (XP), e diagramas da UML ser˜o apresentados para o melhor entendimento da aplica¸ao. a c˜ Os testes foram realizados em celulares e smartphones com o sistema operacional Symbian e Windows Mobile com a configura¸ao CLDC 1.1 e perfil MIDP 2.1, por´m a c˜ e aplica¸˜o poder´ ser executada em outros sistemas operacionais m´veis que possuam uma ca a o m´quina virtual Java compat´ com estas caracter´ a ıvel ısticas.
  • 15. Cap´ ıtulo 2 Sistemas operacionais para dispositivos m´veis o A tecnologia da informa¸˜o atinge a maior parte das empresas e institui¸˜es de forma ca co que fiquem dependentes de sistemas que ajudam ou otimizam o trabalho e a comunica¸ao c˜ dentro das mesmas. Com a massifica¸ao de computadores e Internet surge um outro c˜ conceito: Mobilidade. O poder de carregar as informa¸oes para qualquer ambiente ´ c˜ e evidentemente util para empresas que trabalham com base de dados e um fator essencial ´ para se destacar no mercado ´ ter acesso as informa¸oes em tempo real. e c˜ Sendo evidente o impacto que solu¸˜es de softwares m´veis tˆm e ter˜o nos pr´ximos co o e a o anos, ´ de extrema importˆncia conhecer os sistemas operacionais m´veis do mercado e a o e quais tipos de aplica¸oes cada um deles suporta. Assim, ´ apresentada uma breve c˜ e an´lise dos principais sistemas operacionais para dispositivos m´veis mais importantes da a o atualidade. Neste cap´ ıtulo tamb´m s˜o explanados os principais tipos de dispositivos m´veis e suas e a o tecnologias, visando uma abordagem completa dos requisitos necess´rios para construir a aplicativos de sucesso. 2.1 Dispositivos M´veis o Primeiramente ´ importante esclarecer que o termo Palm ´ utilizado para PDAs (As- e e sistente Pessoal Digital) ou Handhelds, que s˜o computadores de m˜o que fornecem as a a fun¸˜es b´sicas de um computador pessoal, como acesso a Internet, programas de cadas- co a tros, agenda, controle financeiro, controle de vendas, planilhas, documentos entre outras aplica¸˜es da categoria (PALMBRASIL, 2009a). co O smartphone ´ uma categoria de telefone celular com caracter´ e ısticas que antes eram encontradas somente em Palms e PCs (Personal Computers). PoketPC ´ o nome que e 6
  • 16. 2.2. Sistemas Operacionais e suas tecnologias 7 a Microsoft usa para a categoria de PDAs, que difere dos smartphones por agregar ca- racter´ ısticas como uma tela maior e sens´ a toque, suporte wi-fi, bluetooh, integra¸ao ıvel c˜ com GPS (Global Positioning System), enfim, tecnologias que o tornam mais robusto (MICROSOFT, 2009b). 2.2 Sistemas Operacionais e suas tecnologias Nesta se¸ao abordaremos as principais caracter´ c˜ ısticas dos sistemas operacionais m´veis o mais utilizados no mercado, bem como suas tecnologias. 2.2.1 Symbian Come¸aremos ent˜o com o sistema operacional para telefones m´veis que desde 1998 c a o lidera o mercado mundial, o Symbian OS, ou simplesmente Symbian. Ele possui suporte MMS (Multimedia Messaging Service), bluetooh, wireless, infra-vermelho, entre outras fun¸˜es que tornam-se extremamente importantes quando o assunto ´ mobilidade. Este co e SO possui um sistema gr´fico bem simples e atualmente ´ o sistema mais usado pelos a e maiores fabricantes de telefones m´veis do mundo, por´m com o surgimento de novas o e tecnologias e plataformas, vem apresentando queda. Por ser um sistema operacional que controla muito bem o consumo de mem´ria, o consumo de energia, o processamento, o entre outros fatores essenciais, as empresas mais poderosas da telecomunica¸˜o investiram ca bastante para que este fosse um sistema promissor para o mercado. Empresas como Nokia, Samsung, Panasonic, Ericsson e Sony Ericsson, foram as res- pons´veis pela ascendˆncia desse modelo de sistema operacional m´vel. Segundo a INFO a e o (2008), atualmente a Nokia possui a totalidade das a¸˜es da empresa britˆnica de software co a (Symbian), liderando o mercado mundial com 38,9% de participa¸ao e promete concorrer c˜ com o mais novo sistema operacional para dispositivos m´veis - Android. o O Symbian suporta sistemas divididos em m´dulos, desta forma cada empresa pode o criar sua pr´pria interface. Permite o uso de v´rias linguagens de programa¸ao, entre o a c˜ as mais importantes est˜o: Symbian C/C++, Java ME, FlashLite, Perl, Python, Ruby, a entre outras. Assim se o aparelho n˜o possui certa funcionalidade, fica f´cil de integrar a a a mesma (SYMBIANBRASIL, 2009). 2.2.2 Android O Android ´ um sistema operacional baseado em Linux voltado para smartphones, e criado pela Google em cons´rcio com mais de 40 empresas. Utiliza uma m´quina virtual o a que foi projetada para otimizar a mem´ria e os recursos de hardware em um ambiente o
  • 17. 2.2. Sistemas Operacionais e suas tecnologias 8 o ´ m´vel. E a primeira plataforma open source para desenvolvimento de aplica¸˜es m´veis, co o portanto ´ livre para incorporar novas tecnologias. Por ser um SO mais novo no mercado e est´ em aceita¸˜o, positiva por sinal, pelos usu´rios e desenvolvedores, pois agrega todas a ca a ´ as funcionalidades que os aparelhos m´veis mais atuais fornecem. E importante ressaltar o que os servi¸os da Google passam a ser facilmente acoplados com as tecnologias m´veis c o ap´s o surgimento do Android, j´ que o interesse e os investimentos atuais da empresa o a visam a mobilidade. Entre os servi¸os oferecidos est˜o: Cliente de e-mail, programa para SMS (Short Mes- c a sage Service), calend´rio, mapas, navegador e gerenciador de contatos. Tudo constru´ a ıdo em Java, desta forma os desenvolvedores Java podem construir aplicativos e disponibiliz´- a los. Os desenvolvedores tem acesso a mesma API utilizada nos aplicativos centrais, po- dendo aproveit´-las livremente. a Al´m dos aplicativos feitos em Java, o Android possui um conjunto de bibliotecas e C/C++ usadas por diversos componentes que permitem trabalhar com arquivos de m´ ıdia, exibi¸ao de conte´do em 2D e 3D, inclusive bibliotecas implementadas utilizando OpenGL c˜ u (Open Graphics Library) e um poderoso banco de dados relacional, o SQLite (Developers, 2009). 2.2.3 Windows Mobile Windows Mobile ´ um sistema operacional para dispositivos m´veis, projetado para e o realizar boa parte das fun¸˜es existentes no Windows para PC. Ele pode ser instalado co em PDAs, PocketPC, smartphones e aparelhos de multim´ ıdia em geral. (MICROSOFT, 2009b). Possui uma interface intuitiva, ´ seguro, permite acesso a Internet, inclusive envio e e recebimento de e-mails, possui conectividade bluetooth e wi-fi, al´m de vers˜es m´veis e o o dos aplicativos da Microsoft Office, como: Word, Excel e Power Point. O SO suporta aplicativos desenvolvidos em linguagens como C, C#, VB.Net, Java ME, Visual Basic, Python, FlashLite, entre outras, al´m de possuir um interpretador para PHP (MICRO- e SOFT, 2009a). 2.2.4 Palm OS Palm OS ´ um sistema operacional desenvolvido pela PalmSource para rodar em PDAs. e Entre as vers˜es da linha temos: O Palm OS Garnet e, o atualmente mais usado, Palm o OS Cobalt. No Palm OS Cobalt o sistema roda em 32 bits, possibilitando que os aplicativos fiquem muito mais r´pidos e com recursos extras. No Palm OS Garnet (5.x) apenas algumas a partes dos aplicativos s˜o em 32 bits, j´ que maior parte simula processadores antigos da a a
  • 18. 2.2. Sistemas Operacionais e suas tecnologias 9 Motorola. A desvantagem ´ que as aplica¸oes criadas utilizando os novos recursos n˜o e c˜ a ir˜o funcionar em equipamentos com vers˜es anteriores do sistema. a o As linguagens mais utilizadas para o desenvolvimento de aplica¸oes no Palm OS ´ c˜ e o Pascal e o C/C++. Vale ressaltar que a ultima possui uma grande quantidade de ´ frameworks e ´ mais usada no desenvolvimento de jogos. Importante dizer que existem e aplicativos que convertem aplica¸˜es em Java para que possam ser utilizadas em Palm co OS, uma otima sa´ para escapar do padr˜o de desenvolvimento em palms. Existem ´ ıda a ainda outras linguagens para Palm OS, mas que n˜o possuem tantos recursos, tais como: a Satellite Forms, Codewarrior, AppForge, NSBasic, CASL e PDAToolBox. Existem ferramentas RAD (Rapid Application Development) muito bem documenta- das para auxiliar no desenvolvimento em Palm OS, ´ o caso da Handheld Basic (HB++), e que ´ muito bem aceita pela comunidade de desenvolvedores . O PocketStudio ´ outra e e ferramenta de desenvolvimento do tipo RAD, semelhante ao Delphi, que ajuda muitos desenvolvedores a construir aplica¸oes com maior facilidade para o Palm OS. Atualmente c˜ essas s˜o as mais usadas no desenvolvimento de aplica¸˜es comerciais para palms. a co Ap´s a PalmSource ser comprada pela Access as pr´ximas vers˜es devem ser baseadas o o o no sistema operacional Linux. Atualmente os dispositivos palms est˜o sendo comerciali- a zados tamb´m com Windows Mobile justamente pelas restri¸˜es para o desenvolvimento e co no sistema operacional Palm OS (PALMBRASIL, 2009b). 2.2.5 BlackBerry OS O BlackBerry OS ´ o sistema operacional para smartphones BlackBerry da empresa e Canadense RIM (Research in Motion). O SO possui como ponto sobressalente a sua consagrada ferramenta de sincroniza¸ao de e-mails. Assim que o servidor recebe o e-mail c˜ este ´ enviado para o dispositivo. Inicialmente deixava a desejar no quesito design, por´m e e passa por constantes aprimoramentos neste quesito e em outros recursos. Suas vers˜es o mais atuais apresentam recursos como menus recolh´ ıveis, navega¸ao por fotos, gerenciador c˜ de arquivos dedicado e oferece suporte para aplicativos desenvolvidos em Java ME (RIM, 2009). ´ E o terceiro sistema operacional para dispositivos m´veis mais vendido do mundo e o o segundo dos Estados Unidos. Teve um crescimento muito r´pido, chegando a ser o mais a vendido nos Estados Unidos no primeiro trimestre de 2009 (ADMOB, 2009). 2.2.6 Iphone OS O Iphone OS ´ o sistema operacional propriet´rio do Iphone, desenvolvido pela Apple. e a Atualmente conhecido como Mac OS X Snow Leopard, semelhante ao sistema OS X que roda nos computadores Macintosh. Este SO introduziu diversas tecnologias de primeira
  • 19. 2.3. An´lise do Mercado a 10 linha com uso de 64 bits, proporcionando a mais r´pida implementa¸˜o de javascript e a ca acesso a Web, chegando a ser 53 vezes mais r´pido quando usa o mini navegador Safari. a Outra poderosa tecnologia implementada ´ o OpenCL(Open Computing Language) que e possibilita aos desenvolvedores maior otimiza¸ao em aplica¸˜es que usam recursos gr´fi- c˜ co a cos. Possui uma tecnologia de multicondutores que agiliza a distribui¸˜o de tarefas em ca multiplos processadores (APPLE, 2009a). Em compara¸˜o ao Android por exemplo, ´ not´vel que o sistema operacional do ca e a Iphone ´ muito superior em qualidade e eficiˆncia, ainda mais se compararmos o acesso a e e Web, pois o Iphone j´ conquista e domina o mercado e n˜o deixa a desejar em nenhum a a aspecto, com exce¸ao do custo. A linguagem de desenvolvimento para o iPhone ´ o c˜ e Objective-C, que ´ muito utilizada na plataforma MAC. Ela ´ orientada a objetos e e e difere do C no acr´scimo de transmiss˜o de mensagens, ao estilo da linguagem Smalltalk. e a Tamb´m existem iniciativas Open Source para converter c´digos em Python para C ou e o tamb´m de Java para Objective-C. e Para desenvolver aplicativos para o Iphone OS ´ necess´rio utilizar o Cocoa, um con- e a junto de frameworks orientado a objetos que disponibiliza um ambiente de execu¸ao para c˜ as aplica¸oes serem executadas em MAC OSX e Iphone OS. E ´ c˜ ´ o unico ambiente de apli- ca¸ao para Iphone OS. As aplica¸˜es existentes no MAC OSX e no Iphone OS s˜o Cocoa, c˜ co a portanto para desenvolver aplica¸oes Java para o sistema operacional do Iphone ´ neces- c˜ e s´rio usar ferramentas que convertem o c´digo Java para a implementa¸ao da biblioteca a o c˜ Cocoa. Tamb´m existem frameworks para converter Python, Ruby, Perl, C# e Objective- e Basic em Objective-C, utilizando o Cocoa (APPLE, 2009b). 2.3 An´lise do Mercado a As plataformas da Apple, Google e Palm s˜o, hoje, as que mais se destacam no mer- a cado mundial. Segundo JONES (2009), analista de mobilidade e tecnologias sem fio do Gatener, a Microsoft est´ lutando para sobreviver no celular, pois se voltou demais para a o mercado corporativo e deixou de lado o mercado dom´stico, ficando fraca diante do e iPhone, Symbian e Android. Apenas trˆs plataformas devem sobreviver, mas ´ dif´ dizer hoje exatamente quais e e ıcil ´ s˜o. ”E uma batalha de ecossistemas que dependem de fatores como recursos do equi- a pamento, estilo, pre¸o e oferta de aplicativos e n˜o s´ da plataforma em si.” (JONES, c a o 2009).
  • 20. Cap´ ıtulo 3 Java Micro Edition Neste cap´ ıtulo s˜o apresentadas as caracter´ a ısticas da plataforma Java Micro Edition (Java ME), bem como suas tecnologias e arquitetura. 3.1 Vis˜o geral a Segundo a SUN (2009b), o Java ME ´ uma cole¸˜o de tecnologias e especifica¸oes que criam e ca c˜ uma plataforma que se ajusta aos requisitos de dispositivos m´veis tais como produtos de o consumo, dispositivos embarcados e dispositivos m´veis avan¸ados. o c O Java ME ´ a plataforma Java voltada para dispositivos que possuam capacidade de e mem´ria, tela e processamento restritos. Foi constru´ com o objetivo de fornecer um o ıda ambiente de execu¸˜o Java capaz de lidar com as caracter´ ca ısticas particulares de pequenos dispositivos. Para utilizar a mesma plataforma em dispositivos diferentes o Java ME foi baseado em trˆs elementos, especificados pela comunidade JCP, que define todos requisitos da e plataforma Java, incluindo a especifica¸˜o de APIs. Os trˆs elementos citados s˜o: Con- ca e a figura¸oes, perfis e pacotes opcionais, os quais funcionam sobre uma m´quina virtual c˜ a Java, por sua vez ligada a um sistema operacional. Dessa forma podemos representar a hierarquia dos elementos nas camadas apresentadas na Figura 3.1. 11
  • 21. 3.1. Vis˜o geral a 12 Figura 3.1: Elementos da plataforma Java ME. Na camada de configura¸ao s˜o definidas as bibliotecas necess´rias para o funciona- c˜ a a mento da m´quina virtual. A JCP especificou o Java ME em duas configura¸oes de acordo a c˜ com as necessidades dos dispositivos: CLDC (Connected, Limited Device Configuration) e CDC (Connected Device Configuration), de forma que: • CLDC especifica o ambiente Java para dispositivos com capacidades mais restritas, como telefones celulares, PDAs e smartphones. • CDC ´ destinada a dispositivos com maior capacidade de mem´ria e processamento, e o como TV digital, dispositivos sem fio de alto n´ e sistemas automotivos. ıvel Dentro da configura¸ao existe uma outra classifica¸˜o, os perfis. Estes formam um c˜ ca conjunto de aplica¸oes que complementa uma configura¸ao e fornece funcionalidades para c˜ c˜ desenvolver um aplicativo para determinado dispositivo. O perfil associado a CLDC ´ o MIDP (Mobile Information Device Profile). E os asso- e ciados a CDC s˜o: FP (Foundation Profile), PP (Personal Profile), PBP (Personal Basis a Profile), RMIP (Remote Method Invocation Profile) e GP (Game Profile) (JOHNSON, 2007). Os principais pacotes opcionais est˜o inseridos em um conjunto de APIs utilizadas com a as configura¸oes e perfis para estender funcionalidades n˜o encontradas nos respectivos c˜ a pacotes, como APIs para bluetooh e wireless. Quanto a m´quina virtual, a JCP especifica a CDC HotSpot Implementaion e a CLDC a HotSpot Implementation, que substitu´ ıram respectivamente a CVM (Compact Virtual Machine), vinculada a configura¸˜o CDC e a KVM (Kilo Virtual Machine), vinculada a ca CLDC. A Figura 3.2 mostra a arquitetura da plataforma Java.
  • 22. 3.2. Configura¸oes c˜ 13 Figura 3.2: Arquitetura da plataforma Java. 3.2 Configura¸oes c˜ A configura¸˜o define uma especifica¸ao padr˜o para uma mesma classe de dispositivos, ca c˜ a definidos por caracter´ ısticas individuais de hardware, como interface, processamento, me- m´ria, v´ o ıdeo, tipo de conex˜o de rede, entre outras (TOPLEY, 2002). Esta camada possui a as bibliotecas b´sicas da linguagem, representando a plataforma m´ a ınima de desenvolvi- mento para cada tipo de dispositivo. Tais configura¸oes s˜o definidas pelos fabricantes a c˜ a fim de proporcionar um ambiente de desenvolvimento para funcionar em um determinado dispositivo. Cada configura¸ao consiste de uma m´quina virtual Java (Java Virtual Machine - c˜ a JVM), seja da Sun, do pr´prio fabricante, ou de terceiros e de uma cole¸ao de classes o c˜ Java. Devido as restri¸oes de hardware dos dispositivos m´veis, as m´quinas virtuais c˜ o a utilizadas na plataforma Java ME n˜o suportam todas as caracter´ a ısticas da linguagem Java, instru¸oes bytecodes e softwares de otimiza¸ao providenciados pela plataforma Java c˜ c˜ SE n˜o s˜o suportados, sendo assim diferentes das demais JVMs (TOPLEY, 2002). a a A JCP especificou duas configura¸oes para Java ME, CLDC e CDC. Dentre elas abor- c˜ daremos a configura¸ao CLDC, visto que esta aborda celulares e smartphones, cujo ´ o c˜ e objetivo deste trabalho. A Connected, Limited Device Configuration - CLDC ´ a configura¸˜o m´ e ca ınima do Java ME, formada por um subconjunto de pacotes dispon´ ıveis na plataforma Java para desktop
  • 23. 3.2. Configura¸oes c˜ 14 e abrange os dispositivos com grandes restri¸˜es de processamento, mem´ria e v´ co o ıdeo, como celulares, smartphones, pagers e PDAs. Os dispositivos desta configura¸ao tˆm pelo menos 16 ou 32 bits, 160k de mem´ria c˜ e o n˜o vol´til (onde s˜o armazenadas as bibliotecas e a m´quina virtual), fonte limitada de a a a a energia e pelo menos 16 Mhz de velocidade. Al´m disso ´ necess´rio 192k de mem´ria e e a o para a plataforma Java e suportar conex˜o com rede sem fio, por´m com capacidade de a e transmiss˜o limitada (JOHNSON, 2007). a A CLDC est´ dispon´ nas vers˜es 1.0 (JSR 30) e 1.1 (JSR 139) (SUN, 2006e). A a ıvel o principal caracter´ıstica da vers˜o 1.0 ´ a ausˆncia de opera¸oes que use ponto flutuante, a e e c˜ por´m j´ existem classes que simulam esta propriedade para dada configura¸˜o (CLAU- e a ca SEN, 2003). Segundo a SUN (2007), as classes desta configura¸˜o est˜o restritas a apenas quatro ca a pacotes: • java.io - Tratamento de entrada e sa´ de dados usando streams (abstra¸ao). ıda c˜ • java.lang - Classes b´sicas da linguagem Java. a • java.util - Classes de utilidades gen´ricas (estruturas de dados e manipula¸ao de e c˜ dados). • java.microedition.io - Exclusivamente da plataforma Java ME, incluindo as classes de conex˜o. a A CLDC 1.1 ´ uma configura¸˜o que engloba os pacotes da vers˜o 1.0 e suporta as e ca a seguintes caracter´ ısticas: • Ponto flutuante - Possibilita opera¸oes com vari´veis do tipo float/double. c˜ a • ClassLoading - Classe abstrata respons´vel por carregar outras classes. a • Garbage Collector - Coletor de lixo dos objetos. • Finalize() - Com esse m´todo ´ poss´ liberar recursos e executar outras opera¸˜es e e ıvel co de limpeza antes que o objeto seja recuperado por coleta de lixo (garbage collector ). • JNI (Java Native Interface) - Classe de interface nativa que possibilita a m´quina a virtual acessar bibliotecas acessadas com o c´digo nativo de um sistema. o • ThreadGroups - Possibilita que os processos sejam executados simultaneamente, possibilitando a organiza¸ao das threads em grupos. A multiThreading suporta c˜ m´ltiplas linhas de execu¸ao atrav´s das fun¸oes start(), interrupt(), pause(), re- u c˜ e c˜ sume() e stop() para o controle das threads.
  • 24. 3.3. Perfis 15 • RMI (Remote Method Invocation) - Permite o acesso a objetos remotos que podem ser invocados de diferentes m´quinas Java. a 3.3 Perfis Perfil ´ definido como um conjunto de APIs que especificam o n´ de interface de e ıvel aplica¸˜es para um classe de dispositivos (JCP, 2009c). Assim um perfil pode especificar co v´rios tipos de servi¸os e funcionalidades de alto n´ a c ıvel, como o ciclo de vida da aplica¸ao, c˜ elementos de interface gr´fica, persistˆncia de dados e meios de comunica¸˜o. Um perfil ´ a e ca e implementado no topo de uma configura¸ao, sendo assim intimamente ligado a esta, po- c˜ r´m compreende bibliotecas mais espec´ e ıficas que as disponibilizadas pelas configura¸oes, c˜ ou seja, o perfil complementa a configura¸ao adicionando classes que fornecem caracte- c˜ r´ ısticas apropriadas para um tipo particular de dispositivos. Tanto os perfis quanto as configura¸oes s˜o especifica¸˜es de baixo n´ c˜ a co ıvel. As aplica¸oes m´veis s˜o portanto constru´ c˜ o a ıdas sobre configura¸˜es e perfis e podem co apenas usar bibliotecas especificadas por estas. Uma configura¸ao pode conter v´rios c˜ a perfis, por´m um perfil ´ ligado somente a uma configura¸ao. E um perfil ainda pode ter e e c˜ outros perfis ligados a ele (TOPLEY, 2002). Para a configura¸˜o CLDC temos o perfil MIDP (Mobile Information Device Profile ca - JSR 37 ), que ´ amplamente utilizado e providencia o desenvolvimento para pequenos e dispositivos, de recursos limitados e com capacidade de conex˜o sem fio, como os celulares, a smartphones e alguns PDAs. No pr´ximo cap´ o ıtulo ser˜o abordados mais detalhes sobre o a perfil MIDP. 3.4 M´quinas Virtuais a A Sun especifica duas m´quinas virtuais para a configura¸ao CLDC: KVM e CLDC a c˜ HotSpot Implementation. • KVM ´ E uma m´quina virtual com fun¸oes reduzidas, com uma pequena mem´ria e com a c˜ o um coletor de lixo (garbage collector ) incorporado para a otimiza¸ao da mem´ria c˜ o (TOPLEY, 2002). Esta ´ uma VM (Virtual Machine) especificada pela SUN, que e implementa as necessidades e restri¸oes impostas pela configura¸˜o CLDC. O K do c˜ ca termo KVM surgiu para fazer alus˜o aos poucos kilobytes necess´rios para que a a a VM execute uma aplica¸ao. Ela n˜o compila o c´digo e sim o interpreta para o c˜ a o sistema operacional.
  • 25. 3.5. Pacotes Opcionais 16 • CLDC HotSpot Implementation ´ E uma VM de alto desempenho e robustez da SUN, para celulares e dispositivos de caracter´ısticas restritas. Foi implementada para ter um desempenho melhor que a KVM, utilizando a mesma quantidade de mem´ria restrita que os pequenos o dispositivos oferecem. Esta m´quina virtual suporta CLDC 1.0 e 1.1, por´m agora a e exige do processador pelo menos 32 bits com uma velocidade de clock de 60 MHz, 600KB de mem´ria RAM e 2 MB de mem´ria flash e ROM. Aplica tecnologias o o utilizadas na plataforma Java SE e Java EE, incorpora diversos designs inovadores, diminui o tempo de in´ ıcio das aplica¸oes, oferece vida longa a bateria e possui c˜ compila¸˜o dinˆmica das instru¸oes de bytecode em instru¸oes nativas, chamada de ca a c˜ c˜ compila¸˜o Just-in-time (SUN, 2008a). ca Segundo LUZ (2009), a compila¸˜o Just-in-time ´ uma das mudan¸as mais impor- ca e c tantes, pois a compila¸˜o dinˆmica pode ser cinquenta vezes mais r´pida que uma ca a a instru¸ao interpretada. c˜ 3.5 Pacotes Opcionais Pacotes opcionais s˜o componentes muito importantes da plataforma Java ME. Po- a demos enxergar como extens˜es de perfis, al´m de oferecerem apoio em ´reas com fun- o e a cionalidades restritas que alguns dispositivos e aplica¸oes precisam, tais como troca de c˜ mensagens, multim´ ıdia, servi¸os e localiza¸ao geogr´fica. c c˜ a Os perfis podem concentrar-se em apoiar apenas as capacidades que a maioria ou todos os dispositivos em uma classe necessitam, enquanto pacotes opcionais fornecem tipos espec´ ıficos de funcionalidades. Todos os pacotes opcionais do Java ME s˜o definidos a pela JCP, estes pacotes tamb´m s˜o chamados de APIs. Podendo ser obrigat´rios ou e a o n˜o, tal decis˜o cabe aos desenvolvedores ou fabricantes inclu´ a a ı-los em um determinado produto. Os pacotes opcionais passam por um processo de aprova¸ao atrav´s da MSA (Mobile c˜ e Service Architecture) ap´s serem constru´ o ıdos pelos desenvolvedores. Depois de aprovados s˜o disponibilizados seguindo as especifica¸oes da JCP. Alguns exemplos de pacotes opcio- a c˜ nais s˜o: API para suporte bluetooth (JSR 82), API para acesso as funcionalidades nativas a do aparelho como agenda, calend´rio e acesso a arquivos (JSR 75 - File Connection API ), a API de seguran¸a e servi¸os confi´veis (JSR 177), entre outras (SUN, 2009a). c c a
  • 26. Cap´ ıtulo 4 Perfil MIDP Neste cap´ıtulo s˜o apresentadas as caracter´ a ısticas do perfil MIDP, bem como o fun- cionamento de uma aplica¸ao. Ser˜o apresentados os principais conceitos relacionados ` c˜ a a interface e armazenamento persistente. 4.1 Vis˜o Geral do MIDP a O MIDP - Mobile Information Device Profile ´ um perfil suportado pela configura¸˜o e ca CDLC, onde juntos providenciam um ambiente padr˜o de execu¸ao Java para os mais a c˜ populares dispositivos m´veis, como os celulares e PDAs. Este perfil provˆ um conjunto de o e bibliotecas e classes que fornecem suporte ao desenvolvimento de aplica¸˜es que referem- co se a diferentes aspectos, como sistema de armazenamento persistente, interface com o usu´rio, transa¸oes seguras, gerˆncia de sons, entre outros. a c˜ e De acordo com JOHNSON (2007), o MIDP apresenta diversas funcionalidades, entre elas est˜o a reprodu¸ao de multim´ a c˜ ıdia, suporte a protocolos dos tipos HTTP e sockets, suporte ao sistema de cores RGB, defini¸˜o de formul´rios e itens, APIs para jogos e ca a valida¸ao de permiss˜es de seguran¸a e assinaturas digitais. c˜ o c Segundo a SUN (2006e), os recursos m´ ınimos de hardware do perfil MIDP s˜o: a • 130KB de mem´ria n˜o vol´til para persistˆncia de dados e bibliotecas da CLDC o a a e • 32KB de mem´ria vol´til para a execu¸˜o do Java o a ca • Conectividade com algum tipo de rede sem fio • Interface gr´fica a • Uma tela de pelo menos 96 pixels de largura por 54 de altura 17
  • 27. 4.1. Vis˜o Geral do MIDP a 18 Alguns recursos m´ ınimos de software tamb´m s˜o requeridos, tais como: possuir re- e a cursos suficientes para executar a m´quina virtual Java, tratamento de exce¸oes, pro- a c˜ cessamento de interrup¸˜es, acesso de leitura e escrita ` rede sem fio, mecanismos para co a capturar a entrada de dispositivos de entrada, recursos para ler e gravar em mem´ria n˜o o a vol´til, oferecendo suporte persistente aos dados e escrita de elementos gr´ficos na tela a a (JOHNSON, 2007). As especifica¸˜es deste perfil s˜o definidas pela JCP, definindo uma plataforma para co a desenvolvimento seguro e dinˆmico. Atualmente o MIDP possui as vers˜es 1.0 (JSR a o 37), 2.0 (JSR 118), 2.1 (JSR 118) e 3.0 (JSR 271). Por´m esta ultima ainda n˜o est´ e ´ a a dispon´ ıvel para utiliza¸ao. A vers˜o 1.0 trabalha integrada com a configura¸˜o CLDC c˜ a ca 1.0 ou 1.1. N˜o tem nenhuma API ativa para renderiza¸˜o, n˜o oferece suporte para a ca a acesso direto aos pixels de imagens, n˜o tem suporte para full screen/full canvas sem a uma API propriet´ria e tamb´m n˜o possui suporte direto para audio. Inclui APIs para a e a ´ o ciclo de vida de aplica¸˜es, conectividade de redes HTTP, interface com o usu´rio e co a armazenamento persistente. O unico protocolo de rede que o MIDP 1.0 suporta ´ o ´ e HTTP (SUN, 2002). Segundo a SUN (2006c), os pacotes suportados pela vers˜o 1.0 s˜o: a a • javax.microedition.io - Fornece suporte ao framework GenericConnection da confi- gura¸ao CLDC. c˜ • javax.microedition.lcdui - API que providencia um conjunto de caracter´ ısticas para a implementa¸˜o de interfaces com o usu´rio. ca a • javax.microedition.rms - Providencia um mecanismo de persistˆncia de dados para e MIDlets. • javax.microedition.midlet - O pacote MIDlet define aplica¸oes MIDP e intera¸oes c˜ c˜ entre as aplica¸˜es e o ambiente no qual a aplica¸ao ´ executada. co c˜ e A vers˜o 2.0 ´ compat´ com a vers˜o 1.0 e adiciona novas melhorias como suporte a e ıvel a a conex˜o segura (HTTPS), biblioteca de multim´ ` a ıdia, formul´rio de entrada de dados a aprimorada, sens´ melhoria na API de suporte a games, conceito de aplica¸˜es confi´veis ıvel co a (trusted ) e n˜o confi´veis (untrusted ). Al´m de HTTPS, o MIDP 2.0 suporta HTTP, a a e datagramas, sockets e SMS (Short Message Service). Quanto a multim´ ıdia, um conjunto de APIs foram introduzidas, que s˜o na verdade um subconjunto da Mobile Media API a (MMAPI). Com estas APIs podem ser gerados simples toques, sequˆncias mais completas e ou at´ mesmo m´sicas completas no formato WAV, al´m de poderem ser implementados e u e em outros formatos. Dentre as mudan¸as nos formul´rios de entrada destacam-se a nova aparˆncia do Form c a e que ´ consideravelmente mais sofisticada do que era no MIDP 1.0 e a classe Item, onde e
  • 28. 4.1. Vis˜o Geral do MIDP a 19 agora podem ser especificados layouts horizontais, verticais, novas linhas antes ou depois de itens, entre outros. Um novo item tamb´m foi criado, o Spacer, que serve pra colocar e espa¸amentos entre os demais itens dispon´ c ıveis. Tamb´m foi introduzido o tipo pop up ao e item choiceGroup, que ser´ estudado a frente. a ` No MIDP 2.0 tamb´m foram estendidos os comandos de manuseio. Adicionar co- e mandos aos itens agora ´ permitido. Tamb´m foi introduzida a classe CustomItem, que e e permite ao programador criar seus pr´prios itens. Nesta vers˜o o suporte a jogos ganha o a uma melhoria com o suporte a camadas na tela. Uma camada pode conter um fundo, ou- tra mostrar objetos, uma terceira camada poderia mostrar esfeitos especias ou qualquer outra coisa. Outra mudan¸a ´ o surgimento da classe GameCanvas, uma subclasse de c e Canvas - classe de baixo n´ que proporciona o desenvolvimento de jogos. Nesta vers˜o ıvel a as imagens podem ser representadas em arrays de inteiros e tamb´m suporta imagens em e RGB (SUN, 2002). Segundo a SUN (2006d), os pacotes que foram adicionados a esta vers˜o s˜o: a a • javax.microedition.lcdui.game - Providencia classes para o desenvolvimento de con- te´do rico para jogos em dispositivos wireless. u • javax.microedition.media - Compat´ com as especifica¸oes da API Mobile Media ıvel c˜ (JSR 135). • javax.microedition.media.control - Define o tipo espec´ ıfico, control, que pode ser usado como um player. • javax.microedition.pki - Autentica informa¸˜es para conex˜es seguras, atrav´s de co o e certificados. A vers˜o 2.1 do MIDP refor¸a a especifica¸˜o MIDP 2.0 tornando a diretiva layout LC- a c ca DUI obrigat´ria, os pacotes javax.microedition.io.SocketConnection e javax.microedition- o .io.HTTPConnection n˜o s˜o mais opcionais, entre outros requisitos para aprimorar a a a vers˜o 2.0. a A vers˜o 3.0 traz melhor suporte para dispositivos com telas maiores, suporte a MI- a Dlets para desenhar em telas secund´rias, armazenamento RMS seguro e acesso remoto a a bancos RMS (JCP, 2009a). Esta vers˜o requer no m´ a ınimo 1MB de mem´ria vol´til e tela o a de pelo menos 176x220 pixels. Ela ´ compat´ com o CLDC 1.0, mas o recomendado ´ e ıvel e o 1.1 e possui compatibilidade com as outras vers˜es do MIDP. No MIDP 3.0 a tela de o splash pode ser carregada sem a necessidade de ser criada uma classe em canvas com uma imagem e tempo controlado manualmente. Isto pode ser feito atrav´s de um atributo no e arquivo JAD, um arquivo de descri¸ao da aplica¸ao, que ser´ explicado posteriormente. c˜ c˜ a Os protetores de tela agora s˜o aplica¸˜es que s˜o destru´ a co a ıdas pelo gerenciador quando
  • 29. 4.2. MIDlets 20 alguma tecla ´ pressionada ou algum evento ´ disparado. Al´m destas funcionalidades, e e e o MIDP 3.0 apresenta suporte a IP vers˜o 6, o que possibilita fazer parse de um ende- a re¸o IPv6 e a possibilidade de compartilhar bibliotecas entre os MIDlets em tempo de c execu¸˜o, conhecido como LIBlets (LUZ, 2009). ca 4.2 MIDlets ´ E uma aplica¸ao Java destinada para dispositivos m´veis desenvolvida com a utiliza¸ao c˜ o c˜ do perfil MIDP, que est´ vinculado a configura¸˜o CLDC (MUCHOW, 2001). a ca Todo dispositivo m´vel tem um gerenciador de aplicativos (AM - Application Mana- o ger ) que controla os aplicativos a serem instalados, onde e como ser˜o armazenados e a como ser˜o executados. A comunica¸ao do gerenciador com o MIDlet acontece pela classe a c˜ MIDlet do pacote javax.microedition.midlet.MIDlet. Os MIDlets devem herdar esta classe MIDlet que cont´m m´todos que inicializam, resumem, interrompem a execu¸˜o e des- e e ca troem MIDlets. Uma aplica¸ao ´ iniciada quando o AM invoca o m´todo startApp(), colocando a c˜ e e aplica¸˜o no modo ativo. Enquanto estiver executando ela pode ser pausada pela AM ca atrav´s do m´todo pauseApp(), isto pode ocorrer quando uma chamada for recebida por e e exemplo ou o pr´prio usu´rio pode pausar a aplica¸ao. E quando a aplica¸ao ´ encerrada o a c˜ c˜ e ela passa para o estado destru´ ıdo, atrav´s do m´todo destroyApp(), que limpa todos os e e recursos para fechar a aplica¸˜o (JOHNSON, 2007). ca O ciclo de vida do MIDlet ´ apresentado na Figura 4.1. e Figura 4.1: Ciclo de vida do MIDlet. Estes trˆs m´todos, segundo MUCHOW (2001), trata-se da comunica¸˜o que parte e e ca do gerenciador de aplicativos para o MIDlet. Al´m destes m´todos, tamb´m existem e e e outros trˆs onde a comunica¸ao parte do MIDlet para o gerenciador de aplicativos. Estes e c˜ m´todos s˜o: e a
  • 30. 4.3. MIDlets Suite 21 notifyDestroy(): Avisa ao gerenciador que pode desligar a MIDlet. notifyPaused(): Envia o pedido de pausa para o gerenciador caso a MIDlet queira pausar. resumeRequest(): Avisa ao gerenciador que a MIDlet pode tornar-se ativa novamente. 4.3 MIDlets Suite MIDlet Suite consiste em um ou mais MIDlets que s˜o juntados em um Java Ar- a chive (JAR). E´ composto por classes Java, recursos e um arquivo de manifesto, que est˜o a situados dentro do arquivo JAR e um arquivo de descri¸ao, chamado Java Application c˜ Descriptor (JAD). Dentre os recursos est˜o imagens, dados da aplica¸˜o, entre outros. a ca No arquivo de manifesto, cuja extens˜o ´ .mf, est´ a descri¸ao do JAR. E o arquivo JAD a e a c˜ descreve os detalhes da aplica¸˜o, repetindo muitos do dados que est˜o no arquivo de ca a manifesto, por´m este arquivo est´ fora do JAR e pode ser acessado antes de se insta- e a lar o arquivo JAR no aplicativo (JOHNSON, 2007). As pr´ximas subse¸oes descrevem o c˜ detalhadamente cada um desses arquivos. 4.3.1 JAR Todas as MIDlets s˜o empacotadas antes de serem transferidas a um dispositivo, isso a ´ feito atrav´s de um m´todo de compress˜o onde s˜o colocadas todas as informa¸oes em e e e a a c˜ um unico arquivo cuja extens˜o ´ .JAR. Este arquivo engloba classes Java, recursos e ´ a e informa¸˜es do empacotamento, com citado anteriormente (MUCHOW, 2001). co O arquivo JAR providencia muitos benef´ ıcios, como: seguran¸a, atrav´s de assinaturas c e digitais; compress˜o; empacotamento de extens˜es, juntando v´rios tipos de extens˜es a o a o diferentes em uma unica: o .JAR; portabilidade e o fato de quando ´ necess´rio fazer o ´ e a download de uma aplica¸˜o apenas um arquivo deve ser baixado (SUN, 2008b). ca 4.3.2 JAD Conforme estudado, al´m do JAR ´ criado um arquivo em separado de extens˜o .JAD e e a que cont´m informa¸oes sobre o MIDlet. Este arquivo ´ usado muitas vezes para preparar e c˜ e o JAR para ser instalado, otimizando a instala¸ao do aplicativo, por´m nem todos os c˜ e aparelhos precisam ler o .JAD para realizar a instala¸˜o. O arquivo JAD possui a seguinte ca estrutura: MIDlet-Name: Nome da Suite MIDlet. MIDlet-Version: Vers˜o da MIDlet. a MIDlet-Vendor : Desenvolvedor da MIDlet.
  • 31. 4.4. Interface 22 MIDlet-Icon: Especifica o ´ ıcone da tela inicial da aplica¸ao. c˜ MIDlet-Description: Descri¸˜o da aplica¸˜o. ca ca MIDlet-info-URL: Endere¸o para um arquivo de informa¸oes (JAR). c c˜ MIDlet-DATA-Size: Tamanho dos dados. 4.4 Interface Os dispositivos m´veis que implementam o perfil MIDP possuem diversas restri¸oes o c˜ quando se trata de interface, podendo variar em tamanho de tela, n´mero de cores apresen- u tadas na tela, disposi¸˜o dos bot˜es, etc. E estas informa¸oes s˜o acessadas pela MIDlet ca o c˜ a somente em tempo de execu¸ao. Sendo assim, o MIDP s´ permite a utiliza¸˜o de objetos c˜ o ca visuais simples, n˜o sendo permitida a implementa¸˜o de objetos comuns na vers˜o Java a ca a para desktop (JOHNSON, 2007). O Java ME tem como padr˜o para constru¸ao de interfaces a biblioteca LCDUI, que a c˜ ` ´ respons´vel pelos componentes que formam a interface de aplica¸oes MIDP. Nesta se- e a c˜ ¸ao estudaremos algumas classes desta biblioteca, que est˜o dispostas de acordo com a c˜ a hierarquia mostrada na Figura 4.2. Figura 4.2: Hierarquia de classes.
  • 32. 4.4. Interface 23 Display e Displayable Para desenvolver interfaces que se encaixem em dispositivos m´veis com diferentes o caracter´ısticas de tela, as aplica¸˜es s˜o desenvolvidas com uma certa abstra¸ao. Para co a c˜ acessar as informa¸oes de um determinado aparelho existe a classe Display e cada MIDlet c˜ possui sua pr´pria instˆncia desta classe que pode ser acessada pelo m´todo getDisplay(), o a e que geralmente est´ contido no m´todo startApp(), pois o Display s´ pode ser acessado a e o depois que aplica¸˜o tenha sido iniciada. ca Portanto, a tela do dispositivo ´ representada por uma instˆncia da classe Display, e a que representa o hardware, e para que seja mostrado algo na tela devemos passar um objeto Displayable para o objeto da classe Display. Displayable ´ uma classe abstrata e que controla o que ´ mostrado na tela e os comandos enviados pelos usu´rios. Eles e a representam conte´dos de uma tela na qual h´ intera¸ao com o usu´rio (JOHNSON, u a c˜ a 2007). Cada aplica¸ao possui apenas uma instˆncia da classe Display, sendo assim podem c˜ a existir v´rios objetos Displayable mas apenas um ´ mostrado por vez (MUCHOW, 2001). a e Os objetos Displayable que est˜o na mem´ria, mas n˜o est˜o sendo mostrados est˜o no a o a a a chamado background e o objeto que est´ sendo mostrado est´ no foreground. Portanto os a a objetos que est˜o no background n˜o tem acesso ao Display. Para mostrar um Displayable a a na tela usamos o m´todo setCurrent() e para obter qual objeto est´ sendo mostrado no e a Display usamos o m´todo getCurrent() (JOHNSON, 2007). e A classe Displayable da origem a duas outras classes: Screen e Canvas. Ambas s˜o a classes para representar interfaces, por´m a primeira classe, juntamente com suas subclas- e ses formam componentes de interface de alto n´ e a segunda de baixo n´ (MUCHOW, ıvel ıvel 2001). Screen Screen ´ uma classe que cont´m objetos gr´ficos prontos, onde cada uma pode ter uma e e a aparˆncia, variando de acordo com o dispositivo em que esta sendo executada a aplica¸ao e c˜ (JOHNSON, 2007). Screen e suas heran¸as s˜o classificadas como objetos de interface de c a alto n´ (High-Level APIs) e as heran¸as desta classe s˜o as classes Form, List, Alert e ıvel c a Textbox (MUCHOW, 2001). Form Form ´ um formul´rio o qual pode conter textos, imagens e outros componentes para e a serem exibidos no visor. V´rios componentes podem ser colocados em um Form e se a houver necessidade ele apresenta barra de rolagem autom´tica para mostrar todos estes a componentes visuais. Por´m nada muito extenso ´ vi´vel para aplica¸oes m´veis. e e a c˜ o
  • 33. 4.4. Interface 24 Esses componentes que podem ser adicionados em um Form s˜o subclasses da classe a Item e ser˜o estudados posteriormente. Um Form possui m´todos para adicionar, inserir, a e apagar e substituir componentes. Estes componentes da classe Item s´ pode ser inseri- o dos em um Form e n˜o em outras telas da classe Screen, como List, Alert ou Textbox a (MUCHOW, 2001). Item Conforme mostrado um Item ´ um componente que pode ser inserido em um Form e e suas subclasses s˜o: a • StringItem ´ E um simples texto est´tico, ou seja, n˜o pode ser editado. a a • TextField ´ E um campo para entrada e/ou edi¸ao de texto. Podendo ser associadas regras a c˜ este. Por exemplo: aceitar somente n´meros, qualquer caracter, ser um campo de u senha, entre outros. • ImageItem Permite inserir uma imagem. • ChoiceGroup ´ E uma lista de escolhas, dentro de um Form. Possui os tipos: m´ltiplo, exclusivo u ou pop up. 1. M´ltiplo: Podem ser selecionadas v´rias op¸˜es, marcando uma caixa de che- u a co cagem que acompanha os elementos da lista; 2. Exclusivo: Pode ser selecionado apenas uma op¸ao e esta ´ marcada com um c˜ e radioButton. 3. Pop up: Pode ser selecionada apenas uma op¸ao. A lista ´ exibida como c˜ e uma comboBox, ou seja, os elementos ficam escondidos e quando clicada esta lista toda ´ exibida. Ap´s a sele¸ao de um elementos os outros elementos s˜o e o c˜ a escondidos novamente. • DataField Campo utilizado para exibir e/ou entrar com data e/ou hora.
  • 34. 4.4. Interface 25 • Gauge ´ E uma representa¸ao gr´fica de um n´mero inteiro. Ele permite que o usu´rio c˜ a u a defina um n´ ıvel, como o volume por exemplo, se for um Gauge interativo. Se for n˜o interativo ´ somente o programa que o controla (MUCHOW, 2001). a e • Spacer Determina um espa¸amento vertical e/ou horizontal m´ c ınimo entre os componentes de um Form. Ele ´ utilizado por quest˜es de design de layout. e o • CustomItem Utilizado para criar itens espec´ ıficos, atrav´s de desenhos, utilizando a classe Graphics e da API de baixo n´ (MATTOS, 2005). ıvel List ´ E uma lista que permite ao usu´rio selecionar op¸oes. Estas podem ser tanto uma a c˜ String quanto uma imagem. O List pode ser exclusivo, m´ltiplo ou impl´ u ıcito. Impl´ ıcito ´ e quanto a lista ´ exibida sem nenhum marcador e somente uma op¸˜o pode ser escolhida, e ca gerando um evento quando ´ selecionada uma das op¸oes. Os outros dois tipos funcionam e c˜ igualmente ao ChoiceGroup (MATTOS, 2005). Alert ´ E uma tela de informa¸˜o ao usu´rio. Pode conter uma mensagem de erro, de sucesso, ca a de informa¸ao, entre outras. Ele pode ser programado para ser exibido durante um tempo c˜ pr´ determinado, pode ser composto de um texto e uma imagem e sua aparˆncia varia de e e acordo com o dispositivo m´vel usado (MATTOS, 2005). o TextBox e c˜ ´ Basicamente ´ uma tela que serve para entrada e edi¸ao de texto. E como se fosse um Item textField, por´m s´ existe ele na tela. Em um textBox tamb´m podem ser usadas e o e regras, assim como em um textField (SUN, 2006b). Canvas Canvas ´ uma classe de baixo n´ e ıvel, que proporciona maior liberdade na implementa¸˜o ca a ´ destinada a aplica¸oes que necessitam de posicionamento preciso dos gr´ficos e eventos. E c˜ dos elementos gr´ficos, sendo portanto muito utilizada para a cria¸ao de jogos. a c˜