| <!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> |
| <html> |
| <head> |
| <meta http-equiv="Content-Type" |
| content="text/html; charset=iso-8859-1"> |
| <meta http-equiv="Content-Style-Type" content="text/css2"> |
| <title>ReadMe for ICU4J</title> |
| <!-- |
| ******************************************************************************* |
| * Copyright (C) 2000-2005, International Business Machines Corporation and * |
| * others. All Rights Reserved. * |
| ******************************************************************************* |
| --> |
| <style type="text/css"> |
| h3.doc { background: #CCCCFF } |
| </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 3.4</h3> |
| <hr size="2" width="100%"> |
| <p><b>Release Date</b><br> |
| Jul 31, 2005<br> |
| </p> |
| <p>For the most recent release, see the <a |
| href="http://www.ibm.com/software/globalization/icu/downloads.jsp"> 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="#news">What Is New 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="#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 JVM that provides: |
| </p> |
| <ul> |
| <li><a |
| href="http://icu.sourceforge.net/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 JDK</li> |
| <li><a href="http://icu.sourceforge.net/userguide/strings.html"><b>Supplementary |
| Characters</b></a> – String manipulation and character properties<br> |
| Required for proper GB 18030 and JIS 213 |
| repertoire support</li> |
| <li><a href="http://icu.sourceforge.net/userguide/charset.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://icu.sourceforge.net/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://icu.sourceforge.net/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://icu.sourceforge.net/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://icu.sourceforge.net/userguide/dateCalendar.html"><b>International |
| Calendars</b></a> – Arabic, Buddhist, Hebrew, and Japanese calendars<br> |
| Required for correct presentation of dates in |
| certain countries</li> |
| <li><a |
| href="http://icu.sourceforge.net/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://icu.sourceforge.net/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://icu.sourceforge.net/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> |
| </ul> |
| <blockquote> |
| <p><b>Note:</b> We continue to provide assistance to Sun, and in some |
| cases, ICU4J support has been rolled into a later release of Java. For |
| example, the Thai word-break is now in Java 1.4. However, the most |
| current and complete version is always found in ICU4J.</p> |
| </blockquote> |
| <!-- |
| |
| <p><b>ICU4J is an add-on library that extends Java's globalization |
| |
| technology.</b> Java provides a strong foundation for global |
| |
| programs, but Java does not yet provide all the globalization |
| |
| features that some products require. IBM played a key role in |
| |
| providing globalization technology to Sun for use in Java. Over |
| |
| the past seven years, the ICU team has continued to enhance and |
| |
| extend this technology. IBM makes this technology available |
| |
| in Java through the ICU4J open-source project.</p> |
| |
| |
| |
| <p>ICU4J provides the following tools: |
| |
| <ul> |
| |
| <li><b>Unicode Normalization</b> – NFC, NFD, NFKD, NFKC<br> |
| |
| Produces canonical text representations, needed for XML and the net. |
| |
| <li><b>International Calendars</b> – Arabic, Buddhist, Hebrew, and Japanese<br> |
| |
| Required for correct presentation of dates in some countries. |
| |
| <li><b>Number Format Enhancements</b> – Scientific Notation, Spelled-out Numbers<br> |
| |
| Enhances standard Java number formatting. The spelled-out format is used |
| |
| for checks and similar documents. |
| |
| <li><b>Enhanced word-break detection</b> – Rule-based, supports Thai<br> |
| |
| Required for correct support of Thai. |
| |
| <li><b>Unicode Text Compression</b> – Standard compression of Unicode text<br> |
| |
| Suitable for large numbers of small fields, where LZW and similar schemes |
| |
| do not apply. |
| |
| <li><b>Collation</b> – Rule-based, up-to-date Unicode Collation Algorithm (UCA) sorting order<br> |
| |
| For fast multilingual string comparison |
| |
| <li><b>Transforms</b> – Rule-based transformations of unicode data<br> |
| |
| Useful for analysis and transliteration |
| |
| </ul> |
| |
| |
| |
| In some cases, the above support has been rolled into a later release of |
| |
| Java. For example, the Thai word-break is now in Java 1.4. However, the most |
| |
| current and complete version of this support is always found in ICU4J. |
| |
| --> |
| <h3 class="doc"><a name="news"></a>What Is New In This Release?</h3> |
| <ul> |
| <li><a href="#News_Standards">Unicode 4.1, CLDR 1.3 Support</a></li> |
| <li><a href="#News_Charset">New Charset Detection API</a></li> |
| <li><a href="#News_DateFormat">Improved Date Formatting</a></li> |
| <li><a href="#News_Calendars">Additional Calendar Support</a></li> |
| <li><a href="#News_Compat">Increased API compatibility with JDK</a></li> |
| </ul> |
| <p>A complete report of the API changes between version 3.4 and |
| version 3.2 of ICU4J can be found |
| <a href="APIChangeReport.html">here</a>. This report is generated by a |
| tool and has some limitations, the most notable of which is that it |
| does not properly reflect the effect of class inheritance |
| changes. Also of course, being generated by a tool, the report does |
| not provide explanation or commentary on the changes. For background |
| information and clarification of changes it's always recommended that |
| you check the mailing list and archives.</p> |
| |
| <h4><a name="News_Standards" id="News_Standards">Unicode 4.1, CLDR 1.3 Support</a></h4> |
| <p>ICU has been updated to Unicode 4.1, including new character |
| properties and values. Collation has been updated to Unicode |
| Technical Standard #10 (UCA). Locale data has been updated to CLDR |
| 1.3. Additional APIs have been added to access and display more |
| CLDR data.<br> |
| </p> |
| <h4><a name="News_Charset" id="News_Charset">New Charset Detection API</a></h4> |
| <p>ICU4J provides heuristics for detecting the charset of a byte stream. |
| Users can create a Java Reader or String from any byte-oriented input stream |
| when the charset or encoding of the byte data is unknown. The implementation |
| recognizes most widely used encodings for European and Asian languages.<br> |
| </p> |
| <h4><a name="News_DateFormat" id="News_DateFormat"></a>Improved Date Formatting</h4> |
| <p>Time and Date formatting now supports narrow and standalone day and month names, as well |
| as generic time zones (e.g. "Pacific Time", "United Kingdom"). Time zone |
| name data is available for many more timezones and locales.<br> |
| </p> |
| <h4><a name="News_Calendars" id="News_Calendars"></a>Additional Calendar Support</h4> |
| <p>Existing Calendar APIs have been promoted to stable. Coptic and Ethiopic |
| calendars have been added. Calendar instantiation now recognizes the |
| <tt>calendar</tt> keyword in <tt>ULocale</tt> identifiers.<br> |
| </p> |
| <h4><a name="News_Compat" id="News_Compat">Increased API compatibility with the JDK</a></h4> |
| <p>Several small differences between ICU4J APIs and the core Java APIs have been |
| removed. For example, types of some enum constants have been aligned with Java's |
| (int became byte), UCharacter added methods to match java.lang.Character APIs |
| (including some deprecated methods, for completeness).<br> |
| </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/philosophy/license-list.html#GPLCompatibleLicenses"> |
| http://www.gnu.org/philosophy/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 text of the X license is available at <a |
| href="http://www.x.org/Downloads_terms.html">http://www.x.org/Downloads_terms.html</a>. The |
| IBM version contains the essential text of the license, omitting the |
| X-specific trademarks and copyright notices. The full copy of <a |
| href="license.html">ICU's license</a> is included in the download |
| package. |
| </p> |
| <h3 class="doc"><a name="PlatformDependencies"></a>Platform Dependencies</h3> |
| <p> Parts of ICU4J depend on functionality that is only available in |
| JDK 1.4 or later, although some components work under earlier JVMs. All |
| components should be compiled using a Java 2 compiler, as even |
| components that run under earlier JVMs can require language features |
| that are only present in Java2. Currently 1.1.x, 1.2.x and 1.3.x JVMs |
| are unsupported and untested, and you use the components on these JVMs |
| at your own risk.</p> |
| <p> The reference platforms which we support and test ICU4J on are:</p> |
| <ul> |
| <li> WinXP, IBM JDK 1.4.2</li> |
| <li> Solaris 5.9, Sun JDK 1.5.0</li> |
| <li> AIX 5.2, IBM JDK 1.4.2</li> |
| </ul> |
| <p>Please use the most recent updates of the supported JDK versions.</p> |
| <p>Additionally, we have built and tested ICU4J on the following <b>unsupported</b> |
| platforms: |
| </p> |
| <ul> |
| <li> Win2K / IBM JDK 1.4.1, Sun JDK 1.4, 1.4.1, 1.4.2</li> |
| <li> WinXP / IBM JDK 1.4.1, Sun JDK 1.4.2, 1.5.0</li> |
| <li> Solaris 5.6 , Solaris 5.7 / Sun JDK 1.4, 1.4.1, 1.4.2</li> |
| <li> Solaris 5.9 / Sun JDK 1.4, 1.4.1, 1.4.2</li> |
| <li> AIX 5.1, AIX 5.2 / IBM JDK 1.4.1</li> |
| <li> RedHat Enterprise Linux 3/ IBM JDK 1.4.1, 1.4.0, Sun JDK 1.4, 1.4.1, 1.4.2, 1.5.0</li> |
| <li> RedHat Linux 7.2/ IBM JDK 1.4.1, 1.4.0, Sun JDK 1.4, 1.4.1, 1.4.2, 1.5.0</li> |
| </ul> |
| <h3 class="doc"><a name="obtaining"></a>How to Download ICU4J</h3> |
| <p>There are two ways to download the ICU4J releases. |
| </p> |
| <ul type="disc"> |
| <li><b>Official Release Snapshot:</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 source |
| code. 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://ibm.com/software/globalization/icu/downloads.jsp">ICU Downloads page</a>. |
| A packaged snapshot is named <b>icu4jsrc_XXX.jar</b>, where XXX |
| is the release version number. Please unjar this file. It |
| will reconstruct the source directory.</li> |
| </ul> |
| <ul type="disc"> |
| <li><b>CVS 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 CVS |
| 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://ibm.com/software/globalization/icu/repository.jsp">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 downloads page at <a |
| href="http://ibm.com/software/globalization/icu/downloads.jsp">http://ibm.com/software/globalization/icu/downloads.jsp</a> |
| </p> |
| <h3 class="doc"><a name="WhatContain"></a>The Structure and Contents of |
| ICU4J</h3> |
| <p>Below, <b>$Root</b> is the placement of the icu directory in your |
| file system, like |
| "drive:\...\icu4j" in your environment. "drive:\..." stands for any |
| drive and any directory on that drive that you chose to install icu4j |
| into. </p> |
| <p><b>Information and build files:</b></p> |
| <table bgcolor="#ccccff" cellpadding="3" frame="void" width="623"> |
| <tbody> |
| <tr> |
| <td align="right" bgcolor="#ffffff" valign="baseline"><b>readme.html</b><br> |
| (this file)</td> |
| <td bgcolor="#ffffff" valign="baseline">A description of ICU4J |
| (International Components for Unicode for Java)</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">license.html</th> |
| <td bgcolor="#ffffff" valign="baseline">The X license, used by |
| ICU4J</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">build.xml</th> |
| <td bgcolor="#ffffff" valign="baseline">Ant build file. See <a |
| href="#HowToInstallJavac">How to Install and Build</a> for more |
| information</td> |
| </tr> |
| </tbody> |
| </table> |
| <p><b>The source directories mirror the package structure of the code.</b><br> |
| <font color="red">Core</font> packages become part of the ICU4J jar |
| file.<br> |
| <font color="red">API</font> packages contain classes with supported |
| API. <br> |
| <font color="red">RichText</font> classes are Core and API, but can be |
| removed from icu4j.jar, and can be built into their own jar.</p> |
| <table bgcolor="#ccccff" border="0" cellpadding="3" frame="void" |
| width="623"> |
| <tbody> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/src/com/ibm/icu/dev<br> |
| <font color="red">Non-Core, Non-API</font></th> |
| <td bgcolor="#ffffff" valign="baseline">Packages used for |
| internal development: |
| <ul> |
| <li>Data: data used by tests and in building ICU</li> |
| <li>Demos: Calendar, Holiday, Break Iterator, Rule-based Number |
| Format, Transformations<br> |
| (See <a href="#tryingout">below</a> for more information about the |
| demos.)</li> |
| <li>Tests: API and coverage tests of all functionality.<br> |
| For information about running the tests, see |
| $Root/src/com/ibm/icu/dev/test/TestAll.java.</li> |
| <li>Tools: tools used to build data tables, etc.</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/src/com/ibm/icu/impl<br> |
| <font color="red">Core, Non-API</font></th> |
| <td bgcolor="#ffffff" valign="baseline">These are utility classes |
| used from different ICU4J core packages.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/src/com/ibm/icu/lang<br> |
| <font color="red">Core, API</font></th> |
| <td bgcolor="#ffffff" valign="baseline">Character properties |
| package.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/src/com/ibm/icu/math<br> |
| <font color="red">Core, API</font></th> |
| <td bgcolor="#ffffff" valign="baseline">Additional math classes.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/src/com/ibm/icu/text<br> |
| <font color="red">Core, API</font></th> |
| <td bgcolor="#ffffff" valign="baseline">Additional text classes. |
| These add to, and in some cases replace, related core Java classes: |
| <ul> |
| <li>Arabic shaping </li> |
| <li>Break iteration </li> |
| <li>Date formatting </li> |
| <li>Number formatting </li> |
| <li>Transliteration </li> |
| <li>Normalization </li> |
| <li>String manipulation </li> |
| <li>Collation </li> |
| <li>String search </li> |
| <li>Unicode compression </li> |
| <li>Unicode sets </li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/src/com/ibm/icu/util<br> |
| <font color="red">Core, API</font></th> |
| <td bgcolor="#ffffff" valign="baseline">Additional utility |
| classes: |
| <ul> |
| <li>Calendars - Gregorian, Buddhist, Coptic, Ethiopic, Hebrew, Islamic, Japanese </li> |
| <li>Holiday</li> |
| <li>TimeZone</li> |
| <li>VersionInfo</li> |
| <li>Iteration</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/src/com/ibm/richtext<br> |
| <font color="red">RichText</font></th> |
| <td bgcolor="#ffffff" valign="baseline">Styled text editing |
| package. This includes demos, tests, and GUIs for editing and |
| displaying styled text. The richtext package provides a scrollable |
| display, typing, arrow-key support, tabs, alignment and justification, |
| word- and sentence-selection (by double-clicking and triple-clicking, |
| respectively), text styles, clipboard operations (cut, copy and paste) |
| and a log of changes for undo-redo. Richtext uses Java's TextLayout and |
| complex text support (provided to Sun by the ICU4J team).</td> |
| </tr> |
| </tbody> |
| </table> |
| <p><b>Building ICU4J creates and populates the following directories:</b></p> |
| <table bgcolor="#ccccff" cellpadding="3" frame="void" width="623"> |
| <tbody> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/classes</th> |
| <td bgcolor="#ffffff" valign="baseline">contains all class files</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">$Root/doc</th> |
| <td bgcolor="#ffffff" valign="baseline">contains JavaDoc for all |
| packages</td> |
| </tr> |
| </tbody> |
| </table> |
| <br> |
| <p><b>ICU4J data is stored in the following locations:</b></p> |
| <table bgcolor="#ccccff" border="0" cellpadding="3" frame="void" |
| width="623"> |
| <tbody> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.impl.data</code></th> |
| <td bgcolor="#ffffff" valign="baseline">Holds data used by the |
| ICU4J core packages (<code>com.ibm.icu.lang</code>, <code>com.ibm.icu.text</code>, |
| <code>com.ibm.icu.util</code>, <code>com.ibm.icu.math</code> and |
| <code>com.ibm.icu.text</code>). In particular, all resource |
| information is stored here.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.dev.data</code></th> |
| <td bgcolor="#ffffff" valign="baseline">Holds data that is not |
| part of ICU4J core, but rather part of a test, sample, or demo.</td> |
| </tr> |
| </tbody> |
| </table> |
| <br> |
| <h3 class="doc"><a name="API"></a>Where to get Documentation</h3> |
| <p>The <a href="http://icu.sourceforge.net/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://icu.sourceforge.net/apiref/icu4j/">Index |
| to all ICU4J API</a></li> |
| <li><a href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/CharsetDetector.html">Charset Detector</a> – Detection of charset from a byte stream</li> |
| <li>International Calendars – <a |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/BuddhistCalendar.html">Buddhist</a>, |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/ChineseCalendar.html">Chinese</a>, |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/CopticCalendar.html">Coptic</a>, |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/EthiopicCalendar.html">Ethiopic</a>, |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/GregorianCalendar.html">Gregorian</a>, |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/HebrewCalendar.html">Hebrew</a>, |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/IslamicCalendar.html">Islamic</a>, |
| <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/util/JapaneseCalendar.html">Japanese</a>.</li> |
| <li><a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/Normalizer.html">Unicode |
| Normalization</a> – Canonical text representation for W3C.</li> |
| <li><a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/NumberFormat.html">Number |
| Format Enhancements</a> – Scientific Notation, Spelled out.</li> |
| <li><a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/BreakIterator.html">Enhanced |
| word-break detection</a> – Rule-based, supports Thai</li> |
| <li><a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/Transliterator.html">Transliteration</a> |
| – A general framework for onverting text from one format to another, |
| e.g. Cyrillic to Latin, or Hex to Unicode. </li> |
| <li>Unicode Text <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/UnicodeCompressor.html">Compression</a> |
| & <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/UnicodeDecompressor.html">Decompression</a> |
| – 2:1 compression on English Unicode text.</li> |
| <li>Collation - <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/RuleBasedCollator.html">Rule-based |
| sorting</a>, <a |
| href="http://icu.sourceforge.net/apiref/icu4j/com/ibm/icu/text/StringSearch.html">Efficient |
| multi-lingual searching</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. No other files are needed.</p> |
| <p><b>Eclipse users:</b> See the ICU4J site for information on<a |
| href="http://icu.sourceforge.net/docs/eclipse_howto/eclipse_howto.html"> |
| how to configure Eclipse</a> to build ICU4J.</p> |
| <p>To build ICU4J, you will need a Java2 JDK and the Ant build system. |
| We strongly recommend using the Ant build system to build ICU4J. |
| It's recommended to install both the JDK and Ant somewhere <em>outside</em> |
| the ICU4J directory. For example, on Linux you might install these in |
| /usr/local.</p> |
| <ul> |
| <li>Install a recent JDK, version 1.4.x will work.</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 both Windows 9x and |
| Linux using Ant. The build system requires Ant 1.6 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.4.2<br> set ANT_HOME=C:\ant<br> set PATH=%PATH%;%ANT_HOME%\bin</pre> |
| <p>See the current Ant documentation for details.</p> |
| </li> |
| </ul> |
| <p>Once the JDK 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 a build 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 targets. Ant |
| will only build what's been changed and will resolve dependencies |
| properly. For example:</p> |
| <blockquote> |
| <pre>F:\icu4j>ant tests<br>Buildfile: build.xml<br>Project base dir set to: F:\icu4j<br>Executing Target: core<br>Compiling 71 source files to F:\icu4j\classes<br>Executing Target: tests<br>Compiling 24 source files to F:\icu4j\classes<br>Completed in 19 seconds</pre> |
| </blockquote> |
| <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 bgcolor="#ccccff" border="0" cellpadding="3" frame="void" |
| width="623"> |
| <tbody> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">all</th> |
| <td bgcolor="#ffffff" valign="baseline">Build all targets.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">core</th> |
| <td bgcolor="#ffffff" valign="baseline">Build the main class |
| files in the subdirectory <strong>classes</strong>. If no target is |
| specified, core is assumed.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">tests</th> |
| <td bgcolor="#ffffff" valign="baseline">Build the test class |
| files.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">demos</th> |
| <td bgcolor="#ffffff" valign="baseline">Build the demos.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">tools</th> |
| <td bgcolor="#ffffff" valign="baseline">Build the tools.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">docs</th> |
| <td bgcolor="#ffffff" valign="baseline">Run javadoc over the main |
| class files, generating an HTML documentation tree in the subdirectory <strong>doc</strong>.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">jar</th> |
| <td bgcolor="#ffffff" valign="baseline">Create a jar archive <strong>icu4j.jar</strong> |
| in the root ICU4J directory containing the main class files.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">jarSrc</th> |
| <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong> |
| target, but containing only the source files. </td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">jarDocs</th> |
| <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong> |
| target, but containing only the docs. </td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">richedit</th> |
| <td bgcolor="#ffffff" valign="baseline">Build the richedit core |
| class files and tests. </td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">richeditJar</th> |
| <td bgcolor="#ffffff" valign="baseline">Create the richedit jar |
| file (which contains only the richedit core class files). The file <strong>richedit.jar</strong> |
| will be created in the <strong>./richedit</strong> subdirectory. Any |
| existing file of that name will be overwritten.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">richeditZip</th> |
| <td bgcolor="#ffffff" valign="baseline">Create a zip archive of |
| the richedit docs and jar file for distribution. The zip file <strong>richedit.zip</strong> |
| will be created in the <strong>./richedit</strong> subdirectory. Any |
| existing file of that name will be overwritten.</td> |
| </tr> |
| <tr> |
| <th align="right" bgcolor="#ffffff" valign="baseline">clean</th> |
| <td bgcolor="#ffffff" valign="baseline">Remove all built targets, |
| leaving the source.</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>For more information, read the Ant documentation and the <strong>build.xml</strong> |
| file.</p> |
| <p>After doing a build it is a good idea to run all the icu4j tests by |
| typing<br> |
| <tt>"ant check"</tt> or |
| "java |
| -classpath $Root/classes |
| com.ibm.icu.dev.test.TestAll -nothrow".</p> |
| <p>(If you are allergic to build systems, as an alternative to using |
| Ant you can build by running javac and javadoc directly. This |
| is not recommended. You may have to manually create destination |
| directories.)</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. |
| The modules are based on a service and the APIs that define it, e.g., |
| the normalizer module supports all the APIs of the Normalizer class |
| (and some others). Tests can be run to verify that the APIs supported |
| by the module function correctly. |
| Because of internal code dependencies, a module contains extra classes |
| that are not part of the module's core service API. Some or most of the |
| APIs of these extra classes will not work. <b>Only the module's core |
| service API is guaranteed.</b> Other APIs may work partially or not at |
| all, so client code should avoid them.</p> |
| <p> |
| Individual modules are not built directly into their own separate jar |
| files. Since their dependencies |
| often overlap, using separate modules to 'add on' ICU4J functionality |
| would result in |
| unwanted duplication of class files. Instead, building a module causes |
| a subset of ICU4J's |
| classes to be built and put into ICU4J's standard build directory. |
| After one or more module targets are built, the 'moduleJar' target can |
| then be |
| built, which packages the class files into a 'module jar.' Other than |
| the fact that it |
| contains fewer class files, little distinguishes this jar file from a |
| full ICU4J jar file, |
| and in fact they share the same name.</p> |
| <p> |
| Currently ICU4J can be divided into the following modules: |
| </p> |
| <p><b>Key:</b></p> |
| <table bgcolor="#ccccff" cellpadding="3" frame="void" width="623"> |
| <tbody> |
| <tr> |
| <th align="left" valign="baseline"><b>Module Name</b></th> |
| <th align="left" valign="baseline"><b>Ant Targets</b></th> |
| <th align="left" valign="baseline"><b>Test Package Supported</b></th> |
| <th align="right" valign="baseline"><b>Size‡</b></th> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4"> |
| <table> |
| <tbody> |
| <tr> |
| <td valign="baseline">Package*</td> |
| <td valign="baseline">Main Classes† </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| <b><font size="2">* com.ibm. should be prepended to the package names |
| listed. |
| <br> |
| † A bold class name core service APIs. Only APIs in these classes are |
| fully supported. |
| <br> |
| ‡ Sizes are of the compressed jar file containing only this module. |
| Full size is 3,047 KB. |
| </font></b> |
| <p><b>Modules:</b></p> |
| <table bgcolor="#ccccff" cellpadding="3" frame="void" width="623"> |
| <tbody> |
| <tr> |
| <th align="left" valign="baseline">Normalizer</th> |
| <td align="left" valign="baseline">normalizer, normalizerTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.normalizer</td> |
| <td align="right" valign="baseline">457 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline">UCharacter, UCharacterCategory, |
| UCharacterDirection, UCharacterNameIterator, UCharacterTypeIterator, |
| UProperty, UScript</td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline"><b>Normalizer</b>, Replaceable, |
| ReplaceableString, <b>UCharacterIterator</b>, <b>UForwardCharacterIterator</b>, |
| UnicodeFilter, UnicodeMatcher, UnicodeSet, UnicodeSetIterator, UTF16</td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline">ValueIterator, VersionInfo</td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">Collator</th> |
| <td align="left" valign="baseline">collator, collatorTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.collator</td> |
| <td align="right" valign="baseline">1,510 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline">UCharacter, UCharacterCategory, |
| UCharacterDirection, UCharacterNameIterator, UCharacterTypeIterator, |
| lang.UProperty, UScript </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline">BreakDictionary, BreakIterator, |
| BreakIteratorFactory, CanonicalIterator, <b>CollationElementIterator</b>, |
| <b>CollationKey</b>, <b>CollationParsedRuleBuilder</b>, <b>CollationRuleParser</b>, |
| <b>Collator</b>, <b>CollatorReader</b>, |
| DictionaryBasedBreakIterator, <b>Normalizer</b>, Replaceable, |
| ReplaceableString, RuleBasedBreakIterator, <b>RuleBasedCollator</b>, <b>SearchIterator</b>, |
| <b>StringSearch</b>, <b>UCharacterIterator</b>, <b>UForwardCharacterIterator</b>, |
| UnicodeFilter, UnicodeMatcher, UnicodeSet, UnicodeSetIterator, UTF16 </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline">ValueIterator, VersionInfo </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">Calendar</th> |
| <td align="left" valign="baseline">calendar, calendarTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.calendar</td> |
| <td align="right" valign="baseline">1,713 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline">UCharacter, UCharacterCategory, |
| UCharacterDirection, UCharacterNameIterator, UCharacterTypeIterator, |
| UProperty, UScript </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.math:</td> |
| <td valign="baseline"><b>BigDecimal</b> </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline">BreakIterator, <b>ChineseDateFormat</b>, |
| <b>ChineseDateFormatSymbols</b>, <b>DateFormat</b>, <b>DateFormatSymbols</b>, |
| <b>DecimalFormat</b>, <b>DecimalFormatSymbols</b>, |
| Normalizer, NumberFormat, Replaceable, ReplaceableString, <b>SimpleDateFormat</b>, |
| <b>UCharacterIterator</b>, <b>UForwardCharacterIterator</b>, |
| UnicodeFilter, UnicodeMatcher, UnicodeSet, UnicodeSetIterator, UTF16 </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline"><b>BuddhistCalendar</b>, <b>Calendar</b>, |
| <b>CalendarAstronomer</b>, <b>CalendarCache</b>, <b>CalendarFactory</b>, |
| <b>ChineseCalendar</b>, <b>Currency</b>, <b>DateRule</b>, |
| <b>EasterHoliday</b>, <b>EasterRule</b>, <b>GregorianCalendar</b>, |
| <b>HebrewCalendar</b>, <b>HebrewHoliday</b>, <b>Holiday</b>, |
| <b>IslamicCalendar</b>, <b>JapaneseCalendar</b>, <b>RangeDateRule</b>, |
| <b>SimpleDateRule</b>, <b>SimpleHoliday</b>, <b>SimpleTimeZone</b>, |
| <b>SimpleTimeZoneAdapter</b>, <b>TimeZone</b>, <b>TimeZoneData</b>, |
| ValueIterator, VersionInfo </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">BreakIterator</th> |
| <td align="left" valign="baseline">breakIterator, |
| breakIteratorTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.breakiterator</td> |
| <td align="right" valign="baseline">1,488 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline">UCharacter, UCharacterCategory, |
| UCharacterDirection, UCharacterNameIterator, UCharacterTypeIterator, |
| UProperty, UScript </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline"><b>BreakDictionary</b>, <b>BreakIterator</b>, |
| <b>BreakIteratorFactory</b>, <b>DictionaryBasedBreakIterator</b>, |
| Normalizer, Replaceable, ReplaceableString, <b>text.RuleBasedBreakIterator</b>, |
| UCharacterIterator, UForwardCharacterIterator, UnicodeFilter, |
| UnicodeMatcher, UnicodeSet, UnicodeSetIterator, UTF16 </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline">RangeValueIterator, ValueIterator, |
| VersionInfo </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">Basic Properties</th> |
| <td align="left" valign="baseline">propertiesBasic, |
| propertiesBasicTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.lang</td> |
| <td align="right" valign="baseline">535 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline"><b>UCharacter</b>, <b>UCharacterCategory</b>, |
| <b>UCharacterDirection</b>, <b>UCharacterNameIterator</b>, |
| <b>UCharacterTypeIterator</b>, <b>UProperty</b>, <b>UScript</b>, |
| <b>UScriptRun</b> </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline">BreakDictionary, BreakIterator, |
| BreakIteratorFactory, DictionaryBasedBreakIterator, Normalizer, |
| Replaceable, ReplaceableString, RuleBasedBreakIterator, SymbolTable, |
| UCharacterIterator, UForwardCharacterIterator, UnicodeFilter, |
| UnicodeMatcher, UnicodeSet, UnicodeSetIterator, <b>UTF16</b> </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline">CompactByteArray, RangeValueIterator, |
| ValueIterator, VersionInfo </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">Full Properties</th> |
| <td align="left" valign="baseline">propertiesFull, |
| propertiesFullTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.lang</td> |
| <td align="right" valign="baseline">1,432 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline"><b>UCharacter</b>, <b>UCharacterCategory</b>, |
| <b>UCharacterDirection</b>, <b>UCharacterNameIterator</b>, |
| <b>UCharacterTypeIterator</b>, <b>UProperty</b>, <b>UScript</b>, |
| <b>UScriptRun</b> </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline">BreakDictionary, BreakIterator, |
| BreakIteratorFactory, DictionaryBasedBreakIterator, <b>Normalizer</b>, |
| <b>Replaceable</b>, <b>ReplaceableString</b>, |
| RuleBasedBreakIterator, <b>UCharacterIterator</b>, <b>UForwardCharacterIterator</b>, |
| <b>UnicodeFilter</b>, <b>UnicodeMatcher</b>, <b>UnicodeSet</b>, |
| <b>UnicodeSetIterator</b>, <b>UTF16</b></td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline"><b>RangeValueIterator</b>, <b>ValueIterator</b>, |
| <b>VersionInfo</b> </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">Formatting</th> |
| <td align="left" valign="baseline">format, formatTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.format</td> |
| <td align="right" valign="baseline">2,531 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline">UCharacter, UCharacterCategory, |
| UCharacterDirection, UCharacterNameIterator, UCharacterTypeIterator, |
| UProperty, UScript </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.math:</td> |
| <td valign="baseline"><b>math.BigDecimal</b> </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline">BreakIterator, CanonicalIterator, |
| ChineseDateFormat, ChineseDateFormatSymbols, CollationElementIterator, |
| CollationKey, CollationParsedRuleBuilder, CollationRuleParser, |
| Collator, CollatorReader, <b>DateFormat</b>, <b>DateFormatSymbols</b>, |
| <b>DecimalFormat</b>, <b>DecimalFormatSymbols</b>, |
| Normalizer, <b>NumberFormat</b>, Replaceable, ReplaceableString, |
| RuleBasedCollator, <b>RuleBasedNumberFormat</b>, <b>SimpleDateFormat</b>, |
| <b>UCharacterIterator</b>, <b>UForwardCharacterIterator</b>, |
| UnicodeFilter, UnicodeMatcher, UnicodeSet, UnicodeSetIterator, UTF16 </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline"><b>Calendar</b>, <b>CalendarAstronomer</b>, |
| <b>CalendarCache</b>, <b>CalendarFactory</b>, <b>ChineseCalendar</b>, |
| <b>Currency</b>, <b>GregorianCalendar</b>, <b>RangeValueIterator</b>, |
| <b>SimpleTimeZone</b>, <b>SimpleTimeZoneAdapter</b>, <b>TimeZone</b>, |
| <b>TimeZoneData</b>, ValueIterator,VersionInfo </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">StringPrep, IDNA</th> |
| <td align="left" valign="baseline">stringPrep, stringPrepTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.stringprep</td> |
| <td align="right" valign="baseline">483 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline">UCharacter, UCharacterCategory, |
| UCharacterDirection, UCharacterNameIterator, UCharacterTypeIterator, |
| UProperty, UScript </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline">BreakIterator, CanonicalIterator, <b>IDNA</b>, |
| Normalizer, Replaceable, ReplaceableString, <b>StringPrep</b>, <b>StringParseException</b>, |
| UCharacterIterator, UForwardCharacterIterator, UnicodeSet, UTF16 </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline"> RangeValueIterator, StringTokenizer, |
| ULocale, UResourceBundle ValueIterator,VersionInfo </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <tr> |
| <th align="left" valign="baseline">Transforms</th> |
| <td align="left" valign="baseline">transliterator, |
| transliteratorTests</td> |
| <td align="left" valign="baseline">com.ibm.icu.dev.test.translit</td> |
| <td align="right" valign="baseline">778 KB</td> |
| </tr> |
| <tr bgcolor="#ffffff"> |
| <td colspan="4" valign="top"> |
| <table border="0" cellpadding="5"> |
| <tbody> |
| <tr> |
| <td valign="baseline">icu.lang:</td> |
| <td valign="baseline"><b>UCharacter</b>, <b>UCharacterCategory</b>, |
| <b>UCharacterDirection</b>, <b>UCharacterNameIterator</b>, |
| <b>UCharacterTypeIterator</b>, <b>UProperty</b>, <b>UScript</b>, |
| <b>UScriptRun</b> </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.text:</td> |
| <td valign="baseline"><b>AnyTransliterator</b>, <b>BreakDictionary</b>, |
| <b>BreakIterator</b>, <b>BreakIteratorFactory</b>, <b>BreakTransliterator</b>, |
| <b>DictionaryBasedBreakIterator</b>, <b>Normalizer</b>, <b>Replaceable</b>, |
| <b>ReplaceableString</b>, <b>RuleBasedBreakIterator</b>, <b>StringReplacer</b>, |
| <b>Transliterator</b>, <b>UCharacterIterator</b>, <b>UForwardCharacterIterator</b>, |
| <b>UnicodeSet</b>, <b>UnicodeSetIterator</b>, <b>UTF16</b> |
| </td> |
| <td> <br> |
| </td> |
| </tr> |
| <tr> |
| <td valign="baseline">icu.util:</td> |
| <td valign="baseline"><b>RangeValueIterator</b>, <b>ValueIterator</b>, |
| <b>VersionInfo</b> </td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| <!-- tr> |
| |
| <th align="left" valign="baseline"><b>Module Name</b></th> |
| |
| <th align="left" valign="baseline"><b>Ant Targets</b></th> |
| |
| <th align="left" valign="baseline"><b>Test Package Supported</b></th> |
| |
| <th align="right" valign="baseline"><b>Size</b></th> |
| |
| </tr --> |
| </tbody> |
| </table> |
| <p>Building any of these modules is as easy as specifying a build |
| target to the Ant build system, e.g: |
| <br> |
| To build a module that contains only the Normalizer API: </p> |
| <ol> |
| <li> Build the module. <br> |
| <code> ant normalizer </code> </li> |
| <li> Build the jar containing the module. <br> |
| <code>ant moduleJar </code> </li> |
| <li> Build the tests for the module. <br> |
| <code> ant normalizerTests </code> </li> |
| <li> Run the tests and verify that the self tests pass. <br> |
| <code> java -classpath $icu4j_root/classes |
| com.ibm.icu.dev.test.TestAll -nothrow -w </code> </li> |
| </ol> |
| If more than one module is required, the module build targets can be |
| concatenated, e.g: |
| <ol> |
| <li> Build the modules. <br> |
| <code> ant normalizer collator </code> </li> |
| <li> Build the jar containing the modules. <br> |
| <code>ant moduleJar </code> </li> |
| <li> Build the tests for the module. <br> |
| <code> ant normalizerTests collatorTests </code> </li> |
| <li> Run the tests and verify that they pass. <br> |
| <code> java -classpath $icu4j_root/classes |
| com.ibm.icu.dev.test.TestAll -nothrow -w </code> </li> |
| </ol> |
| The jar should be built before the tests, since for some targets |
| building the tests will cause additional classes to be compiled that |
| are not strictly necessary for the module itself. |
| <h5> Notes: </h5> |
| <ul> |
| <li>Regardless of whether ICU4J is built as a whole or as modules, |
| the jar file produced is named <em>icu4j.jar</em>.</li> |
| <li>To ascertain if an icu4j.jar contains all of ICU4J or not, please |
| see the manifest file in the jar</li> |
| <li>The target moduleJar does not depend on any other target. It just |
| creates a jar of all class files under |
| $icu4j_root/classes/com/ibm/icu/, excluding the classs files in |
| $icu4j_root/classes/com/ibm/icu/dev folder</li> |
| <li>The list of module build targets can be obtained by running the |
| command: <code>ant -projecthelp</code></li> |
| </ul> |
| <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 (with the |
| exception of richedit) are <strong>unsupported</strong> and may change |
| or disappear without notice.</p> |
| <p>The icu4j.jar file contains only the core ICU4J classes, not the |
| demo classes, so unless you build ICU4J there is little to try out. |
| </p> |
| <h4>Rich Edit</h4> |
| To try out the <strong>richedit</strong> package, first build the |
| richeditJar target. |
| This is a 'runnable' jar file. To run the richedit demo, type: |
| <blockquote><tt>java -jar $Root/richedit/richedit.jar</tt></blockquote> |
| This will present an empty edit pane with an awt interface. |
| <p>With a fuller command line you can try out other options, for |
| example:</p> |
| <blockquote><tt>java -classpath $Root/richedit/richedit.jar |
| com.ibm.richtext.demo.EditDemo [-swing][file]</tt></blockquote> |
| <p>This will use an awt GUI, or a swing GUI if |
| <tt>-swing</tt> is passed on the command line. It will open a text |
| file if one is provided, otherwise it will open a blank page. Click |
| to type.</p> |
| <p> |
| You can add tabs to the tab ruler by clicking in the ruler while |
| holding down the control key. |
| Clicking on an existing tab changes between left, right, center, and |
| decimal tabs. Dragging |
| a tab moves it, dragging it off the ruler removes it.</p> |
| <p> |
| You can experiment with complex text by using the keymap functions. |
| Please note that these are mainly for demo purposes, for real work |
| with Arabic or Hebrew you will want to use an input method. You will |
| need to use a font that supports Arabic or Hebrew, 'Lucida Sans' |
| (provided |
| with Java) supports these languages.</p> |
| <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 all</tt>. |
| Then try |
| one of the following: |
| </p> |
| <ul> |
| <li><tt>java -classpath classes |
| com.ibm.icu.dev.demo.calendar.CalendarApp</tt> </li> |
| <li><tt>java -classpath classes |
| com.ibm.icu.dev.demo.holiday.HolidayCalendarDemo</tt> </li> |
| <li><tt>java -classpath classes |
| com.ibm.icu.dev.demo.rbbi.TextBoundDemo</tt><br> |
| (Click in the text, then use <tt>ctrl-N</tt> and <tt>ctrl-P</tt> to |
| select the next or previous block of text.) </li> |
| <li><tt>java -classpath classes com.ibm.icu.dev.demo.rbnf.RbnfDemo</tt> |
| </li> |
| <li><tt>java -classpath classes com.ibm.icu.dev.demo.translit.Demo</tt> |
| </li> |
| </ul> |
| <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 JDK resource information. (Note, |
| in ICU4J 3.2 and 3.4, time zone information still depends on the |
| underlying JDK). The |
| new ICU4J 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>icudt34b</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>java.util.ResourceBundle</code>. |
| </li> |
| <li>The <b>collation data</b> is under the directory <tt>icudt34b/coll</tt>, |
| as a set of <tt>".res"</tt> files.</li> |
| <li>The <b>rule-based transliterator data</b> is under the directory |
| <tt>icudt34b/translit</tt> as a set of <tt>".res"</tt> files. (<b>Note:</b> the |
| Han transliterator test data is no longer included in the core icu4j.jar |
| file by default.)</li> |
| <li>The <b>rule-based number format data</b> is under the directory |
| <tt>icudt34b/rbnf</tt> as a set of <tt>".res"</tt> files. |
| <li>The <b>break iterator data</b> is directly under the data |
| directory, 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 <tt>data</tt> directory, |
| 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> as well as assorted <b>normalization |
| data</b> and default <b>unicode collation algorithm (UCA) data</b> |
| is found under the <tt>data</tt> directory as a set of <tt>".icu"</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>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 directory when the 'core' target is built. |
| Building the <tt>'resources'</tt> target will force the |
| resources to once again be extracted. Extraction will |
| overwrite any corresponding resource files already in that directory. |
| </p> |
| <h4><a name="resourcesICU4C">Building ICU4J Resources from ICU4C</a></h4> |
| <h5>Requirements</h5> |
| <ul> |
| <li>Compilers and tools required for building <a |
| href="http://oss.software.ibm.com/cvs/icu/%7Echeckout%7E/icu/readme.html#HowToBuild">ICU</a>.</li> |
| <li>Java SDK version 1.4.0 or above.</li> |
| <li>Perl version 5 or above.</li> |
| </ul> |
| <h5> Procedure</h5> |
| <ol> |
| <li> Download and build ICU on a Windows machine. For instructions on |
| downloading and building ICU, please click <a |
| href="http://oss.software.ibm.com/cvs/icu/%7Echeckout%7E/icu/readme.html#HowToBuild">here</a>.</li> |
| <li> Change directory to <i>$icu_root</i>/source/tools/genrb </li> |
| <li> Launch gendtjar.pl from that directory itself with the command <br> |
| gendtjar.pl --icu-root=<i>$icu_root</i> --jar=<i>$jdk_home/bin</i> |
| --icu4j-root=<i>$icu4j_root</i> --version=<i>$icu_version</i> <br> |
| e.g: gendtjar.pl --icu-root=\work\icu --jar=\jdk1.4.1\bin |
| --icu4j-root=\work\icu4j --version=3.0 <br> |
| Execution of gendtjar.pl script will create the required jar files in |
| the $icu_root\source\tools\genrb\temp directory.</li> |
| <li> Move icudata.jar to <i>$icu4j_root</i>/src/com/ibm/icu/impl/data |
| directory.</li> |
| <li> Move testdata.jar to <i>$icu4j_root</i>/src/com/ibm/dev/data |
| directory.</li> |
| <li> Build resources target of ant to unpack the jar files with the |
| following command. <br> |
| <i>$ant_home</i>/bin/ant resources</li> |
| </ol> |
| <h3 class="doc"><a name="WhereToFindMore"></a>Where to Find More |
| Information</h3> |
| <p><a href="http://ibm.com/software/globalization/icu/">http://ibm.com/software/globalization/icu/</a> |
| is a |
| pointer to general information about the International Components for |
| Unicode in Java </p> |
| <p><a href="http://ibm.com/software/globalization/">http://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 fixing any bugs, and will use your feedback to help plan future |
| releases.</p> |
| <p>To submit comments, request features and report bugs, contact us |
| through the <a |
| href="http://icu.sourceforge.net/contacts.html">ICU Support |
| mailing list</a>.<br> |
| 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-2005 International Business |
| Machines Corporation and others. All Rights |
| Reserved.<br> |
| 5600 Cottle Road, San José, CA 95193 |
| </font></i></p> |
| </body> |
| </html> |