diff options
Diffstat (limited to 'readme.html')
-rw-r--r-- | readme.html | 1039 |
1 files changed, 1039 insertions, 0 deletions
diff --git a/readme.html b/readme.html new file mode 100644 index 0000000..a161d14 --- /dev/null +++ b/readme.html @@ -0,0 +1,1039 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <meta http-equiv="Content-Style-Type" content="text/css2"> + <title>ReadMe for ICU4J</title> + <meta name="COPYRIGHT" content="Copyright 2000-2013, International Business Machines Corporation and others. All Rights Reserved."> + <style type="text/css"> +h3.doc { background: #CCCCFF } +h4.doc { text-decoration: underline } + </style> +</head> +<body style="background-color: rgb(255, 255, 255);" lang="EN-US" + link="#0000ff" vlink="#800080"> +<h2>International Components for Unicode for Java (ICU4J)</h2> +<h3>Read Me for ICU4J 52</h3> +(Last Update: 2013-Oct-07) +<hr size="2" width="100%"> + +<p><b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds implementations +of inherited API and introduces new API or functionality. +</p> +<p>For the most recent release, see the <a + href="http://www.icu-project.org/download/"> ICU4J +download site</a>. </p> +<h3 class="doc">Contents</h3> +<ul type="disc"> + <li><a href="#introduction">Introduction to ICU4J</a></li> + <li><a href="#changes">Changes In This Release</a></li> + <li><a href="#license">License Information</a></li> + <li><a href="#PlatformDependencies">Platform Dependencies</a></li> + <li><a href="#download">How to Download ICU4J</a></li> + <li><a href="#WhatContain">The Structure and Contents of ICU4J</a></li> + <li><a href="#API">Where to Get Documentation</a></li> + <li><a href="#HowToInstallJavac">How to Install and Build</a></li> + <li><a href="#HowToModularize">How to modularize ICU4J</a></li> + <li><a href="#tryingout">Trying Out ICU4J</a></li> + <li><a href="#resources">ICU4J Resource Information</a></li> + <li><a href="#timezone">About ICU4J Time Zone</a></li> + <li><a href="#WhereToFindMore">Where to Find More Information</a></li> + <li><a href="#SubmittingComments">Submitting Comments, Requesting +Features and Reporting Bugs</a></li> +</ul> +<h3 class="doc"><a name="introduction"></a>Introduction to ICU4J</h3> +<p>The International Components for Unicode (ICU) library provides +robust and +full-featured Unicode services on a wide variety of platforms. ICU +supports the +most current version of the Unicode standard, including support for +supplementary characters (needed for GB 18030 repertoire support).</p> +<p>Java provides a strong foundation for global programs, and IBM and +the +ICU team played a key role in providing globalization technology to +Java. But because of its long release schedule, Java cannot always keep +up with evolving standards. The ICU team continues to extend Java's +Unicode and internationalization support, focusing on improving +performance, +keeping current with the Unicode standard, and providing richer APIs, +while +remaining as compatible as possible with the original Java text and +internationalization API design.</p> +<p>ICU4J is an add-on to the regular JRE that provides: +</p> +<ul> + <li><a + href="http://www.icu-project.org/userguide/Collate_Intro.html"><b>Collation</b></a> +– rule-based, up-to-date Unicode Collation Algorithm (UCA) sorting order<br> + For fast multilingual string comparison; faster +and more complete than +the J2SE implementation</li> + <li><a href="http://www.icu-project.org/userguide/charsetDetection.html"><b>Charset +Detection</b></a> – Recognition of various single and multibyte charsets<br> + Useful for recognizing untagged text data</li> + <li><a + href="http://www.icu-project.org/userguide/unicodeSet.html"><b>UnicodeSet</b></a> +– standard set operations optimized for sets of Unicode characters<br> + UnicodeSets can be built from string patterns +using any Unicode properties.</li> + <li><a href="http://www.icu-project.org/userguide/Transform.html"><b>Transforms</b></a> +– a flexible mechanism for Unicode text conversions<br> + Including Full/Halfwidth conversions, +Normalization, Case conversions, Hex +conversions, and transliterations between scripts (50+ pairs)</li> + <li><a + href="http://www.icu-project.org/userguide/normalization.html"><b>Unicode +Normalization</b></a> – NFC, NFD, NFKD, NFKC<br> + For canonical text representations, needed for +XML and the net</li> + <li><a + href="http://www.icu-project.org/userguide/dateCalendar.html"><b>International +Calendars</b></a> – Arabic, Buddhist, Chinese, Hebrew, Japanese, Ethiopic, Islamic, Coptic and other calendars<br> + Required for correct presentation of dates in +certain countries</li> + <li><a + href="http://www.icu-project.org/userguide/formatNumbers.html"><b>Number +Format +Enhancements</b></a> – Scientific Notation, Spelled-out, etc.<br> + Enhancements to the normal Java number +formatting. The spell-out format is +used for checks and similar documents</li> + <li><a + href="http://www.icu-project.org/userguide/boundaryAnalysis.html"><b>Enhanced +Word-Break Detection</b></a> – Rule-based, supports Thai<br> + Required for correct support of Thai</li> + <li><a + href="http://www.icu-project.org/userguide/compression.html"><b>Unicode +Text +Compression</b></a> – Standard compression of Unicode text<br> + Suitable for large numbers of small fields, +where LZW and similar schemes +do not apply</li> + <li><a + href="http://www.icu-project.org/userguide/conversion.html"><b>Charset Conversion</b></a> – Conversion to and from different charsets.<br> + Plugs into Java CharsetProvider Service Provider Interface (SPI)</li> + +</ul> +<blockquote> + <p><b>Note:</b> We continue to provide assistance to Java, and in some +cases, ICU4J support has been rolled into a later release of Java. For +example, BCP47 language tag support including Unicode locale extensions +is now in Java 7. However, the most current and complete version is always +found in ICU4J.</p> +</blockquote> + +<h3 class="doc"><a name="changes"></a>Changes In This Release</h3> + +<p>See the <a href="http://sites.google.com/site/icusite/download/52">ICU 52 download page</a> +about new features in this release. +The list of API changes since the previous ICU4J release is available +<a href="http://source.icu-project.org/repos/icu/icu4j/tags/release-52-1/APIChangeReport.html">here</a>.</p> + +<h3 class="doc"><a name="license"></a>License Information</h3> +<p> +The ICU projects (ICU4C and ICU4J) use the X license. The X +license is <b>suitable for commercial use</b> and is a recommended free software license +that is compatible with the GNU GPL license. This became +effective with release 1.8.1 of ICU4C and release 1.3.1 of ICU4J in +mid-2001. All new ICU releases will adopt the X license; previous ICU +releases continue to utilize the IPL (IBM Public License). Users +of previous releases of ICU who want to adopt new ICU releases will +need to accept the terms and conditions of the X license. +</p> +<p> +The main effect of the change is to provide GPL compatibility. +The X license is listed as GPL compatible, see the GNU page at +<a href="http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses"> +http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses</a>. +This means that GPL projects can now use ICU code, it does <b>not</b> +mean that projects using ICU become subject to GPL. +</p> +<p> + The IBM version contains the essential text of the license, omitting the +X-specific trademarks and copyright notices. The full copy of <a + href="http://source.icu-project.org/repos/icu/icu4j/tags/release-52-1/main/shared/licenses/license.html">ICU's license</a> is included in the download +package. +</p> +<h3 class="doc"><a name="PlatformDependencies"></a>Platform Dependencies</h3> +<p> +ICU4J 52 depends on J2SE 5.0 functionality. Therefore, ICU4J only runs on +JRE version 5.0 or later. +The table below shows the operating systems and JRE/VM versions currently +used by the ICU development team to test ICU4J. +</p> +<table border="1"> +<tr> + <th rowspan="2">Operating System</th> + <th colspan="2">JRE 7</th> + <th colspan="2">JRE 6</th> + <th colspan="2">JRE 5</th> +</tr> +<tr> + <th>32bit</th> + <th>64bit</th> + <th>32bit</th> + <th>64bit</th> + <th>32bit</th> + <th>64bit</th> +</tr> +<tr> + <th>AIX 6.1</th> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> +</tr> +<tr> + <th>AIX 7.1</th> + <td align="center">-</td> + <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> +</tr> +<tr> + <th>HP-UX 11 (IA64)</th> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> +</tr> +<tr> + <th>Mac OS X 10.6</th> + <td align="center">-</td> + <td align="center">-</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center">-</td> +</tr> +<tr> + <th>Redhat Enterprise Linux 6 (x86)</th> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> +</tr> +<tr> + <th>Redhat Enterprise Linux 6 (x86_64)</th> + <td align="center">-</td> + <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> +</tr> +<tr> +<th>Solaris 10 (SPARC)</th> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> +</tr> +<tr> + <th>Solaris 11 (SPARC)</th> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> +</tr> +<tr> + <th>Windows XP</th> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> +</tr> +<tr> + <th>Windows Vista</th> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> +</tr> +<tr> + <th>Windows 7</th> + <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> +</tr> +<tr> + <th>Windows 2008 Server</th> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> + <td align="center">-</td> + <td align="center" bgcolor="#DDDDFF">Regularly tested</td> +</tr> +</table> + +<h3 class="doc"><a name="download"></a>How to Download ICU4J</h3> +<p>There are two ways to download the ICU4J releases. +</p> +<ul type="disc"> + <li><b>Official Release:</b><br> +If you want to use ICU4J (as opposed to developing it), your best bet +is to download an official, packaged version of the ICU4J library files. +These versions are tested more thoroughly than day-to-day development +builds, and they are packaged in jar files for convenient download. +These packaged files can be found at the +<a href="http://www.icu-project.org/download/">ICU Download page</a>. +</li></ul> +<ul type="disc"> + <li><b>Subversion Source Repository:</b><br> +If you are interested in developing features, patches, or bug fixes for +ICU4J, you should probably be working with the latest version of the +ICU4J source code. You will need to check the code out of our Subversion +repository to ensure that you have the most recent version of all of +the files. There are several ways to do this. Please follow the +directions that are contained on the <a + href="http://www.icu-project.org/repository/">Source + Repository page</a> for details. + </li> +</ul> +<p>For more details on how to download ICU4J directly from the web +site, please see the ICU download page at <a + href="http://www.icu-project.org/download/">http://www.icu-project.org/download/</a> +</p> +<h3 class="doc"><a name="WhatContain"></a>The Structure and Contents of +ICU4J</h3> +<p>Below, all directory pathes are relative to the directory where the +ICU4J source archive is extracted. +</p> +<p><b>Information and build files:</b></p> +<table border="1"> +<tr> + <th>Path</th> + <th>Description</th> +</tr> +<tr> + <td>readme.html</td> + <td>A description of ICU4J (International Components for Unicode for Java)</td> +</tr> +<tr> + <td>build.html</td> + <td>The main Ant build file for ICU4J. See <a href="#HowToInstallJavac">How to Install + and Build</a> for more information</td> +</tr> +<tr> + <td>main/shared/licenses/license.html</td> + <td>The X license, used by ICU4J</td> +</tr> +</table> + +<p><b>ICU4J runtime class files:</b></p> +<table border="1"> +<tr> + <th>Path</th> + <th>Sub-component Name</th> + <th>Build Dependencies</th> + <th>Public API Packages</th> + <th>Description</th> +</tr> +<tr> + <td>main/classes/charset</td> + <td>icu4j-charset</td> + <td>icu4j-core</td> + <td>com.ibm.icu.charset</td> + <td>Implementation of <code>java.nio.charset.spi.CharsetProvider</code>. + This sub-component is shipped as icu4j-charset.jar along with + ICU charset converter data files.</td> +</tr> +<tr> + <td>main/classes/collate</td> + <td>icu4j-collate</td> + <td>icu4j-core</td> + <td>com.ibm.icu.text<br> + com.ibm.icu.util</td> + <td>Collator APIs and implementation. Also includes some public API classes + that depend on Collator. + This sub-component is packaged as a part of icu4j.jar.</td> +</tr> +<tr> + <td>main/classes/core</td> + <td>icu4j-core</td> + <td>n/a</td> + <td>com.ibm.icu.lang<br> + com.ibm.icu.math<br> + com.ibm.icu.text<br> + com.ibm.icu.util</td> + <td>ICU core API classes and implementation. + This sub-component is packaged as a part of icu4j.jar.</td> +</tr> +<tr> + <td>main/classes/currdata</td> + <td>icu4j-currdata</td> + <td>icu4j-core</td> + <td>n/a</td> + <td>No public API classes. Provides access to currency display data. + This sub-component is packaged as a part of icu4j.jar.</td> +</tr> +<tr> + <td>main/classes/langdata</td> + <td>icu4j-langdata</td> + <td>icu4j-core</td> + <td>n/a</td> + <td>No public API classes. Provides access to language display data. + This sub-component is packaged as a part of icu4j.jar.</td> +</tr> +<tr> + <td>main/classes/localespi</td> + <td>icu4j-localespi</td> + <td>icu4j-core<br> + icu4j-collate<br> + </td> + <td>n/a</td> + <td>Implementation of various locale-sensitive service providers defined + in <code>java.text.spi</code> and <code>java.util.spi</code> in J2SE 6.0 + or later Java releases. + This sub-component is shipped as icu4j-localespi.jar.</td> +</tr> +<tr> + <td>main/classes/regiondata</td> + <td>icu4j-regiondata</td> + <td>icu4j-core</td> + <td>n/a</td> + <td>No public API classes. Provides access to region display data. + This sub-component is packaged as a part of icu4j.jar.</td> +</tr> +<tr> + <td>main/classes/translit</td> + <td>icu4j-translit</td> + <td>icu4j-core</td> + <td>com.ibm.icu.text</td> + <td>Transliterator APIs and implementation. + This sub-component is packaged as a part of icu4j.jar.</td> +</tr> +</table> + +<p><b>ICU4J unit test files:</b></p> +<table border="1"> +<tr> + <th>Path</th> + <th>Sub-component Name</th> + <th>Runtime Dependencies</th> + <th>Description</th> +</tr> +<tr> + <td>main/tests/charset</td> + <td>icu4j-charset-tests</td> + <td>icu4j-charset<br> + icu4j-core<br> + icu4j-test-framework</td> + <td>Test suite for charset sub-component.</td> +</tr> +<tr> + <td>main/tests/collate</td> + <td>icu4j-collate-tests</td> + <td>icu4j-collate<br> + icu4j-core<br> + icu4j-test-framework</td> + <td>Test suite for collate sub-component.</td> +</tr> +<tr> + <td>main/tests/core</td> + <td>icu4j-core-tests</td> + <td>icu4j-core<br> + icu4j-currdata<br> + icu4j-langdata<br> + icu4j-regiondata<br> + icu4j-test-framework</td> + <td>Test suite for core sub-component.</td> +</tr> +<tr> + <td>main/tests/framework</td> + <td>icu4j-test-framework</td> + <td>icu4j-core</td> + <td>Common ICU4J unit test framework and utilities.</td> +</tr> +<tr> + <td>main/tests/localespi</td> + <td>icu4j-localespi-tests</td> + <td>icu4j-core<br> + icu4j-collate<br> + icu4j-currdata<br> + icu4j-langdata<br> + icu4j-localespi<br> + icu4j-regiondata<br> + icu4j-test-framework</td> + <td>Test suite for localespi sub-component.</td> +</tr> +<tr> + <td>main/tests/packaging</td> + <td>icu4j-packaging-tests</td> + <td>icu4j-core<br> + icu4j-test-framework</td> + <td>Test suite for sub-component packaging.</td> +</tr> +<tr> + <td>main/tests/translit</td> + <td>icu4j-translit-tests</td> + <td>icu4j-core<br> + icu4j-translit + icu4j-test-framework</td> + <td>Test suite for translit sub-component.</td> +</tr> +</table> + +<p><b>Others:</b></p> +<table border="1"> +<tr> + <th>Path</th> + <th>Description</th> +</tr> +<tr> + <td>main/shared</td> + <td>Files shared by ICU4J sub-components under the <code>main</code> directory including: + <ul> + <li>ICU4J runtime data archive (icudata.jar).</li> + <li>ICU4J unit test data archive (testdata.jar).</li> + <li>Shared Ant build script and configuration files.</li> + <li>License files.</li> + </ul> + </td> +</tr> +<tr> + <td>demos</td> + <td>ICU4J demo programs.</td> +</tr> +<tr> + <td>perf-tests</td> + <td>ICU4J performance test files.</td> +</tr> +<tr> + <td>tools</td> + <td>ICU4J tools including: + <ul> + <li>Custom JavaDoc taglets used for generating ICU4J API references.</li> + <li>API report tool and data.</li> + <li>Other independent utilities used for ICU4J development.</li> + </ul> + </td> +</tr> +</table> + +<h3 class="doc"><a name="API"></a>Where to get Documentation</h3> +<p>The <a href="http://www.icu-project.org/userguide/">ICU user's +guide</a> contains lots of general information about ICU, in its C, +C++, and Java incarnations.</p> +<p>The complete API documentation for ICU4J (javadoc) is available on +the ICU4J web site, and can be built from the sources: +</p> +<ul> + <li><a href="http://www.icu-project.org/apiref/icu4j/">Index +to all ICU4J API</a></li> + <li><a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/CharsetDetector.html">Charset Detector</a> – Detection of charset from a byte stream</li> + <li>International Calendars – + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/BuddhistCalendar.html">Buddhist</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/ChineseCalendar.html">Chinese</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/CopticCalendar.html">Coptic</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/EthiopicCalendar.html">Ethiopic</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/GregorianCalendar.html">Gregorian</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/HebrewCalendar.html">Hebrew</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/IndianCalendar.html">Indian</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/IslamicCalendar.html">Islamic</a>, + <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/JapaneseCalendar.html">Japanese</a>, + Persian, Dangi.</li> + <li>Time Zone Enhancements – +<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/BasicTimeZone.html">Time zone transition and rule detection</a>, +<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/VTimeZone.html">iCalendar VTIMEZONE formatting and parsing</a>, +<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/RuleBasedTimeZone.html">Custom time zones constructed by user defined rules</a>. + <li>Date Format Enhancements – <a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/DateTimePatternGenerator.html">Date/Time Pattern Generator</a>, +<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/DateIntervalFormat.html">Date Interval Format</a>, +<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/DurationFormat.html">Duration Format</a>. + <li><a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Normalizer.html">Unicode +Normalization</a> – Canonical text representation for W3C.</li> + <li><a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/NumberFormat.html">Number +Format Enhancements</a> – Scientific Notation, Spelled out.</li> + <li><a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/BreakIterator.html">Enhanced +word-break detection</a> – Rule-based, supports Thai</li> + <li><a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Transliterator.html">Transliteration</a> +– A general framework for converting text from one format to another, +e.g. Cyrillic to Latin, or Hex to Unicode. </li> + <li>Unicode Text <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeCompressor.html">Compression</a> +& <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeDecompressor.html">Decompression</a> +– 2:1 compression on English Unicode text.</li> + <li>Collation – <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/RuleBasedCollator.html">Rule-based +sorting</a>, <a + href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/StringSearch.html">Efficient +multi-lingual searching</a>, +<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/AlphabeticIndex.html">Alphabetic indexing</a></li> +</ul> +<h3 class="doc"><a name="HowToInstallJavac"></a>How to Install and Build</h3> +<p> +To install ICU4J, simply place the prebuilt jar file <strong>icu4j.jar</strong> +on your Java CLASSPATH. If you need Charset API support please also place +<strong>icu4j-charset.jar</strong> on your class path along with <strong>icu4j.jar</strong>. +</p> +<p> +To build ICU4J, you will need J2SE SDK 5.0 or later (ICU4J locale SPI +provider sub-components require J2SE SDK 6.0 or later) and the Ant build system +version 1.7 or later. It's recommended to install both the J2SE SDK and Ant +somewhere <em>outside</em>the ICU4J directory. For example, on Linux you might install +these in <code>/usr/local</code>.</p> +<ul> + <li>Install J2SE SDK 7.</li> + <li>Install the <a href="http://ant.apache.org/"><strong>Ant</strong></a> + build system. Ant is a portable, Java-based build system similar to + make. ICU4J uses Ant because it introduces no other dependencies, it's + portable, and it's easier to manage than a collection of makefiles. We + currently build ICU4J using a single makefile on all platforms Ant. + The build system requires Ant 1.7 or later. + <p>Installing Ant is straightforward. Download it (see <a + href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>), +extract it onto your system, set some environment variables, and add +its bin directory to your path. For example: </p> + <pre> + set JAVA_HOME=C:\jdk1.7.0 + set ANT_HOME=C:\ant + set PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH%</pre> + <p>See the current Ant documentation for details.</p> + </li> +</ul> +<p>Once the J2SE SDK and Ant are installed, building is just a matter of +typing <strong>ant</strong> in the ICU4J root directory. This causes the +Ant build system to perform the build target <strong>jar</strong> +as specified by the file <strong>build.xml</strong>, located in the ICU4J +root directory. You can give Ant options like -verbose, and you can specify +other targets. For example:</p> +<blockquote> +<pre>C:\icu4j>ant +Buildfile: C:\icu4j\build.xml + +info: + [echo] ----- Build Environment Information ------------------- + [echo] Java Home: C:\jdk1.7.0\jre + [echo] Java Version: 1.7.0 + [echo] Ant Home: C:\ant + [echo] Ant Version: Apache Ant(TM) version 1.9.2 compiled on July 8 2013 + [echo] OS: Windows 7 + [echo] OS Version: 6.1 + [echo] OS Arch: amd64 + [echo] Host: ICUDEV + [echo] ------------------------------------------------------- + +core: + +@compile: + [echo] --- java compiler arguments ------------------------ + [echo] source dir: C:\icu4j\main\classes\core/src + [echo] output dir: C:\icu4j\main\classes\core/out/bin + [echo] classpath: + [echo] source: 1.5 + [echo] target: 1.5 + [echo] debug: on + [echo] encoding: UTF-8 + [echo] compiler arg: -Xlint:all,-deprecation,-dep-ann,-options + [echo] ---------------------------------------------------- + [mkdir] Created dir: C:\icu4j\main\classes\core\out\bin + [javac] Compiling 353 source files to C:\icu4j\main\classes\core\out\bin + [javac] Note: Some input files use or override a deprecated API. + [javac] Note: Recompile with -Xlint:deprecation for details. + +compile: + +@copy: + [copy] Copying 23 files to C:\icu4j\main\classes\core\out\bin + +copy-data: + [unjar] Expanding: C:\icu4j\main\shared\data\icudata.jar into C:\icu4j\main\ +classes\core\out\bin + [unjar] Expanding: C:\icu4j\main\shared\data\icutzdata.jar into C:\icu4j\mai +n\classes\core\out\bin + +... +... +... + +_build-localespi: + +@compile: + [echo] --- java compiler arguments ------------------------ + [echo] source dir: C:\icu4j\main\classes\localespi/src + [echo] output dir: C:\icu4j\main\classes\localespi/out/bin + [echo] classpath: C:\icu4j\main\classes\core\out\lib\icu4j-core.jar;C: +\icu4j\main\classes\collate\out\lib\icu4j-collate.jar + [echo] source: 1.6 + [echo] target: 1.6 + [echo] debug: on + [echo] encoding: UTF-8 + [echo] compiler arg: -Xlint:all,-deprecation,-dep-ann,-options + [echo] ---------------------------------------------------- + [mkdir] Created dir: C:\icu4j\main\classes\localespi\out\bin + [javac] Compiling 22 source files to C:\icu4j\main\classes\localespi\out\bin + + +compile: + +@copy: + [copy] Copying 10 files to C:\icu4j\main\classes\localespi\out\bin + +copy: + +@jar: + [mkdir] Created dir: C:\icu4j\main\classes\localespi\out\lib + [copy] Copying 1 file to C:\icu4j\main\classes\localespi\out + [jar] Building jar: C:\icu4j\main\classes\localespi\out\lib\icu4j-localesp +i.jar + +jar: + +@src-jar: + [jar] Building jar: C:\icu4j\main\classes\localespi\out\lib\icu4j-localesp +i-src.jar + +src-jar: + +build: + +jar: + [copy] Copying 1 file to C:\icu4j + [copy] Copying 1 file to C:\icu4j + +BUILD SUCCESSFUL +Total time: 1 minute 51 seconds</pre> +</blockquote> +<I>Note: The above output is an example. The numbers are likely to be different with the current version ICU4J.</I> +<p>The following are some targets that you can provide to <b>ant</b>. +For more targets run <code>ant -projecthelp</code> or see the build.xml file.</p> +<table border="1"> +<tr> + <th>jar (default)</th> + <td>Create ICU4J runtime library jar archives (<code>icu4j.jar</code>, + <code>icu4j-charset.jar</code> and <code>icu4j-localespi.jar</code>) + in the root ICU4J directory.</td> +</tr> +<tr> + <th>check</th> + <td>Build all ICU4J runtime library classes and corresponding unit test cases, + then run the tests.</td> +</tr> +<tr> + <th>clean</th> + <td>Remove all build output files.</td> +</tr> +<tr> + <th>main</th> + <td>Build all ICU4J runtime library sub-components (under the directory + <code>main/classes</code>).</td> +</tr> +<tr> + <th>tests</th> + <td>Build all ICU4J unit test sub-components (under the directory <code>main/tests</code>) + and their dependencies.</td> +</tr> +<tr> + <th>tools</th> + <td>Build the tools.</td> +</tr> +<tr> + <th>docs</th> + <td>Run javadoc over the ICU4J runtime library files, generating an HTML documentation + tree in the subdirectory <code>doc</code>.</td> +</tr> +<tr> + <th>jarDocs</th> + <td>Create ICU4J doc jar archive (<code>icu4jdocs.jar</code>) containing API reference + docs in the root ICU4J directory. </td> +</tr> +<tr> + <th>jarDemos</th> + <td>Create ICU4J demo jar archive (<code>icu4jdemos.jar</code>) in the root ICU4J + directory.</td> +</tr> +</table> + +<p>For more information, read the Ant documentation and the <strong>build.xml</strong> +file.</p> +<p><b>Note:</b> If you get an OutOfMemoryError when you are running <tt>"ant check"</tt>, +you can set the heap size of the jvm by setting the environment variable JVM_OPTIONS +to the appropriate java options.</p> + +<p><b>Eclipse users:</b> See the ICU4J site for information on<a + href="http://www.icu-project.org/docs/eclipse_howto/eclipse_howto.html"> +how to configure Eclipse</a> to build and develop ICU4J on Eclipse IDE.</p> + +<p><b>Note: </b>To install and configure ICU4J Locale Service Provider, please refer the user guide +page <a href="http://userguide.icu-project.org/icu4j-locale-service-provider">ICU4J Locale +Service Provider</a>.</p> + +<h3 class="doc"><a name="HowToModularize"></a>How to modularize ICU4J</h3> +<p>Some clients may not wish to ship all of ICU4J with their +application, since the application might only use a small part of ICU4J. +ICU4J release 2.6 and later provide build options to build individual +ICU4J 'modules' for a more compact distribution. For more details, please +refer to the section <em>Modularization of ICU4J</em> in the ICU user's +guide article <a href="http://userguide.icu-project.org/packaging-icu4j">Packaging ICU4J</a>. + +<h3 class="doc"><a name="tryingout"></a>Trying Out ICU4J</h3> +<p><strong>Note:</strong> the demos provided with ICU4J are for the +most part undocumented. This list can show you where to look, but +you'll have to experiment a bit. The demos are <strong>unsupported</strong> +and may change or disappear without notice.</p> +<p>The icu4j.jar file contains only the ICU4J runtime library classes, not the +demo classes, so unless you build ICU4J there is little to try out. +</p> +<h4>Charset</h4> +To try out the <strong>Charset</strong> package, build <strong>icu4j.jar</strong> and +<strong>icu4j-charset.jar</strong> using the 'jar' target. +You can use the charsets by placing these files on your classpath. +<blockquote><tt>java -cp $icu4j_root/icu4j.jar:$icu4j_root/icu4j-charset.jar <your program></tt></blockquote> +<h4>Other demos</h4> +<p>The other demo programs are <strong>not supported</strong> and +exist only to let you experiment with the ICU4J classes. First, build ICU4J using <tt>ant jarDemos</tt>. +Then launch the demos as below:</p> +<blockquote><tt>java -jar $icu4j_root/icu4jdemos.jar</tt></blockquote> + +<h3 class="doc"><a name="resources">ICU4J Resource Information</a></h3> +Starting with release 2.1, ICU4J includes its own +resource information +which is completely independent of the JRE resource information. (Note, +ICU4J 2.8 to 3.4, time zone information depends on the underlying JRE). +The ICU4J resource information is equivalent to the information in ICU4C and +many resources are, in fact, the same binary files that ICU4C uses. +<p> +By default the ICU4J distribution includes all of the standard resource +information. It is located under the directory com/ibm/icu/impl/data. +Depending on the service, the data is in different locations and in +different formats. <strong>Note:</strong> This will continue to change +from release to release, so clients should not depend on the exact +organization +of the data in ICU4J.</p> +<ul> + <li>The primary <b>locale data</b> is under the directory <tt>icudt52b</tt>, + as a set of <tt>".res"</tt> files whose names are the locale identifiers. + Locale naming is documented the <code>com.ibm.icu.util.ULocale</code> + class, and the use of these names in searching for resources is documented + in <code>com.ibm.icu.util.UResourceBundle</code>.</li> + + <li>The <b>collation data</b> is under the directory <tt>icudt52b/coll</tt>, + as a set of <tt>".res"</tt> files.</li> + + <li>The <b>currency display name data</b> is under the directory <tt>icudt52b/curr</tt>, + as a set of <tt>".res"</tt> files.</li> + + <li>The <b>language display name data</b> is under the directory <tt>icudt52b/lang</tt>, + as a set of <tt>".res"</tt> files.</li> + + <li>The <b>region display name data</b> is under the directory <tt>icudt52b/region</tt>, + as a set of <tt>".res"</tt> files.</li> + + <li>The <b>rule-based transliterator data</b> is under the directory + <tt>icudt52b/translit</tt>, as a set of <tt>".res"</tt> files.</li> + + <li>The <b>rule-based number format data</b> is under the directory + <tt>icudt52b/rbnf</tt>, as a set of <tt>".res"</tt> files. + + <li>The <b>break iterator data</b> is directly under the + directory <tt>icudt52b</tt>, as a set of <tt>".brk"</tt> files, named according to the + type of break and the locale where there are locale-specific versions.</li> + + <li>The <b>holiday data</b> is under the directory <tt>icudt52b</tt>, + as a set of <tt>".class"</tt> files, named <tt>"HolidayBundle_"</tt> + followed by the locale ID.</li> + + <li>The <b>character property data</b> and default <b>unicode collation algorithm + (UCA) data</b> is found under the directory <tt>icudt52b</tt>, as a set of + <tt>".icu"</tt> files. </li> + + <li>The <b>normalization data</b> is found under the directory <tt>icudt52b</tt>, + as a set of <tt>".nrm"</tt> files. </li> + + <li>The <b>character set converter data</b> is under the directory + <tt>icudt52b</tt>, as a set of <tt>".cnv"</tt> files. These files are + currently included only in icu-charset.jar.</li> + + <li>The <b>time zone rule data</b> is under the directory + <tt>icudt52b</tt>, as <tt>zoneinfo64.res</tt>.</li> + + <li>The <b>time zone display name data</b> is under the directory + <tt>icudt52b/zone</tt>, as a set of <tt>".res"</tt> files.</li> +</ul> +<p> +Some of the data files alias or otherwise reference data from other +data files. One reason for this is because some locale names have +changed. For example, <tt>he_IL</tt> used to be <tt>iw_IL</tt>. In +order to support both names but not duplicate the data, one of the +resource files refers to the other file's data. In other cases, a +file may alias a portion of another file's data in order to save +space. Currently ICU4J provides no tool for revealing these +dependencies.</p> +<blockquote><strong>Note:</strong> Java's <code>Locale</code> class +silently converts the language code <tt>"he"</tt> to <tt>"iw"</tt> +when you construct the Locale (for versions of Java through Java 5). Thus +Java cannot be used to locate resources that use the <tt>"he"</tt> +language code. ICU, on the other hand, does not perform this +conversion in ULocale, and instead uses aliasing in the locale data to +represent the same set of data under different locale +ids.</blockquote> +<p> +Resource files that use locale ids form a hierarchy, with up to four +levels: a root, language, region (country), and variant. Searches for +locale data attempt to match as far down the hierarchy as possible, +for example, <tt>"he_IL"</tt> will match <tt>he_IL</tt>, but +<tt>"he_US"</tt> will match <tt>he</tt> (since there is no <tt>US</tt> +variant for he, and <tt>"xx_YY</tt> will match root (the +default fallback locale) since there is no <tt>xx</tt> language code +in the locale hierarchy. Again, see +<code>java.util.ResourceBundle</code> for more information. +</p> +<p> +<strong>Currently ICU4J provides no tool for revealing these +dependencies</strong> between data files, so trimming the data +directly in the ICU4J project is a hit-or-miss affair. The key point +when you remove data is to make sure to remove all dependencies on +that data as well. For example, if you remove <tt>he.res</tt>, you +need to remove <tt>he_IL.res</tt>, since it is lower in the hierarchy, +and you must remove iw.res, since it references <tt>he.res</tt>, and +<tt>iw_IL.res</tt>, since it depends on it (and also references +<tt>he_IL.res</tt>). +</p> +<p> +Unfortunately, the jar tool in the JDK provides no way to remove items +from a jar file. Thus you have to extract the resources, remove the +ones you don't want, and then create a new jar file with the remining +resources. See the jar tool information for how to do this. Before +'rejaring' the files, be sure to thoroughly test your application with +the remaining resources, making sure each required resource is +present. +</p> +<h4>Using additional resource files with ICU4J</h4> +<blockquote> + <table cellpadding="3" frame="border" rules="none" width="50%"> + <tbody> + <tr> + <td><b><font color="red" size="+1">Warning:</font> Resource +file formats can change across releases of ICU4J!</b></td> + </tr> + <tr> + <td>The format of ICU4J resources is not part of the API. +Clients who develop their own resources for use with ICU4J should be +prepared to +regenerate them when they move to new releases of ICU4J.</td> + </tr> + </tbody> + </table> +</blockquote> +<p> +We are still developing ICU4J's resource mechanism. Currently it +is not possible to mix icu's new binary <tt>.res</tt> +resources +with traditional java-style <tt>.class</tt> or <tt>.txt</tt> +resources. We might +allow for this in a future release, but since the resource data and +format is not formally +supported, you run the risk of incompatibilities with future releases +of ICU4J. +</p> +<p> +Resource data in ICU4J is checked in to the repository as a jar file +containing the resource binaries, <tt>$icu4j_root/main/shared/data/icudata.jar</tt>. +This means that inspecting the contents of these resources is difficult. +They currently are compiled from ICU4C <tt>.txt</tt> file data. You +can view the contents of the ICU4C text resource files to understand +the contents of the ICU4J resources. +</p> +<p> +The files in <tt>icudata.jar</tt> get extracted to <tt>com/ibm/icu/impl/data</tt> +in the build output directory by some build targets. +</p> +<h4><a name="resourcesICU4C">Building ICU4J Resources from ICU4C</a></h4> +ICU4J data is built by ICU4C tools. Please see "icu4j-readme.txt" in <I>$icu4c_root</I>/source/data for the procedures. +<h5> Generating Data from CLDR </h5> +<I> Note: This procedure assumes that all 3 sources are present</I> +<ol> + <li>Checkout or download CLDR version 'release-24'</li> + <li>Checkout ICU4C with tag 'release-52-1'</li> + <li>Checkout ICU4J with tag 'release-52-1'</li> + <li>cd to <I>$icu4c_root</I>/source/data directory</li> + <li>Follow the instructions in <I>$icu4c_root</I>/source/data/cldr-icu-readme.txt</li> + <li>Rebuild ICU4C with the newly generated data.</li> + <li>Run ICU4C tests to verify that the new data is good.</li> + <li>Build ICU4J data from ICU4C data by following the procedures in <I>$icu4c_root</I>/source/data/icu4j-readme.txt</li> + <li>cd to <I>$icu4j_root</I> dir</li> + + <li>Build and test icu4j</li> +</ol> + +<h3 class="doc"><a name="timezone"></a>About ICU4J Time Zone</h3> +<p>ICU4J 52.1 includes time zone data version 2013g, which is the latest one as of +the release date. However, time zone data is frequently updated in response +to changes made by local governments around the world. If you need to update +the time zone data, please refer the ICU user guide topic +<a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">Updating the Time Zone Data</a>.</p> +<p>Starting with ICU4J 4.0, you can optionally configure ICU4J date and time +service classes to use underlying JDK TimeZone implementation (see the ICU4J API reference +<a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/TimeZone.html">TimeZone</a> +for the details). When this configuration is enabled, ICU's own time zone data +won't be used and you have to get time zone data patches from the JRE vendor.</p> + +<h3 class="doc"><a name="WhereToFindMore"></a>Where to Find More +Information</h3> +<p><a href="http://www.icu-project.org/">http://www.icu-project.org/</a> +is the home page of International Components for Unicode development project</p> +<p><a href="http://www.ibm.com/software/globalization/icu/">http://www.ibm.com/software/globalization/icu/</a> +is a pointer to general information about the International Components for +Unicode hosted by IBM</p> +<p><a href="http://www.ibm.com/software/globalization/">http://www.ibm.com/software/globalization/</a> +is a pointer to +information on how to make applications global. </p> +<h3 class="doc"><a name="SubmittingComments"></a>Submitting Comments, +Requesting Features and +Reporting Bugs</h3> +<p>Your comments are important to making ICU4J successful. We are +committed to investigate any bug reports or suggestions, +and will use your feedback to help plan future releases.</p> +<p>To submit comments, request features and report bugs, +please see <a href="http://www.icu-project.org/bugs.html">ICU bug database +information</a> or contact us through the <a + href="http://www.icu-project.org/contacts.html">ICU Support +mailing list</a>. While we are not able to respond individually to each comment, we do +review all comments.</p> +<br> +<br> +<h2>Thank you for your interest in ICU4J!</h2> +<br> +<hr align="center" size="2" width="100%"> +<p><I><font size="-1">Copyright © 2002-2013 International Business +Machines Corporation and others. All Rights +Reserved.<br> +4400 North First Street, San José, CA 95193, USA +</font></I></p> +</body> +</html> |