Sun Microsystems, Inc.
Binary Code License Agreement

 

READ THE TERMS OF THIS AGREEMENT AND ANY PROVIDED SUPPLEMENTAL LICENSE TERMS 
(COLLECTIVELY "AGREEMENT") CAREFULLY BEFORE OPENING THE SOFTWARE MEDIA PACKAGE.  
BY OPENING THE SOFTWARE MEDIA PACKAGE, YOU AGREE TO THE TERMS OF THIS AGREEMENT. 
 IF YOU ARE ACCESSING THE SOFTWARE ELECTRONICALLY, INDICATE YOUR ACCEPTANCE OF 
THESE TERMS BY SELECTING THE "ACCEPT" BUTTON AT THE END OF THIS AGREEMENT.  IF 
YOU DO NOT AGREE TO ALL THESE TERMS, PROMPTLY RETURN THE UNUSED SOFTWARE TO YOUR 
PLACE OF PURCHASE FOR A REFUND OR, IF THE SOFTWARE IS ACCESSED ELECTRONICALLY, 
SELECT THE "DECLINE" BUTTON AT THE END OF THIS AGREEMENT. 1.  LICENSE TO USE.  
Sun grants you a non-exclusive and non-transferable license for the internal use 
only of the accompanying software and documentation and any error corrections 
provided by Sun (collectively "Software"), by the number of users and the class 
of computer hardware for which the corresponding fee has been paid. 2.  
RESTRICTIONS.  Software is confidential and copyrighted. Title to Software and 
all associated intellectual property rights is retained by Sun and/or its 
licensors.  Except as specifically authorized in any Supplemental License Terms, 
you may not make copies of Software, other than a single copy of Software for 
archival purposes.  Unless enforcement is prohibited by applicable law, you may 
not modify, decompile, or reverse engineer Software.  Licensee acknowledges that 
Licensed Software is not designed or intended for use in the design, 
construction, operation or maintenance of any nuclear facility. Sun 
Microsystems, Inc. disclaims any express or implied warranty of fitness for such 
uses.   No right, title or interest in or to any trademark, service mark, logo 
or trade name of Sun or its licensors is granted under this Agreement. 3. 
LIMITED WARRANTY.  Sun warrants to you that for a period of ninety (90) days 
from the date of purchase, as evidenced by a copy of the receipt, the media on 
which Software is furnished (if any) will be free of defects in materials and 
workmanship under normal use.  Except for the foregoing, Software is provided 
"AS IS".  Your exclusive remedy and Sun's entire liability under this limited 
warranty will be at Sun's option to replace Software media or refund the fee 
paid for Software. 4.  DISCLAIMER OF WARRANTY.  UNLESS SPECIFIED IN THIS 
AGREEMENT, ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, 
INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 
PURPOSE OR NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE 
DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. 5.  LIMITATION OF LIABILITY.  TO THE 
EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE 
FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, 
INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED REGARDLESS OF THE THEORY OF 
LIABILITY, ARISING OUT OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, 
EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  In no event 
will Sun's liability to you, whether in contract, tort (including negligence), 
or otherwise, exceed the amount paid by you for Software under this Agreement.  
The foregoing limitations will apply even if the above stated warranty fails of 
its essential purpose. 6.  Termination.  This Agreement is effective until 
terminated.  You may terminate this Agreement at any time by destroying all 
copies of Software.  This Agreement will terminate immediately without notice 
from Sun if you fail to comply with any provision of this Agreement.  Upon 
Termination, you must destroy all copies of Software. 7. Export Regulations. All 
Software and technical data delivered under this Agreement are subject to US 
export control laws and may be subject to export or import regulations in other 
countries.  You agree to comply strictly with all such laws and regulations and 
acknowledge that you have the responsibility to obtain such licenses to export, 
re-export, or import as may be required after delivery to you. 8.   U.S. 
Government Restricted Rights.  If Software is being acquired by or on behalf of 
the U.S. Government or by a U.S. Government prime contractor or subcontractor 
(at any tier), then the Government's rights in Software and accompanying 
documentation will be only as set forth in this Agreement; this is in accordance 
with 48 CFR 227.7201 through 227.7202-4 (for Department of Defense (DOD) 
acquisitions) and with 48 CFR 2.101 and 12.212 (for non-DOD acquisitions). 9.  
Governing Law.  Any action related to this Agreement will be governed by 
California law and controlling U.S. federal law.  No choice of law rules of any 
jurisdiction will apply. 10.  Severability. If any provision of this Agreement 
is held to be unenforceable, this Agreement will remain in effect with the 
provision omitted, unless omission would frustrate the intent of the parties, in 
which case this Agreement will immediately terminate. 11.  Integration.  This 
Agreement is the entire agreement between you and Sun relating to its subject
matter.  It supersedes all prior or contemporaneous oral or written 
communications, proposals, representations and warranties and prevails over any 
conflicting or additional terms of any quote, order, acknowledgment, or other 
communication between the parties relating to its subject matter during the term 
of this Agreement.  No modification of this Agreement will be binding, unless in 
writing and signed by an authorized representative of each party. JAVATM 
INTERFACE CLASSES JAVA TRANSACTION API (JTA), VERSION 1.0.1B, MAINTENANCE 
RELEASESUPPLEMENTAL LICENSE TERMS These supplemental license terms 
("Supplemental Terms") add to or modify the terms of the Binary Code License 
Agreement (collectively, the "Agreement"). Capitalized terms not defined in 
these Supplemental Terms shall have the same meanings ascribed to them in the 
Agreement. These Supplemental Terms shall supersede any inconsistent or 
conflicting terms in the Agreement, or in any license contained within the 
Software. 1. Software Internal Use and Development License Grant. Subject to the 
terms and conditions of this Agreement, including, but not limited to Section 3 
(Java Technology Restrictions) of these Supplemental Terms, Sun grants you a 
non-exclusive, non-transferable, limited license to reproduce internally and use 
internally the binary form of the Software, complete and unmodified, for the 
sole purpose of designing, developing and testing your Java applets and 
applications ("Programs"). 2. License to Distribute Software.  In addition to 
the license granted in Section 1 (Software Internal Use and Development License 
Grant) of these Supplemental Terms, subject to the terms and conditions of this 
Agreement, including but not limited to Section 3 (Java Technology 
Restrictions), Sun grants you a non-exclusive, non-transferable, limited license 
to reproduce and distribute the Software in binary form only, provided that you 
(i) distribute the Software complete and unmodified and only bundled as part of 
your Programs, (ii) do not distribute additional software intended to replace 
any component(s) of the Software, (iii) do not remove or alter any proprietary 
legends or notices contained in the Software, (iv) only distribute the Software 
subject to a license agreement that protects Sun's interests consistent with the 
terms contained in this Agreement, and (v) agree to defend and indemnify Sun and 
its licensors from and against any damages, costs, liabilities, settlement 
amounts and/or expenses (including attorneys' fees) incurred in connection with 
any claim, lawsuit or action by any third party that arises or results from the 
use or distribution of any and all Programs and/or Software. 3. Java Technology 
Restrictions. 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 an additional class and associated API(s) which (i) extends the 
functionality of the Java Platform, and (ii) is exposed to third party software 
developers for the purpose of developing additional software which invokes such 
additional API, you must promptly publish broadly an accurate specification for 
such API for free use by all developers. You may not create, or authorize your 
licensees to create additional classes, interfaces, or subpackages that are in 
any way identified as "java", "javax", "sun" or similar convention as specified 
by Sun in any naming convention designation. 4. Trademarks and Logos. You 
acknowledge and agree as between you and Sun that Sun owns the SUN, SOLARIS, 
JAVA, JINI, FORTE, and iPLANET trademarks and all SUN, SOLARIS, JAVA, JINI, 
FORTE, and iPLANET-related trademarks, service marks, logos and other brand 
designations ("Sun Marks"), and you agree to comply with the Sun Trademark and 
Logo Usage Requirements currently located at 
http://www.sun.com/policies/trademarks. Any use you make of the Sun Marks inures 
to Sun's benefit. 5. Source Code. Software may contain source code that is 
provided solely for reference purposes pursuant to the terms of this Agreement.  
Source code may not be redistributed unless expressly provided for in this 
Agreement. 6. Termination for Infringement.  Either party may terminate this 
Agreement immediately should any Software become, or in either party's opinion 
be likely to become, the subject of a claim of infringement of any intellectual 
property right. For inquiries please contact: Sun Microsystems, Inc. 4150 
Network Circle, Santa Clara, California 95054. (LFI#121049/Form ID#011801)