License JRE or JDK version 6.0

To download and install the software, follow the steps below.

LEGAL NOTICE - READ BEFORE DOWNLOADING OR OTHERWISE USING THIS SOFTWARE.

ATTENTION: USE OF THE SOFTWARE IS SUBJECT TO THE HP SOFTWARE LICENSE TERMS AND SUPPLEMENTAL RESTRICTIONS SET FORTH BELOW, THIRD PARTY SOFTWARE LICENSE TERMS FOUND IN THE THIRDPARTYLICENSEREADME.TXT FILE AND THE WARRANTY DISCLAIMER ATTACHED. IF YOU DO NOT ACCEPT THESE TERMS FULLY, YOU MAY NOT INSTALL OR OTHERWISE USE THE SOFTWARE. NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS NOTICE, INSTALLING OR OTHERWISE USING THE SOFTWARE INDICATES YOUR ACCEPTANCE OF THESE LICENSE TERMS.

HP software license terms for both JRE and JDK

The following terms govern your use of the Software.  For the purpose of this Agreement, “Software” means the Java Runtime Environment (“JRE”) or the Java Developers Kit (“JDK”) you download in connection with this Agreement.

License grant
HP grants you a license to Use one copy of the Software. "Use" means storing, loading, installing, executing or displaying the Software for the purpose of developing and running Java applets and applications on Java SE-enabled HP computers. You may not modify the Software or disable any licensing or control features of the Software.

Ownership
The Software is owned and copyrighted by HP or its third party suppliers. Your license confers no title or ownership in the Software and is not a sale of any rights in the Software. HP's third party suppliers may protect their rights in the event of any violation of these License Terms.

Third Party Code
Some third-party code embedded or bundled with the Software is licensed to you under different terms and conditions as set forth in the THIRDPARTYLICENSEREADME.txt file. In addition to any terms and conditions of any third party license identified in the THIRDPARTYLICENSEREADME.txt file, the disclaimer of warranty and limitation of liability provisions in this license shall apply to all code distributed as part of or bundled with the Software.

Source Code
Software may contain source code that, unless expressly licensed for other purposes, is provided solely for reference purposes pursuant to the terms of this license. Source code may not be redistributed unless expressly provided for in these License Terms.

Copies and Adaptations
You may only make copies or adaptations of the Software for archival purposes or when copying or adaptation is an essential step in the authorized Use of the Software. You must reproduce all copyright notices in the original Software on all copies or adaptations. You may not copy the Software onto any bulletin board or similar system.

No disassembly or decryption
You may not disassemble or decompile the Software unless HP's prior written consent is obtained. In some jurisdictions, HP's consent may not be required for disassembly or decompilation. Upon request, you will provide HP with reasonably detailed information regarding any disassembly or decompilation. You may not decrypt the Software unless decryption is a necessary part of the operation of the Software.

Termination
HP may terminate your license upon notice for failure to comply with any of these License Terms. Upon termination, you must immediately destroy the Software, together with all copies, adaptations and merged portions in any form.

Export requirements
The software you are about to download contains cryptography technology. Some countries regulate the import, use and/or export of certain products with cryptography. HP makes no claims as to the applicability of local country import, use and/or export regulations in relation to the download of this product. If you are located outside the U.S. and Canada you are advised to consult your local country regulations to insure compliance.

You may not export or re-export this software or any copy or adaptation in violation of any applicable laws or regulations.

Without limiting the generality of the foregoing, hardware, software, technology or services provided under this license agreement may not be exported, reexported, transferred or downloaded to or within (or to a national resident of) countries under U.S. economic embargo including the following countries:

Cuba, Iran, Iraq, Libya, North Korea, Sudan and Syria.
This list is subject to change.

Hardware, software, technology or services may not be exported, reexported, transferred or downloaded to persons or entities listed on the U.S. Department of Commerce Denied Persons List, Entity List of proliferation concern or on any U.S. Treasury Department Designated Nationals exclusion list, or to parties directly or indirectly involved in the development or production of nuclear, chemical, biological weapons or in missile technology programs as specified in the U.S. Export Administration Regulations (15 CFR 744).

