blob: 58e1147cb1344aa61d60e7e70c794f54e56c24dd [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META NAME="keywords" CONTENT="netbeans,magazine,NetBeans,Mobility,Pack,mobile,Java ME,j2me">
<META NAME="description" CONTENT="NetBeans Magazine: Write Once, Deploy Anywhere with NetBeans Mobility Pack">
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<title>Write Once, Deploy Anywhere</title>
<style>
<!--
p.Noparagraphstyle, li.Noparagraphstyle, div.Noparagraphstyle
{line-height:120%;
text-autospace:none;
font-size:12.0pt;
font-family:Times;
color:black;}
p.NB-Corpo, li.NB-Corpo, div.NB-Corpo
{text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Interttulo, li.NB-Interttulo, div.NB-Interttulo
{line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
p.NB-Interttulo2, li.NB-Interttulo2, div.NB-Interttulo2
{line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
p.NB-Notadica, li.NB-Notadica, div.NB-Notadica
{text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BC371F;
letter-spacing:.05pt;}
p.NB-Cdigointerno, li.NB-Cdigointerno, div.NB-Cdigointerno
{line-height:10.0pt;
text-autospace:none;
font-size:8.0pt;
font-family:"Verdana";
color:black;}
p.NB-Legendaimagem, li.NB-Legendaimagem, div.NB-Legendaimagem
{line-height:12.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
span.NB-NegritoTcnico
{font-family:"Verdana";
color:black;
letter-spacing:.05pt;
font-weight:bold;
vertical-align:baseline;}
span.NB-Legendanegrito
{font-weight:bold;}
div.NB-Interttulo21 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
li.NB-Interttulo21 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
p.NB-Interttulo21 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
div.NB-Corpo1 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
li.NB-Corpo1 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
div.NB-Cdigointerno1 {line-height:10.0pt;
text-autospace:none;
font-size:8.0pt;
font-family:"Verdana";
color:black;}
div.NB-Corpo2 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
div.NB-Interttulo1 {line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
div.NB-Interttulo22 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
div.NB-Notadica1 {text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BC371F;
letter-spacing:.05pt;}
div.Noparagraphstyle1 {line-height:120%;
text-autospace:none;
font-size:12.0pt;
font-family:Times;
color:black;}
li.NB-Cdigointerno1 {line-height:10.0pt;
text-autospace:none;
font-size:8.0pt;
font-family:"Verdana";
color:black;}
li.NB-Corpo2 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
li.NB-Interttulo1 {line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
li.NB-Interttulo22 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
li.NB-Notadica1 {text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BC371F;
letter-spacing:.05pt;}
li.Noparagraphstyle1 {line-height:120%;
text-autospace:none;
font-size:12.0pt;
font-family:Times;
color:black;}
p.NB-Cdigointerno1 {line-height:10.0pt;
text-autospace:none;
font-size:8.0pt;
font-family:"Verdana";
color:black;}
p.NB-Corpo2 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Interttulo1 {line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
p.NB-Interttulo22 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
p.NB-Notadica1 {text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BC371F;
letter-spacing:.05pt;}
p.Noparagraphstyle1 {line-height:120%;
text-autospace:none;
font-size:12.0pt;
font-family:Times;
color:black;}
span.NB-NegritoTcnico1 {font-family:"Verdana";
color:black;
letter-spacing:.05pt;
font-weight:bold;
vertical-align:baseline;}
.NB-Listagenstitulos {font-family: Verdana, Arial, Helvetica, sans-serif;
color: #FFFFFF;
font-size: 14px;}
.NB-Listagens {font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #000000;}
.NB-Quadrotitulo {font-family: Verdana, Arial, Helvetica, sans-serif; color: #FFFFFF; font-size: 14px; font-weight: bold;}
p.NB-Corpo21 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
span.NB-NegritoTcnico11 {font-family:"Verdana";
color:black;
letter-spacing:.05pt;
font-weight:bold;
vertical-align:baseline;}
div.NB-Interttulo23 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
div.NB-TabelaCorpo {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
div.NB-TabelaIntertitulo {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
li.NB-Interttulo23 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
li.NB-TabelaCorpo {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
li.NB-TabelaIntertitulo {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
p.NB-Interttulo23 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
p.NB-TabelaCorpo {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
p.NB-TabelaIntertitulo {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
p.NB-Interttulo231 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
p.NB-TabelaCorpo1 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
p.NB-TabelaIntertitulo1 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
div.NB-TabelaCorpo1 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
div.NB-TabelaIntertitulo1 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
li.NB-TabelaCorpo1 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
li.NB-TabelaIntertitulo1 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
p.NB-TabelaCorpo2 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
p.NB-TabelaIntertitulo2 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
p.NB-Corpo111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1121 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11211 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo112111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1121111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1121112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1121113 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11211131 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-TabelaCorpo21 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
p.NB-TabelaIntertitulo21 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
div.NB-TabelaCorpo2 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
li.NB-TabelaCorpo2 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
p.NB-TabelaCorpo3 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
span.NB-NegritoTcnico2 {font-family:"Verdana";
color:black;
letter-spacing:.05pt;
font-weight:bold;
vertical-align:baseline;}
span.Refdenotaderodap00E9 {vertical-align:super;}
p.NB-Corpo11111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo112111311 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1121113111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;}
.style1 {font-size: 9.0pt}
.style3 {font-size: 11px;
font-weight: bold;}
p.NB-Corpo22 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
div.NB-Corpo3 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
div.NB-Interttulo3 {line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
div.NB-Interttulo24 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BA3287;
font-weight:bold;}
div.NB-Notadica2 {text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BA3287;
letter-spacing:.05pt;}
li.NB-Corpo3 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
li.NB-Interttulo3 {line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
li.NB-Interttulo24 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BA3287;
font-weight:bold;}
li.NB-Notadica2 {text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BA3287;
letter-spacing:.05pt;}
p.NB-Corpo3 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Interttulo3 {line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
p.NB-Interttulo24 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BA3287;
font-weight:bold;}
p.NB-Notadica2 {text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BA3287;
letter-spacing:.05pt;}
span.TechText {font-family:"Verdana";
letter-spacing:0pt;
font-weight:bold;}
p.NB-Corpo31 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Interttulo241 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BA3287;
font-weight:bold;}
p.NB-Interttulo31 {line-height:120%;
page-break-after:avoid;
text-autospace:none;
font-size:13.0pt;
font-family:"Verdana";
color:#9A1560;
font-weight:bold;}
p.NB-Notadica21 {text-align:left;
line-height:13.0pt;
tab-stops:14.15pt;
text-autospace:none;
font-size:10.0pt;
font-family:"Verdana";
color:#BA3287;
letter-spacing:.05pt;}
span.TechText1 {font-family:"Verdana";
letter-spacing:0pt;
font-weight:bold;}
p.NB-Corpo113 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11311 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo113111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11311111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo113111111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131111111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11311111111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Interttulo232 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:#BC371F;
font-weight:bold;}
p.NB-TabelaCorpo4 {text-align:left;
text-indent:5.65pt;
line-height:14.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;}
p.NB-TabelaIntertitulo3 {line-height:12.0pt;
page-break-after:avoid;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:white;
letter-spacing:-.05pt;
font-weight:bold;}
p.NB-Corpo11311111112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo113111111121 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131111111211 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11311111112111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo113111111121111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11121 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;}
p.NB-Corpo11312 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo113112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo113111112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131111112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo113111111122 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131111111212 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11311111112112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo1131111111211111 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;
letter-spacing:.05pt;}
p.NB-Corpo11112 {text-align:left;
text-indent:5.65pt;
line-height:16.0pt;
text-autospace:none;
font-size:9.0pt;
font-family:"Verdana";
color:black;}
.style5 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-weight: bold;
color: #FFFFFF;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF" lang=PT-BR>
<div class=Section1>
<table width="770" height="11357" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="200"><img src="/images_www/magazine/mobpack/top_mob_pack_web.jpg" width="770" height="200"></td>
</tr>
<tr>
<td width="785" height="42"><p class=NB-Corpo22><strong><span lang=EN-US style='letter-spacing:
-.05pt'>Writing Applications for mobile devices and reducing device fragmentation with NetBeans Mobility Pack</span></strong></p></td>
</tr>
<tr>
<td height="11094" valign="top"><p class=NB-Corpo31><span lang=EN-US>TaIke a look around
you in just about any location &ndash; your office, walking down the street, the
movies, even your own household &ndash; and it won&rsquo;t take a marketing genius to tell
you that if your application is useful to people on the go but hasn&rsquo;t been
ported to phones or PDAs, you&rsquo;re missing a pretty large market, potentially <i>millions</i> of users. Of course, that same look around will tell you that your game or
widget had better be able to work on mobile devices of all names and sizes, or
you&rsquo;ll cut out a large portion of your potential customer base.</span></p>
<p class=NB-Corpo31><span lang=EN-US>Sure, it sounds like a lot of work. But in
this article, we&rsquo;ll show you how to use the NetBeans Mobility Pack 5.5 for
CLDC/MIDP to create a simple application suitable for cell phones and then
deploy it to two very different devices. Best of all, you&rsquo;ll do it using only a
single set of code instead of creating and managing a separate code base for
each device. </span></p>
<p class=NB-Corpo31><span lang=EN-US>In addition, we&rsquo;ll take a quick look at the
Mobility Pack 5.5.1 for CDC and show you how you can use it to develop
applications for larger devices, like set-top boxes, PDAs, and the new
generations of &ldquo;smart&rdquo; phones. </span></p>
<p class=NB-Interttulo31><span lang=EN-US>A brief overview of the Mobility Pack </span></p>
<p class=NB-Corpo31><span lang=EN-US>With NetBeans 5.5, there are now two
separate versions of Mobility Pack &ndash; one for each of the standard <i>configurations</i> that specify the minimum requirements for memory, Java language features, JVM
support, and runtime libraries. </span></p>
<p class=NB-Notadica21><span lang=EN-US><strong>Note:</strong> In Mobility
Pack 6.0, the CLDC/MIDP and CDC Packs will be merged.</span></p>
<p class=NB-Corpo31><span lang=EN-US>The Mobility Pack for Connected, Limited
Device Configuration / Mobile Information Device Profile (CLDC/MIDP) serves
developers who create applications targeted at smaller mobile devices with
limited resources, such as mobile phones, PDAs, and two-way pagers. </span></p>
<p class=NB-Corpo31><span lang=EN-US>The Mobile Information Device Profile is one
of two profiles that works &ldquo;on top&rdquo; of CLDC (the other profile being the
Information Module Profile). MIDP provides graphical interfaces for interactive
applications and is the standard profile for mobile telephone development under
the JSR 185, Java Technology for the Wireless Industry (JWTI) specification,
and more recently also the Mobile Service Architecture (MSA) spec, JSR 248. </span></p>
<p class=NB-Corpo31><span lang=EN-US>The Mobility Pack for CDC provides a
development environment for developers who are creating applications for larger
devices, such as set-top boxes, embedded devices, high-end or smart phones, and
PDAs. The CDC Pack supports development for all the current CDC Profiles,
including the Foundation and Personal profiles, as well as the AGUI toolkit. It
also supports development for the Windows CE platform. </span><span lang=EN-US>How the two Java ME configurations fit into
the Java &ldquo;family&rdquo; is shown in <b>Figure&nbsp;1</b>.</span></p>
<p class=NB-Corpo31><span lang=EN-US>In the next section, we&rsquo;ll create a MIDP
application, or <i>MIDlet</i>, using the Mobility Pack for CLDC/MIDP. Then
we&rsquo;ll look at how you can create an application using the Mobility Pack for
CDC. It&rsquo;s worth noting here that with version 6.0, the two Packs will be
integrated into a single Mobility module.</span></p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image001.jpg" width="420" height="319"></td>
</tr>
<tr>
<td><p class=NB-Corpo113> <strong>Figure 1.</strong> Java ME and the Java technology landscape.<br>
</p></td>
</tr>
</table>
<p class=NB-Interttulo31><span lang=EN-US>Creating a MIDlet </span></p>
<p class=NB-Corpo31><span lang=EN-US>We&rsquo;re going to start with a very simple
&ldquo;Hello World&rdquo; MIDlet. Although this is about the simplest MIDlet you can
create, it will let us demonstrate the Mobility Pack without too much focus on
writing code. </span></p>
<p class=NB-Corpo31><span lang=EN-US>To begin working with the Mobility Pack, you
create a new project just as you would with any Java application, only
selecting a Mobile project type.</span></p>
<p class=NB-Corpo31><span lang=EN-US>In the NetBeans IDE, as you know, all Java
development has to take place within a project. The IDE builds its project
infrastructure directly on top of Apache Ant, and stores all the information
about your project in an Ant script, a properties file, and a few XML
configuration files. This means that you can build and run your projects
outside of the IDE in exactly the same way as you would inside it. As you can
see in the source tree shown in <b>Figure&nbsp;2</b>, however, a MIDP project
differs from a NetBeans/Java SE project in several ways. </span><br>
</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image003.png" width="700" height="482"></td>
</tr>
<tr>
<td><p class=NB-Corpo11312> <strong>Figure 2.</strong> The Hello MIDlet Application .<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;When
a MIDP project is created, the IDE creates folders to hold the files after they
are compiled and preverified. (Preverification is a Java ME-specific building
step that augments <i>.class</i> files with extra information that makes
bytecode verification and classloading much simpler and faster on the
resource-restricted JVMs of ME devices.) The preverified files are packaged
into the distribution JAR of your project. If you use project configurations
for different device types (we&rsquo;ll get to that soon) or use obfuscation, the IDE
creates folders to hold the different versions of the source files. </span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;Now
let&rsquo;s create the Hello MIDlet project. Choose <i>File&gt;New Project</i> and in
the first step of the wizard select the <i>Mobile </i>category and <i>Mobile
Application</i> for the project type. Then click <i>Next</i>. Change the
project name to &ldquo;TestMIDlet.&rdquo; Click <i>Next</i> again to see the default
Emulator Platform, which is the J2ME Wireless Toolkit. The default device is
the DefaultColorPhone. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Click <i>Next</i> to see some other project
configurations you can choose to set. The IDE checks all of the platform
emulators you have installed and creates a configuration template for each
device emulator available. Check the &ldquo;MediaControlSkin_template&rdquo; box. Click <i>Finish </i>and you&rsquo;ve just created your first working MIDlet, containing a simple form
named </span><span class=TechText1><span lang=EN-US style='font-size:10.0pt'>helloForm</span></span><span
lang=EN-US>, that displays the familiar &ldquo;Hello, world!&rdquo; message. Now Choose <i>Run&gt;Run
Main Project</i> to see the MIDlet in action. You&rsquo;ll see a device emulator like
the one shown in <b>Figure&nbsp;3</b>.</span><br>
</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image005.png" width="366" height="729"></td>
</tr>
<tr>
<td><p class=NB-Corpo113112> <strong>Figure 3.</strong> Hello MIDlet in action.<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Interttulo31><span lang=EN-US>Designing flow and UI
in the Visual Mobile Designer</span></p>
<p class=NB-Corpo31><span lang=EN-US>The screenshot in <b>Figure&nbsp;2</b> also
shows you the flow of our MIDlet in the Visual Mobile Designer (VMD). You can
click the <i>Source</i> button and edit the code manually, but the VMD is a
very powerful tool for designing both the page flow and individual screens.</span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;Let&rsquo;s
look at the flow first. If you start with the mobile device on the screen, it&rsquo;s
pretty easy to follow the arrows and understand the flow of the MIDlet. When a
command is entered (the Start Point), the </span><span class=TechText1><span
lang=EN-US style='font-size:10.0pt'>helloForm </span></span><span lang=EN-US>is
opened. When the exit command is chosen from this form, you close your
application (Exit Point) and return to the mobile device&rsquo;s application
launcher. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Now, you might want to add a splash screen
to display your logo or development credits before the application starts
running. Let&rsquo;s add a simple one to this application. (To provide a graphic,
we&rsquo;ve added <i>mobileduke.png</i> to our <i>&lt;project_source&gt;/src</i> directory. The IDE automatically makes it available to us from the <i>Resources</i> folder in the Navigator window, on the lower left side of the IDE.) Drag a
SplashScreen component from the Tools Palette on the right of the window on to
the Flow Designer. Next, Drag the </span><span class=TechText1><span lang=EN-US
style='font-size:10.0pt'>image1[Image] </span></span><span lang=EN-US>from the
Navigator window and drag it on top of the splash screen. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Presto! Our splash screen has been created.
You can look at it by double-clicking on the SplashScreen component, which
takes you into the Screen Designer. The splash screen should look like <b>Figure&nbsp;4</b>. </span><br>
</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image007.png" width="513" height="594"></td>
</tr>
<tr>
<td><p class=NB-Corpo1131112> <strong>Figure 4.</strong> A splash screen in the Screen Designer.<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Corpo31><span lang=EN-US>Now let&rsquo;s make the splash screen part of the
application flow. Click the Flow Design button to go back to the Flow Designer.
Grab the tip of the Start Point Arrow and drag it over to the </span><span
class=TechText1><span lang=EN-US style='font-size:10.0pt'>splashScreen1</span></span><span
lang=EN-US> component. Click on the orange square next to Dismiss and drag the
arrow over the </span><span class=TechText1><span lang=EN-US style='font-size:
10.0pt'>helloForm </span></span><span lang=EN-US>component. The flow should now
look something like <b>Figure&nbsp;5. </b></span><br>
<br>
</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image015.png" width="600" height="493"></td>
</tr>
<tr>
<td><p class=NB-Corpo113111112> <strong>Figure 5.</strong> The Java Platform Manager.<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Corpo31><span lang=EN-US>Let&rsquo;s just make one more quick change to the
program to illustrate the Screen Designer. Double click on the form component.
In the Screen Designer, click on the &ldquo;Hello, World!&rdquo; text and change it to something
else, say &ldquo;Hello, Universe!&rdquo;&nbsp; </span></p>
<p class=NB-Corpo31><span lang=EN-US>Now go ahead and run the MIDlet again. Click
the button under &ldquo;Launch,&rdquo; and the emulator displays the splash screen as shown
in <b>Figure&nbsp;6</b>. Then<b> </b>you see the new message. </span><br>
<br>
</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image011.png" width="366" height="729"></td>
</tr>
<tr>
<td><p class=NB-Corpo1131111112> <strong>Figure 6.</strong> Splash screen in the device emulator.<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Corpo31><span lang=EN-US>That was just a simple example of how you
can quickly design the screens and flow of your application in the VMD. The
SplashScreen component is one of three custom components, along with WaitScreen
and TableItem, created by the NetBeans Mobility Pack team and added to the
palette to make visual programming easier. You can also create your own custom
components and add them to the palette.</span></p>
<p class=NB-Corpo31><span lang=EN-US>Another important VMD feature is its support
for Scalable Vector Graphics (SVG). SVG is an XML-based standard defined by the
W3C and supported by MIDP 2.0 through JSR 226. The compact size and consistent
appearance across different platforms and screen resolutions makes it an
attractive graphics format for mobile developers. SVG also enables scripting
and animation that allows users to interact with the visual content. To use
SVG, you&rsquo;ll need the Sun Java Wireless Toolkit 2.5, which is currently
available as a module from NetBeans Update Center, and is bundled with the
Mobility Pack starting with version 5.5.1.</span></p>
<p class=NB-Corpo31><span lang=EN-US>In the VMD, you can add an external SVG
editing tool, such as Hyperion or Ikivo, and use it to create your initial SVG
graphic. Like we did in the example we just looked at, you can create a splash
screen, an interactive menu, or a wait screen by dragging and dropping components
into the Flow Designer. You can drop the graphic or animation on the component,
and inspect the behavior of the graphic or animation as the application is run. </span></p>
<p class=NB-Corpo31><b><span lang=EN-US>Figure&nbsp;7 </span></b><span
lang=EN-US>shows the VMD inspecting an animated SVG menu. You can use the VMD
flow designer interface to link each menu item to a separate screen that would
be called when the menu item is selected. </span></p>
<br>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image013.png" width="344" height="455"></td>
</tr>
<tr>
<td><p class=NB-Corpo1131111111> <strong>Figure 7.</strong> An interactive SVG-based menu.<br>
<br>
</p></td>
</tr>
</table>
<br>
<p class=NB-Interttulo31><span lang=EN-US>Reducing fragmentation with project
configurations</span></p>
<p class=NB-Corpo31><span lang=EN-US>One of the most difficult aspects of
developing applications is <i>device fragmentation</i>. Mobile devices differ
in a variety of attributes, such as screen size, color depth, and the
proprietary or optional APIs they support. These differences often require
special code or project settings for successful deployment. One solution is to
create separate source code for each device you&rsquo;re programming to, which is
almost guaranteed to be a logistics nightmare. We&rsquo;ve already touched on the
Mobility Pack solution for device fragmentation &ndash; <i>project configurations</i>. </span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;Project configurations enable you to define
the execution environment for each target device. With project configurations
and code pre-processing, you can write an application and &ndash; using a single set
of source code &ndash; customize, debug, and deploy a separate distribution JAR for
each target device. If you need to customize your MIDlet for more devices, you
add a new configuration for each device, modify the project properties, add
some pre-processing code, then build and deploy the application. In most cases,
you should create one configuration for each distribution JAR you plan to build
for your project. For example, if you are planning to support three different
screen sizes using two sets of vendor specific APIs, you should create six
configurations.</span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp; Before we look at deploying our MIDlet to different devices, let&rsquo;s
examine the three main concepts behind project configurations. </span></p>
<p class=NB-Interttulo241><span lang=EN-US>The Emulator Platform</span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;An
emulator platform simulates the execution of an application on one or more
target devices. It enables you to understand the user experience for an
application on a particular device, and to test the portability of the
application across different devices. As you have seen, the J2ME Wireless
Toolkit 2.2, bundled with Mobility Pack 5.5 for CLDC/MIDP, provides several
sample devices, like the DefaultColorPhone (and you can easily update to WTK
2.5). </span></p>
<p class=NB-Corpo31><span lang=EN-US>It is important, however, to remember that
an emulator can only approximate a device&rsquo;s performance. Environmental
variables like processing speed or the strength of the wireless signal can
affect performance on a real device, and should be taken into account. </span></p>
<p class=NB-Corpo31><span lang=EN-US>A very important feature of the Mobility
Pack is its ability to work with the emulators provided by major manufacturers,
such as Nokia, Sony Ericsson, Siemens, and Motorola. Using the Java Platform Manager
(see <b>Figure&nbsp;8</b>), you can easily add any emulator that supports the
Unified Emulator Interface (UEI) standards. Simply choose <i>Tools&gt;Java
Platform Manager</i>, select the J2ME Platform, and the wizard detects the
emulator platforms installed on your system. Other emulators can also be added
with a little more effort.</span></p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image015.png" width="600" height="493"></td>
</tr>
<tr>
<td><p class=NB-Corpo113111111122> <strong>Figure 8.</strong> The Java Platform Manager.</p>
<p class=NB-Corpo113111111122>&nbsp;</p></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="33" bgcolor="#BA3287"><span class="style5">The Sun Java Wireless Toolkit 2.5</span></td>
</tr>
<tr>
<td height="33" bgcolor="#F1CDE3" ><p class=NB-TabelaCorpo4><span lang=EN-US style='color:black;letter-spacing:
-.1pt'>The Sun Java Wireless Toolkit 2.5 includes all of the advanced development features found in earlier versions, such as MIDlet signing, certificate management, integrated OTA emulation, push registry emulation, and more. New features include support for the Mobile Service Architecture (JSR-248) platform. Although this JSR does not define any new APIs, it does standardize many existing ones into a common API stack, to increase interoperability and make mobile development easier. There are also many new APIs supported, such as Security and Trust Services (JSR 177), Location (JSR 179), SIP (JSR 180), Content Handler (JSR 211), Scalable 2D Vector Graphics (JSR 226), Payment (JSR 229), and several others.</span><br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Interttulo241><span lang=EN-US>Project properties</span></p>
<p class=NB-Corpo31><span lang=EN-US>We can use the project properties to define
many aspects of the program. As you can see in <b>Figure</b>&nbsp;<b>9</b>, the
property categories are on the left, and the properties for that category are
on the right. A short list of things you can do in properties includes:
defining the emulator platform, setting/checking Configuration and Profile
versions and optional APIs the device supports; adding or removing the contents
of the JAR and JAD files; setting the Push Registry; setting obfuscation and
optimization levels; adding signing and security certificates; and setting
deployment options. The Abilities shown in <b>Figure&nbsp;9</b> list attributes
that might be shared by different devices, and therefore might be shared when
you are adding pre-processing code.</span><br>
</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image017.png" width="768" height="613"></td>
</tr>
<tr>
<td><p class=NB-Corpo1131111111212> <strong>Figure 9.</strong> Abilities page.<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Corpo31><span lang=EN-US>Let&rsquo;s take a look at this using the two
configurations we&rsquo;ve created for our </span><span class=TechText1><span
lang=EN-US style='font-size:10.0pt'>TestMIDlet</span></span><span lang=EN-US>.
The first is the DefaultConfiguration we&rsquo;ve been using so far. The second is
the MediaControlSkin that you selected when first creating the project. Before
we discuss project properties and pre-processing code, let&rsquo;s take a quick look
at the MediaControlSkin device emulator. </span></p>
<p class=NB-Corpo31><span lang=EN-US>To switch configurations, choose the
MediaControlSkin from the Configuration drop-down menu in the IDE toolbar. Then
choose <i>Run&gt;Run Main Project</i>. It&rsquo;s the same </span><span
class=TechText1><span lang=EN-US style='font-size:10.0pt'>TestMIDlet </span></span><span
lang=EN-US>as before, but this time the device emulator and its display are
thinner &ndash; so we lose a little bit of the splash screen, as shown in <b>Figure&nbsp;10</b>. </span></p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image019.png" width="247" height="690"></td>
</tr>
<tr>
<td><p class=NB-Corpo11311111112112> <strong>Figure 10.</strong> The MediaControlSkin Emulator.<br>
<br>
</p></td>
</tr>
</table>
<br>
<p class=NB-Interttulo241><span lang=EN-US>Preprocessing code</span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;Preprocessing modifies the code in your source
files before the code is parsed by the compiler. The preprocessor modifies the
code according to preprocessor directives you insert into the code as code
blocks with beginning and ending directives. These code blocks are marked
visually in the Source Editor and are included (or excluded) when you build the
JAR for a specific project configuration or ability. You can use these code
blocks to create, manage, and track code that is specific to one or more
project configurations or abilities. </span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;Now
that we&rsquo;ve defined the key concepts of project configurations, let&rsquo;s go back to
our example and say now that we want to use a different graphic for the
MediaControlSkin device. We already have our two project configurations defined,
so what we need to do is add some pre-processing code so that the compiler
knows it should use one image for DefaultConfiguration and another for
MediaControlSkin. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Click the <i>Source</i> button to view the </span><span
class=TechText1><span lang=EN-US style='font-size:10.0pt'>TestMIDlet</span></span><span
lang=EN-US> source code. Then scroll down to the </span><span class=TechText1><span
lang=EN-US style='font-size:10.0pt'>get_image1()</span></span><span lang=EN-US> method. Notice that some sections have a blue background &ndash; these are &ldquo;guarded
blocks&rdquo; that are generated by the VMD, and cannot be edited. Highlight the code
beginning with &ldquo;//Insert pre-init code here and ending with &ldquo;//Insert post-init
code here.&rdquo; Right click on the selection and choose <i>Preprocessor
Blocks&gt;Create If/Else Block</i>. A menu with all the available
configurations and abilities appears. Double click on DefaultConfiguration.
Your code should look like <b>Figure&nbsp;11</b>. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Notice that the </span><span class=TechText1><span
lang=EN-US style='font-size:10.0pt'>//#else</span></span><span lang=EN-US> directive has a pink background. This code <i>can</i> be edited. Change the
graphic name &ldquo;/mobileduke.png&rdquo; to the name of another graphic (such as
&ldquo;/veryproudduke.png&rdquo;). Now, when you run our MIDlet using the
DefaultConfiguration, the emulator will display the &ldquo;mobile duke&rdquo; image. When
you run the MIDlet using the MediaControlSkin configuration, or any other
configuration you add later, the emulator will display the second graphic. This
is a very simple example of what&rsquo;s possible with preprocessor blocks, but it hopefully
gives you a taste <br>
of what they can do. </span></p>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image021.png" width="527" height="535"></td>
</tr>
<tr>
<td><p class=NB-Corpo11311111112111> <strong>Figure 11.</strong> Preprocessor code.<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Interttulo31><span lang=EN-US>Deploying to
multiple devices</span></p>
<p class=NB-Corpo31><span lang=EN-US>&nbsp;Now
that you have an application that works with two devices, it&rsquo;s time to deploy
it. The deployment property page shown in <b>Figure&nbsp;12</b> shows the
different deployment methods available. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Because deployment is set in the project
Properties, you can define a different deployment for each configuration. When
you have chosen your deployment method, choose <i>Build&gt;Build All Main
Project Configurations</i>. Then you&rsquo;ll have a JAR for each target device
you&rsquo;re programming for. </span><br></p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="/images_www/magazine/mobpack/images/image023.png" width="717" height="517"></td>
</tr>
<tr>
<td height="21"><p class=NB-Corpo1131111111211111> <strong>Figure 12.</strong> Deployment properties.<br>
<br>
</p></td>
</tr>
</table>
<p class=NB-Interttulo31><span lang=EN-US>Other features </span></p>
<p class=NB-Corpo31><span lang=EN-US>Our example was purposefully kept simple to
focus on the design, configuration, and deployment features of the Mobility
Pack for CLDC. But there are two other important features we&rsquo;d like to mention
quickly before we move on to the CDC Pack. </span></p>
<p class=NB-Corpo31><span lang=EN-US>The End-to-End Bridge technology is a set of
two wizards that enable you to quickly modify your MIDlet to consume Web <br>
Services. The J2ME Web Service Client creates a client-side proxy that connects
directly to Web Services that support the JSR-172 (J2ME Web Services)
specification. The Mobile Client to Web Application Generator generates a
servlet that connects to a web application that includes a Web Service client. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Another important feature is JMUnit testing
support. The Mobilty Pack for CLDC provides built-in JMUnit support for
generating and executing unit tests for MIDP/CLDC applications. You can
generate and navigate to tests by selecting any class or package node in the
Projects window and choosing from the <i>Tools&gt;JUnit</i> menu.</span><br>
</p>
<p class=NB-Interttulo31><span lang=EN-US>NetBeans
Mobility Pack for CDC</span></p>
<p class=NB-Corpo31><span lang=EN-US>The Mobility Pack for CDC (Connected Device
Configuration) makes it possible to create, test, and deploy applications for
several CDC platforms including the Sun Java CDC Toolkit, Sony Ericsson CDC
Platform 1, Nokia S80, SavaJe and Ricoh MFP, as well as Windows CE using
NSIcom&rsquo;s CrEme CDC virtual machine. Although it is not yet as complete as the
MIDP/CLDC Pack, many new features will be added when Mobility Pack 6.0 is
released.</span></p>
<p class=NB-Corpo31><span lang=EN-US>You create CDC projects in the same manner
as MIDP/CLDC projects, using the New Project Wizard. Before you begin, you will
want to install the Sun Java Toolkit for CDC or an emulator platform from one
of the growing list of manufacturers the Mobility Pack supports. You can find
this list in the NetBeans Mobility Pack for CDC Quick Start Guide. </span></p>
<p class=NB-Corpo31><span lang=EN-US>To get started on a project, Choose <i>File&gt;New
Project</i>. Choose the category <i>CDC</i>, project type <i>CDC Application</i>.
The wizard will guide you through the rest of the steps for creating your Main
Project. </span></p>
<p class=NB-Corpo31><span lang=EN-US>Once you&rsquo;ve created a project, you can use
the Matisse GUI Builder with either the AGUI toolkit or the Personal Profile
1.0, in the same way you would use it for regular Java SE development. For
Personal Profile GUI development, right click the Main.java form in the GUI
Builder, and choose <i>Set Layout&gt;Free Layout</i>. Then drag and drop
components from the Palette window into the Design Area of the GUI Builder. You
can also take advantage of JUnit testing and other key features of the NetBeans
IDE when developing CDC applications in the Mobility Pack for CDC. </span></p>
<p class=NB-Interttulo31><span lang=EN-US>What&rsquo;s coming in NetBeans
Mobility Pack 6.0</span></p>
<p class=NB-Corpo31><span lang=EN-US>The NetBeans Mobility Pack has many dramatic
changes coming up. One of the most significant changes, as we&rsquo;ve mentioned
before, is that the CLDC/MIDP and CDC Packs will be merged into a single UI,
making it easier to create end-to-end applications. Other exciting new features
include: </span></p>
<p class=NB-Corpo31><span lang=EN-US style='font-family:
Wingdings;'>&sect; </span><span lang=EN-US>New custom
components to simplify programming, including a File Browser, an SMS Composer,
a Login Screen and a Personal Information Manager (PIM) Browser</span></p>
<p class=NB-Corpo31><span lang=EN-US style='font-family:
Wingdings;'>&sect; </span><span lang=EN-US>VMD support
for the MIDP 2.x Game API that allows creating tiled and animated layers for
environment design, and support for animated character and sprites.</span></p>
<p class=NB-Corpo31><span lang=EN-US style='font-family:
Wingdings;'>&sect; </span><span lang=EN-US>Improved
VMD UI, including support for non-visual components and a design analyzer. </span></p>
<p class=NB-Corpo31><span lang=EN-US style='font-family:
Wingdings;'>&sect; </span><span lang=EN-US>CDC support
for project configurations and pre-processing blocks.</span></p>
<p class=NB-Interttulo31><span lang=EN-US>Conclusions</span></p>
<p class=NB-Corpo31><span lang=EN-US>This article was intended to give you a
hands-on sense of the capabilities of the Mobility Pack for CLDC/MIDP and CDC,
and a running start on building your first mobile application. You can learn
more about the Mobility Pack by reading the tutorials and articles on the
NetBeans website, joining the NetBeans community of developers, and most
importantly, by going out there and creating great mobile applications! </span><span
lang=EN-GB style='color:#9A1560;letter-spacing:.15pt;'> </span></p>
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#9A1560">
<tr>
<td height="33" bgcolor="#9A1560"><blockquote>
<p class="NB-Listagenstitulos"><strong>Links</strong></p>
</blockquote></td>
</tr>
<tr>
<td height="201"><br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="40">&nbsp;</td>
<td><a href="https://netbeans.org/kb/trails/mobility.html"><span class="style3"><font color="#9A1560" face="Verdana">netbeans.org/kb/trails/mobility.html </font></span></a></td>
</tr>
<tr>
<td height="19">&nbsp;</td>
<td><font size=1 color=black face="Verdana"><span style="font-size:9.0pt;letter-spacing:0pt">The Mobile Applications Learning Trail guides you <br>
through a structured approach to learning about the Mobility Pack. </span></font></td>
</tr>
</table>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="40">&nbsp;</td>
<td><a href="https://netbeans.org/kb/trails/mobility.html"><span class="style3"><font color="#9A1560" face="Verdana">netbeans.org/kb/trails/mobility.html </font></span></a></td>
</tr>
<tr>
<td height="19">&nbsp;</td>
<td><span class="style1"><font color=black face="Verdana">Mobility Pack for CLDC/MIDP documentation index </font></span></td>
</tr>
</table>
<br>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="40" height="19">&nbsp;</td>
<td><a href="https://netbeans.org/kb/docs/javame/cdc-quickstart.html"><span class="style3"><font color="#9A1560" face="Verdana">netbeans.org/kb/docs/javame/cdc-quickstart.html</font></span></a></td>
</tr>
<tr>
<td height="19">&nbsp;</td>
<td><span class="style1"><font color=black face="Verdana">Mobility Pack for CDC Quick Start Guide</font></span></td>
</tr>
</table>
</tr>
</table>
<br>
<br>
<table width="770" border="1" cellpadding="0" cellspacing="0" bordercolor="#BC001C">
<tr>
<td><table width="100%" border="0" cellpadding="0" cellspacing="1" bordercolor="#9A1560">
<tr>
<td width="93"><div align="center"><img src="/images_www/magazine/autores/Anatole_Wilson.jpg" alt="Autor" width="80" height="94"></div></td>
<td width="677" valign="middle"><p class=NB-Corpo11112><span class="NB-Corpo11121"><strong>Anatole Wilson</strong><br>
(anatole.wilson@sun.com) lives in Pittsburgh, Pennsylvania and has been the Senior Technical Writer for the Mobility Pack since its inception. He has worked for various high-tech companies, including IBM and Oracle, and, as a freelance writer, has written articles for publication in various magazines.<br>
<br>
</span></p></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
</div>
</body>
</html>