<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>NetBeans IDE - README</title>
   <link rel="stylesheet" type="text/css" href="../../../../netbeans.css">
</head>
<body>
<h1>README</h1>

<hr>
<b>Note:</b> The most recent version of this document is available <a href="README.html">on-line</a>.
<hr>

<h2>NetBeans IDE - Release 3.3.2</h2>
<p><b><font color="#CC3333">Contents</font></b>

<dl>
        <dd><a href="#Introduction">1. Introduction</a></dd>
        <dd><a href="#WhatsNew">2. What's New In This Release</a></dd>
        <dd><a href="#SystemRequirements">3. System Requirements</a></dd>
        <blockquote>
        <dl>
                <dd><a href="#req_hw">3.1 Hardware</a></dd>
                <dd><a href="#req_os">3.2 Operating System</a></dd>
                <dd><a href="#req_sw">3.3 Software</a></dd>
        </dl>
        </blockquote>
        <dd><a href="#Installation">4. Installation</a></dd>
        <dd><a href="#Startup">5. The Launcher and Startup Parameters</a></dd>
        <dd><a href="#Compatibility">6. Compatibility/Upgrading</a></dd>
        <dd><a href="#KnownProblems">7. Known Problems</a></dd>
        <dd><a href="#Documentation">8. Documentation</a></dd>
        <dd><a href="#MoreInfo">9. More Information</a></dd>
        <dd><a href="#acknowl">10. Acknowledgments</a></dd>
</dl>

<hr>
<p>
<h2><a name="Introduction">1. Introduction</a></h2><p>
<blockquote>
        <p>
        Welcome to NetBeans IDE version 3.3.2, a modular, standards-based integrated development environment (IDE),
        written in Java.
        NetBeans is not just an IDE. NetBeans is:
        <ul>
        <li>An <a HREF="https://netbeans.org/ide/index.html">open source IDE</a> written in
        the Java<sup CLASS="tmtext">TM</sup> programming language.</li>

        <li>A <a HREF="https://netbeans.org/platform/index.html">tools platform</a> into which other
        tools and functionality can be seamlessly integrated by writing and
        incorporating modules.</li>

        <li>An <a HREF="../../../../kb/articles/start_app_NB.html">application core</a> which can be
        used as a generic framework to build any kind of application.</li>
        </ul>
        <p><a HREF="https://netbeans.org/features/index.html">Read more about NetBeans ...</a>
        <p>
</blockquote>

<p><h2><a name="WhatsNew">2. What's New In This Release</a></h2><p>
<blockquote>NetBeans IDE 3.3.2 is a bug fix release of NetBeans
3.3.1. This release contains more than <B>120</B> bug fixes. The
complete list of bugs fixed between the 3.3.1 and 3.3.2 releases can
be found on this <A HREF="../nb332-fixes.html">page</A>.
</blockquote>
<blockquote>In addition, the NetBeans 3.3.2 release contains changes
in the OpenVMS launcher and updated online help.</blockquote>
<blockquote>NetBeans IDE 3.3.1 was a bug fix release of NetBeans 3.3.
It contains about <b>550</b> new bug fixes. The complete list of
fixed bugs can be found in IssueZilla using this
        <a href="https://netbeans.org/bugzilla/buglist.cgi?issue_type=DEFECT&issue_status=RESOLVED&issue_status=VERIFIED&issue_status=CLOSED&resolution=FIXED&target_milestone=3.3.1&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&issueidtype=include&issue_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&issue_file_loc=&issue_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=P1P2&newqueryname=&order=Reuse+same+sort+as+last+time">query</a>.
</blockquote>
<blockquote>NetBeans IDE 3.3 release contains a lot of new features.
The complete list of new features implemented in this release is
available in the IDE's installation folder in the <a HREF="../CHANGES.html">CHANGES.html</a>
file.
</blockquote>

