<DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> 
<title>NetBeans Mobility Pack for CDC 5.5 Installation Guide</title>
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">

</head>
<body>
<a name=top></a> 
<h1>NetBeans Mobility Pack for CDC 5.5 Installation Guide</h1> 
<p>The NetBeans Mobility Pack for CDC 5.5 provides an environment for rapidly 
  building Java Micro Edition (Java ME) applications that support devices using 
  the Connected Device Configuration (CDC) and the Personal, Foundation, and AGUI 
  Profiles. </p> 
<p><b>Contents</b></p> 
<ul>
  <li> <a href="#prerequisites" title="Prerequisites">Prerequisites</a> </li>
  <li> <a href="#installation" title="Installing the Software">Installing the 
    Software</a> </li>
  <li><a href="#emulators">Installing Emulator Platforms</a></li>
  <li> <a href="#uninstallation" title="Uninstalling the Software">Uninstalling 
    the Software</a> </li>
  <li> <a href="#troubleshoot" title="Troubleshooting">Troubleshooting</a> </li>
</ul> 
<p><b>Note:</b> For information about system requirements for the software included 
  in this bundle, see the <a href="relnotes-mobilitycdc.html">NetBeans Mobility Pack for CDC 5.5 Release Notes</a>.</p> 
<h2><a name=prerequisites></a>Prerequisites</h2> 
<p>This topic specifies the prerequisites that must be met before you start to 
  install NetBeans Mobility Pack for CDC 5.5. </p>
<blockquote> 
  <h3>Required Software</h3>
  <p>Hardware, software, and operating system requirements are detailed in the 
    <a href="relnotes-mobilitycdc.html">NetBeans Mobility Pack for CDC 5.5 Release 
    Notes</a>.</p>
  <p>You will need to have the following software installed before you install 
    the NetBeans Mobility Pack for CDC 5.5.</p>
  <ul>
    <li><a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">Java 
      SE Development Kit (JDK) 5.0</a></li>
    <li><a href="http://services.netbeans.org/downloads/index.php" target="_blank">NetBeans 
      IDE 5.5</a></li>
  </ul>
  <p>The Sun Java Toolkit for CDC is integrated within the NetBeans Mobility Pack. 
    However, if you want to program applications for other supported platforms, 
    you need to download and install one or more of the following SDKs:</p>
  <ul>
    <li>Ricoh 
      <ul>
        <li>Embedded Software Architecture Emulator (Registration required for 
          <a href="http://www.ricoh.com/esa/index.html">download</a>)</li>
      </ul>
    </li>
    <li>Sony Ericsson 
      <ul>
        <li>UIQ 3 SDK (login required for <a href="http://developer.uiq.com/">download</a>)</li>
        <li>M600 Extension Package for the UIQ 3 SDK Beta 3 (<a href="http://developer.sonymobile.com/downloads/sdks/">download</a>)</li>
        <li>P990 Extension Package for the UIQ 3 SDK Beta 3 (<a href="http://developer.sonymobile.com/downloads/sdks/">download</a>)</li>
      </ul>
    </li>
    <li>Nokia 
      <ul>
        <li>Nokia Series 80 Platform SDK for Symbian OS, for Java, Personal Profile 
          (<a href="http://www.forum.nokia.com/info/sw.nokia.com/id/449a2f84-2a8a-44fa-a7f4-93b53cb9c89a/Series_80_Platform_SDK_s_for_Symbian_OS_for_Java.html">download</a>) 
        </li>
      </ul>
    </li>
    <li> SavaJe
      <ul>
        <li> The SavaJe Operating System (OS) (Registration Required for download)<br>
            <br>
        </li>
      </ul>
    </li>
  </ul>
</blockquote> 

<p align=center><a href="#top">top</a></p> 
<h2><a name=installation></a>Installing the Software</h2> 
<p>Following are instructions for installing the NetBeans Mobility Pack for CDC 
  5.5. These instructions assume that you have already installed the<a href="http://java.sun.com/javase/downloads/index.jsp"> 
  Java SE Development Kit</a> and the <a href="https://netbeans.org/community/releases/55/install.html">NetBeans 
  IDE 5.5</a>. 
