<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>README for NetBeans IDE 3.1</title>
  <META NAME="description" CONTENT="README for NetBeans IDE 3.1">
<link rel="stylesheet" type="text/css" href="../../../netbeans.css"></HEAD>
<body>
<h1>README</h1>
<!--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-->

<H2>Contents</H2>
<ul>
  <li><a href="#requirements">System Requirements</a>
  <li><a href="#install">Installation</a>
  <li><a href="#startupparams">Startup Parameters</a>
  <li><a href="#upgrade">Upgrading from Previous Versions</a>
  <li><a href="#problems">Known Problems</a>
  <li><a href="#doc">When You Need Help</a>
</ul>

Welcome to NetBeans IDE version 3.1, a modular, standards-based integrated
development environment (IDE), written in Java.  It currently has support for
Java, but its architecture lends itself to supporting other languages as well.

<p>
This README gives you the basic information to help you install and run the
IDE.

<A name=requirements>
<H2>System Requirements</H2></A>
<blockquote>
<H3><A name=1006922></A>Intel x86 platforms </H3>
<H4><A name=1006933></A>Hardware </H4>
<P><A name=1006937></A>Minimum configuration: Microsoft Windows 95, 98,
2000, or NT with a P133 processor, 64 megabytes of RAM, and 40 megabytes of disk space. </P>
<P><A name=1007973></A>Recommended configuration: Microsoft Windows 95, 98,
2000, or NT with a P300 processor and 128 Mbytes of RAM.</P>
<P><A name=1012337></A>Optimal configuration: Microsoft Windows 95, 98,
2000, or NT with a P300 processor and 192 Mbytes of RAM. </P>
<P><A name=1008836></A><B>Note:</B> If you have 64 Mbytes, you should set
the configuration file (<CODE>ide.cfg</CODE>) startup flag to
<CODE>-Xmx48m</CODE>. </P>
    <H4><A name=1007978></A>Software </H4>
<P><A name=1012265></A>NetBeans requires a Java 2-compatible JVM. The
Java<SPAN
style="FONT-WEIGHT: normal; VERTICAL-ALIGN: baseline; TEXT-TRANSFORM: none; COLOR: #000000; FONT-STYLE: normal; FONT-FAMILY: Symbol; TEXT-DECORATION: none"><FONT
size=-1><SUP>TM</SUP></FONT></SPAN> 2 SDK, Standard Edition, for the Windows
environment is available for download from <A
href="http://java.sun.com/j2se/1.3/">http://java.sun.com/j2se/1.3/download-windows.html</A>
(v. 1.3 Production Release) and <A href="http://java.sun.com/products/jdk/1.2/">http://java.sun.com/products/jdk/1.2/</A>
(v. 1.2.2_005). </P>
<H3><A name=1008005></A>SPARC/Solaris platform </H3>
<H4><A name=1006996></A>Hardware </H4>
<P><A name=1007003></A>When running on the Solaris platform, you should have
at least 40 Mbytes of free disk space. </P>
<P><A name=1012365></A>Minimum configuration: SparcStation 5: 170 MHz, 128
Mbytes of RAM, 16 Mbytes. </P>
<P><A name=1007009></A>Recommended configuration: UltraSPARC 5: 333 MHz, 256
Mbytes of RAM. </P>
<P><A name=1012345></A>Optimal configuration: UltraSPARC 10: 440 MHz, 512
Mbytes of RAM. </P>
<H4><A name=1007018></A>Software</H4>
<P><A name=1007038></A>NetBeans requires the
Java<SPAN
style="FONT-WEIGHT: normal; VERTICAL-ALIGN: baseline; TEXT-TRANSFORM: none; COLOR: #000000; FONT-STYLE: normal; FONT-FAMILY: Symbol; TEXT-DECORATION: none"><FONT
size=-1><SUP>TM</SUP></FONT></SPAN> 2 SDK, v. 1.3 for the Solaris
environment. The latest SDK is available for download from <A
href="http://www.sun.com/solaris/java/">http://www.sun.com/solaris/java/</A>.</P>
<H3><A name=1007186></A>Linux platform </H3>
<P><A name=1008550></A>The Linux JVM is more resource-intensive, so Linux
users may want to have a higher memory configuration.</P>
<P><A name=1007717></A>The latest SDK is available for download from <A
href="http://java.sun.com/j2ee/1.3/index.jsp">http://java.sun.com/j2ee/1.3/index.jsp</A>.
</P>

<H3><A name=1008005></A>Other Platforms</H3>

Since NetBeans is written in pure Java, it should run on any decent
implementation of Java(TM) 2 SDK, Standard Edition.  People have reported
success running the IDE on OS/2 and other platforms as well, but we don't have
specific numbers to give you here.

</blockquote>

<h2><a name="install">Installation</a></h2>
<blockquote>
On Microsoft Windows platforms you can download and run an .exe point-and-click
installer, which will guide you through the required steps.

<p>For all platforms you can download the .zip or the .tar.gz 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 JDK.  Please read the
section below for details.

<p>After installation you must run the IDE in single-user mode at least once
as a user who has write access to the installation directory even if you
plan to use the IDE only in multi-user mode.  This step is needed in order for
the IDE to set up certain configurations.


</blockquote>

<h2><a name="startupparams">Startup Parameters</a></h2>
<blockquote>

The IDE is run by a launcher. There are several variants of it for
Microsoft Windows and UNIX platforms. The launchers are placed in the
<tt>bin</tt> subdirectory of the installation directory.

For UNIX, the Bourne shell scripts <tt>runide.sh</tt> and
<tt>runide_multiuser.sh</tt> are the launchers. For Microsoft Windows,
<tt>.EXE</tt> executables, <tt>runide.exe</tt>, <tt>runidew.exe</tt>,
<tt>runide_multiuser.exe</tt>, and <tt>runidew_mutiuser.exe</tt> are
the launchers.

