<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ICU4J API Comparison: ICU4J 4.2.1 with ICU4J 4.3.2</title>
<!-- Copyright 2009, IBM, All Rights Reserved. -->
</head>
<body>
<h1>ICU4J API Comparison: ICU4J 4.2.1 with ICU4J 4.3.2</h1>

<hr/>
<h2>Removed from ICU4J 4.2.1</h2>

<h3>Package com.ibm.icu.math</h3>
<ul>
BigDecimal
<ul>
<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li><span style='color:red'>*internal*  </span>public class <i>BreakDictionary</i></li>
CollationKey
<ul>
<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
DateIntervalInfo
<ul>
<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
</ul>
DateTimePatternGenerator
<ul>
<li>(stable)     public java.lang.Object <i>cloneAsThawed</i>()</li>
<li>(stable)     public java.lang.Object <i>freeze</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
Calendar
<ul>
<li>(stable)     public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
ChineseCalendar
<ul>
<li>(stable)     public static int IS_LEAP_MONTH</li>
<li>(stable)     protected int[] <i>handleCreateFields</i>()</li>
</ul>
GlobalizationPreferences
<ul>
<li>(draft)      public java.lang.Object <i>cloneAsThawed</i>()</li>
<li>(draft)      public java.lang.Object <i>freeze</i>()</li>
</ul>
ULocale
<ul>
<li>(draft)      public static VersionInfo <i>getCLDRVersion</i>()</li>
</ul>
UResourceBundle
<ul>
<li><span style='color:red'>*internal*  </span>protected static final int ALIAS</li>
<li><span style='color:red'>*internal*  </span>protected static final int TABLE32</li>
<li><span style='color:red'>*internal*  </span>protected boolean isTopLevel</li>
<li><span style='color:red'>*internal*  </span>protected java.lang.String key</li>
<li><span style='color:red'>*internal*  </span>protected long resource</li>
<li><span style='color:red'>*internal*  </span>protected int size</li>
</ul>
VersionInfo
<ul>
<li>(draft)      public int <i>compareTo</i>(java.lang.Object)</li>
</ul>
</ul>


<hr/>
<h2>Withdrawn, Deprecated, or Obsoleted in ICU4J 4.3.2</h2>
<p>(no API obsoleted)</p>

<hr/>
<h2>Changed in ICU4J 4.3.2 (old, new)</h2>