<p><h2><a name="SystemRequirements">3. System Requirements</a></h2><p>
<blockquote>
        Since NetBeans is written in pure Java, it should run on any working implementation
        of Java(TM) 2 SDK, Standard Edition.
        <p><h3><a name="req_hw">3.1 Hardware</a></h3><p>
        <blockquote>
                The hardware requirements are similar for all platforms, but it may differ slightly for some cases.
                The recommended configuration for running NetBeans IDE is:
                <ul>
                        <li><b>Disk space</b>: 40 Mbytes</li>
                        <li><b>Memory</b>: 128 (Windows platforms) - 256 Mbytes (most other operating systems)</li>
                        <li><b>Processor</b>: PII/300, UltraSPARC II/450 (Solaris), 500MHz Alpha (Open VMS) or equivalent</li>
                </ul>
                <b>Note:</b> If your system's memory is lower than the above recommendation, you should set
                a lower maximum heap size in the <code>bin/ide.cfg</code> file. For example, if your system has 64 Mbytes of memory,
                you can change the <code>-J-Xmx96m</code> parameter to <code>-Xmx48m</code>.
        </blockquote>
        <p><h3><a name="req_os">3.2 Operating System</a></h3><p>
        <blockquote>
                Any operating system supporting Java(TM) 2 SDK, Standard Edition.
                Below is a list of platforms that the NetBeans IDE can run on.
                If you know about any other platform, please let us know.
                <ul>
                        <li>Windows 95, 98, NT 4.0, 2000, XP, ME</li>
                        <li>Solaris 8</li>
                        <li>Linux - any distribution</li>
                        <li>OS/2</li>
                        <li>Open VMS 7.2-1 or later</li>
                        <li>Mac OS X 10.1.1</li>
                        <li>HP-UX</li>
                </ul>
        </blockquote>
        <p><h3><a name="req_sw">3.3 Software</a></h3><p>
        <blockquote>
                The NetBeans IDE requires a Java 2-compatible JVM. Download the latest version of the appropriate JDK from the following sites:
                <ul>
                        <li><b>Windows</b>: <a HREF="http://java.sun.com/j2se/1.4/download.html">http://java.sun.com/j2se/1.4/download.html</a></li>
                        <li><b>Solaris</b>: <a HREF="http://java.sun.com/j2se/1.4/download.html">http://java.sun.com/j2se/1.4/download.html</a></li>
                        <li><b>Linux</b>: <a HREF="http://http://java.sun.com/j2se/1.4/download.html">http://java.sun.com/j2se/1.4/download.html</a></li>
                        <li><b>OS/2</b>: <a href="http://service.boulder.ibm.com/asd-bin/doc/en_us/catalog.htm">http://service.boulder.ibm.com/asd-bin/doc/en_us/catalog.htm</a></li>
                        <li><b>Open VMS</b>: <a href="http://www.compaq.com/java/alpha/index.html">http://www.compaq.com/java/alpha/index.html</a></li>
                        <li><b>Mac OS X</b>: Mac OS X 10.1.1. The upgrade from Mac OS X 10.1 to 10.1.1 is available via the Apple's Software Update mechanism.
                        See also the <a href="#Installation">installation</a> section in this document. More inforamtion  about using
                        NetBeans on Mac OS X is available at <a HREF="https://netbeans.org/ide/support/mac.html">https://netbeans.org/ide/support/mac.html</a></li>
                </ul>

                <p>If you are running on
                a Microsoft Windows system, please note that the <code>runide.exe</code> installer does not detect
                beta versions of the JDK. You can set the <CODE>-jdkhome <I>jdk_home_dir</I></CODE> parameter
                in the <code>ide.cfg</code> file if you want to use a different JDK than the one detected by the
                installer. See
                <a href="#Startup">The Launcher and Startup Parameters</a> for more information.</p>
        </blockquote>
</blockquote>

<p><h2><a name="Installation">4. Installation</a></h2><p>
<blockquote>
        For <b>all platforms</b> you can download the <code>.zip</code> or the <code>.tar.gz</code>
        archive file and
        unpack it on the hard disk using your favorite tool.  Then you must customize
        the startup parameters to tell the IDE where to find the SDK.  Please read the
        <a href="#Startup">The Launcher and Startup Parameters</a> section for details.
        <p>
        On <b>Microsoft Windows</b> platforms you can download and run an <code>.exe</code> point-and-click
        installer that guides you through the required steps.
        <p>
        On <b>OpenVMS</b> <ul>
                <li>Download the OpenVMS NetBeans self-extracting archive to
                your OpenVMS system. You may want to put this file into
                its own empty subdirectory since documentation and the
                actual installable kit will be created there.</li>
                <li>Assure your default directory is set to the directory
                where the NetBeans archive was downloaded.</li>
                <li>Execute the command: <code>$ RUN kit_name</code><br>
                Replace <code>kit_name</code> with the full name of the
                self-extracting
                archive which you just downloaded. The contents of the
                archive will now be extracted to your directory.</li>
                <li>View the installation documentation which was created in
                the extraction process and follow the steps contained in
                the guide to complete the installation.</li>
        </ul>
        <p>

        On <b>Mac OS X</b>
        <ul>
               <LI>Untar, unzip to extract NetBeans.  Note: unzip is
               part of developers tools, so it is not available in normal installation,
               don't forget to use gnutar instead of tar. Using StuffitExpander to extract NetBeans can cause
               problems with truncated filenames for NetBeans 3.3. For more info see
               <A HREF="https://netbeans.org/bugzilla/show_bug.cgi?id=16987">
               Bad expansion of .tar.gz on Mac OS X</A></LI>
              <LI>To launch NetBeans open Terminal application and go to the <CODE>netbeans/bin</CODE> directory.
              </LI>
              <LI>Start NetBeans in the standard look and feel using following command<BR>
              <CODE>&nbsp;&nbsp;./runide.sh -jdkhome /Library/Java/Home</CODE><BR>
              The -jdkhome switch can be omitted if you set the environment variable JAVA_PATH or
              JDK_HOME to /Library/Java/Home
              </LI>
              <LI>NetBeans can be started in Aqua look and feel using<BR>
              <CODE>&nbsp;&nbsp;./runide.sh -jdkhome /Library/Java/Home -ui com.apple.mrj.swing.MacLookAndFeel -fontsize 10</CODE><BR>
              <BR>
                Note that settings are incompatible between Aqua and normal look and feel,
                therefore it is a good idea to have two different user directories if you want
                to test both normal and Aqua look and feel. Use the <code>-userdir</code> switch to set different user directories.<br>
        </ul>
        <p>
        <br>
        <i>Notes:</i>
        <ul>
        <li>Do not set your userdir to the same directory as IDE installation directory.</li>
        <li>BadSerData exceptions may be thrown when upgrading from 3.2.x release that used jdk1.3.1 to the NetBeans 3.3.2 release running on jdk1.4.0. In this case run the NetBeans 3.3.2 IDE on jdk1.3.1 and
        perform imports of your projects. You can then safely switch to jdk1.4.0.</li>
        </ul>