<blockquote> 
  <p><b>To install the NetBeans Mobility Pack 5.5 for CDC:</b></p> 
  
  <ol>
    <li> Download the installer file from <a href="http://services.netbeans.org/downloads/index.php?rs=11&p=10">http://services.netbeans.org/downloads/index.php?rs=11&amp;p=10</a></li>
    <li>Navigate through your system to the installer file location and double-click 
      the installer's icon to launch the installer. </li>
    <li> At the Welcome page of the installation wizard, click Next. </li>
    <li> Accept the license agreement and click Next. </li>
    <li> At the installation directory page of the installation wizard, specify 
      the location of your NetBeans IDE 5.5 installation. </li>
    <li> The installation wizard searches for compatible JDK installations. If 
      your JDK is not in the default location, you will need to specify the location 
      of your Java JDK 1.5.0 or higher. You can also type the path to another 
      installed JDK or use the Browse button to navigate to and select another 
      installation. </li>
    <li>When installation is complete, click Finish to exit the wizard.</li>
  </ol> 
<p>The default projects directory is <tt>C:\Documents and Settings\<i>username</i></tt>. 
  If you uninstall NetBeans Mobility Pack for CDC, this directory is not deleted, 
  and will be identified the next time you install the Mobility Pack for CDC.</p>
<div class=greybox>
    <p><b>Note: </b>If you encounter problems during software installation, 
      see <a href="#troubleshoot">Troubleshooting</a> for full descriptions and 
      suggested workarounds for unresolved issues that could affect the installation 
    process.</p>
  </div>  
    <p>&nbsp;</p>
    <p><b>Installing NetBeans Mobility Pack 5.5 for CDC to non-Windows platforms</b></p>
    <p>Currently the Mobility Pack for CDC is not available for non-Windows platforms due to a lack of  
	3rd party emulator support for other platforms. However, we do offer an unsupported binary zip of the pack 
	for those who wish to install the pack on other operating systems. Please note that there is no documentation 
	or support for the binary zip. For information about downloading and installing the binary zip, please visit 
	the <a href="http://wiki.netbeans.org/wiki/view/MobilityFromZipToNB">FAQ page</a> for this topic. The 
	<a href="https://netbeans.org/projects/mobility/lists/users/archive">Mobility Users mailing list</a> 
	is also available for further questions related to this topic.</p>
  
</blockquote>
<p align=center><a href="#top">top</a></p>
<h2><a name="emulators"></a>Installing Emulator Platforms</h2>
<p>To develop CDC applications, you need to have the CDC platform registered in 
  the IDE. The following instructions describe the process for installing each 
  emulator platform currently supported by the IDE.</p>