<h3>Package com.ibm.icu.charset</h3>
<ul>
CharsetProviderICU
<ul>
<li>    <span style='color:red'>*internal*  </span>public static final java.lang.Object[] <i>getAvailableNames</i>()</br>
<span style='color:red'>*internal*  </span>public static final java.lang.String[] <i>getAvailableNames</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
CharsetMatch
<ul>
<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
(draft)      public int <i>compareTo</i>(com.ibm.icu.text.CharsetMatch)</li>
<li>    (stable)     public class <i>MessageFormat</i> extends com.ibm.icu.text.UFormat</br>
(stable)     public class <i>MessageFormat</i> extends com.ibm.icu.text.UFormat implements com.ibm.icu.text.BaseFormat</li>
</ul>
RawCollationKey
<ul>
<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
(stable)     public int <i>compareTo</i>(com.ibm.icu.text.RawCollationKey)</li>
<li>    (stable)     public interface <i>StringTransform</i> </br>
(stable)     public interface <i>StringTransform</i> implements com.ibm.icu.text.Transform</li>
<li>    (draft)      public abstract class <i>UFormat</i> extends java.text.Format</br>
(draft)      public abstract class <i>UFormat</i> extends java.text.Format implements com.ibm.icu.text.BaseFormat</li>
</ul>
UTF16.StringComparator
<ul>
<li>    (stable)     public int <i>compare</i>(java.lang.Object, java.lang.Object)</br>
(stable)     public int <i>compare</i>(java.lang.String, java.lang.String)</li>
<li>    (stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter implements com.ibm.icu.util.Freezable</br>
(stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter implements java.lang.Iterable, java.lang.Comparable, com.ibm.icu.util.Freezable</li>
</ul>
UnicodeSet
<ul>
<li>    (stable)     public void <i>addAll</i>(java.util.Collection)</br>
(draft)      public com.ibm.icu.text.UnicodeSet <i>addAll</i>(int, int)</li>
<li>    (stable)     public void <i>addAllTo</i>(java.util.Collection)</br>
(draft)      public static java.lang.Object[] <i>addAllTo</i>(java.lang.Iterable, T[])</li>
<li>    (stable)     public java.lang.Object <i>cloneAsThawed</i>()</br>
(stable)     public com.ibm.icu.text.UnicodeSet <i>cloneAsThawed</i>()</li>
<li>    (stable)     public java.lang.Object <i>freeze</i>()</br>
(stable)     public com.ibm.icu.text.UnicodeSet <i>freeze</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
ByteArrayWrapper
<ul>
<li>    (stable)     public int <i>compareTo</i>(java.lang.Object)</br>
(stable)     public int <i>compareTo</i>(com.ibm.icu.util.ByteArrayWrapper)</li>
</ul>
UResourceBundle
<ul>
<li>    <span style='color:red'>*internal*  </span>protected static void <i>addToCache</i>(java.lang.ClassLoader, java.lang.String, com.ibm.icu.util.ULocale, com.ibm.icu.util.UResourceBundle)</br>
<span style='color:red'>*internal*  </span>protected static com.ibm.icu.util.UResourceBundle <i>addToCache</i>(java.lang.ClassLoader, java.lang.String, com.ibm.icu.util.ULocale, com.ibm.icu.util.UResourceBundle)</li>
</ul>
VersionInfo
<ul>
<li>    <span style='color:red'>*internal*  </span>public static final java.lang.String ICU_DATA_VERSION</br>
(draft)      public static final com.ibm.icu.util.VersionInfo ICU_DATA_VERSION</li>
</ul>
</ul>


<hr/>
<h2>Promoted to stable in ICU4J 4.3.2</h2>
<p>(no API promoted)</p>

<hr/>
<h2>Added in ICU4J 4.3.2</h2>

<h3>Package com.ibm.icu.charset</h3>
<ul>
CharsetDecoderICU
<ul>
<li>(draft)      protected static final int EXT_MAX_BYTES</li>
</ul>
</ul>

<h3>Package com.ibm.icu.impl</h3>
<ul>
<li>(draft)      public class <i>Assert</i></li>
<li>(draft)      public class <i>BOCU</i></li>
<li><span style='color:red'>*internal*  </span>public class <i>CalendarAstronomer</i></li>
<li><span style='color:red'>*internal*  </span>public static final class <i>CalendarAstronomer.Ecliptic</i></li>
<li><span style='color:red'>*internal*  </span>public static final class <i>CalendarAstronomer.Equatorial</i></li>
<li><span style='color:red'>*internal*  </span>public static final class <i>CalendarAstronomer.Horizon</i></li>
<li><span style='color:red'>*internal*  </span>public class <i>CalendarCache</i></li>
<li><span style='color:red'>*internal*  </span>public class <i>CalendarData</i></li>
<li>(draft)      public class <i>CalendarUtil</i></li>
<li>(draft)      public class <i>CharTrie</i></li>
<li>(draft)      public class <i>CharTrie.FriendAgent</i></li>
<li>(draft)      public class <i>CharacterIteratorWrapper</i></li>
<li>(draft)      public final class <i>DateNumberFormat</i></li>
<li>(draft)      public final class <i>Differ</i></li>
<li>(draft)      public class <i>Grego</i></li>
<li>(draft)      public final class <i>ICUBinary</i></li>
<li>(draft)      public static interface <i>ICUBinary.Authenticate</i></li>
<li>(draft)      public interface <i>ICUCache</i></li>
<li>(draft)      public class <i>ICUConfig</i></li>
<li>(draft)      public final class <i>ICUData</i></li>
<li>(draft)      public final class <i>ICUDataVersion</i></li>
<li>(draft)      public final class <i>ICUDebug</i></li>
<li>(draft)      public class <i>ICULocaleService</i></li>
<li>(draft)      public static class <i>ICULocaleService.ICUResourceBundleFactory</i></li>
<li>(draft)      public static class <i>ICULocaleService.LocaleKey</i></li>
<li>(draft)      public static abstract class <i>ICULocaleService.LocaleKeyFactory</i></li>
<li>(draft)      public static class <i>ICULocaleService.SimpleLocaleKeyFactory</i></li>
<li>(draft)      public class <i>ICULogger</i></li>
<li>(draft)      public abstract class <i>ICUNotifier</i></li>
<li>(draft)      public class <i>ICURWLock</i></li>
<li>(draft)      public static final class <i>ICURWLock.Stats</i></li>
<li>(draft)      public class <i>ICUResourceBundle</i></li>
<li>(draft)      public final class <i>ICUResourceBundleReader</i></li>
<li>(draft)      public class <i>ICUService</i></li>
<li>(draft)      public static interface <i>ICUService.Factory</i></li>
<li>(draft)      public static class <i>ICUService.Key</i></li>
<li>(draft)      public static interface <i>ICUService.ServiceListener</i></li>
<li>(draft)      public static class <i>ICUService.SimpleFactory</i></li>
<li>(draft)      public class <i>IllegalIcuArgumentException</i></li>
<li><span style='color:red'>*internal*  </span>public class <i>ImplicitCEGenerator</i></li>
<li>(draft)      public class <i>IntTrie</i></li>
<li>(draft)      public class <i>IntTrieBuilder</i></li>
<li>(draft)      public class <i>InvalidFormatException</i></li>
<li>(draft)      public class <i>IterableComparator</i></li>
<li>(draft)      public class <i>JavaTimeZone</i></li>
<li>(draft)      public class <i>LocaleUtility</i></li>
<li>(draft)      public class <i>MultiComparator</i></li>
<li>(draft)      public final class <i>NormalizerImpl</i></li>
<li>(draft)      public class <i>OlsonTimeZone</i></li>
<li>(draft)      public class <i>PVecToTrieCompactHandler</i></li>
<li>(draft)      public class <i>PatternTokenizer</i></li>
<li>(draft)      public class <i>PluralRulesLoader</i></li>
<li>(draft)      public class <i>PropsVectors</i></li>
<li>(draft)      public static interface <i>PropsVectors.CompactHandler</i></li>
<li>(draft)      public final class <i>Punycode</i></li>
<li>(draft)      public class <i>RelativeDateFormat</i></li>
<li>(draft)      public class <i>RelativeDateFormat.URelativeString</i></li>
<li>(draft)      public class <i>ReplaceableUCharacterIterator</i></li>
<li>(draft)      public class <i>ResourceBundleWrapper</i></li>
<li>(draft)      public class <i>Row</i></li>
<li>(draft)      public static class <i>Row.R2</i></li>
<li>(draft)      public static class <i>Row.R3</i></li>
<li>(draft)      public static class <i>Row.R4</i></li>
<li>(draft)      public static class <i>Row.R5</i></li>
<li>(draft)      public class <i>RuleCharacterIterator</i></li>
<li>(draft)      public class <i>SimpleCache</i></li>
<li>(draft)      public class <i>SortedSetRelation</i></li>
<li>(draft)      public final class <i>StringPrepDataReader</i></li>
<li>(draft)      public final class <i>StringUCharacterIterator</i></li>
<li>(draft)      public class <i>TextTrieMap</i></li>
<li>(draft)      public static interface <i>TextTrieMap.ResultHandler</i></li>
<li>(draft)      public class <i>TimeZoneAdapter</i></li>
<li>(draft)      public abstract class <i>Trie</i></li>
<li>(draft)      public static interface <i>Trie.DataManipulate</i></li>
<li>(draft)      public class <i>TrieBuilder</i></li>
<li>(draft)      public static interface <i>TrieBuilder.DataManipulate</i></li>
<li>(draft)      public class <i>TrieIterator</i></li>
<li>(draft)      public final class <i>UBiDiProps</i></li>
<li>(draft)      public final class <i>UCaseProps</i></li>
<li>(draft)      public static interface <i>UCaseProps.ContextIterator</i></li>
<li>(draft)      public final class <i>UCharArrayIterator</i></li>
<li>(draft)      public class <i>UCharacterIteratorWrapper</i></li>
<li>(draft)      public final class <i>UCharacterName</i></li>
<li>(draft)      public interface <i>UCharacterNameChoice</i></li>
<li>(draft)      public final class <i>UCharacterProperty</i></li>
<li>(draft)      public final class <i>UCharacterUtility</i></li>
<li>(draft)      public final class <i>UPropertyAliases</i></li>
<li>(draft)      public abstract class <i>URLHandler</i></li>
<li>(draft)      public static interface <i>URLHandler.URLVisitor</i></li>
<li><span style='color:red'>*internal*  </span>public final class <i>USerializedSet</i></li>
<li>(draft)      public class <i>UnicodeRegex</i></li>
<li>(draft)      public final class <i>Utility</i></li>
<li>(draft)      public class <i>UtilityExtensions</i></li>
<li>(draft)      public final class <i>ZoneMeta</i></li>
<li>(draft)      public class <i>ZoneStringFormat</i></li>
<li>(draft)      public static class <i>ZoneStringFormat.ZoneStringInfo</i></li>
</ul>

<h3>Package com.ibm.icu.lang</h3>
<ul>
UProperty
<ul>
<li><span style='color:red'>*internal*  </span>public static final int UNDEFINED</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li>(draft)      public interface <i>BaseFormat</i></li>
<li>(draft)      public interface <i>Formatter</i></li>
<li>(draft)      public interface <i>Parser</i></li>
<li>(draft)      public interface <i>RbnfLenientScanner</i></li>
<li>(draft)      public interface <i>RbnfLenientScannerProvider</i></li>
<li>(draft)      public class <i>RbnfScannerProviderImpl</i></li>
<li>(draft)      public interface <i>Transform</i></li>
<li>(draft)      public static final class <i>UnicodeSet.ComparisonStyle</i></li>
Collator
<ul>
<li><span style='color:red'>*internal*  </span>public Collator <i>setStrength2</i>(int)</li>
</ul>
DateIntervalInfo
<ul>
<li>(stable)     public DateIntervalInfo <i>cloneAsThawed</i>()</li>
<li>(stable)     public DateIntervalInfo <i>freeze</i>()</li>
</ul>
DateTimePatternGenerator
<ul>
<li>(stable)     public DateTimePatternGenerator <i>cloneAsThawed</i>()</li>
<li>(stable)     public DateTimePatternGenerator <i>freeze</i>()</li>
<li><span style='color:red'>*internal*  </span>public static DateTimePatternGenerator <i>getFrozenInstance</i>(ULocale)</li>
<li><span style='color:red'>*internal*  </span>public boolean <i>skeletonsAreSimilar</i>(java.lang.String, java.lang.String)</li>
</ul>
IndexCharacters
<ul>
<li>(draft)      public <i>IndexCharacters</i>(ULocale, UnicodeSet, Collator)</li>
</ul>
RuleBasedNumberFormat
<ul>
<li>(draft)      public RbnfLenientScannerProvider <i>getLenientScannerProvider</i>()</li>
<li>(draft)      public void <i>setLenientScannerProvider</i>(RbnfLenientScannerProvider)</li>
</ul>
UnicodeSet
<ul>
<li>(draft)      public <i>UnicodeSet</i>(int[])</li>
<li>(stable)     public UnicodeSet <i>add</i>(java.util.Collection)</li>
<li>(draft)      public UnicodeSet <i>addAll</i>(java.lang.String[])</li>
<li>(draft)      public UnicodeSet <i>addAll</i>(java.util.Collection)</li>
<li>(draft)      public java.lang.String[] <i>addAllTo</i>(java.lang.String[])</li>
<li>(draft)      public java.util.Collection <i>addAllTo</i>(T)</li>
<li>(draft)      public static java.util.Collection <i>addAllTo</i>(java.lang.Iterable, U)</li>
<li><span style='color:red'>*internal*  </span>public UnicodeSet <i>addBridges</i>(UnicodeSet)</li>
<li>(draft)      public static int <i>compare</i>(int, java.lang.String)</li>
<li>(draft)      public static int <i>compare</i>(java.lang.Iterable, java.lang.Iterable)</li>
<li>(draft)      public static int <i>compare</i>(java.lang.String, int)</li>
<li>(draft)      public static int <i>compare</i>(java.util.Collection, java.util.Collection, UnicodeSet.ComparisonStyle)</li>
<li>(draft)      public int <i>compareTo</i>(UnicodeSet)</li>
<li>(draft)      public int <i>compareTo</i>(UnicodeSet, UnicodeSet.ComparisonStyle)</li>
<li>(draft)      public int <i>compareTo</i>(java.lang.Iterable)</li>
<li>(draft)      public boolean <i>containsAll</i>(java.util.Collection)</li>
<li>(draft)      public boolean <i>containsNone</i>(java.util.Collection)</li>
<li>(draft)      public final boolean <i>containsSome</i>(java.util.Collection)</li>
<li><span style='color:red'>*internal*  </span>public int <i>findIn</i>(java.lang.CharSequence, int, boolean)</li>
<li><span style='color:red'>*internal*  </span>public int <i>findLastIn</i>(java.lang.CharSequence, int, boolean)</li>
<li><span style='color:red'>*internal*  </span>public static int <i>getSingleCodePoint</i>(java.lang.String)</li>
<li>(draft)      public java.util.Iterator <i>iterator</i>()</li>
<li>(draft)      public UnicodeSet <i>removeAll</i>(java.util.Collection)</li>
<li>(draft)      public UnicodeSet <i>retainAll</i>(java.util.Collection)</li>
<li>(draft)      public java.lang.Iterable <i>strings</i>()</li>
<li>(draft)      public java.lang.String <i>stripFrom</i>(java.lang.CharSequence, boolean)</li>
<li>(draft)      public static java.lang.String[] <i>toArray</i>(UnicodeSet)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
<li>(draft)      public class <i>LocaleMatcher</i></li>
<li><span style='color:red'>*internal*  </span>public static class <i>LocaleMatcher.LanguageMatcherData</i></li>
<li>(draft)      public class <i>LocalePriorityList</i></li>
<li><span style='color:red'>*internal*  </span>public static class <i>LocalePriorityList.LanguagePriorityListBuilder</i></li>
Calendar
<ul>
<li>(draft)      public static final int IS_LEAP_MONTH</li>
</ul>
GlobalizationPreferences
<ul>
<li>(draft)      public GlobalizationPreferences <i>cloneAsThawed</i>()</li>
<li>(draft)      public GlobalizationPreferences <i>freeze</i>()</li>
</ul>
HebrewCalendar
<ul>
<li>(draft)      public static final boolean <i>isLeapYear</i>(int)</li>
<li>(draft)      public static int <i>monthsInYear</i>(int)</li>
</ul>
LocaleData
<ul>
<li>(draft)      public static VersionInfo <i>getCLDRVersion</i>()</li>
</ul>
TimeZone
<ul>
<li>(draft)      public static final int GENERIC_LOCATION</li>
<li>(draft)      public static final int LONG_GENERIC</li>
<li>(draft)      public static final int LONG_GMT</li>
<li>(draft)      public static final int SHORT_COMMONLY_USED</li>
<li>(draft)      public static final int SHORT_GENERIC</li>
<li>(draft)      public static final int SHORT_GMT</li>
<li>(draft)      public static ICULogger TimeZoneLogger</li>
</ul>
ULocale
<ul>
<li>(draft)      public java.lang.String <i>getDisplayLanguageWithDialect</i>()</li>
<li>(draft)      public java.lang.String <i>getDisplayLanguageWithDialect</i>(ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayLanguageWithDialect</i>(java.lang.String, ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayLanguageWithDialect</i>(java.lang.String, java.lang.String)</li>
<li>(draft)      public java.lang.String <i>getDisplayNameWithDialect</i>()</li>
<li>(draft)      public java.lang.String <i>getDisplayNameWithDialect</i>(ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayNameWithDialect</i>(java.lang.String, ULocale)</li>
<li>(draft)      public static java.lang.String <i>getDisplayNameWithDialect</i>(java.lang.String, java.lang.String)</li>
</ul>
UResourceBundle
<ul>
<li><span style='color:red'>*internal*  </span>protected java.util.Set <i>handleKeySet</i>()</li>
<li><span style='color:red'>*internal*  </span>protected boolean <i>isTopLevelResource</i>()</li>
<li><span style='color:red'>*internal*  </span>public java.util.Set <i>keySet</i>()</li>
</ul>
VersionInfo
<ul>
<li><span style='color:red'>*internal*  </span>public static final java.lang.String ICU_DATA_VERSION_PATH</li>
</ul>
</ul>

<hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Mon Oct 05 17:16:53 EDT 2009<br/>Copyright (C) 2009, International Business Machines Corporation, All Rights Reserved.</font></i></p>
</body>
</html>
