<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"/>
    <!-- L10N: set lang for the default language to be understood for the
         document.  Recommended for HTML5
         -->
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Language" content="en-US" />
    <!-- L10N: set language for the default here also.  This will produce the
         corresponding HTTP Header.  Only use one content language type,
         for the specific deprecated case tolerated for HTML5.  This specifies
         the language for the audience of the document.
         -->
  <title>Information about Java &amp; Apache OpenOffice, OpenOffice.org</title>
  <style type="text/css">
  /* <![CDATA[ */
  /*-------------------- Exceptions on standard css -----------------------*/
  @import "../../download/styles.css";
  @import "../../download/exceptions.css";
  /* ]]> */
  </style>
</head>

<body>

<h1>Java &amp; Apache OpenOffice, OpenOffice.org</h1>

<h3>Why Do I Need Java to Use Apache OpenOffice?</h3>

<p>Java is required for complete OpenOffice (OpenOffice.org) functionality. Java is mainly required for the HSQLDB
database engine (used by our database product Base) and to make use of accessibility and assistive technologies.
Furthermore some wizards rely on Java technology. See additional topics pertaining to the use of Java in OpenOffice.org
and Apache OpenOffice in the
<a href="http://wiki.services.openoffice.org/wiki/Documentation/FAQ/Installation">Installation FAQ</a>.
</p>

<p>So what does this mean exactly? Base (the database component) relies completely on Java technologies to run, but other
programs (like Writer, Calc and Impress) only need Java for special functionality. If you do not need to use Base and do
not want to use any of the Wizards, then you do not need to have Java installed  and configured for running Apache
OpenOffice (and older versions of OpenOffice.org). You can completely prevent OpenOffice from prompting you about the use
of Java by telling OpenOffice not to use a Java runtime environment (JRE). From the OpenOffice main menu use:
<strong>"Tools - OpenOffice.org - Java"</strong>, and uncheck "Use a Java runtime environment". However, we do recommend
that you have a JRE on your system to take full advantage of OpenOffice's features without any issues.
</p>

<p><b>Legacy versions of OpenOffice.org 3.3.0 and older included a JRE packaged with the download. Apache OpenOffice
3.4.0 and newer do not.</b>
</p>

<h3>Which Java Version Do I Need to Use Apache OpenOffice?</h3>

<p>You will need to have a JRE version (32-bit or 64-bit) that is compatible with the architecture of the Apache
OpenOffice version you downloaded. If you already have a JRE installed on your system that satisfies this requirement in
one of the standard areas for Java installation, OpenOffice should detect this installation and let you choose it for use
in OpenOffice via the <strong>"Tools - OpenOffice.org - Java"</strong>. If you have a JRE installed that is not detected,
you should be able to add it through this same menu. And, you can install a JRE or configure OpenOffice to use Java at any
time to get missing functionality to work.
</p>

<!-- NOTE: The <img> in the paragraph below depends on the icon being in
     the site root level content/cachedimages folder.  This works regardless
     of the relative distance of this page, or a localization, from the root.
     -->
<p style="background: #FBD34E; padding: 0px 15px 0px 15px;">
<img src="/cachedimages/exclamation-icon.png" style="margin: 5px 5px -2px 0px;" height="32" width="32" />
<b>Important note for all Windows users:</b>
</br>
The Windows version of OpenOffice is 32-bit.  It installs and operates on both 32-bit and 64-bit versions of Microsoft Windows.  However, a 32-bit Java Runtime Environment is required for any use of a JRE by 32-bit applications such as Apache OpenOffice.  The 32-bit JRE must be in addition to any 64-bit JRE that is also installed.
</p>

<h3>Where Can I Get Java?</h3>
<p>The current versions of  Apache OpenOffice work reliably with a  variety of JREs including
<a href="http://java.com">Oracle Java, versions 6 and 7</a> and <a href="http://openjdk.java.net/">openJDK, versions 6 and
7</a>. Feel free to download a JRE from either of these sites if you feel you need this functionality.
</p>

<p>Please report any problems you experience with using Java on OpenOffice through our bug reporting system,
<a href="https://issues.apache.org/ooo/">Bugzilla</a>, or one of the other support venues listed in the
<a href="http://www.openoffice.org/support/">Apache OpenOffice Support</a> webpage, either the users list or forums.
</p>

<p>For installing Java on Windows machines, one might appreciate:
<a href="http://java.com/en/download/help/windows_offline_download.xml">Download Instructions for Windows offline</a>.
</p>

</body>
</html>