</blockquote>

<p><h2><a name="Startup">5. The Launcher and Startup Parameters</a></h2><p>
<blockquote>
The IDE is run by a launcher. Launchers for several platforms are located in the
<CODE>bin</CODE> subdirectory of the installation directory.
<P>
For <B>UNIX</B>, the Bourne shell script <CODE>runide.sh</CODE> is the launcher.<BR>
For <B>Microsoft Windows</B>, use the <CODE>runide.exe</CODE> or the <CODE>runidew.exe</CODE>
executable. <CODE>runide.exe</CODE> is a Microsoft Windows console application. When you run runide.exe, a console opens on the desktop with <CODE>stderr</CODE> and <CODE>stdout</CODE> output from the
NetBeans IDE. You can type <CODE>Ctrl-Break</CODE> to get the thread dump, or type <CODE>Ctrl-C</CODE> to quit the whole program. <CODE>runidew.exe</CODE> is the executable for running the NetBeans IDE as a window application without a console. <BR>
For <B>OS/2</B> <CODE>runideos2.cmd</CODE> is the launcher.<BR>
For <B>OpenVMS</B> <CODE>runideopenvms.com</CODE> is the launcher.<BR>

<P>
The launcher loads the JVM, builds the IDE's classpath,
passes it along with some default parameters to the JVM, and lets the
JVM launch the Java application. It also restarts the IDE after you have
used the Update Center.

