PJ5-V2.indd 1
18/07/16 18:27
EDIÇÃO FCA – Editora de Informática, Lda. Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 fca@fca.pt www.fca.pt DISTRIBUIÇÃO Lidel – Edições Técnicas, Lda. Rua D. Estefânia, 183, R/C Dto. – 1049-057 Lisboa Tel: +351 213 511 448 lidel@lidel.pt www.lidel.pt LIVRARIA Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 * Fax: +351 213 522 684 livraria@lidel.pt
Copyright © 2016, FCA – Editora de Informática, Lda. ISBN edição impressa: 978-972-722-840-9 4.ª edição atualizada impressa: junho 2014 5.ª edição atualizada impressa: julho 2016
Impressão e acabamento: Tipografia Lousanense - Lousã Depósito Legal n.º 412636/16 Capa: José M. Ferrão – Look-Ahead
Marcas Registadas de FCA – Editora de Informática, Lda. –
®
®
®
Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções. Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas à data de publicação da mesma. Os nomes comerciais referenciados neste livro têm patente registada. Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP – Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas.
ÍNDICE GERAL PRÓLOGO ...................................................................................................... XIII PARTE I – INTRODUÇÃO AO JAVA 1. O PRIMEIRO PROGRAMA.................................................................................... 3 1.1 Introdução ........................................................................................................................................... 3 1.2 Kit de Desenvolvimento Java ............................................................................................................ 4 1.3 Construir e Testar um Programa ...................................................................................................... 6 2. INTRODUÇÃO HISTÓRICA ......................................................................... 15 2.1 Introdução ......................................................................................................................................... 15 2.2 O Java e a Internet ............................................................................................................................ 16 2.3 WWW e Java ..................................................................................................................................... 17 3. POTENCIALIDADES DO JAVA ...................................................................... 23 3.1 Applets: Animação em Páginas WWW ........................................................................................... 23 3.2 Construção de Aplicações ............................................................................................................... 28 3.3 Aplicações Móveis e de Televisão .................................................................................................. 31 3.4 O Futuro do Java............................................................................................................................... 33 4. INTRODUÇÃO AO JAVA ............................................................................ 35 4.1 Programação Orientada a Objetos .................................................................................................. 35 4.2 Conceitos do Java.............................................................................................................................. 37 5. SINTAXE JAVA ..................................................................................... 43 5.1 Expressões ......................................................................................................................................... 43 5.2 Tipos de Dados ................................................................................................................................. 44 5.3 Variáveis ............................................................................................................................................ 46 5.4 Aritmética .......................................................................................................................................... 50 5.5 Operações Lógicas, Comparações, Condicionais e Outras ......................................................... 52 5.6 Arrays.................................................................................................................................................. 60 5.7 Collections ........................................................................................................................................... 62 5.8 Java Time ........................................................................................................................................... 65 5.9 Controlo de Fluxo e Ciclos .............................................................................................................. 66 5.9.1 Expressões Condicionais ........................................................................................................ 67 5.9.1.1 Expressões if ... else ...................................................................................................... 67 5.9.1.2 Expressões ?: ................................................................................................................ 67 5.9.2 Expressões Switch .................................................................................................................... 68 5.9.3 Ciclos ......................................................................................................................................... 70 5.9.3.1 Ciclo while ..................................................................................................................... 71 5.9.3.2 Ciclo do ... while ............................................................................................................ 73 5.9.3.3 Ciclo for ......................................................................................................................... 73 5.9.3.4 Break, Continue e Labels................................................................................................ 74 5.10 Exemplos.......................................................................................................................................... 76 Exemplo 5.1 .............................................................................................................................................. 76 © FCA – Editora de Informática
VIII
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO Exemplo 5.2 .............................................................................................................................................. 78 Exemplo 5.3 .............................................................................................................................................. 78
6. OBJETOS, CLASSES E MÉTODOS .................................................................. 83 6.1 Conceitos............................................................................................................................................ 83 6.2 Criação de Classes ............................................................................................................................ 84 6.3 Utilizando Objetos ............................................................................................................................ 86 6.3.1 Acesso às Variáveis ................................................................................................................. 86 6.3.2 Objetos e Métodos ................................................................................................................... 87 6.3.3 Exemplo .................................................................................................................................... 87 6.4 Métodos ............................................................................................................................................. 90 6.4.1 Tipos de Métodos .................................................................................................................... 90 6.4.2 Questões de Sintaxe ................................................................................................................ 90 6.4.2.1 “This” ............................................................................................................................ 96 6.4.2.2 Construtores................................................................................................................. 96 6.4.2.3 Finalizadores ................................................................................................................ 98 6.4.2.4 Mecanismo de Reescrita (Override) ........................................................................... 98 6.4.2.5 Exceções ...................................................................................................................... 100 6.5 Métodos Predefinidos .................................................................................................................... 103 6.6 Interfaces .......................................................................................................................................... 104 6.7 Packages ............................................................................................................................................ 106 6.7.1 Bibliotecas de Classes............................................................................................................ 106 6.8 Criação de Aplicações Java ............................................................................................................ 108 PARTE II – CRIAÇÃO DE INTERFACES EM JAVA 1. INTRODUÇÃO ÀS INTERFACES EM JAVA ............................................................... 115
2. APPLETS .................................................................................................... 117 2.1 Applets: Conceitos Básicos.............................................................................................................. 117 2.1.1 Applets e Páginas WWW ....................................................................................................... 120 2.1.2 Parâmetros Passados às Applets ........................................................................................... 129 2.1.3 Construção de Applets ........................................................................................................... 131 2.2 Elementos Gráficos ......................................................................................................................... 135 2.2.1 Linhas ...................................................................................................................................... 136 2.2.2 Retângulos .............................................................................................................................. 136 2.2.3 Polígonos ................................................................................................................................ 139 2.2.4 Ovais e Círculos ..................................................................................................................... 139 2.2.5 Curvas e Arcos ....................................................................................................................... 140 2.3 Texto, Fonts e Cores ........................................................................................................................ 141 2.3.1 Cores ....................................................................................................................................... 143 2.3.2 Suporte de Texto Rich Text ................................................................................................... 145 2.4 Animação, Imagens e Som ............................................................................................................ 147 2.4.1 Imagem ................................................................................................................................... 149 2.4.2 Som .......................................................................................................................................... 153 2.5 Gráficos 2D ...................................................................................................................................... 156 2.5.1 Transformações...................................................................................................................... 163 © FCA – Editora de Informática
ÍNDICE GERAL
IX
2.6 Threads .............................................................................................................................................. 165 2.7 Exemplos Práticos........................................................................................................................... 170 3. INTERFACE WINDOWS .................................................................................. 181 3.1 Introdução ....................................................................................................................................... 181 3.2 Objetos Básicos ................................................................................................................................ 182 3.2.1 Labels........................................................................................................................................ 182 3.2.2 Botões ...................................................................................................................................... 184 3.2.3 Campo de Texto ..................................................................................................................... 185 3.2.4 Botões Radio ............................................................................................................................ 186 3.2.5 Caixas de Seleção ................................................................................................................... 188 3.2.6 Caixas de Escolha .................................................................................................................. 189 3.2.7 Áreas de Texto ....................................................................................................................... 190 3.2.8 Listas de Escolha .................................................................................................................... 192 3.2.9 Barras de Deslocação............................................................................................................. 193 3.2.10 Organização dos Elementos Gráficos ............................................................................... 194 3.3 Objetos Avançados ......................................................................................................................... 199 3.3.1 Janelas ..................................................................................................................................... 199 3.3.2 Menus...................................................................................................................................... 201 3.3.3 Caixas de Diálogo .................................................................................................................. 202 3.3.4 Caixas de Diálogo (Ficheiros) .............................................................................................. 204 3.4 Eventos ............................................................................................................................................. 205 3.4.1 Gestão do Evento pelo Próprio Objeto ............................................................................... 205 3.4.2 Gestão de Eventos via Listener ............................................................................................. 207 3.5 Swing ............................................................................................................................................... 215 3.5.1 JButton .................................................................................................................................... 217 3.5.2 JLabel....................................................................................................................................... 220 3.5.3 JToggleButton ........................................................................................................................ 221 3.5.4 JCheckbox ............................................................................................................................... 222 3.5.5 JPanel....................................................................................................................................... 222 3.5.6 JRadioButton .......................................................................................................................... 223 3.5.7 JComboBox ............................................................................................................................. 224 3.5.8 JScrollBar ................................................................................................................................ 225 3.5.9 JSlider ...................................................................................................................................... 225 3.5.10 Campos de Texto ................................................................................................................. 226 3.5.11 JToolBar ................................................................................................................................ 228 3.5.12 JPanel..................................................................................................................................... 230 3.5.13 JInternalFrame ..................................................................................................................... 231 3.5.14 JTable..................................................................................................................................... 231 3.5.15 Menus.................................................................................................................................... 232 3.5.16 Diálogos ................................................................................................................................ 233 3.6 Novo Controlos DatePicker e TreeTable ..................................................................................... 235 3.7 Exemplo Prático .............................................................................................................................. 236 4. I/O, CONCORRÊNCIA E COMUNICAÇÕES ............................................................ 243 4.1 I/O e Streams .................................................................................................................................... 243 4.1.1 Streams de Entrada ................................................................................................................ 243 © FCA – Editora de Informática
X
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
4.1.2 Streams de Saída ..................................................................................................................... 245 4.1.3 Pipes ......................................................................................................................................... 247 4.2 Invocação de Links .......................................................................................................................... 252 4.3 Comunicações TCP/IP .................................................................................................................... 254 4.4 Multithreading .................................................................................................................................. 261 5. GESTÃO DE EVENTOS E INTERATIVIDADE ........................................................... 267 5.1 Rato................................................................................................................................................... 267 5.1.1 Pressionar Botão do Rato ...................................................................................................... 268 5.1.2 Largar Botão do Rato ............................................................................................................ 269 5.1.3 Rato Entra na Applet .............................................................................................................. 272 5.1.4 Rato Sai da Applet .................................................................................................................. 272 5.1.5 Mover rato com Botão em Cima .......................................................................................... 273 5.1.6 Mover rato com Botão em Baixo.......................................................................................... 273 5.1.7 Efetuar um Clique ................................................................................................................. 273 5.2 Teclado ............................................................................................................................................. 274 5.2.1 Pressionar Tecla ..................................................................................................................... 274 5.2.2 Largar Tecla ............................................................................................................................ 277 5.2.3 Escrever com Tecla ................................................................................................................ 277 5.2.4 Teclas Especiais...................................................................................................................... 277 5.3 Gestão Única de Eventos ............................................................................................................... 279 5.4 Outros Eventos................................................................................................................................ 279 5.5 Exemplos Práticos........................................................................................................................... 281 PARTE III – JAVA NA WEB 1. INTRODUÇÃO AO JAVA NA WEB ....................................................................... 291 2. SERVLETS .................................................................................................. 293 2.1 Introdução ....................................................................................................................................... 293 2.2 Implementação de Servlets ............................................................................................................. 295 2.3 Sessões e Contexto .......................................................................................................................... 301 2.4 Exemplo Prático .............................................................................................................................. 309 3. JAVA SERVER PAGES..................................................................................... 317 3.1 Introdução, Arquitetura e Conceitos Básicos .............................................................................. 317 3.2 Sintaxe JSP ....................................................................................................................................... 321 3.2.1 Diretivas.................................................................................................................................. 321 3.2.2 Elementos de Scripting .......................................................................................................... 323 3.2.3 Objetos implícitos .................................................................................................................. 326 3.2.4 Ações ....................................................................................................................................... 329 3.3 Exemplo Prático .............................................................................................................................. 334 3.4 Conclusão ........................................................................................................................................ 340 4. ARQUITETURA DE APLICAÇÕES JAVA ................................................................. 341 4.1 Arquiteturas Java: JSE e JEE .......................................................................................................... 341 4.2 Aplicações Web em Ambiente JEE ................................................................................................ 358 4.3 Model View Controller (MVC) ......................................................................................................... 362 4.4 Open Services Gateway Initiative (OSGi) ........................................................................................ 363 © FCA – Editora de Informática
ÍNDICE GERAL
XI
5. JAVA SERVER FACES ..................................................................................... 367 5.1 Introdução ....................................................................................................................................... 367 5.2 Exemplo Prático .............................................................................................................................. 368 PARTE IV – JAVA EMPRESARIAL 1. INTRODUÇÃO AO JAVA EMPRESARIAL ................................................................ 383 2. COMUNICAÇÕES E DADOS............................................................................... 385 2.1 Remote Method Invocation (RMI) .................................................................................................... 385 2.2 JDBC ................................................................................................................................................. 392 2.3 Java Beans ........................................................................................................................................ 397 2.4 CORBA ............................................................................................................................................. 404 2.5 Segurança......................................................................................................................................... 405 3. EXPRESSÕES LAMBDA E INTERFACES FUNCIONAIS ................................................ 409 3.1 Expressões Lambda .......................................................................................................................... 409 3.2 Interfaces Funcionais ...................................................................................................................... 411 4. CORE JEE:ENTERPRISE JAVA BEANS ................................................................ 413 4.1 Arquitetura e Conceitos Básicos ................................................................................................... 413 4.2 Lógica de Negócio e Session Beans .............................................................................................. 431 4.3 Persistência e Entity Beans ............................................................................................................ 436 4.4 Message-Driven Beans (MDB) ...................................................................................................... 448 4.5 Transações ....................................................................................................................................... 450 4.6 Conclusão ........................................................................................................................................ 452 5. MESSAGING ................................................................................................ 453 5.1 Javamail ........................................................................................................................................... 453 5.1.1 javax.mail.Session .................................................................................................................. 461 5.1.2 javax.mail.Authenticator ...................................................................................................... 461 5.1.3 javax.mail.Message................................................................................................................ 462 5.1.4 javax.mail.Address ................................................................................................................ 463 5.1.5 javax.mail.Store e javax.mail.Folder.................................................................................... 464 5.1.6 javax.mail.Transport ............................................................................................................. 464 5.2 Java Message System (JMS) ........................................................................................................... 465 6. WEBSERVICES ............................................................................................ 469 6.1 Introdução ....................................................................................................................................... 469 6.2 SOAP ................................................................................................................................................ 470 6.3 WSDL ............................................................................................................................................... 471 6.4 UDDI ................................................................................................................................................ 472 6.5 JEE e WebServices............................................................................................................................. 472 7. TECNOLOGIAS DE SUPORTE ............................................................................ 485 7.1 Unified Modeling Language (UML) ................................................................................................. 485 7.2 Hibernate ......................................................................................................................................... 488 7.3 Service Oriented Architecture (Soa) ................................................................................................. 488 7.4 Assyncronous JavaScript and XML (Ajax) ...................................................................................... 489 7.5 Business Process Execution Language (BPEL) ................................................................................. 489 © FCA – Editora de Informática
XII
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
8. JAVA MÓVEL ............................................................................................... 491 8.1 Java Micro Edition (JME) ............................................................................................................... 491 8.1.1 Java Card .................................................................................................................................. 492 8.1.2 Embedded Java ......................................................................................................................... 493 8.1.3 Connated Limited Device Configuration (CLDC) ................................................................... 493 8.1.4 Mobile Information Device Profile (MIDP) ............................................................................. 493 8.1.5 Connected Device Configuration (CDC) ................................................................................. 494 8.1.6 Symbian EPOC (Personal Java) ............................................................................................. 494 8.1.7 Utilizando o J2ME ................................................................................................................. 494 8.2 HTML5 e Multidispositivo ............................................................................................................ 498 8.3 Android............................................................................................................................................ 499 ANEXO – REFERÊNCIAS ONLINE E LISTA DE CLASSES ................................................ 509 A.1 Referências Online ........................................................................................................................ 509 A.2 Lista de Classes ............................................................................................................................. 510 GLOSSÁRIO DE TERMOS – PORTUGUÊS EUROPEU/PORTUGUÊS DO BRASIL ...................... 517 ÍNDICE REMISSIVO ........................................................................................... 519
© FCA – Editora de Informática
PRÓLOGO Quando escrevi a primeira versão do livro “Programação em Java”, em 1997, o Java era já a coqueluche da Internet. Por todo o lado se falava na linguagem de programação que iria mudar o mundo e nas muitas potencialidades que adviriam da sua utilização na World Wide Web em termos de interatividade e de animação. As alterações profundas que me vi obrigado a fazer nas edições subsequentes são bem a prova do tremendo dinamismo que esta linguagem e tecnologia apresentam e que a transformaram na principal tecnologia de desenvolvimento Web no mundo. Mas o Java evoluiu para uma plataforma de desenvolvimento completa, vocacionada para todo o tipo de utilização, já não só para o efémero mundo das aplicações Web, mas agora também para o meio das aplicações corporativas de natureza crítica e para o universo das aplicações móveis e dos sistemas embebidos. Esta nova edição é lançada numa altura em que o Java 8 se afirma, num momento em que as interfaces por plug-in começam a ser descontinuadas nos browsers e em que é generalizada a sua adoção em múltiplos ambientes de desenvolvimento. O leitor poderá encontrar, hoje em dia, aplicações Java em todo o tipo de dispositivos e equipamentos informáticos e em múltiplos ambientes aplicacionais, que vão desde os portais e gestores de conteúdos às aplicações de suporte a operações em empresas de serviços, abrangendo todos os setores de atividade. O projeto conta agora com 4 partes: - Introdução ao Java – Introduz a linguagem e a tecnologia, descrevendo a sintaxe básica e focando os aspetos fundamentais da linguagem. - Criação de Interfaces em Java – Descreve as interfaces tradicionais da linguagem, incluindo as applets e a interface Windows. - Java na Web – Totalmente dedicada à forma com o Java se utiliza na Web nos dias de hoje, seja em sites, seja em aplicações dos mais variados tipos. - Java Empresarial – Descreve a forma como o Java é utilizado para implementar aplicações no contexto empresarial. A evolução continuou no sentido da execução do Java em todos os tipos de dispositivos, tornando cada dispositivo eletrónico como um cliente Java de uma qualquer aplicação remota, acessível pela Internet fixa ou móvel. O espírito do texto manteve-se inalterado ao longo destes anos, mesmo que o texto tenha evoluído ao sabor da tecnologia, continuando a ser um guia de introdução à linguagem Java nas suas várias vertentes, procurando contribuir para o aperfeiçoamento © FCA – Editora de Informática
XIV
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
dos utilizadores mais avançados e ilustrando todos os conceitos com exemplos práticos. Por questões práticas, e apesar de esta edição estar segundo o Novo Acordo Ortográfico, foi mantida a denominada ortografia antiga em excertos de código de programação e figuras correspondentes. Procurou-se também enquadrar a tecnologia Java no atual panorama tecnológico dos sistemas de informação, nomeadamente fazendo introduções temáticas a diversas tecnologias relacionadas ou conexas. Boa leitura! julho de 2016 Pedro Alexandre Coelho pac@pedrocoelho.com www.pedrocoelho.com
© FCA – Editora de Informática
PARTE I
1
INTRODUÇÃO AO JAVA
2
A primeira parte do livro faz a introdução à linguagem e à tecnologia Java, descrevendo a sintaxe básica e focando os aspetos fundamentais.
CAP.1 O Primeiro Programa CAP.2 Introdução Histórica CAP.3 Pontencialidades do Java CAP.4 Introdução ao Java CAP.5 Sintaxe Java CAP.6 Objetos, Classes e Métodos
O conteúdo destes capítulos encontra-se também disponível em formato eBook. Visite a nossa página www.fca.pt.
1
O PRIMEIRO PROGRAMA
1
A Internet e as tecnologias da World Wide Web serviram de base para o grande desenvolvimento das tecnologias de informação e de comunicação, em várias vertentes. Ao longo dos últimos 20 anos, vimos aparecer sucessivas tecnologias cada vez mais dinâmicas e interativas, vimos muitas das nossas aplicações tradicionais migrarem de ambientes locais ou cliente-servidor para a Web, e vimos também os sistemas e aplicações que utilizamos transpostos para múltiplos dispositivos, passando do computador para os tablets, telemóveis, televisões e outros dispositivos. O Java, mais do que acompanhado, tem estado na origem de muitas destas transformações, seguindo o caminho para o qual foi desenhado nos anos 90 do século XX. Neste livro vamos contar a sua história e analisar em profundidade as suas capacidades, descobrindo porque é o Java hoje em dia uma “pedra basilar” na construção dos sistemas de informação modernos.
1.1
INTRODUÇÃO
Quando surgiu nos anos 90 do século XX, o Java introduziu na Web a possibilidade de integrar verdadeira interatividade em páginas WWW. As pequenas aplicações Java, denominadas applets, podiam ser diretamente integradas no código HTML das páginas e, assim, tornar acessível a uma página WWW tudo aquilo que usualmente se conseguia obter através de um programa, desenvolvido numa qualquer linguagem de programação. No entanto, desde a sua criação, o objetivo do Java era muito mais ambicioso do que simplesmente possibilitar a criação de alguns elementos programáveis em páginas Web, pretendia-se mesmo a criação de uma linguagem de programação que pudesse correr em todo o tipo de computadores e dispositivos. Este livro constitui uma abordagem introdutória ao Java, explicando as suas múltiplas aplicações nos dias de hoje e introduzindo a sua sintaxe. Sendo o Java uma das melhores linguagens de programação para se aprender a programar, este livro também poderá ser utilizado com esse fim. O Java é, hoje, a principal linguagem de desenvolvimento de aplicações no mundo dos sistemas de informação, e por esse motivo é, em muitos casos, a primeira © FCA – Editora de Informática
4
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
linguagem de programação que os alunos aprendem nos seus cursos. Qualquer que seja o seu caso, após a leitura deste livro saberá os fundamentos de programação do Java e estará pronto para aprender a utilizá-lo nas diversas situações em que esta versátil tecnologia pode ser empregue.
1.2
KIT DE DESENVOLVIMENTO JAVA
Algo que é fundamental para se programar é um compilador. Este é o produto de software que se encarrega de interpretar o código que é escrito de acordo com a sintaxe da linguagem e que, depois, o converte para um conjunto de instruções binárias que possam ser executadas pela máquina. Para executar aplicações Java, temos de ter instalado um software chamado Java Runtime Environment (JRE) e, para desenvolver, precisamos de um outro chamado Java Development Kit (JDK). A Oracle, detentora da Sun Microsystems (Sun) – inventora do Java −, fornece de forma gratuita um pacote de desenvolvimento de aplicações JAVA (Software Development Kit – SDK). O leitor pode obter este software, acedendo às páginas WWW Java da Oracle, em: http://www.oracle.com/technetwork/java/javase/downloads/index.html e, depois, importar o software. Há outras duas alternativas de software JDK: o da IBM (http://www.ibm.com/developerworks/java/jdk/index.html) ou, então, o OpenJDK (http://openjdk.java.net/), uma versão open source patrocinada pela Oracle e pela IBM (neste caso, sobre Linux). O SDK está disponível em várias versões, e com algumas variantes, consoante a plataforma utilizada e o software incluído. Existem versões para Solaris (sistema operativo das máquinas Sun Sparc), várias de Unix e Linux, Macintosh e Windows. Uma das versões do SDK vem com um produto de edição chamado Netbeans, que consiste num ambiente integrado incluindo o kit de desenvolvimento e um editor de código (Integrated Development Environment – IDE). Para programar, o leitor vai precisar de um editor, e pode optar por usar o Netbeans ou outro. Na verdade, para o seguimento do livro daqui para a frente é irrelevante qual o IDE que é utilizado, uma vez que o que está na base é uma versão comum de Java que, na verdade, é utilizada para compilar e executar os programas. Neste livro vamos utilizar como IDE de exemplo um editor que há algum tempo assumiu o papel de leader, chamado Eclipse, que pode ser importado em http://www.eclipse.org. Este produto, open source, nasceu a partir de uma versão da IBM, em 2001, e evoluiu a partir daí com uma comunidade open source que hoje o suporta, podendo ser utilizado com software open source ou comercial. © FCA – Editora de Informática
O PRIMEIRO PROGRAMA
5
Antes de instalar o Eclipse, e por o editor ser, em si, um programa Java, precisa de algo no seu PC que lhe permita correr Java, especificamente um JRE ou um JDK. Para desenvolvimento é recomendável que tenha um JDK por, entre outros aspetos, incluir o código das bibliotecas de que irá necessitar. Após a instalação do JDK (instale a ultima versão estável), pode passar à instalação do Eclipse. Em http://www.eclipse.org estão disponíveis várias versões, mas pode começar por importar a versão clássica (Figura 1.1). Sendo um IDE altamente modular, o leitor pode, mais tarde, importar novos componentes e adaptá-los ao seu editor. Há outras versões, mais vocacionadas para tipos diferentes de programadores, mas, na verdade, o leitor pode posteriormente instalar os componentes de que necessitar.
FIGURA 1.1 – Importação do Eclipse
Existe uma série de produtos no mercado nesta área e a tendência tem sido para o seu número aumentar, mesmo com as aquisições que tem havido no mercado. Apenas para mencionar os produtos mais utilizados, para além do Eclipse, temos o já falado Netbeans, o JDeveloper (também da Oracle) e o JBuilder, entre outros. Se o leitor for um profissional do desenvolvimento de aplicações, poderá ser interessante comparar os vários produtos e escolher aquele de que gostar mais, uma vez que, em última análise, o seu código será sempre compatível, visto basear-se no motor base que é o JDK. Após importar o Eclipse, o leitor pode instalá-lo facilmente, não sendo necessário correr nenhum instalador: basta colocar os ficheiros num diretório à sua escolha e executar o “eclipse.exe” que encontra no diretório “eclipse” no seu interior. O aconselhável será criar um atalho para o “eclipse.exe” e executá-lo, fazendo-se a configuração do produto na primeira utilização.
© FCA – Editora de Informática
6
1.3
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
CONSTRUIR E TESTAR UM PROGRAMA
Passada esta fase introdutória, e para o leitor ver já um pouco de ação, vamos procurar fazer e executar um programa muito básico em Java. Se o leitor já teve a oportunidade de consultar livros de programação, certamente se lembrará de que é tradicional começar por um pequeno programa que envie para o ecrã uma frase e não faça mais nada (o famoso “Hello World”, em português “Olá Mundo”). Neste caso, vamos começar por criar um programa que envie para o ecrã a frase “O meu primeiro programa em JAVA!”. O primeiro passo é lançar o Eclipse. Ao fazê-lo, surgirá uma janela com várias zonas de interação que permitem efetuar as várias atividades de desenvolvimento, gerir os ficheiros-fonte e as respetivas localizações, bem como a organização lógica dos vários ficheiros nos pacotes de desenvolvimentos que se vão fazer. Nos menus do Eclipse selecione “File”, “New” e “Java Project” (Figura 1.2).
FIGURA 1.2 – Criação de um projeto no Eclipse
Agora podemos dar um nome ao nosso projeto e prosseguir, encarregando-se o Eclipse de criar uma estrutura de diretórios e ficheiros para os nossos desenvolvimentos (Figura 1.3).
© FCA – Editora de Informática
PARTE II
1
CRIAÇÃO DE INTERFACES EM JAVA 2
A segunda parte do livro descreve as interfaces tradicionais da linguagem, incluindo as applets e a interface Windows.
CAP.1 Introdução às Interfaces em Java CAP.2 Applets CAP.3 Interface Windows CAP.4 I/O, Concorrência e Comunicações CAP.5 Gestão de Eventos e Interatividade
O conteúdo destes capítulos encontra-se também disponível em formato eBook. Visite a nossa página www.fca.pt.
2
APPLETS
As applets foram as primeiras formas de visualização de interfaces na Web e fora dela, e, apesar da sua idade, continuam a utilizar-se bastante, em particular em ambientes Intranet e para aplicações específicas. Em todo o caso, trata-se de uma tecnologia em fim de vida, tendo a Oracle já anunciado que os Java plug-ins (baseados em applets) serão descontinuados em futuras versões do Java, pelo que o leitor que as pretenda usar deverá ter em conta este facto. No Java 9, e em boa parte dos browsers (exceto os que já iniciaram a descontinuação dos plug-ins), como o Edge do Windows 10, as applets continuarão a funcionar, mesmo anotadas como "deprecated". Neste capítulo será descrita a forma como esta tecnologia pode ser usada, incluindo o trabalho com elementos gráficos e multimédia. A terminar, serão apresentados alguns exemplos de aplicação da matéria abordada, com alguns casos de applets que o leitor poderá utilizar.
2.1
APPLETS: CONCEITOS BÁSICOS
A popularidade do Java deve-se, sobretudo, à sua utilização no âmbito da World Wide Web. Desde o aparecimento dos primeiros browsers com capacidades de interpretação Java que a comunidade Internet aderiu de forma entusiástica a tudo o que se relacione com a linguagem Java. A criação de applets – pequenos programas que são executados em páginas WWW – foi uma das primeiras facetas da linguagem Java. Mesmo sendo, atualmente, apenas uma das várias formas como o Java pode aparecer em sites e portais na Web, a execução de programas Java em modo local nos clientes (browsers) ainda é uma forma segura e fiável de distribuição remota de software, mesmo que o dinamismo e a interatividade que levaram muitos autores de sites a criar applets há alguns anos tenham sido preteridos por outras tecnologias, como o Flash ou o HTML5. Tendo como fundamento a sintaxe básica do Java, a criação de applets combina a aplicação de alguns dos conceitos aprendidos com a utilização de determinadas classes e métodos das bibliotecas de classes do Java. Neste capítulo vamos aprender os conceitos base da criação de applets, bem como alguns exemplos práticos de utilização.
© FCA – Editora de Informática
118
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
Uma applet é um programa Java compilado que se integra numa página WWW. Ao ser realizado o acesso com um browser àquela página, o ficheiro binário que contém a applet é carregado através da Web, sendo em seguida executado na máquina local onde reside o browser. Uma das regras de segurança que se implementaram desde o início, é que as applets Java não têm acesso de escrita ao sistema de ficheiros da máquina local, nem podem executar programas ou carregar bibliotecas residentes naquela. Num programa Java tradicional, baseamos o código na utilização incondicional de um método principal main(), que se encarrega de criar objetos e executar alguns outros métodos importantes. O controlo de fluxo geral do programa é sempre baseado no código contido no main(), uma vez que se trata da primeira secção de código a ser executada na altura da execução do programa. Como veremos, as applets têm uma forma distinta de serem utilizadas. Para criar uma applet, é criada uma subclasse de uma classe existente na biblioteca “java.applet” chamada “java.applet.Applet”. Nesta classe está definido todo o comportamento de uma applet, não só o seu funcionamento, como também a capacidade de reagir ao teclado e ao rato. Numa applet estão, à partida, definidos alguns métodos fundamentais para determinar o seu comportamento. Uma vez que não há nenhum método main(), existe na applet um conjunto de métodos que representam as fases mais importantes na vida de uma applet: Inicialização – Esta é a fase em que a applet é, pela primeira vez, carregada. Nesta fase podem ser realizadas ações, tais como a criação de objetos, a inicialização de variáveis, etc. O método correspondente a este estado é o init(). Uma applet só passa por esta fase uma vez; Começar – Esta fase ocorre a seguir à da Inicialização ou, então, depois de a applet ter sofrido uma paragem. Ao contrário da fase anterior, uma applet pode passar várias vezes pela fase Começar. O método correspondente é o start(); Parar – Esta fase implica uma paragem na execução da applet. É, muitas vezes, utilizada em conjunto com a fase Começar para certos tipos de comportamento de applets. O método correspondente é o stop(); Destruir – Esta é fase terminal de uma applet. O método correspondente é o destroy(). Estes quatro métodos, entre muitos outros, estão definidos na classe “applet”. Contudo, se for definida uma applet vazia, o seu comportamento também será nulo, uma vez que nenhum dos métodos faz nada. Para criar comportamentos, é necessário reescrever os métodos (override). Para isso, basta declarar os métodos no interior do código das applets, tendo o cuidado de os © FCA – Editora de Informática
APPLETS
119
declarar como public. Por exemplo, se o leitor quisesse definir um comportamento inicial para uma determinada applet, faria uma declaração do método init(): public void init() { /* codigo de definicao de comportamento */ ... }
O comportamento de uma applet é, normalmente, definido à custa da reescrita dos métodos init(), start() e stop(). Não é habitual associar comportamentos ao método destroy(), a não ser em casos especiais. Também deverá ser claramente compreendido pelo leitor que o código destes métodos só será executado quando a applet estiver no estado correspondente. Em todos os casos em que tenhamos desenhos ou operações gráficas sobre applets, iremos recorrer a um método designado paint(). Este será utilizado várias vezes durante a execução de uma applet, por exemplo, para gerar uma animação (repetidos envios de imagens para uma janela) ou mesmo para regenerar uma imagem que foi tapada por outra janela. Como argumentos utilizaremos um objeto de uma classe definida numa biblioteca de classes e que tem o nome de “java.awt.Graphics”, o qual tem acesso a uma série de métodos relacionados com atividades gráficas das applets. A sintaxe a utilizar é a seguinte: public void paint(Graphics p) { /* Desenho de elementos graficos da applet */ ... }
Um exemplo de utilização deste tipo de sintaxe (cuja execução pode ser visualizada na Figura 2.1), é o desenho no ecrã de uma string com recurso a um método da classe “Graphics” (drawString()): import java.awt.Graphics; public class Teste1 extends java.applet.Applet { public void paint (Graphics g) { g.drawString("Teste de Applet!",20,55); } }
© FCA – Editora de Informática
120
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
FIGURA 2.1 – Importação do Eclipse
2.1.1
APPLETS E PÁGINAS WWW
A inclusão de uma applet Java numa página WWW faz-se utilizando para tal o elemento HTML <applet> (<object> desde a especificação HTML4). A sintaxe utilizada para o fazer é construída da seguinte forma: <body> ... <applet code = “ Nome_do_Ficheiro.class” parametros> <param name=Variavel_1 value=“valor1”> <param name=Variavel_2 value=“valor2”> ... Texto alternativo. </applet> ... </body>
Este elemento <applet> está obsoleto desde a especificação HTML4, mas ainda hoje é interpretado por todos os browsers que mantêm a compatibilidade. Pelo contrário, o leitor poderá ter problemas se utilizar simplesmente uma substituição do elemento <applet> pelo <object>, como manda a especificação HTML5, porque alguns browsers, como o Chrome, podem não identificar o objeto como uma applet e apresentar o espaço em branco.
© FCA – Editora de Informática
PARTE III
1
JAVA NA WEB
2
A terceira parte do livro é totalmente dedicada à forma como se utiliza o Java na Web nos dias de hoje, seja em sites, seja em aplicações dos mais variados tipos.
CAP.1 Introdução ao Java na Web CAP.2 Servlets CAP.3 Java Server Pages CAP.4 Arquitetura de Aplicações Java CAP.5 Java Server Faces
O conteúdo destes capítulos encontra-se também disponível em formato eBook. Visite a nossa página www.fca.pt.
2
SERVLETS
As servlets são programas Java compilados e que são executados do lado do servidor. Para além de serem a forma preferencial de disponibilização de serviços Java na Web, as servlets são parte importantíssima da maioria das frameworks de desenvolvimento Java e uma das peças da tecnologia JEE, pelo que neste capítulo procuraremos descrever com algum pormenor a forma como podem ser construídas, instaladas e executadas, bem como identificar as circunstâncias em que devem ser utilizadas.
2.1
INTRODUÇÃO
As servlets funcionam num modelo de pedido/resposta, como muitos outros objetos em utilização na Web. O cliente efetua um pedido (habitualmente HTTP) que invoca a servlet no servidor e depois recebe como retorno o resultado da sua execução (Figura 2.1).
Web container Browser
Servidor Web Servlet Conteúdo estático
Base de Dados
FIGURA 2.1 – Execução de uma servlet
O servidor Web tradicional continua a poder servir conteúdo estático ou dinâmico, mas é complementado com uma nova entidade lógica: o Web container (contentor de componentes Web), uma peça JEE que até pode funcionar na mesma máquina em que o servidor Web se situa. Este processo funciona bem, mas surge à partida uma questão de fundo: numa aplicação de qualquer tipo, é suposto que o cliente seja mantido num determinado contexto de sessão, ou seja, é expectável que as respostas que a aplicação Web lhe dá sejam dependentes de vários fatores, como o seu perfil de utilizador, as escolhas que já © FCA – Editora de Informática
294
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
introduziu ou o percurso que já efetuou no site? Neste pressuposto (indispensável em aplicações Web dinâmicas), a resposta que a servlet tem de dar a um determinado pedido deve refletir o estado do cliente e do servidor no momento do pedido, o que é conseguido através da manipulação da chamada informação de sessão (referida mais adiante, na secção 2.3). Para iniciar a construção de servlets, o leitor necessita de mais de um simples servidor Web. Precisa do servlet container, que pode encontrar com facilidade na Web e do qual há versões gratuitas. O mais popular e simples de utilizar é o Tomcat (http://tomcat.apache.org/), um servidor aplicacional open source que é uma referência de mercado, a par de soluções comerciais como as da Oracle (Weblogic) ou IBM (Websphere). Contudo, para criar e experimentar servlets, pode-se usar o editor Eclipse que tem a possibilidade de incluir o Tomcat. Para executar em ambiente de produção aplicações baseadas em servlets que desenvolva, a solução mais comum passa por utilizar uma configuração baseada em Linux, Apache Web Server e Apache Tomcat. As servlets podem ser utilizadas quer para efetuar processamentos diversos (ao nível da camada aplicacional em aplicações Web), quer para ligar clientes a aplicações (a chamada função de proxy). Neste último caso, a servlet pode ser utilizada para gerar dinamicamente uma página HTML, com informação que tenha sido processada pela própria, ou mais vulgarmente, por outra servlet (ver exemplo da secção 4.1). Neste cenário são um substituto direto dos antigos CGI1, podendo ser acedidas diretamente a partir de um URL, embora habitualmente este seja escondido no HTML de uma página Web estática ou dinâmica. Ao chegar um pedido HTTP ao servidor Web, este terá de entender que se trata de um pedido para o Web container e encaminhá-lo utilizando informação que foi declarada aquando da instalação do componente (descritor). Este decidirá, então, a execução do componente correspondente, que pode ser uma servlet, uma JSP ou mesmo conteúdo estático. A decisão é tomada com base no descritor. Cada servlet ou JSP que exista deverá ter um descritor associado, contendo: Nome do elemento; Classe Java do elemento; Descrição.
Com uma grande diferença: as servlets podem ser executadas em modo permanente, podendo não terminar a sua execução quando o pedido HTTP termina. 1
© FCA – Editora de Informática
SERVLETS
295
Este descritor pode também ser utilizado para descrever outros elementos, como páginas de erro ou informação de sessão. Na secção seguinte vamos ver com algum detalhe como construir e instalar servlets com todos estes requisitos.
2.2
IMPLEMENTAÇÃO DE SERVLETS Uma aplicação Web corretamente instalada em JEE é composta por quatro partes: Um diretório público – Com o conteúdo estático da aplicação (ficheiros); Um ficheiro “WEB-INF/web.xml” – O descritor, em formato XML; Um diretório “WEB-INF/classes” – Onde se guardam as servlets compiladas; Um diretório “WEB-INF/lib” – Onde se guardam eventuais bibliotecas JAR que façam parte da aplicação.
Antes de entrar em mais detalhes sobre a construção das servlets, vamos descrever um exemplo muito básico. Imagine o leitor que tem de fazer uma servlet que simplesmente mande para o ecrã a já mítica frase “Hello World!” (Olá Mundo!). A primeira coisa a fazer será construir a servlet. Neste caso, utilizando o Eclipse como nosso editor, criamos uma nova servlet num projeto Web dinâmico, recorrendo à entrada ‘New Servlet’. Procedemos à edição do ficheiro “Teste Servlet.java”, contendo a classe que implementa a servlet: Ficheiro “TesteServlet.java” package pac; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class TesteServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD><TITLE>Ola Mundo</TITLE></HEAD>"); out.println("<BODY>"); © FCA – Editora de Informática
296
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
out.println("<h2>Ola Mundo</h2>"); out.println("</BODY></HTML>"); } }
Para executar a servlet é necessário que haja um ficheiro descri-tor designado “web.xml”, no qual deverá estar mapeado o nome das classes das servlets com o caminho para as invocar quando se executam no servidor. Este descritor é importante porque, ao instalar a nossa aplicação Web num servidor aplicacional remoto, vai dar informação ao servidor de qual o URL relativo em que pretendemos que a nossa servlet seja executada. Neste exemplo, procuramos o ficheiro “web.xml”, que podemos encontrar em “WebContent/WEB-INF/” e editamos o seguinte (ver também Figura 2.2): Ficheiro “web.xml” <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Cap13</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>TesteServlet</display-name> <servlet-name>TesteServlet</servlet-name> <servlet-class>pac.TesteServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TesteServlet</servlet-name> © FCA – Editora de Informática
SERVLETS
297
<url-pattern>/TesteServlet</url-pattern> </servlet-mapping> </web-app>
FIGURA 2.2 – Edição do “web.xml”
Após esta definição, deverá existir um mapeamento explícito na entrada ‘Servlet Mappings’, mostrando o mapeamento da servlet que criámos (Figura 2.3):
FIGURA 2.3 – Mapeamento da servlet
Podemos executar agora a nossa servlet e ver o resultado da execução quer no Eclipse quer no browser, acedendo ao URL que o Eclipse nos mostra (Figura 2.4).
FIGURA 2.4 – Execução da servlet
Repare-se no URL que é utilizado, que termina com o mapeamento da servlet que efetuámos. Com base nesta designação, o servidor aplicacional (neste caso, o Tomcat) identifica e executa a servlet correspondente. © FCA – Editora de Informática
PARTE IV
1
JAVA EMPRESARIAL
2
A quarta parte do livro descreve a forma como o Java é utilizado para implementar aplicações no contexto empresarial.
CAP.1 Introdução ao Java Empresarial CAP.2 Comunicações e Dados CAP.3 Expressões Lambda e Interfaces Funcionais CAP.4 Core JEE: Enterprise Java Beans CAP.5 Messaging CAP.6 WebServices CAP.7 Tecnologias de Suporte CAP.8 Java Móvel
O conteúdo destes capítulos encontra-se também disponível em formato eBook. Visite a nossa página www.fca.pt.
8
JAVA MÓVEL
No universo do Java vamos fazer agora uma breve introdução a um dos temas em maior expansão nos últimos anos: a execução de Java em dispositivos móveis e portáteis. O assunto não é novo, e para quem tenha acompanhado a evolução do Java desde o início é mesmo um regresso às origens da própria tecnologia. Não deixa, contudo, de ser interessante que as abordagens referidas nas três secções deste capítulo sejam muito distintas, e de alguma forma alternativas, na mobilização de aplicações para execução em telemóveis, tablets e smartphones.
8.1
JAVA MICRO EDITION (JME)
Inicialmente, as características de portabilidade da linguagem e tecnologia Java estavam associadas à necessidade de executar programas em qualquer tipo de plataforma e dispositivo, especialmente em eletrónica de consumo, tendo sido casual o aproveitamento que acabou por se fazer da tecnologia Java para adaptar à WWW, onde acabou por ter a sua grande explosão de utilização. Quis a história que a utilização do Java em dispositivos eletrónicos que não computadores voltasse a estar na ordem do dia com a revolução da telefonia móvel, especialmente a partir do ano 2001, em que apareceram os primeiros telefones comerciais com máquinas virtuais Java instaladas. A tecnologia de que falamos é uma das versões do Java: Java ME ou JME, anteriormente designado por J2ME, uma versão pensada e desenhada para ser executada em dispositivos de hardware modestos e com poucos recursos de memória e processamento. Esta tecnologia já existe há alguns anos e está neste momento num ponto de estagnação, não tendo havido evoluções de relevo desde 2008, nomeadamente não incorporando sequer compatibilidades com as versões 5 e 6 do Java. Isto aconteceu porque, com o advento dos smartphones e o desenvolvimento muito significativo do seu hardware (os mais recentes smartphones e tablets trazem mais memória e processamento do que os computadores portáteis tinham em 2008), deixou de fazer sentido trabalhar com base nas limitações de hardware nas quais se baseia a filosofia do JME, tendo surgido outras tecnologias para o desenvolvimento de aplicações móveis (Java Android ADK para Android, Objective C para iPhone e C# para Windows Mobile). © FCA – Editora de Informática
492
PROGRAMAÇÃO EM JAVA – CURSO COMPLETO
No entanto, as aplicações móveis do Java estão longe de se cingir a estes dispositivos, estendendo-se a múltiplos fins e tecnologias físicas, continuando a fazer sentido disponibilizar tecnologias que possam correr com recursos de hardware muito limitados. Ou seja, apesar de ainda serem uma das principais utilizações do JME nos dias de hoje, os telefones móveis estão longe de ser a única aplicação de JME no mercado. Entre as utilizações que já se fazem desta tecnologia, podemos destacar as seguintes formas e dispositivos: Telefones móveis (2.5G e 3G); PDA; Cartões inteligentes (SIM, de crédito, de acumulação de pontos, para pagamentos e para controlo de acessos); Equipamentos de televisão interativa; Equipamentos de automóveis; Eletrodomésticos. Para poder implementar uma máquina virtual Java (JVM) em dispositivos de tamanho por vezes muito reduzido e com capacidade de processamento pequena, os implementadores recorreram a versões reduzidas e elementares da tecnologia Java e a algumas otimizações, mantendo, no entanto, a coerência de arquitetura cliente-servidor Java. Há várias variantes de Java em utilização nestas indústrias.
8.1.1
JAVA CARD
Trata-se da versão mais reduzida para dispositivos extremamente pequenos de que destacamos os cartões SIM dos telefones móveis ou os mais modernos cartões inteligentes (de crédito, para pagamentos ou de acumulação de pontos). Para o leitor ter uma ideia, estamos a falar de dispositivos que têm tipicamente memória RAM de 1 Kbyte (!), usada somente para dados e aplicações, e de memória ROM e/ou EPROM de 32 Kbytes, onde residirá a JVM. Múltiplas aplicações podem correr num só cartão inteligente, podendo estas aplicações ser substituídas ou modificadas após o cartão estar em utilização (nos operadores de telemóveis, as aplicações podem ser descarregadas diretamente utilizando uma tecnologia denominada Over The Air – OTA) ou importadas a partir de software que corra nos PC e transferidas por infravermelhos ou bluetooth, uma tecnologia rádio de curta distância com grande utilização. Também podem ser invocadas aplicações Java em servidores remotos através da rede, aumentando o poder da tecnologia, dado que as aplicações a correr nos minúsculos © FCA – Editora de Informática
JAVA MÓVEL
493
dispositivos são, na prática, clientes Java de componentes e serviços JEE. No entanto, a comunicação no caso dos Java Cards não é TCP/IP, mas sim um protocolo de comunicações half-duplex baseado em comandos e respostas.
8.1.2
EMBEDDED JAVA
Esta variante é um subconjunto específico de tecnologia Java que pode ser adaptado pelo implementador para conter somente as classes e API de que necessita a aplicação específica que lá vai correr. Sendo altamente configuráveis, estes ambientes constroem-se e otimizam-se caso a caso, podendo a JVM ocupar mais ou menos espaço conforme as necessidades das aplicações que a usam. Tipicamente, utiliza-se esta variante em ambientes sem interação com o utilizador como produtos de eletrónica de consumo ou da indústria automóvel.
8.1.3
CONNATED LIMITED DEVICE CONFIGURATION (CLDC)
Esta variante foi construída a pensar em dispositivos com recursos e conectividade limitados, mas não tão reduzidos como os cartões. Estamos aqui a falar de capacidades de memória que, somando ROM e RAM, rondarão os 512 Kbytes e de velocidades de ligação à rede de 9600 bps (as condições de hardware e comunicações de um telefone móvel GSM ou de um PDA com conectividade GSM). O CLDC implementa as bibliotecas base de Java (“java.lang” e “java.util”), as capacidades de I/O e de rede e os mecanismos de segurança, mas deixa completamente de fora questões de interface com o utilizador, gestão de eventos e restantes funcionalidades Java de suporte à interação com o utilizador. As aplicações CLDC podem comunicar com outras aplicações e serviços Java em HTTP ou por TCP/IP sockets, mas não por RMI.
8.1.4
MOBILE INFORMATION DEVICE PROFILE (MIDP)
É a principal tecnologia do JME. Esta especificação foi desenvolvida por um consórcio de alguns dos maiores fabricantes mundiais de telefones móveis, PDA e operadores, e não é mais do que um perfil criado sobre o CLDC, mas acrescentando algumas funcionalidades de interação com o utilizador. O MIDP exige um mínimo de 128 Kbytes de ROM e, pelo menos, 40 Kbytes de RAM para ser implementado, bem como de um dispositivo com um mínimo de possibilidade de interação com o utilizador (teclado ou ecrã tátil) e de comunicações via rede (TCP/IP).
© FCA – Editora de Informática
PJ5-V2.indd 1
18/07/16 18:27