]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_2_1-src/readme.html
go
[Dictionary.git] / jars / icu4j-4_2_1-src / readme.html
1 <!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">\r
2 <html>\r
3 <head>\r
4   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\r
5   <meta http-equiv="Content-Style-Type" content="text/css2">\r
6   <title>ReadMe for ICU4J</title>\r
7   <meta name="COPYRIGHT" content="Copyright 2000-2009, International Business Machines Corporation and others. All Rights Reserved.">\r
8   <style type="text/css">\r
9 h3.doc { background: #CCCCFF }\r
10 h4.doc { text-decoration: underline }\r
11   </style>\r
12 </head>\r
13 <body style="background-color: rgb(255, 255, 255);" lang="EN-US"\r
14  link="#0000ff" vlink="#800080">\r
15 <h2>International Components for Unicode for Java (ICU4J)</h2>\r
16 <h3>Read Me for ICU4J 4.2.1</h3>\r
17 <hr size="2" width="100%">\r
18 <p><b>Release Date</b><br>\r
19 July 1, 2009<br>\r
20 </p>\r
21 <!-- <p><b>Note:</b> This is major release of ICU4J.  It contains bug fixes\r
22 and adds implementations of inherited API and introduces new API\r
23 or functionality. -->\r
24 \r
25 <p><b>Note:</b> This is an update release of ICU4J 4.2.  This release contains\r
26 several bug fixes and updated data, but does not introduce any new APIs or\r
27 functionalities.\r
28 </p>\r
29 \r
30 <p>For the most recent release, see the <a\r
31  href="http://www.icu-project.org/download/"> ICU4J\r
32 download site</a>. </p>\r
33 <h3 class="doc">Contents</h3>\r
34 <ul type="disc">\r
35   <li><a href="#introduction">Introduction to ICU4J</a></li>\r
36   <li><a href="#news">What Is New In This Release?</a></li>\r
37   <li><a href="#license">License Information</a></li>\r
38   <li><a href="#PlatformDependencies">Platform Dependencies</a></li>\r
39   <li><a href="#download">How to Download ICU4J</a></li>\r
40   <li><a href="#WhatContain">The Structure and Contents of ICU4J</a></li>\r
41   <li><a href="#API">Where to Get Documentation</a></li>\r
42   <li><a href="#HowToInstallJavac">How to Install and Build</a></li>\r
43   <li><a href="#HowToModularize">How to modularize ICU4J</a></li>\r
44   <li><a href="#tryingout">Trying Out ICU4J</a></li>\r
45   <li><a href="#resources">ICU4J Resource Information</a></li>\r
46   <li><a href="#timezone">About ICU4J Time Zone</a></li>\r
47   <li><a href="#WhereToFindMore">Where to Find More Information</a></li>\r
48   <li><a href="#SubmittingComments">Submitting Comments, Requesting\r
49 Features and Reporting Bugs</a></li>\r
50 </ul>\r
51 <h3 class="doc"><a name="introduction"></a>Introduction to ICU4J</h3>\r
52 <p>The International Components for Unicode (ICU) library provides\r
53 robust and\r
54 full-featured Unicode services on a wide variety of platforms. ICU\r
55 supports the\r
56 most current version of the Unicode standard, including support for\r
57 supplementary characters (needed for GB 18030 repertoire support).</p>\r
58 <p>Java provides a strong foundation for global programs, and IBM and\r
59 the\r
60 ICU team played a key role in providing globalization technology to\r
61 Java. But because of its long release schedule, Java cannot always keep\r
62 up with evolving standards. The ICU team continues to extend Java's\r
63 Unicode and internationalization support, focusing on improving\r
64 performance,\r
65 keeping current with the Unicode standard, and providing richer APIs,\r
66 while\r
67 remaining as compatible as possible with the original Java text and\r
68 internationalization API design.</p>\r
69 <p>ICU4J is an add-on to the regular JRE that provides:\r
70 </p>\r
71 <ul>\r
72   <li><a\r
73  href="http://www.icu-project.org/userguide/Collate_Intro.html"><b>Collation</b></a>\r
74 &#8211; rule-based, up-to-date Unicode Collation Algorithm (UCA) sorting order<br>\r
75 &nbsp;&nbsp;&nbsp;&nbsp;For fast multilingual string comparison; faster\r
76 and more complete than\r
77 the J2SE implementation</li>\r
78   <li><a href="http://www.icu-project.org/userguide/strings.html"><b>Supplementary\r
79 Characters</b></a> &#8211; String manipulation and character properties<br>\r
80 &nbsp;&nbsp;&nbsp;&nbsp;Required for proper GB 18030 and JIS X 0213\r
81 repertoire support</li>\r
82   <li><a href="http://www.icu-project.org/userguide/charsetDetection.html"><b>Charset\r
83 Detection</b></a> &#8211; Recognition of various single and multibyte charsets<br>\r
84 &nbsp;&nbsp;&nbsp;&nbsp;Useful for recognizing untagged text data</li>\r
85   <li><a\r
86  href="http://www.icu-project.org/userguide/unicodeSet.html"><b>UnicodeSet</b></a>\r
87 &#8211; standard set operations optimized for sets of Unicode characters<br>\r
88 &nbsp;&nbsp;&nbsp;&nbsp;UnicodeSets can be built from string patterns\r
89 using any Unicode properties.</li>\r
90   <li><a href="http://www.icu-project.org/userguide/Transform.html"><b>Transforms</b></a>\r
91 &#8211; a flexible mechanism for Unicode text conversions<br>\r
92 &nbsp;&nbsp;&nbsp;&nbsp;Including Full/Halfwidth conversions,\r
93 Normalization, Case conversions, Hex\r
94 conversions, and transliterations between scripts (50+ pairs)</li>\r
95   <li><a\r
96  href="http://www.icu-project.org/userguide/normalization.html"><b>Unicode\r
97 Normalization</b></a> &#8211; NFC, NFD, NFKD, NFKC<br>\r
98 &nbsp;&nbsp;&nbsp;&nbsp;For canonical text representations, needed for\r
99 XML and the net</li>\r
100   <li><a\r
101  href="http://www.icu-project.org/userguide/dateCalendar.html"><b>International\r
102 Calendars</b></a> &#8211; Arabic, Buddhist, Chinese, Hebrew, Japanese, Ethiopic, Islamic, Coptic and other calendars<br>\r
103 &nbsp;&nbsp;&nbsp;&nbsp;Required for correct presentation of dates in\r
104 certain countries</li>\r
105   <li><a\r
106  href="http://www.icu-project.org/userguide/formatNumbers.html"><b>Number\r
107 Format\r
108 Enhancements</b></a> &#8211; Scientific Notation, Spelled-out, etc.<br>\r
109 &nbsp;&nbsp;&nbsp;&nbsp;Enhancements to the normal Java number\r
110 formatting. The spell-out format is\r
111 used for checks and similar documents</li>\r
112   <li><a\r
113  href="http://www.icu-project.org/userguide/boundaryAnalysis.html"><b>Enhanced\r
114 Word-Break Detection</b></a> &#8211; Rule-based, supports Thai<br>\r
115 &nbsp;&nbsp;&nbsp;&nbsp;Required for correct support of Thai</li>\r
116   <li><a\r
117  href="http://www.icu-project.org/userguide/compression.html"><b>Unicode\r
118 Text\r
119 Compression</b></a> &#8211; Standard compression of Unicode text<br>\r
120 &nbsp;&nbsp;&nbsp;&nbsp;Suitable for large numbers of small fields,\r
121 where LZW and similar schemes\r
122 do not apply</li>\r
123   <li><a\r
124  href="http://www.icu-project.org/userguide/conversion.html"><b>Charset Conversion</b></a> &#8211; Conversion to and from different charsets.<br>\r
125 &nbsp;&nbsp;&nbsp;&nbsp;Plugs into Java CharsetProvider Service Provider Interface (SPI)</li>\r
126 \r
127 </ul>\r
128 <blockquote>\r
129   <p><b>Note:</b> We continue to provide assistance to Sun, and in some\r
130 cases, ICU4J support has been rolled into a later release of Java. For\r
131 example, the Thai word-break is now in Java 1.4. However, the most\r
132 current and complete version is always found in ICU4J.</p>\r
133 </blockquote>\r
134 \r
135 <h3 class="doc"><a name="news"></a>What Is New In This Release?</h3>\r
136 <p>\r
137 See the <a href="http://www.icu-project.org/download/">ICU 4.2 download page</a> about\r
138 new features in this release.  The list of API changes since the previous ICU4J release\r
139 is available\r
140 <a href="http://source.icu-project.org/repos/icu/icu4j/tags/release-4-2/APIChangeReport.html">here</a>.\r
141 </p>\r
142 \r
143 <h4 class="doc">Summary of changes in 4.2.1 (July 1, 2009)</h4>\r
144 <p><b>Locale data update</b></p>\r
145 <p>ICU4J 4.2.1 updates the CLDR version to\r
146 <a href="http://cldr.unicode.org/index/downloads/cldr-1-7-1">1.7.1</a>.</p>\r
147 \r
148 <p><b>Time zone data update</b></p>\r
149 <p>ICU4J 4.2.1 updates the time zone data to version\r
150 <a href="http://source.icu-project.org/repos/icu/data/trunk/tzdata/icu/2009j/">2009j</a>\r
151 from the Olson tz database.</p>\r
152 \r
153 <p><b>Bug fixes</b></p>\r
154 <p>This release contains following bug fixes (not a complete list)\r
155 <ul>\r
156 <li><a href="http://bugs.icu-project.org/trac/ticket/6918">#6918</a> Date formatting should honor @numbers</li>\r
157 <li><a href="http://bugs.icu-project.org/trac/ticket/7014">#7014</a> TimeZone.getTimeZone("Asia/Amman") returns GMT with tzdata 2009i</li>\r
158 <li><a href="http://bugs.icu-project.org/trac/ticket/7017">#7017</a> ICU4J time zone test failure with tzdata2009i</li>\r
159 </ul>\r
160 \r
161 <h3 class="doc"><a name="license"></a>License Information</h3>\r
162 <p>\r
163 The ICU projects (ICU4C and ICU4J) use the X license. The X\r
164 license is <b>suitable for commercial use</b> and is a recommended free software license\r
165 that is compatible with the GNU GPL license. This became\r
166 effective with release 1.8.1 of ICU4C and release 1.3.1 of ICU4J in\r
167 mid-2001. All new ICU releases will adopt the X license; previous ICU\r
168 releases continue to utilize the IPL (IBM Public License). Users\r
169 of previous releases of ICU who want to adopt new ICU releases will\r
170 need to accept the terms and conditions of the X license.\r
171 </p>\r
172 <p>\r
173 The main effect of the change is to provide GPL compatibility.\r
174 The X license is listed as GPL compatible, see the GNU page at \r
175 <a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">\r
176 http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses</a>.\r
177 This means that GPL projects can now use ICU code, it does <b>not</b>\r
178 mean that projects using ICU become subject to GPL.\r
179 </p>\r
180 <p>\r
181  The IBM version contains the essential text of the license, omitting the\r
182 X-specific trademarks and copyright notices. The full copy of <a\r
183  href="license.html">ICU's license</a> is included in the download\r
184 package.\r
185 </p>\r
186 <h3 class="doc"><a name="PlatformDependencies"></a>Platform Dependencies</h3>\r
187 <p> By default ICU4J depends on functionality available\r
188 in J2SE 5 or later releases.  The binary distribution of ICU4J\r
189 jar file may have a problem with older JRE versions.\r
190 We provide the ability to build a variant of ICU4J for JRE 1.3\r
191 or 1.4.  If you want to use ICU4J running on JRE 1.4, you should\r
192 build ICU4J libraries from the source package with JDK 1.4.\r
193 With older JDK releases, some build targets may not work.\r
194 \r
195 <p>The table below shows operating systems and JRE/JDK versions currently\r
196 used by the ICU development team.\r
197 </p>\r
198 <table bgcolor="#CCCCFF">\r
199 <tr>\r
200   <th rowspan="2" bgcolor="#FFFFFF">Operating System</th>\r
201   <th colspan="3" bgcolor="#FFFFFF">Sun Java SE</th>\r
202   <th colspan="3" bgcolor="#FFFFFF">IBM Java SE</th>\r
203 </tr>\r
204 <tr>\r
205   <th bgcolor="#FFFFFF">1.6.0</th>\r
206   <th bgcolor="#FFFFFF">1.5.0</th>\r
207   <th bgcolor="#FFFFFF">1.4.2</th>\r
208   <th bgcolor="#FFFFFF">1.6.0</th>\r
209   <th bgcolor="#FFFFFF">1.5.0</th>\r
210   <th bgcolor="#FFFFFF">1.4.2</th>\r
211 </tr>\r
212 <tr>\r
213   <th bgcolor="#FFFFFF">AIX 5.2</th>\r
214   <td align="center" bgcolor="#FFFFFF">-</td>\r
215   <td align="center" bgcolor="#FFFFFF">-</td>\r
216   <td align="center" bgcolor="#FFFFFF">-</td>\r
217   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
218   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
219   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
220 </tr>\r
221 <tr>\r
222   <th bgcolor="#FFFFFF">AIX 5.3</th>\r
223   <td align="center" bgcolor="#FFFFFF">-</td>\r
224   <td align="center" bgcolor="#FFFFFF">-</td>\r
225   <td align="center" bgcolor="#FFFFFF">-</td>\r
226   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
227   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
228   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
229 </tr>\r
230 <tr>\r
231   <th bgcolor="#FFFFFF">AIX 6.1</th>\r
232   <td align="center" bgcolor="#FFFFFF">-</td>\r
233   <td align="center" bgcolor="#FFFFFF">-</td>\r
234   <td align="center" bgcolor="#FFFFFF">-</td>\r
235   <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>\r
236   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
237   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
238 </tr>\r
239 <tr>\r
240   <th bgcolor="#FFFFFF">HP-UX 11 (PA-RISC)</th>\r
241   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
242   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
243   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
244   <td align="center" bgcolor="#FFFFFF">-</td>\r
245   <td align="center" bgcolor="#FFFFFF">-</td>\r
246   <td align="center" bgcolor="#FFFFFF">-</td>\r
247 </tr>\r
248 <tr>\r
249   <th bgcolor="#FFFFFF">HP-UX 11 (IA64)</th>\r
250   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
251   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
252   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
253   <td align="center" bgcolor="#FFFFFF">-</td>\r
254   <td align="center" bgcolor="#FFFFFF">-</td>\r
255   <td align="center" bgcolor="#FFFFFF">-</td>\r
256 </tr>\r
257 <tr>\r
258   <th bgcolor="#FFFFFF">Redhat Enterprise Linux 4 (x86)</th>\r
259   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
260   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
261   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
262   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
263   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
264   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
265 </tr>\r
266 <tr bgcolor="#FFFFFF">\r
267   <th>Redhat Enterprise Linux 5 (x86)</th>\r
268   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
269   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
270   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
271   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
272   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
273   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
274 </tr>\r
275 <tr bgcolor="#FFFFFF">\r
276   <th>Solaris 9 (SPARC)</th>\r
277   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
278   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
279   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
280   <td align="center" bgcolor="#FFFFFF">-</td>\r
281   <td align="center" bgcolor="#FFFFFF">-</td>\r
282   <td align="center" bgcolor="#FFFFFF">-</td>\r
283 </tr>\r
284 <tr bgcolor="#FFFFFF">\r
285   <th>Solaris 10 (SPARC)</th>\r
286   <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>\r
287   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
288   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
289   <td align="center" bgcolor="#FFFFFF">-</td>\r
290   <td align="center" bgcolor="#FFFFFF">-</td>\r
291   <td align="center" bgcolor="#FFFFFF">-</td>\r
292 </tr>\r
293 <tr>\r
294   <th bgcolor="#FFFFFF">Windows XP</th>\r
295   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
296   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
297   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
298   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
299   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
300   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
301 </tr>\r
302 <tr>\r
303   <th bgcolor="#FFFFFF">Windows Vista</th>\r
304   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
305   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
306   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
307   <td align="center" bgcolor="#CCCCFF"><em><b>Reference platform</b></em></td>\r
308   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
309   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
310 </tr>\r
311 <tr>\r
312   <th bgcolor="#FFFFFF">Windows 2008 Server</th>\r
313   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
314   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
315   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
316   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
317   <td align="center" bgcolor="#DDDDFF">Regularly tested</td>\r
318   <td align="center" bgcolor="#DDDDFF">Rarely tested</td>\r
319 </tr>\r
320 </table>\r
321 \r
322 <h3 class="doc"><a name="download"></a>How to Download ICU4J</h3>\r
323 <p>There are two ways to download the ICU4J releases.\r
324 </p>\r
325 <ul type="disc">\r
326   <li><b>Official Release:</b><br>\r
327 If you want to use ICU4J (as opposed to developing it), your best bet\r
328 is to download an official, packaged version of the ICU4J library files.\r
329 These versions are tested more thoroughly than day-to-day development\r
330 builds, and they are packaged in jar files for convenient download.\r
331 These packaged files can be found at the\r
332 <a href="http://www.icu-project.org/download/">ICU Downloads page</a>.\r
333 </li></ul>\r
334 <ul type="disc">\r
335   <li><b>Subversion Source Repository:</b><br>\r
336 If you are interested in developing features, patches, or bug fixes for\r
337 ICU4J, you should probably be working with the latest version of the\r
338 ICU4J source code. You will need to check the code out of our Subversion\r
339 repository to ensure that you have the most recent version of all of\r
340 the files. There are several ways to do this. Please follow the\r
341 directions that are contained on the <a\r
342  href="http://www.icu-project.org/repository/">Source\r
343  Repository page</a> for details.\r
344   </li>\r
345 </ul>\r
346 <p>For more details on how to download ICU4J directly from the web\r
347 site, please see the ICU downloads page at <a\r
348  href="http://www.icu-project.org/download/">http://www.icu-project.org/download/</a>\r
349 </p>\r
350 <h3 class="doc"><a name="WhatContain"></a>The Structure and Contents of\r
351 ICU4J</h3>\r
352 <p>Below, <b>$icu4j_root</b> is the placement of the icu directory in your\r
353 file system, like\r
354 "drive:\...\icu4j" in your environment. "drive:\..." stands for any\r
355 drive and any directory on that drive that you chose to install icu4j\r
356 into. </p>\r
357 <p><b>Information and build files:</b></p>\r
358 <table bgcolor="#ccccff" cellpadding="3" frame="void" width="623">\r
359   <tbody>\r
360     <tr>\r
361       <td align="right" bgcolor="#ffffff" valign="baseline"><b>readme.html</b><br>\r
362 (this file)</td>\r
363       <td bgcolor="#ffffff" valign="baseline">A description of ICU4J\r
364 (International Components for Unicode for Java)</td>\r
365     </tr>\r
366     <tr>\r
367       <th align="right" bgcolor="#ffffff" valign="baseline">license.html</th>\r
368       <td bgcolor="#ffffff" valign="baseline">The X license, used by\r
369 ICU4J</td>\r
370     </tr>\r
371     <tr>\r
372       <th align="right" bgcolor="#ffffff" valign="baseline">build.xml</th>\r
373       <td bgcolor="#ffffff" valign="baseline">Ant build file. See <a\r
374  href="#HowToInstallJavac">How to Install and Build</a> for more\r
375 information</td>\r
376     </tr>\r
377   </tbody>\r
378 </table>\r
379 <p><b>The source directories mirror the package structure of the code.</b><br>\r
380 <font color="red">Core</font> packages become part of the ICU4J jar\r
381 file.<br>\r
382 <font color="red">Charset</font> packages become part of the ICU4J charset jar\r
383 file.<br>\r
384 <font color="red">LocaleSPI</font> packages become part of the ICU4J Locale\r
385 service provider jar file.<br>\r
386 <font color="red">RichText</font> classes are Core and API, but can be\r
387 removed from icu4j.jar, and can be built into their own jar.<br>\r
388 <font color="red">API</font> packages contain classes with supported\r
389 API.<br>\r
390 </p>\r
391 <table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"\r
392  width="623">\r
393   <tbody>\r
394     <tr>\r
395       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/charset<br>\r
396       <font color="red">Charset, API</font></th>\r
397       <td bgcolor="#ffffff" valign="baseline">Packages that provide Charset conversion\r
398       </td>\r
399     </tr>\r
400     <tr>\r
401       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/dev<br>\r
402       <font color="red">Non-Core, Non-API</font></th>\r
403       <td bgcolor="#ffffff" valign="baseline">Packages used for\r
404 internal development:\r
405       <ul>\r
406         <li>Data: data used by tests and in building ICU</li>\r
407         <li>Demos: Calendar, Holiday, Break Iterator, Rule-based Number\r
408 Format, Transformations<br>\r
409 (See <a href="#tryingout">below</a> for more information about the\r
410 demos.)</li>\r
411         <li>Tests: API and coverage tests of all functionality.<br>\r
412 For information about running the tests, see\r
413 $icu4j_root/src/com/ibm/icu/dev/test/TestAll.java.</li>\r
414         <li>Tools: tools used to build data tables, etc.</li>\r
415       </ul>\r
416       </td>\r
417     </tr>\r
418     <tr>\r
419       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/impl<br>\r
420       <font color="red">Core, Non-API</font></th>\r
421       <td bgcolor="#ffffff" valign="baseline">These are utility classes\r
422 used from different ICU4J core packages.</td>\r
423     </tr>\r
424     <tr>\r
425       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/lang<br>\r
426       <font color="red">Core, API</font></th>\r
427       <td bgcolor="#ffffff" valign="baseline">Character properties\r
428 package.</td>\r
429     </tr>\r
430     <tr>\r
431       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/math<br>\r
432       <font color="red">Core, API</font></th>\r
433       <td bgcolor="#ffffff" valign="baseline">Additional math classes.</td>\r
434     </tr>\r
435     <tr>\r
436       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/text<br>\r
437       <font color="red">Core, API</font></th>\r
438       <td bgcolor="#ffffff" valign="baseline">Additional text classes.\r
439 These add to, and in some cases replace, related core Java classes:\r
440       <ul>\r
441         <li>Arabic shaping</li>\r
442         <li>Bidirectional text manipulation</li>\r
443         <li>Break iteration</li>\r
444         <li>Date formatting</li>\r
445         <li>Number formatting</li>\r
446         <li>Transliteration</li>\r
447         <li>Normalization</li>\r
448         <li>String manipulation</li>\r
449         <li>Collation</li>\r
450         <li>String search</li>\r
451         <li>Unicode compression</li>\r
452         <li>Unicode sets</li>\r
453       </ul>\r
454       </td>\r
455     </tr>\r
456     <tr>\r
457       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/icu/util<br>\r
458       <font color="red">Core, API</font></th>\r
459       <td bgcolor="#ffffff" valign="baseline">Additional utility\r
460 classes:\r
461       <ul>\r
462         <li>Calendars - Gregorian, Buddhist, Coptic, Ethiopic, Hebrew, Islamic, Japanese, Chinese and others</li>\r
463         <li>Holiday</li>\r
464         <li>TimeZone</li>\r
465         <li>VersionInfo</li>\r
466         <li>Iteration</li>\r
467         <li>Currency</li>\r
468       </ul>\r
469       </td>\r
470     </tr>\r
471     <tr>\r
472       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/src/com/ibm/richtext<br>\r
473       <font color="red">RichText,Non-API</font></th>\r
474       <td bgcolor="#ffffff" valign="baseline">Styled text editing\r
475 package. This includes demos, tests, and GUIs for editing and\r
476 displaying styled text. The richtext package provides a scrollable\r
477 display, typing, arrow-key support, tabs, alignment and justification,\r
478 word- and sentence-selection (by double-clicking and triple-clicking,\r
479 respectively), text styles, clipboard operations (cut, copy and paste)\r
480 and a log of changes for undo-redo. Richtext uses Java's TextLayout and\r
481 complex text support (provided to Sun by the ICU4J team).</td>\r
482     </tr>\r
483     <tr>\r
484       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/localespi/src/com/ibm/icu/impl<br>\r
485       <font color="red">LocaleSPI,Non-API</font></th>\r
486       <td bgcolor="#ffffff" valign="baseline">\r
487         Packages for ICU4J Locale Service Provider runtime\r
488         code implementing the Java SE 6 locale sensitive service provider interfaces.\r
489       </td>\r
490     </tr>\r
491     <tr>\r
492       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/localespi/src/com/ibm/icu/dev<br>\r
493       <font color="red">LocaleSPI,Non-API</font></th>\r
494       <td bgcolor="#ffffff" valign="baseline">\r
495         Packages used for internal development for ICU4J Locale Service Provider, including\r
496         test cases. \r
497       </td>\r
498     </tr>\r
499   </tbody>\r
500 </table>\r
501 <p><b>Building ICU4J creates and populates the following directories:</b></p>\r
502 <table bgcolor="#ccccff" cellpadding="3" frame="void" width="623">\r
503   <tbody>\r
504     <tr>\r
505       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/classes</th>\r
506       <td bgcolor="#ffffff" valign="baseline">contains all class files</td>\r
507     </tr>\r
508     <tr>\r
509       <th align="right" bgcolor="#ffffff" valign="baseline">$icu4j_root/doc</th>\r
510       <td bgcolor="#ffffff" valign="baseline">contains JavaDoc for all\r
511 packages</td>\r
512     </tr>\r
513   </tbody>\r
514 </table>\r
515 <br>\r
516 <p><b>ICU4J data is stored in the following locations:</b></p>\r
517 <table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"\r
518  width="623">\r
519   <tbody>\r
520     <tr>\r
521       <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.impl.data</code></th>\r
522       <td bgcolor="#ffffff" valign="baseline">Holds data used by the\r
523 ICU4J core and charset packages (<code>com.ibm.icu.lang</code>, <code>com.ibm.icu.text</code>,\r
524       <code>com.ibm.icu.util</code>, <code>com.ibm.icu.math</code>,\r
525       <code>com.ibm.icu.text</code> and <code>com.ibm.icu.charset</code>). In particular, all resource\r
526 information is stored here.</td>\r
527     </tr>\r
528     <tr>\r
529       <th align="right" bgcolor="#ffffff" valign="baseline"><code>com.ibm.icu.dev.data</code></th>\r
530       <td bgcolor="#ffffff" valign="baseline">Holds data that is not\r
531 part of ICU4J core, but rather part of a test, sample, or demo.</td>\r
532     </tr>\r
533   </tbody>\r
534 </table>\r
535 <br>\r
536 <h3 class="doc"><a name="API"></a>Where to get Documentation</h3>\r
537 <p>The <a href="http://www.icu-project.org/userguide/">ICU user's\r
538 guide</a> contains lots of general information about ICU, in its C,\r
539 C++, and Java incarnations.</p>\r
540 <p>The complete API documentation for ICU4J (javadoc) is available on\r
541 the ICU4J web site, and can be built from the sources:\r
542 </p>\r
543 <ul>\r
544   <li><a href="http://www.icu-project.org/apiref/icu4j/">Index\r
545 to all ICU4J API</a></li>\r
546   <li><a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/CharsetDetector.html">Charset Detector</a> &#8211; Detection of charset from a byte stream</li>\r
547   <li>International Calendars &#8211; \r
548     <a\r
549  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/BuddhistCalendar.html">Buddhist</a>,\r
550     <a\r
551  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/ChineseCalendar.html">Chinese</a>,\r
552     <a\r
553  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/CopticCalendar.html">Coptic</a>,\r
554     <a\r
555  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/EthiopicCalendar.html">Ethiopic</a>,\r
556     <a\r
557  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/GregorianCalendar.html">Gregorian</a>,\r
558     <a\r
559  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/HebrewCalendar.html">Hebrew</a>,\r
560     <a\r
561  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/IndianCalendar.html">Indian</a>,\r
562     <a\r
563  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/IslamicCalendar.html">Islamic</a>,\r
564     <a\r
565  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/JapaneseCalendar.html">Japanese</a>.</li>\r
566   <li><a\r
567  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Normalizer.html">Unicode\r
568 Normalization</a> &#8211; Canonical text representation for W3C.</li>\r
569   <li><a\r
570  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/NumberFormat.html">Number\r
571 Format Enhancements</a> &#8211; Scientific Notation, Spelled out.</li>\r
572   <li><a\r
573  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/BreakIterator.html">Enhanced\r
574 word-break detection</a> &#8211; Rule-based, supports Thai</li>\r
575   <li><a\r
576  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/Transliterator.html">Transliteration</a>\r
577 &#8211; A general framework for converting text from one format to another,\r
578 e.g. Cyrillic to Latin, or Hex to Unicode. </li>\r
579   <li>Unicode Text <a\r
580  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeCompressor.html">Compression</a>\r
581 &amp; <a\r
582  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/UnicodeDecompressor.html">Decompression</a>\r
583 &#8211; 2:1 compression on English Unicode text.</li>\r
584   <li>Collation - <a\r
585  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/RuleBasedCollator.html">Rule-based\r
586 sorting</a>, <a\r
587  href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/StringSearch.html">Efficient\r
588 multi-lingual searching</a> </li>\r
589 </ul>\r
590 <h3 class="doc"><a name="HowToInstallJavac"></a>How to Install and Build</h3>\r
591 <p>To install ICU4J, simply place the prebuilt jar file <strong>icu4j.jar</strong>\r
592 on your Java CLASSPATH. If you need Charset API support please place\r
593 <strong>icu4j-charsets.jar</strong> on your class path. No other files are needed.</p>\r
594 <p>To build ICU4J, you will need a J2SE SDK and the Ant build system.\r
595 We strongly recommend using the Ant build system to build ICU4J.\r
596 It's recommended to install both the J2SE SDK and Ant somewhere <em>outside</em>\r
597 the ICU4J directory. For example, on Linux you might install these in\r
598 /usr/local.</p>\r
599 <ul>\r
600   <li>Install J2SE SDK 6.0.  (You can use any version of J2SE SDK 1.3 or newer,\r
601   but but J2SE SDK 5.0 is the minimum version required to enable the all\r
602   available ICU4J features.)</li>\r
603   <li>Install the <a href="http://ant.apache.org/"><strong>Ant</strong></a>\r
604   build system. Ant is a portable, Java-based build system similar to\r
605   make. ICU4J uses Ant because it introduces no other dependencies, it's\r
606   portable, and it's easier to manage than a collection of makefiles. We\r
607   currently build ICU4J using a single makefile on all platforms Ant.\r
608   The build system requires Ant 1.6 or later.\r
609     <p>Installing Ant is straightforward. Download it (see <a\r
610  href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>),\r
611 extract it onto your system, set some environment variables, and add\r
612 its bin directory to your path. For example: </p>\r
613     <pre>\r
614         set JAVA_HOME=C:\jdk1.6.0\r
615         set ANT_HOME=C:\ant\r
616         set PATH=%PATH%;%ANT_HOME%\bin</pre>\r
617     <p>See the current Ant documentation for details.</p>\r
618   </li>\r
619 </ul>\r
620 <p>Once the J2SE SDK and Ant are installed, building is just a matter of\r
621 typing <strong>ant</strong> in the ICU4J root directory. This causes\r
622 the Ant build system to perform a build as specified by the file\r
623 <strong>build.xml</strong>, located in the ICU4J root directory. You\r
624 can give Ant options like -verbose, and you can specify targets. Ant\r
625 will only build what's been changed and will resolve dependencies\r
626 properly. For example:</p>\r
627 <blockquote>\r
628 <pre>C:\icu4j&gt;ant\r
629 Buildfile: build.xml\r
630 \r
631 checkAntVersion:\r
632 \r
633 warnAntVersion:\r
634 \r
635 initBase:\r
636     [mkdir] Created dir: C:\icu4j\classes\r
637      [echo] java home: C:\jdk1.6.0\r
638      [echo] java version: 1.6.0\r
639      [echo] ant java version: 1.6\r
640      [echo] Apache Ant version 1.7.0 compiled on December 13 2006\r
641      [echo] ICU4JDEV with Windows XP 5.1 build 2600 Service Pack 3 on x86\r
642      [echo] clover initstring = '${clover.initstring}'\r
643      [echo] target runtime environment: JAVASE6\r
644      [echo] Initialized at 2009-04-25 at 05:25:03 EDT\r
645 \r
646 buildMangle:\r
647     [javac] Compiling 1 source file to C:\icu4j\classes\r
648 \r
649 initSrc:\r
650 \r
651 displayBuildEnvWarning:\r
652 \r
653 doMangle:\r
654      [echo] Running source code preprocessor [java com.ibm.icu.dev.tool.docs.Cod\r
655 eMangler -dJAVASE6 -n @preprocessor.txt]\r
656 \r
657 init:\r
658 \r
659 coreData:\r
660      [copy] Copying 1 file to C:\icu4j\classes\com\ibm\icu\r
661 \r
662 icudata:\r
663     [unjar] Expanding: C:\icu4j\src\com\ibm\icu\impl\data\icudata.jar into c:\ic\r
664 u4j\classes\r
665      [copy] Copying 1 file to C:\icu4j\classes\META-INF\r
666 \r
667 durationdata:\r
668      [copy] Copying 16 files to C:\icu4j\classes\com\ibm\icu\impl\duration\i\r
669 mpl\data\r
670 \r
671 core:\r
672     [javac] Compiling 351 source files to C:\icu4j\classes\r
673     [javac] Note: Some input files use or override a deprecated API.\r
674     [javac] Note: Recompile with -Xlint:deprecation for details.\r
675 \r
676 BUILD SUCCESSFUL\r
677 Total time: 44 seconds</pre>\r
678 </blockquote>\r
679 <I>Note: The above output is an example. The numbers are likely to be different with the current version ICU4J.</I>\r
680 <p>The following are some targets that you can provide to <b>ant</b>.\r
681 For more targets run <code>ant -projecthelp</code> or see the build.xml file.</p>\r
682 <table bgcolor="#ccccff" border="0" cellpadding="3" frame="void"\r
683  width="623">\r
684   <tbody>\r
685     <tr>\r
686       <th align="right" bgcolor="#ffffff" valign="baseline">all</th>\r
687       <td bgcolor="#ffffff" valign="baseline">Build all targets.</td>\r
688     </tr>\r
689     <tr>\r
690       <th align="right" bgcolor="#ffffff" valign="baseline">core</th>\r
691       <td bgcolor="#ffffff" valign="baseline">Build the main class\r
692 files in the subdirectory <strong>classes</strong>. If no target is\r
693 specified, core is assumed.</td>\r
694     </tr>\r
695     <tr>\r
696       <th align="right" bgcolor="#ffffff" valign="baseline">tests</th>\r
697       <td bgcolor="#ffffff" valign="baseline">Build the test class\r
698 files.</td>\r
699     </tr>\r
700     <tr>\r
701       <th align="right" bgcolor="#ffffff" valign="baseline">demos</th>\r
702       <td bgcolor="#ffffff" valign="baseline">Build the demos.</td>\r
703     </tr>\r
704     <tr>\r
705       <th align="right" bgcolor="#ffffff" valign="baseline">tools</th>\r
706       <td bgcolor="#ffffff" valign="baseline">Build the tools.</td>\r
707     </tr>\r
708     <tr>\r
709       <th align="right" bgcolor="#ffffff" valign="baseline">docs</th>\r
710       <td bgcolor="#ffffff" valign="baseline">Run javadoc over the main\r
711 class files, generating an HTML documentation tree in the subdirectory <strong>doc</strong>.</td>\r
712     </tr>\r
713     <tr>\r
714       <th align="right" bgcolor="#ffffff" valign="baseline">jar</th>\r
715       <td bgcolor="#ffffff" valign="baseline">Create a jar archive <strong>icu4j.jar</strong>\r
716 in the root ICU4J directory containing the main class files.</td>\r
717     </tr>\r
718     <tr>\r
719       <th align="right" bgcolor="#ffffff" valign="baseline">jarSrc</th>\r
720       <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong>\r
721 target, but containing only the source files. </td>\r
722     </tr>\r
723     <tr>\r
724       <th align="right" bgcolor="#ffffff" valign="baseline">jarDocs</th>\r
725       <td bgcolor="#ffffff" valign="baseline">Like the <strong>jar</strong>\r
726 target, but containing only the docs. </td>\r
727     </tr>\r
728     <tr>\r
729       <th align="right" bgcolor="#ffffff" valign="baseline">richedit</th>\r
730       <td bgcolor="#ffffff" valign="baseline">Build the richedit core\r
731 class files and tests. </td>\r
732     </tr>\r
733     <tr>\r
734       <th align="right" bgcolor="#ffffff" valign="baseline">richeditJar</th>\r
735       <td bgcolor="#ffffff" valign="baseline">Create the richedit jar\r
736 file (which contains only the richedit core class files). The file <strong>richedit.jar</strong>\r
737 will be created in the <strong>./richedit</strong> subdirectory. Any\r
738 existing file of that name will be overwritten.</td>\r
739     </tr>\r
740     <tr>\r
741       <th align="right" bgcolor="#ffffff" valign="baseline">richeditZip</th>\r
742       <td bgcolor="#ffffff" valign="baseline">Create a zip archive of\r
743 the richedit docs and jar file for distribution. The zip file <strong>richedit.zip</strong>\r
744 will be created in the <strong>./richedit</strong> subdirectory. Any\r
745 existing file of that name will be overwritten.</td>\r
746     </tr>\r
747     <tr>\r
748       <th align="right" bgcolor="#ffffff" valign="baseline">clean</th>\r
749       <td bgcolor="#ffffff" valign="baseline">Remove all built targets,\r
750 leaving the source.</td>\r
751     </tr>\r
752   </tbody>\r
753 </table>\r
754 <p>For more information, read the Ant documentation and the <strong>build.xml</strong>\r
755 file.</p>\r
756 <p>After doing a build it is a good idea to run all the icu4j tests by\r
757 typing<br>\r
758 <tt>"ant check"</tt> or\r
759 "java -classpath classes com.ibm.icu.dev.test.TestAll -nothrow".</p>\r
760 \r
761 <p><b>Eclipse users:</b> See the ICU4J site for information on<a\r
762  href="http://www.icu-project.org/docs/eclipse_howto/eclipse_howto.html">\r
763 how to configure Eclipse</a> to build and develop ICU4J on Eclipse IDE.</p>\r
764 \r
765 <p><b>Note: </b>To install/build ICU4J Locale Service Provider, please refer\r
766 <a href="localespi/readme.html">Read Me for ICU4J Locale Service Provider</a>.</p>\r
767 \r
768 <h3 class="doc"><a name="HowToModularize"></a>How to modularize ICU4J</h3>\r
769 <p>Some clients may not wish to ship all of ICU4J with their\r
770 application, since the application might only use a small part of ICU4J.\r
771 ICU4J release 2.6 and later provide build options to build individual\r
772 ICU4J 'modules' for a more compact distribution.  For more details, please\r
773 refer to the section <em>Modularization of ICU4J</em> in the ICU user's\r
774 guide article <a href="http://www.icu-project.org/userguide/packaging.html">Packaging ICU</a>.\r
775 \r
776 <h3 class="doc"><a name="tryingout"></a>Trying Out ICU4J</h3>\r
777 <p><strong>Note:</strong> the demos provided with ICU4J are for the\r
778 most part undocumented. This list can show you where to look, but\r
779 you'll\r
780 have to experiment a bit. The demos (with the\r
781 exception of richedit) are <strong>unsupported</strong> and may change\r
782 or disappear without notice.</p>\r
783 <p>The icu4j.jar file contains only the core ICU4J classes, not the\r
784 demo classes, so unless you build ICU4J there is little to try out.\r
785 </p>\r
786 <h4>Charset</h4>\r
787 To try out the <strong>Charset</strong> package, build <strong>icu4j.jar</strong> and <strong>icu4j-charsets.jar</strong> using 'jar' target.\r
788 You can use the charsets by placing these files on your classpath.\r
789 <blockquote><tt>java -cp $icu4j_root/icu4j.jar:$icu4j_root/icu4j-charsets.jar &lt;your program&gt;</tt></blockquote>\r
790 <h4>Rich Edit</h4>\r
791 To try out the <strong>richedit</strong> package, first build the\r
792 richeditJar target.\r
793 This is a 'runnable' jar file. To run the richedit demo, type:\r
794 <blockquote><tt>java -jar $icu4j_root/richedit/richedit.jar</tt></blockquote>\r
795 This will present an empty edit pane with an awt interface.\r
796 <p>With a fuller command line you can try out other options, for\r
797 example:</p>\r
798 <blockquote><tt>java -classpath $icu4j_root/richedit/richedit.jar\r
799 com.ibm.richtext.demo.EditDemo [-swing][file]</tt></blockquote>\r
800 <p>This will use an awt GUI, or a swing GUI if\r
801 <tt>-swing</tt> is passed on the command line. It will open a text\r
802 file if one is provided, otherwise it will open a blank page. Click\r
803 to type.</p>\r
804 <p>\r
805 You can add tabs to the tab ruler by clicking in the ruler while\r
806 holding down the control key.\r
807 Clicking on an existing tab changes between left, right, center, and\r
808 decimal tabs. Dragging\r
809 a tab moves it, dragging it off the ruler removes it.</p>\r
810 <p>\r
811 You can experiment with complex text by using the keymap functions.\r
812 Please note that these are mainly for demo purposes, for real work\r
813 with Arabic or Hebrew you will want to use an input method. You will\r
814 need to use a font that supports Arabic or Hebrew, 'Lucida Sans'\r
815 (provided\r
816 with Java) supports these languages.</p>\r
817 <h4>Other demos</h4>\r
818 <p>The other demo programs are <strong>not supported</strong> and\r
819 exist only to let you\r
820 experiment with the ICU4J classes. First, build ICU4J using <tt>ant&nbsp;all</tt>.\r
821 Then try\r
822 one of the following:\r
823 </p>\r
824 <ul>\r
825   <li><tt>java -classpath classes com.ibm.icu.dev.demo.calendar.CalendarApp</tt></li>\r
826   <li><tt>java -classpath classes com.ibm.icu.dev.demo.holiday.HolidayCalendarDemo</tt></li>\r
827   <li><tt>java -classpath classes com.ibm.icu.dev.demo.rbnf.RbnfDemo</tt></li>\r
828   <li><tt>java -classpath classes com.ibm.icu.dev.demo.translit.Demo</tt></li>\r
829 </ul>\r
830 \r
831 <h3 class="doc"><a name="resources">ICU4J Resource Information</a></h3>\r
832 Starting with release 2.1, ICU4J includes its own\r
833 resource information\r
834 which is completely independent of the JRE resource information. (Note,\r
835 ICU4J 2.8 to 3.4, time zone information depends on the underlying JRE).\r
836 The ICU4J resource information is equivalent to the information in ICU4C and\r
837 many resources are, in fact, the same binary files that ICU4C uses.\r
838 <p>\r
839 By default the ICU4J distribution includes all of the standard resource\r
840 information. It is located under the directory com/ibm/icu/impl/data.\r
841 Depending on the service, the data is in different locations and in\r
842 different formats. <strong>Note:</strong> This will continue to change\r
843 from release to release, so clients should not depend on the exact\r
844 organization\r
845 of the data in ICU4J.</p>\r
846 <ul>\r
847   <li>The primary <b>locale data</b> is under the directory <tt>icudt42b</tt>,\r
848 as a set of <tt>".res"</tt> files whose names are the locale identifiers. \r
849 Locale naming is documented the <code>com.ibm.icu.util.ULocale</code>\r
850 class, and the use of these names in searching for resources is documented \r
851 in <code>com.ibm.icu.util.UResourceBundle</code>.\r
852   </li>\r
853   <li>The <b>collation data</b> is under the directory <tt>icudt42b/coll</tt>,\r
854 as a set of <tt>".res"</tt> files.</li>\r
855   <li>The <b>rule-based transliterator data</b> is under the directory\r
856 <tt>icudt42b/translit</tt> as a set of <tt>".res"</tt> files.  (<b>Note:</b> the\r
857 Han transliterator test data is no longer included in the core icu4j.jar \r
858 file by default.)</li>\r
859   <li>The <b>rule-based number format data</b> is under the directory\r
860 <tt>icudt42b/rbnf</tt> as a set of <tt>".res"</tt> files.\r
861   <li>The <b>break iterator data</b> is directly under the data\r
862 directory, as a set of <tt>".brk"</tt> files, named according to the\r
863 type of break and the locale where there are locale-specific versions.</li>\r
864   <li>The <b>holiday data</b> is under the <tt>data</tt> directory,\r
865 as a set of <tt>".class"</tt> files, named <tt>"HolidayBundle_"</tt>\r
866 followed by the locale ID.</li>\r
867   <li>The <b>character property data</b> as well as assorted <b>normalization\r
868 data</b> and default <b>unicode collation algorithm (UCA) data</b>\r
869 is found under the <tt>data</tt> directory as a set of <tt>".icu"</tt>\r
870 files. </li>\r
871   <li>The <b>character set converter data</b> is under the directory\r
872   <tt>icudt42b</tt>, as a set of <tt>".cnv"</tt> files.  These files are\r
873   currently included only in icu-charset.jar.</li>\r
874   <li>The <b>time zone data</b> is named <tt>zoneinfo.res</tt> under\r
875   the directory <tt>icudt42b</tt>.</li>\r
876 </ul>\r
877 <p>\r
878 Some of the data files alias or otherwise reference data from other\r
879 data files. One reason for this is because some locale names have\r
880 changed. For example, <tt>he_IL</tt> used to be <tt>iw_IL</tt>. In\r
881 order to support both names but not duplicate the data, one of the\r
882 resource files refers to the other file's data. In other cases, a\r
883 file may alias a portion of another file's data in order to save\r
884 space. Currently ICU4J provides no tool for revealing these\r
885 dependencies.</p>\r
886 <blockquote><strong>Note:</strong>  Java's <code>Locale</code> class\r
887 silently converts the language code <tt>"he"</tt> to <tt>"iw"</tt>\r
888 when you construct the Locale (for versions of Java through Java 5). Thus\r
889 Java cannot be used to locate resources that use the <tt>"he"</tt>\r
890 language code. ICU, on the other hand, does not perform this\r
891 conversion in ULocale, and instead uses aliasing in the locale data to\r
892 represent the same set of data under different locale\r
893 ids.</blockquote>\r
894 <p>\r
895 Resource files that use locale ids form a hierarchy, with up to four\r
896 levels: a root, language, region (country), and variant. Searches for\r
897 locale data attempt to match as far down the hierarchy as possible,\r
898 for example, <tt>"he_IL"</tt> will match <tt>he_IL</tt>, but\r
899 <tt>"he_US"</tt> will match <tt>he</tt> (since there is no <tt>US</tt>\r
900 variant for he, and <tt>"xx_YY</tt> will match root (the\r
901 default fallback locale) since there is no <tt>xx</tt> language code\r
902 in the locale hierarchy. Again, see\r
903 <code>java.util.ResourceBundle</code> for more information.\r
904 </p>\r
905 <p>\r
906 <strong>Currently ICU4J provides no tool for revealing these\r
907 dependencies</strong> between data files, so trimming the data\r
908 directly in the ICU4J project is a hit-or-miss affair. The key point\r
909 when you remove data is to make sure to remove all dependencies on\r
910 that data as well. For example, if you remove <tt>he.res</tt>, you\r
911 need to remove <tt>he_IL.res</tt>, since it is lower in the hierarchy,\r
912 and you must remove iw.res, since it references <tt>he.res</tt>, and\r
913 <tt>iw_IL.res</tt>, since it depends on it (and also references\r
914 <tt>he_IL.res</tt>).\r
915 </p>\r
916 <p>\r
917 Unfortunately, the jar tool in the JDK provides no way to remove items\r
918 from a jar file. Thus you have to extract the resources, remove the\r
919 ones you don't want, and then create a new jar file with the remining\r
920 resources. See the jar tool information for how to do this. Before\r
921 'rejaring' the files, be sure to thoroughly test your application with\r
922 the remaining resources, making sure each required resource is\r
923 present.\r
924 </p>\r
925 <h4>Using additional resource files with ICU4J</h4>\r
926 <blockquote>\r
927   <table cellpadding="3" frame="border" rules="none" width="50%">\r
928     <tbody>\r
929       <tr>\r
930         <td><b><font color="red" size="+1">Warning:</font> Resource\r
931 file formats can change across releases of ICU4J!</b></td>\r
932       </tr>\r
933       <tr>\r
934         <td>The format of ICU4J resources is not part of the API.\r
935 Clients who develop their own resources for use with ICU4J should be\r
936 prepared to\r
937 regenerate them when they move to new releases of ICU4J.</td>\r
938       </tr>\r
939     </tbody>\r
940   </table>\r
941 </blockquote>\r
942 <p>\r
943 We are still developing ICU4J's resource mechanism. Currently it \r
944 is not possible to mix icu's new binary <tt>.res</tt>\r
945 resources\r
946 with traditional java-style <tt>.class</tt> or <tt>.txt</tt>\r
947 resources. We might\r
948 allow for this in a future release, but since the resource data and\r
949 format is not formally\r
950 supported, you run the risk of incompatibilities with future releases\r
951 of ICU4J.\r
952 </p>\r
953 <p>\r
954 Resource data in ICU4J is checked in to the repository as a jar file\r
955 containing the resource binaries, <tt>icudata.jar</tt>. This\r
956 means that inspecting the contents of these resources is difficult.\r
957 They currently are compiled from ICU4C <tt>.txt</tt> file data. You\r
958 can view the contents of the ICU4C text resource files to understand\r
959 the contents of the ICU4J resources.\r
960 </p>\r
961 <p>\r
962 The files in <tt>icudata.jar</tt> get extracted to <tt>com/ibm/icu/impl/data</tt>\r
963 in\r
964 the build directory when the 'core' target is built.\r
965 Building the <tt>'resources'</tt> target will force the\r
966 resources to once again be extracted. Extraction will\r
967 overwrite any corresponding resource files already in that directory.\r
968 </p>\r
969 <h4><a name="resourcesICU4C">Building ICU4J Resources from ICU4C</a></h4>\r
970 ICU4J data is built by ICU4C tools. Please see "icu4j-readme.txt" in <I>$icu4c_root</I>/source/data for the procedures.\r
971 <h5> Generating Data from CLDR </h5>\r
972 <I> Note: This procedure assumes that all 3 sources are in sibling directories</I>\r
973 <ol>\r
974     <li>Checkout CLDR.  $cldr_root in the following steps is the root directory where\r
975     the CLDR source files checked out.</li>\r
976     <li>Update <I>$cldr_root</I>/common to 'release-1-7-0' tag</li>\r
977     <li>Update <I>$cldr_root</I>/tools to 'release-1-7-0' tag</li>\r
978     <li>Checkout ICU4C with tag 'release-4-2'</li>\r
979     <li>Checkout ICU4J with tag 'release-4-2'</li>\r
980     <li>Build ICU4J</li>\r
981     <li>Build ICU4C</li>\r
982     <li>Change to <I>$cldr_root</I>/tools/java directory</li>\r
983     <li>Build CLDR using ant after pointing ICU4J_CLASSES env var to the newly build ICU4J</li>\r
984     <li>cd to <I>$icu4c_root</I>/source/data directory</li>\r
985     <li>Follow the instructions in the cldr-icu-readme.txt</li>\r
986     <li>Build ICU4C data from CLDR</li>\r
987     <li>Build ICU4J data from ICU4C data by following the procedures in <I>$icu4c_root</I>/source/data/icu4j-readme.txt</li>\r
988     <li>cd to <I>$icu4j_root</I> dir</li>\r
989     <li>Build and test icu4j</li>\r
990 </ol>\r
991 \r
992 <h3 class="doc"><a name="timezone"></a>About ICU4J Time Zone</h3>\r
993 <p>ICU4J 4.2 includes time zone data version 2009g, which is the latest one as of\r
994 the release date.  However, time zone data is frequently updated in response\r
995 to changes made by local governments around the world.  If you need to update\r
996 the time zone data, please refer the ICU user guide topic\r
997 <a href="http://www.icu-project.org/userguide/dateTimezone.html#tzupdate">Updating the Time Zone Data</a>.</p>\r
998 <p>Starting with ICU4J 4.0, you can optionally configure ICU4J date and time\r
999 service classes to use underlying JDK TimeZone implementation (see the ICU4J API reference\r
1000 <a href="http://www.icu-project.org/apiref/icu4j/com/ibm/icu/util/TimeZone.html">TimeZone</a>\r
1001 for the details).  When this configuration is enabled, ICU's own time zone data\r
1002 won't be used and you have to get time zone data patches from the JRE vendor.</p>\r
1003 \r
1004 <h3 class="doc"><a name="WhereToFindMore"></a>Where to Find More\r
1005 Information</h3>\r
1006 <p><a href="http://www.icu-project.org/">http://www.icu-project.org/</a>\r
1007 is the home page of International Components for Unicode development project</p>\r
1008 <p><a href="http://www.ibm.com/software/globalization/icu/">http://www.ibm.com/software/globalization/icu/</a>\r
1009 is a pointer to general information about the International Components for\r
1010 Unicode hosted by IBM</p>\r
1011 <p><a href="http://www.ibm.com/software/globalization/">http://www.ibm.com/software/globalization/</a>\r
1012 is a pointer to\r
1013 information on how to make applications global. </p>\r
1014 <h3 class="doc"><a name="SubmittingComments"></a>Submitting Comments,\r
1015 Requesting Features and\r
1016 Reporting Bugs</h3>\r
1017 <p>Your comments are important to making ICU4J successful. We are\r
1018 committed to investigate any bug reports or suggestions,\r
1019 and will use your feedback to help plan future releases.</p>\r
1020 <p>To submit comments, request features and report bugs,\r
1021 please see <a href="http://www.icu-project.org/bugs.html">ICU bug database\r
1022 information</a> or contact us through the <a\r
1023  href="http://www.icu-project.org/contacts.html">ICU Support\r
1024 mailing list</a>.  While we are not able to respond individually to each comment, we do\r
1025 review all comments.</p>\r
1026 <br>\r
1027 <br>\r
1028 <h2>Thank you for your interest in ICU4J!</h2>\r
1029 <br>\r
1030 <hr align="center" size="2" width="100%">\r
1031 <p><I><font size="-1">Copyright &copy; 2002-2009 International Business\r
1032 Machines Corporation and others. All Rights\r
1033 Reserved.<br>\r
1034 4400 North First Street, San Jos&eacute;, CA 95193, USA\r
1035 </font></I></p>\r
1036 </body>\r
1037 </html>\r