<blockquote> 
  <h3>Sun Java Toolkit for CDC<a name="cdctk"></a></h3>
  <p>The Sun Java Toolkit for CDC comes integrated with the NetBeans Mobility 
    Pack, so there is no need to download and install this emulator. </p>
  <p>However, if you do want to have a separate installation of the Toolkit, you 
    can follow these instructions: </p>
  <ol>
    <li>Download the Sun Java Toolkit for CDC<font color="#FF0000"> </font>1.0 
      from the Sun Developer Network (<a href="http://java.sun.com/products/cdctoolkit/overview.html">download</a>).</li>
    <li>Install the platform emulator according to the instructions provided. 
    </li>
    <li>From the Main Menu, choose Tools &gt; Java Platform Manager. </li>
    <li>Click Add Platform. The Add Java Platform dialog opens. </li>
    <li>Select Java Micro Edition CDC Platform Emulator and click Next. </li>
    <li>Select the folder that contains the platform SDK. The default directory 
      is <code>C:\CDCTK10\.</code> Click Next.<code> </code></li>
    <li>If desired, use the Platform Name dialog to add or remove additional resource 
      libraries. </li>
    <li>Click Finish. The IDE registers the CDC platform.</li>
  </ol>
  <p align=center><a href="#top">top</a></p>
  <h3>Ricoh Embedded Software Architecture</h3>
  <p>The Mobility Pack for CDC supports the Ricoh Embedded Software Architecture. 
    To integrate support for this architecture, follow these instructions: </p>
  <ol>
    <li>Download the following files from the <a href="http://www.ricoh.com/esa/index.html">Ricoh 
      Developer Program Site</a> web site: </li></ul>
    <ul>
      <li><a href="http://developer.sonyericsson.com/site/global/docstools/symbian/p_symbian.jsp"> 
        </a>Embedded Software Architecture Emulator (login required for <a href="http://www.ricoh.com/esa/index.html">download</a>)<font color="#FF0000"></font></li>
    </ul>
    <li>Unzip the file <code>Embedded_Software_Architecture_Emulator_1.14c.zip.<br>
      </code>The files are extracted to a folder<code> <em>&lt;root&gt;</em>\Embedded_Software_Architecture_Emulator_1.14c\.</code></li>
    <li> From the Main Menu of the NetBeans IDE, choose Tools &gt; Java Platform 
      Manager. </li>
    <li>Click Add Platform. The Add Java Platform dialog opens. </li>
    <li>Select Java Micro Edition CDC Platform Emulator and click Next. </li>
    <li>Select the folder that contains the platform SDK. The default directory 
      is <code>C:\Embedded_Software_Architecture_Emulator_1.14c\.</code> Click 
      Next.<code> </code></li>
    <li>If desired, use the Platform Name dialog to add or remove additional resource 
      libraries. </li>
    <li>Click Finish. The IDE registers the CDC platform.</li>
  </ol>
  <p align=center><a href="#top">top</a></p>
  <h3>Sony Ericsson CDC Platform for the UIQ SDK 3</h3>
  <p>The Mobility Pack for CDC supports the Sony Ericsson CDC Platform 1. To integrate 
    support for the M600 and P990 series devices, follow these instructions: </p>
  <ol>
    <li>Download the following files from the <a href="http://developer.sonyericsson.com">developer.sonyericsson.com</a> 
      web site: </li>
    <ul>
      <li><a href="http://developer.sonyericsson.com/site/global/docstools/symbian/p_symbian.jsp"> 
        </a>UIQ 3 SDK (login required for <a href="http://developer.uiq.com/">download</a>)<font color="#FF0000"></font></li>
      <li>M600 Extension Package for the UIQ 3 SDK (<a href="http://developer.sonymobile.com/downloads/sdks/">download</a>)</li>
      <li>P990 Extension Package for the UIQ 3 SDK (<a href="http://developer.sonymobile.com/downloads/sdks/">download</a>)</li>
    </ul>
    <li>Unzip the <code>UIQ3SDK_final.zip</code> file. </li>
    <li>Navigate to the location on your system where the files were extracted 
      and double-click on <code>UIQS3SDK.exe</code>.<br>
      The UIQ 3 SDK Installation Wizard opens. </li>
    <li>Follow the Wizard instructions to install the SDK. <br>
      The default directory for the installation is <code>C:\Symbian\UIQ3SDK\</code></li>
    <li>To install the M600 and P990 extension packages, navigate to the download 
      locations on your system and double-click on the installer icons to start 
      the installation wizards. </li>
    <li>Follow the wizard instructions to install each SDK. </li>
    <li>From the Main Menu of the NetBeans IDE, choose Tools &gt; Java Platform 
      Manager. </li>
    <li>Click Add Platform. The Add Java Platform dialog opens. </li>
    <li>Select Java Micro Edition CDC Platform Emulator and click Next. </li>
    <li>Select the folder that contains the platform SDK. The default directory 
      is <code>C:\Symbian\UIQ3SDK\.</code> Click Next.</li>
    <li>If desired, use the Platform Name dialog to add or remove additional resource 
      libraries. <br>
      <br>
      <strong>Note:</strong> If you see the message, &quot;Platform is not correctly 
      configured. Use SDK Configuration tools to install mandatory tools,&quot; 
      an emulator style has not been selected.<br>
      <br>
      To fix this: 
      <ol>
        <li>Click on the Configurations tab and click the SDK Configuration Tool 
          button. </li>
        <li>In the SDK Configuration, Click the Style tab and choose a style from 
          the Emulator Styles. Choose Apply Styles. </li>
        <li>Close the SDK Configurator. </li>
      </ol>
    </li>
    <li>Click Finish. The IDE registers the CDC platforms.</li>
  </ol>
  <p align=center><a href="#top">top</a></p>
  <h3>Nokia Series 80 Platform SDK for Symbian OS, for Java, Personal Profile</h3>
  <p>The Mobility Pack for CDC supports Series 80 Platform SDK for Symbian OS, 
    for Java, Personal Profile. To integrate support for Nokia Series 80 devices, 
    follow these instructions: </p>
  <ol>
    <li>Download the Nokia Series 80 Platform SDK for Symbian OS, for Java, Personal 
      Profile from the Sun Developer Network (<a href="http://www.forum.nokia.com/info/sw.nokia.com/id/449a2f84-2a8a-44fa-a7f4-93b53cb9c89a/Series_80_Platform_SDK_s_for_Symbian_OS_for_Java.html">download</a>). 
      The file name is <code>S80_DP_2_0_PP_SDK.zip.</code></li>
    <li>Unzip the file. </li>
    <li>Navigate to the location on your system where you unzipped the file. Double-click 
      on the <code>setup.exe</code> file icon. <br>
      The Nokia installer wizard opens. </li>
    <li>Follow the wizard instructions to install the SDK. <br>
      The wizard will prompt you to choose the device you want to be the default 
      device. Choose the <code>Series80_DP2_0_PP_SDK</code>.</li>
    <li>From the Main Menu of the NetBeans IDE, choose Tools &gt; Java Platform 
      Manager. </li>
    <li>Click Add Platform. The Add Java Platform dialog opens. </li>
    <li>Select Java Micro Edition CDC Platform Emulator and click Next. </li>
    <li>Select the folder that contains the platform SDK. The default directory 
      is <code>C:\Symbian\S80_DP2_0_PP_SDK.</code> Click Next.<code> </code></li>
    <li>If desired, use the Platform Name dialog to add or remove additional resource 
      libraries. </li>
    <li>Click Finish. The IDE registers the CDC platform.</li>
  </ol>
  <p align=center><a href="#top">top</a></p>
  <h3 align=center>SavaJe Mobile Platform</h3>
  <p>The Mobility Pack for CDC supports the creation of Xlets using the SavaJe 
    Operating System. Support for the SavaJe OS is built into the Sun Java Wireless 
    Toolkit for CDC. Because the Jasper S20 is currently available only as a preview 
    edition, there is no emulator skin available for the Jasper S20. You can, 
    instead, use the <code>DefaultColorPhone</code> device to simulate the behavior 
    of the Jasper S20.</p>
  <div class="indent"> 
    <p>If you do have a Jasper S20, these instructions show you how to deploy 
      the application to your device. Here is what you need: </p>
  <ul>
      <li> The Jasper S20 phone. </li>  <li> The SavaJe Operating System (OS) (Registration Required) </li>
    <li> 
      GSPDA Mobile Device Software (MCCI USB drivers). 
    </li>
  </ul>
  <h4></a>Setting Up the Handset </h4>
  <p>The following steps describe the process for installing the software you 
    need for the tutorial on the Jasper S20 phone. </p>
    <h4 class="tutorial">Installing the SavaJE OS</h4>
    <p><strong>NOTE: </strong>This procedure is for Jasper S20 handsets that have 
      a previous version of the SavaJe OS installed and you want to retain existing 
      calibration and factory settings.</p>
    <p>There are three builds of the SavaJe OS that might be available from www.SavaJe.com: 
    </p>
  <ul>
    <li> 
      <code>JasperS20.zip</code><br>
        The commercial build that ships on the phone.
    </li>
    <li> 
      <code>JasperS20_EA_Developer.zip</code><br>
        JavaOne Early Access developer build without the Java Debug Wire Protocol 
        (JDWP) enabled.
    </li>
    <li> 
      <code>JasperS20_EA_Developer_debug.zip</code><br>
        JavaOne early access developer build with JDWP enables. To run a bundle 
        with JDWP debugging, you need to load this build.
    </li>
  </ul>
    <p>Follow these steps to install a different build of the SavaJE OS on the 
      phone. </p>
    <ol>
      <li> Extract (unzip) the zip file containing the desired build to the root 
        of the mini-SD card. </li>
      <li>Connect a USB/power cable to the handset.</li>
      <li>Power the handset while holding the Camera key down.</li>
      <li>At the updater menu screen, select Factory Reset by moving the joystick 
        down until &quot;Factory Reset&quot; is highlighted. Initiate the factory 
        reset by moving the joystick to the right. Use the joystick to navigate 
        to Yes and then select Yes by moving the joystick to the right. <br>
        The phone should begin loading the new build. After the load is complete, 
        you may be prompted to press any key to reboot the phone. </li>
      <li>The handset then reboots and displays the Xplore screen. If the battery 
        charging screen displays during the reboot, press the power button to 
        continue rebooting the phone. </li>
    </ol>
    <p>The first time the handset boots after a factory reset, a Language/Locale 
      selection menu displays. Make your selections by navigating with the joystick 
      and pressing the joystick button. You are also prompted to set the time. 
    </p>
    <h4 class="tutorial">Registering the CDC Platform</h4>
    <p>Follow the instructions provided for the <a href="#cdctk"> Sun Java Wireless 
      Toolkit for CDC 1.0</a>. <br>
    </p>
  </div>
  <p align=center><a href="#top">top</a></p>