By accepting this license agreement you confirm that you are not located in (or a national resident of) any country under U.S. economic embargo, not identified on any U.S. Department of Commerce Denied Persons List, Entity List or Treasury Department Designated Nationals exclusion list, and not directly or indirectly involved in the development or production of nuclear, chemical, biological weapons or in missile technology programs as specified in the U.S. Export Administration Regulations.

U.S. government restricted rights
The Software and any accompanying documentation have been developed entirely at private expense. They are delivered and licensed as "commercial computer software" as defined in DFARS 252.227-7013 (Oct 1988), DFARS 252.211-7015 (May 1991) or DFARS 252.227-7014 (Jun 1995), as a "commercial item" as defined in FAR2.101(a), or as "Restricted computer software" as defined in FAR 52.227-19 (Jun 1987)(or any equivalent agency regulation or contract clause), whichever is applicable. You have only those rights provided for such Software and any accompanying documentation by the applicable FAR or DFARS clause or the HP standard software agreement for the product involved. The owner is Hewlett-Packard Company, 3000 Hanover Street, Palo Alto, California 94304.

Supplemental restrictions
You acknowledge the Software is not designed or intended for use in on-line control of aircraft, air traffic, aircraft navigation, or aircraft communications; or in the design, construction, operation or maintenance of any nuclear facility. HP disclaims any express or implied warranty of fitness for such uses.

Supplemental Terms Applicable to JRE only:
License to Distribute JRE. You are granted a royalty-free right to reproduce and distribute the JRE, provided that you distribute the JRE complete and unmodified, only as a part of, and for the sole purpose of running your Java compatible applet or application into which the JRE is incorporated.

Java Platform Interface. You may not modify the Java Platform Interface ("JPI", identified as classes contained within the "java" package or any subpackages of the "java" package), by creating additional classes within the JPI or otherwise causing the addition to or modification of the classes in the JPI. In the event that you create any Java-related API and distribute such API to others for applet or application development, you must promptly publish broadly, an accurate specification for such API for free use by all developers of Java-based software.

You may make the JRE accessible to application programs developed by you provided that the programs allow such access only through the invocation interface specified and provided that you shall not expose or document other interfaces that permit access to the JRE. You shall not be restricted hereunder from exposing or documenting interfaces to software components that use or access the JRE.


I ACCEPT ALL OF THE ABOVE TERMS. *
I DO NOT ACCEPT ALL OF THE ABOVE TERMS.



--------------------------------------------------------------------------------


HP “AS-IS” warranty statement


TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, HP AND ITS SUPPLIERS PROVIDE THE SOFTWARE “AS IS” AND WITH ALL FAULTS, AND HEREBY DISCLAIM ALL INDEMNITIES, WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED, BY STATUTE, COMMON LAW, CUSTOM OR OTHERWISE, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE AND NON-INFRINGEMENT, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND LACK OF VIRUSES.  HP does not warrant that the operation of the Software will be uninterrupted or error-free or that the Software will meet your requirements.  Some states/jurisdictions do not allow exclusion of implied warranties or limitation on the duration of implied warranties, so the above disclaimer may not apply to you in its entirety.

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL HP OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS OR REVENUES, BUSINESS INTERRUPTION, DOWNTIME COSTS, FAILURE TO REALIZE EXPECTED SAVINGS, LOSS, DISCLOSURE, UNAVAILABILITY OF OR DAMAGE TO DATA, SOFTWARE RESTORATION, OR LOSS OF PRIVACY ARISING OUT OF OR IN ANY WAY RELATED TO THE USE OR INABILITY TO USE THE SOFTWARE, OR OTHERWISE IN CONNECTION WITH ANY PROVISION OF THIS AGREEMENT, EVEN IF HP OR ANY SUPPLIER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. Some states/jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so the above exclusion may not apply to you.

I ACCEPT ALL OF THE ABOVE TERMS. *
 I DO NOT ACCEPT ALL OF THE ABOVE TERMS.
