<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>NetBeans IDE - README</title>
<META NAME="description" CONTENT="Basic information for users of NetBeans 3.3.1">

   <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 on-line.
<hr>

<h2>NetBeans IDE - Release 3.3.1</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.1, 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/features/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/features/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="https://netbeans.org/features/index.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.1 is 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>.
        <p>
        NetBeans IDE 3.3 release contains a lot of new features. The
        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>
                NetBeans requires a Java 2-compatible JVM. Download the latest version of the appropriate JDK (1.3.x) from the following sites:
                <ul>
                        <li><b>Windows</b>: <a HREF="http://java.sun.com/j2se/1.3/download-windows.html">http://java.sun.com/j2se/1.3/download-windows.html</a></li>
                        <li><b>Solaris</b>: <a HREF="http://java.sun.com/javase/index.jsp">http://java.sun.com/javase/index.jsp</a></li>
                        <li><b>Linux</b>: <a HREF="http://java.sun.com/j2se/1.3/download-linux.html">http://java.sun.com/j2se/1.3/download-linux.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>
                NetBeans IDE also runs on JavaTM 2 SDK, Standard Edition, v. 1.4.0 (currently Beta 3).
                Download this version of the J2SE SDK from <a href="http://java.sun.com/j2se/1.4/">http://java.sun.com/j2se/1.4/</a>.
                <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 3.3.1 release running on jdk1.4.0. In this case run 3.3.1 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.1, 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.1.
<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=19686">19686</a></td><td>P3</td><td>core</td><td>Cannot shrink Output Window</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=19839">19839</a></td><td>P2</td><td>form</td><td>NullPointerException when closing NB after working with form</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="https://netbeans.org/community/releases/33/1/README.html#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>
The online help is not complete for the NetBeans IDE 3.3.1. Updates to
the online help may be provided periodically in the Update Center or as part
of any subsequent update releases.
<p>
You can adjust the font sizes and colors in the online help by changing a single
cascading style sheet. Go to <tt>/docs/org/netbeans/modules/usersguide</tt> and
edit or replace the <tt>ide.css</tt> file.

</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 <b>NetBeans IDE, Release 3.3.1</b> is available at <a href="../index.html">https://netbeans.org/community/releases/33/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>