<P>You can pass startup parameters to the launcher using the
<code>${IDE_HOME>/bin/ide.cfg</code> file. The launcher tries to read this file before it
starts parsing the command line options. You can break the
options into multiple lines.

<p>The following options are available:

<DL>
  <DT><CODE>-h</CODE><BR>
      <CODE>-help</CODE>
  <DD>print descriptions of common startup parameters
    <P>
  </DD>

  <DT><CODE>-jdkhome <I>jdk_home_dir</I></CODE></DT>
  <DD>use the specified version of the Java(TM) 2 SDK instead of the default SDK. By default on Windows
  systems, the loader looks into the Windows registry and uses the latest SDK available.
      <P>
  </DD>

  <DT><CODE>-classic</CODE><BR>

  </DT>
  <DD>use the classic JVM, instead of the default Java HotSpot Client VM.
      <P>
  </DD>

  <DT><CODE>-cp:p <I>additional_classpath</I></CODE>
  </DT>
  <DD>
      prepends the specified classpath to the IDE's classpath.
      <P>
  </DD>

  <DT><CODE>-cp:a <I>additional_classpath</I></CODE><BR>
      <CODE>-cp <I>additional_classpath</I></CODE>
  </DT>
  <DD>
      appends the specified classpath to the IDE's classpath.
      <P>
  </DD>

  <DT><CODE>-J<I>jvm_flags</I></CODE>
  <DD>
      passes specified flags directly to the JVM.
      <P>
  </DD>

  <DT><CODE>-ui <I>UI_class_name</I></CODE>
  <DD>use a given class as the IDE's LookAndFeel
    <P>
  </DD>

  <DT><CODE>-fontsize <I>size</I></CODE>
  <DD>use a given size in points as the font size for the IDE user interface.
    <P>
  </DD>

  <DT><CODE>-locale <I>language[:country[:variant]]</I></CODE>
  <DD>use the specified locale.
    <P>
  </DD>

  <DT><CODE>-userdir <I>userdir</I></CODE>
  <DD>explicitly specifies the userdir which is the location
      where user settings are stored.  If this option is not used on UNIX the
      location is ${HOME}/nbuser33. On Microsoft Windows systems, the launcher asks the user
      to specify the userdir and stores the value in the registry for later use.
  </DD>

</DL>

</blockquote>
<p><h2><a name="Compatibility">6. Compatibility/Upgrading</a></h2><p>
<blockquote>

When you first run NetBeans IDE 3.3.2, you can import the settings that you used
in a previous installation of the IDE. These settings include project-specific settings
and global options. If you choose not to import settings from a previous release, the
IDE begins with a set of default settings. The Import Wizard guides you through the choices.
<p>
You can import settings from NetBeans IDE v. 3.0, 3.1, and 3.2 and 3.3. You can also import
settings for Forte for Java v. 2.0 and 3.0.
<p>
In NetBeans IDE 3.2 and Forte for Java 3.0, you can find the user
directory when running the software. Choose Help | About, and click the Detail tab.
<p>
Though it is possible to import settings from a previous IDE installation into
NetBeans IDE 3.3, it is not possible to import settings from NetBeans
IDE 3.3 into earlier IDE releases.

</blockquote>
<p><h2><a name="KnownProblems">7. Known Problems</a></h2><p>
<blockquote>
<p>
The following list includes the known high priority issues in NetBeans 3.3.2.
<p>
<table BORDER="1" CELLSPACING="2" CELLPADDING="2">
<tr><td><b>Id</b></td><td><b>Priority</b></td><td><b>Component</b></td><td><b>Description</b></td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=14130">14130</a></td><td>P2</td><td>openide</td><td>Unable to add files to the already created jar(-Content)</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=12557">12557</a></td><td>P2</td><td>openide</td><td>Deadlock while modifying just loaded source.</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=19217">19217</a></td><td>P2</td><td>core</td><td>Sizes of split maximized windows not remembered after restart</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=19521">19521</a></td><td>P2</td><td>core</td><td>Memory leak</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=18101">18101</a></td><td>P3</td><td>javacvs</td><td>ClassCastException on org.netbeans.modules.javacvs.caching.CvsCacheFile</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=19133">19133</a></td><td>P2</td><td>scripting</td><td>Unable to make a simple examle with jdk1.3.1_02</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=12451">12451</a></td><td>P2</td><td>ui</td><td>Actions from popup menu not fully visible</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=19506">19506</a></td><td>P2</td><td>extbrowser</td><td>Starting Netscape 6 from IDE has problems</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=19612">19612</a></td><td>P3</td><td>extbrowser</td><td>Unable to launch web browser when program is check stopped</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=19589">19589</a></td><td>P2</td><td>web</td><td>WAR stores linked directories/files in the wrong directory (the root)</td></tr>
<tr><td><a href="https://netbeans.org/bugzilla/show_bug.cgi?id=11338">11338</a></td><td>P2</td><td>httpserv</td><td>IDE refuses to exit</td></tr>
</table>
<p>
<b>Note:</b> The most recent list of known issues is available <a href="#KnownProblems">on-line</a>.

</blockquote>
<p><h2><a name="Documentation">8. Documentation</a></h2><p>
<blockquote>
Documentation is provided for the NetBeans IDE in the form of online help.
To access all of the available online help, choose Help | Contents.

<p>
You can adjust the font sizes and colors in the online help by changing a single
cascading style sheet. In the IDE's installation directory, go to
<tt>/docs/org/netbeans/modules/usersguide</tt> and
edit or replace the <tt>ide.css</tt> file.
<p><i><b>Note:</b>The online help contains incorrect instructions for changing the <tt>ide.css</tt> file. Use
the instructions above instead.</i></p>

</blockquote>
<p><h2><a name="MoreInfo">9. More Information</a></h2><p>
<blockquote>
There is extensive information on the NetBeans project website, <a href="https://netbeans.org/">https://netbeans.org/</a>.
Included on the website are a FAQ and instructions on how to subscribe to mailing lists where you can post questions, comments, or help others.
<p>
As NetBeans is an open source project, you can get access to the source code, bug tracking system, and so on at <a href="https://netbeans.org/">https://netbeans.org/</a>.
<p>
More information about the <b>NetBeans IDE is available at
<a href="https://netbeans.org/ide/index.html">https://netbeans.org/ide/index.html</a>.
</blockquote>

</blockquote>
<p><h2><a name="acknowl">10. Acknowledgements</a></h2><p>
<blockquote>
This product includes software developed by the Apache Software Foundation (<a href="http://www.apache.org/">http://www.apache.org/</a>).
</blockquote>
</body>
</html>