</blockquote>
<h2><a name=uninstallation>Uninstalling the Software</a></h2> 
<p>This section contains information for uninstalling NetBeans Mobility Pack for CDC 5.5 from your system. 
<blockquote>
  <ol>
    <li> Shut down the IDE. </li>
    <li> From the Control Panel, start Add or Remove Programs, select NetBeans Mobility Pack for CDC 5.5 and click Change/Remove. </li>
    <li> Follow the instructions in the uninstaller. </li>
  </ol>
</blockquote>
  <p><strong>Note:</strong> You can also uninstall any or all of the Emulator 
    platforms through the Windows Control Panel. </p>
<p align=center><a href="#top">top</a></p>
<h2><a name=troubleshoot>Troubleshooting</a></h2> 
<p>If you experience problems installing or running the software, see the list 
  of issues below for workarounds. For a complete list of known issues, system 
  requirements, and configuration information, see the <a href="relnotes-mobilitycdc.html">Release 
  Notes</a>. </p>
<p> If you encounter a problem not listed in the release notes or wish to request 
  an enhancement, file an issue in the NetBeans bug tracking system, IssueZilla, 
  at <a href="https://netbeans.org/community/issues.html">https://netbeans.org/community/issues.html</a>. 
  For NetBeans Mobility Pack issues, select the "mobility" component, select version 
  &quot;5.5&quot;, and then select the &quot;cdc pack&quot; subcomponent. If you 
  are not sure of the right subcomponent name, choose "other".</p>
<p>If you are already logged in to netbeans.org, you can go directly to the Mobility 
  Pack issue entry screen: <a href="https://netbeans.org/bugzilla/enter_bug.cgi?component=mobility&version=5.5">https://netbeans.org/bugzilla/enter_bug.cgi?component=mobility&amp;version=5.5</a>.</p>
<ul>
<p align=center><a href="#top">top</a></p>
</ul> 
</body>
</html>