The files, <tt>runide.exe</tt> and <tt>runide_multiuser.exe</tt> are
Microsoft Windows console applications. When run, a console opens on
the desktop with <tt>stderr</tt> and <tt>stdout</tt> output from the
Java program. You can type <tt>Ctrl-Break</tt> to get the thread dump,
or type <tt>Ctrl-C</tt> to quit the whole program. The files,
<tt>runidew.exe</tt> and <tt>runidew_multiuser.exe</tt> are window
applications. Otherwise they work exactly the same way. This is
similar to <tt>java.exe</tt> and <tt>javaw.exe</tt>.

The launcher loads the JVM (1.2 or compatible), 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 an auto
update. You can specify additional options:


<dl>
  <dt><code>-h</code><br>
      <code>-help</code>
  <dd>prints usage

  <dt><code>-jdkhome <i>jdk_home_dir</i></code></dt>
  <dd>use the specified JDK version instead of the default one. By default the
      loader looks into the Windows registry and uses the latest JDK available.
      <p>
  </dd>

  <dt><code>-hotspot</code><br>
      <code>-classic</code>
  </dt>
  <dd>if the HotSpot JVM is installed it is used. The user can use the
      <code>-classic</code> flag to force the classic JVM to be used instead.
      <p>
  </dd>

  <dt><code>-cp:p <i>additional_classpath</i></code>
  </dt>
  <dd>
      prepends the specified classpath onto the IDE's classpath
      <p>
  </dd>

  <dt><code>-cp:a <i>additional_classpath</i></code><br>
      -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

  <dt><code>-fontsize <i>size</i></code>
  <dd>use a given size in points as the font size for the IDE user interface

  <dt><code>-locale <i>language[:country[:variant]]</i></code>
  <dd>use specified locale

  <dt><code>-userdir <i>userdir</i></code>
      runs the IDE in the multiuser mode, user settings will be stored in a
      specified directory instead of the installation directory
</dl>

The *_multiuser variants of the launcher are used to run the IDE in the so
called multiuser mode.  They work like the other variants with the implicit
<code>-userdir</code>.  On UNIX the default userdir in this case is
${HOME}/nbuser.  On Windows the launcher will asks the user to specify the
userdir and stores it in the registry for later use.

<p>On UNIX you can modify the shell scripts yourserlf to suit your needs.

<p>On Microsoft Windows options can also be put in the file
${IDE_HOME>/bin/ide.cfg. The .EXE launcher tries to read this file before it
starts parsing the command line options. In the ide.cfg file one can break the
options into multiple lines.

</blockquote>

<h2><a name="upgrade">Upgrading from Previous Versions</a></h2>

<blockquote>

You can copy over the user settings from an existing installation of NetBeans
IDE 3.0 or Forte(TM) for Java(TM), release 2.0, Community Edition.

<p>Open a console window and change the working directory to the bin
subdirectory of the new installation, set the <code>JAVA_PATH</code>
environment variable to point to your Java(TM) 2 SDK installation (and export
it if you are on UNIX) and run the import.sh or import.bat script.  This script
takes three parameters: the backup directory, the directory where you installed
the old version of the IDE and the location of the newly installed version of
the IDE.  Examples

<p>On Microsoft Windows

<blockquote><pre>
C:&gt; cd C:\NB31\bin
C:&gt; set JAVA_PATH=C:\jdk1.3
C:&gt; import.bat C:\NB31\system_backup C:\NB30 C:\NB31
</pre></blockquote>

<p>On UNIX, using Korn shell

<blockquote><pre>
$ cd ~/nb31/bin
$ export JAVA_PATH=/usr/local/jdk1.3
$ sh import.sh ~/nb31/system_backup ~/nb30 ~/nb31
</pre></blockquote>

</blockquote>

<h2><a name="problems">Known Problems</a></h2>

<blockquote>
<h3>Popup menus displayed at wrong locations</h3>

On Linux sometimes the popup menus are displayed at the upper left corner of
the screen instead of the position of the mouse pointer.  This is caused by
a bug in the JVM and is reproducible only with some window managers.  There is
a workaround for the bug but it can make the popup to flicker several times.
For this reason the workaround is not enabled by default.  If you see popup
menus displayed at wrong locations, try to run the IDE with

<blockquote>
<code>$ runide.sh -J-Dnetbeans.popup.linuxhack=true</code>
</blockquote>

<h3>Fatal Error: Cannot find package java.lang on Classpath or Bootclasspath</h3>

Sometimes this error is displayed when the user opens a java source file or
compiles java sources using the internal java compiler.  This is an
intermittent problem.  Try to restart the IDE, the problem should go away.  If
it does not go away, you can mount the java runtime sources.  Java runtime
sources can be found in <code>&lt;jdk&gt;/src.jar</code>.  Unpack it somewhere
on your hard disk and mount the <code>src</code> directory.

</blockquote>

<h2><a name="doc">When You Need Help</a></h2>

<blockquote>

The Release Notes document, in the installation directory,
contains the list of new features and information especially useful
to users who upgrade from an older version of the IDE. To browse the
online help documentation, run the IDE, go to the Help menu and choose
Documentation -&gt; NetBeans -&gt; Help.

There is extensive information on the NetBeans project website, <a
href="https://netbeans.org/">https://netbeans.org/</a>. Included
on the website are an FAQ and instructions on how to subscribe to
mailing lists where you can post questions, comments, or help others.

</blockquote>

<!--  <p><br><br> -->
<!--  <i>Happy hacking! :-)</i> -->

</body>
</html>
