<!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 3.4 with ICU4J 3.6</title>
<!-- Copyright 2006, IBM, All Rights Reserved. -->
</head>
<body>
<h1>ICU4J API Comparison: ICU4J 3.4 with ICU4J 3.6</h1>

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

<h3>Package com.ibm.icu.util</h3>
<ul>
UResourceBundle
<ul>
<li>(draft)      protected static UResourceBundle <i>instantiateICUResource</i>(java.lang.String, java.lang.String, java.lang.ClassLoader)</li>
</ul>
</ul>


<hr/>
<h2>Withdrawn, Deprecated, or Obsoleted in ICU4J 3.6</h2>

<h3>Package com.ibm.icu.lang</h3>
<ul>
UCharacter
<ul>
<li>(deprecated) public static boolean <i>isJavaLetter</i>(int)</li>
<li>(deprecated) public static boolean <i>isJavaLetterOrDigit</i>(int)</li>
<li>(deprecated) public static boolean <i>isSpace</i>(int)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
NumberFormat
<ul>
<li>(deprecated) protected static java.lang.String <i>getPattern</i>(java.util.Locale, int)</li>
</ul>
RuleBasedBreakIterator
<ul>
<li><span style='color:red'>*internal*  </span>public static RuleBasedBreakIterator <i>getInstanceFromCompiledRules</i>(java.io.InputStream)</li>
</ul>
</ul>


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

<h3>Package com.ibm.icu.text</h3>
<ul>
<li>    (stable)     public class <i>DictionaryBasedBreakIterator</i> extends com.ibm.icu.text.RuleBasedBreakIterator_Old</br>
(stable)     public class <i>DictionaryBasedBreakIterator</i> extends com.ibm.icu.text.RuleBasedBreakIterator</li>
<li>    (stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter</br>
(stable)     public class <i>UnicodeSet</i> extends com.ibm.icu.text.UnicodeFilter implements com.ibm.icu.util.Freezable</li>
</ul>


<hr/>
<h2>Promoted to stable in ICU4J 3.6</h2>

<h3>Package com.ibm.icu.lang</h3>
<ul>
<li>(stable)     public class <i>UCharacterEnums</i></li>
<li>(stable)     public static interface <i>UCharacterEnums.ECharacterCategory</i></li>
<li>(stable)     public static interface <i>UCharacterEnums.ECharacterDirection</i></li>
UCharacter
<ul>
<li>(stable)     public static final int MAX_CODE_POINT</li>
<li>(stable)     public static final char MAX_HIGH_SURROGATE</li>
<li>(stable)     public static final char MAX_LOW_SURROGATE</li>
<li>(stable)     public static final char MAX_SURROGATE</li>
<li>(stable)     public static final int MIN_CODE_POINT</li>
<li>(stable)     public static final char MIN_HIGH_SURROGATE</li>
<li>(stable)     public static final char MIN_LOW_SURROGATE</li>
<li>(stable)     public static final int MIN_SUPPLEMENTARY_CODE_POINT</li>
<li>(stable)     public static final char MIN_SURROGATE</li>
<li>(stable)     public static int <i>charCount</i>(int)</li>
<li>(stable)     public static final int <i>codePointAt</i>(char[], int)</li>
<li>(stable)     public static final int <i>codePointAt</i>(char[], int, int)</li>
<li>(stable)     public static final int <i>codePointAt</i>(java.lang.CharSequence, int)</li>
<li>(stable)     public static final int <i>codePointBefore</i>(char[], int)</li>
<li>(stable)     public static final int <i>codePointBefore</i>(char[], int, int)</li>
<li>(stable)     public static final int <i>codePointBefore</i>(java.lang.CharSequence, int)</li>
<li>(stable)     public static int <i>codePointCount</i>(char[], int, int)</li>
<li>(stable)     public static int <i>codePointCount</i>(java.lang.CharSequence, int, int)</li>
<li>(stable)     public static char <i>forDigit</i>(int, int)</li>
<li>(stable)     public static byte <i>getDirectionality</i>(int)</li>
<li>(stable)     public static boolean <i>isHighSurrogate</i>(char)</li>
<li>(stable)     public static boolean <i>isLowSurrogate</i>(char)</li>
<li>(stable)     public static final boolean <i>isSupplementaryCodePoint</i>(int)</li>
<li>(stable)     public static final boolean <i>isSurrogatePair</i>(char, char)</li>
<li>(stable)     public static final boolean <i>isValidCodePoint</i>(int)</li>
<li>(stable)     public static int <i>offsetByCodePoints</i>(char[], int, int, int, int)</li>
<li>(stable)     public static int <i>offsetByCodePoints</i>(java.lang.CharSequence, int, int)</li>
<li>(stable)     public static final char[] <i>toChars</i>(int)</li>
<li>(stable)     public static final int <i>toChars</i>(int, char[], int)</li>
<li>(stable)     public static final int <i>toCodePoint</i>(char, char)</li>
</ul>
UCharacter.LineBreak
<ul>
<li>(stable)     public static final int INSEPARABLE</li>
</ul>
UCharacter.UnicodeBlock
<ul>
<li>(stable)     public static final UCharacter.UnicodeBlock CYRILLIC_SUPPLEMENT</li>
<li>(stable)     public static final int CYRILLIC_SUPPLEMENT_ID</li>
<li>(stable)     public static final UCharacter.UnicodeBlock <i>forName</i>(java.lang.String)</li>
</ul>
UProperty
<ul>
<li>(stable)     public static final int LEAD_CANONICAL_COMBINING_CLASS</li>
<li>(stable)     public static final int NFC_INERT</li>
<li>(stable)     public static final int NFC_QUICK_CHECK</li>
<li>(stable)     public static final int NFD_INERT</li>
<li>(stable)     public static final int NFD_QUICK_CHECK</li>
<li>(stable)     public static final int NFKC_INERT</li>
<li>(stable)     public static final int NFKC_QUICK_CHECK</li>
<li>(stable)     public static final int NFKD_INERT</li>
<li>(stable)     public static final int NFKD_QUICK_CHECK</li>
<li>(stable)     public static final int SEGMENT_STARTER</li>
<li>(stable)     public static final int S_TERM</li>
<li>(stable)     public static final int TRAIL_CANONICAL_COMBINING_CLASS</li>
<li>(stable)     public static final int VARIATION_SELECTOR</li>
</ul>
UScript
<ul>
<li>(stable)     public static final int KATAKANA_OR_HIRAGANA</li>
<li>(stable)     public static final int[] <i>getCode</i>(ULocale)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li>(stable)     public abstract class <i>MeasureFormat</i></li>
<li>(stable)     public class <i>MessageFormat</i></li>
ChineseDateFormatSymbols
<ul>
<li>(stable)     protected void <i>initializeData</i>(ULocale, CalendarData)</li>
</ul>
Collator
<ul>
<li>(stable)     public static final ULocale[] <i>getAvailableULocales</i>()</li>
<li>(stable)     public static final ULocale <i>getFunctionalEquivalent</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static final ULocale <i>getFunctionalEquivalent</i>(java.lang.String, ULocale, boolean[])</li>
<li>(stable)     public static final Collator <i>getInstance</i>(ULocale)</li>
<li>(stable)     public static final java.lang.String[] <i>getKeywordValues</i>(java.lang.String)</li>
<li>(stable)     public static final java.lang.String[] <i>getKeywords</i>()</li>
</ul>
DateFormat
<ul>
<li>(stable)     public static final int DOW_LOCAL_FIELD</li>
<li>(stable)     public static final int EXTENDED_YEAR_FIELD</li>
<li>(stable)     public static final int FIELD_COUNT</li>
<li>(stable)     public static final int FRACTIONAL_SECOND_FIELD</li>
<li>(stable)     public static final int JULIAN_DAY_FIELD</li>
<li>(stable)     public static final int MILLISECONDS_IN_DAY_FIELD</li>
<li>(stable)     public static final int TIMEZONE_RFC_FIELD</li>
<li>(stable)     public static final int YEAR_WOY_FIELD</li>
</ul>
DateFormatSymbols
<ul>
<li>(stable)     protected void <i>initializeData</i>(ULocale, CalendarData)</li>
<li>(stable)     protected void <i>initializeData</i>(ULocale, java.lang.String)</li>
</ul>
DecimalFormat
<ul>
<li>(stable)     public boolean <i>areSignificantDigitsUsed</i>()</li>
<li>(stable)     public int <i>getMaximumSignificantDigits</i>()</li>
<li>(stable)     public int <i>getMinimumSignificantDigits</i>()</li>
<li>(stable)     public void <i>setMaximumSignificantDigits</i>(int)</li>
<li>(stable)     public void <i>setMinimumSignificantDigits</i>(int)</li>
<li>(stable)     public void <i>setSignificantDigitsUsed</i>(boolean)</li>
</ul>
DecimalFormatSymbols
<ul>
<li>(stable)     public char <i>getSignificantDigit</i>()</li>
<li>(stable)     public void <i>setSignificantDigit</i>(char)</li>
</ul>
NumberFormat
<ul>
<li>(stable)     public final java.lang.String <i>format</i>(CurrencyAmount)</li>
<li>(stable)     public java.lang.StringBuffer <i>format</i>(CurrencyAmount, java.lang.StringBuffer, java.text.FieldPosition)</li>
</ul>
RuleBasedNumberFormat
<ul>
<li>(stable)     public java.lang.String <i>getDefaultRuleSetName</i>()</li>
</ul>
Transliterator
<ul>
<li>(stable)     public Transliterator[] <i>getElements</i>()</li>
</ul>
UTF16
<ul>
<li>(stable)     public static java.lang.StringBuffer <i>appendCodePoint</i>(java.lang.StringBuffer, int)</li>
<li>(stable)     public static java.lang.String <i>newString</i>(int[], int, int)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
<li>(stable)     public class <i>CurrencyAmount</i></li>
<li>(stable)     public abstract class <i>Measure</i></li>
<li>(stable)     public abstract class <i>MeasureUnit</i></li>
<li>(stable)     public abstract class <i>UResourceBundle</i></li>
<li>(stable)     public class <i>UResourceTypeMismatchException</i></li>
LocaleData
<ul>
<li>(stable)     public static UnicodeSet <i>getExemplarSet</i>(ULocale, int)</li>
<li>(stable)     public static final LocaleData.MeasurementSystem <i>getMeasurementSystem</i>(ULocale)</li>
<li>(stable)     public static final LocaleData.PaperSize <i>getPaperSize</i>(ULocale)</li>
</ul>
ULocale
<ul>
<li>(stable)     public static final ULocale CANADA</li>
<li>(stable)     public static final ULocale CANADA_FRENCH</li>
<li>(stable)     public static final ULocale CHINA</li>
<li>(stable)     public static final ULocale CHINESE</li>
<li>(stable)     public static final ULocale ENGLISH</li>
<li>(stable)     public static final ULocale FRANCE</li>
<li>(stable)     public static final ULocale FRENCH</li>
<li>(stable)     public static final ULocale GERMAN</li>
<li>(stable)     public static final ULocale GERMANY</li>
<li>(stable)     public static final ULocale ITALIAN</li>
<li>(stable)     public static final ULocale ITALY</li>
<li>(stable)     public static final ULocale JAPAN</li>
<li>(stable)     public static final ULocale JAPANESE</li>
<li>(stable)     public static final ULocale KOREA</li>
<li>(stable)     public static final ULocale KOREAN</li>
<li>(stable)     public static final ULocale PRC</li>
<li>(stable)     public static final ULocale SIMPLIFIED_CHINESE</li>
<li>(stable)     public static final ULocale TAIWAN</li>
<li>(stable)     public static final ULocale TRADITIONAL_CHINESE</li>
<li>(stable)     public static final ULocale UK</li>
<li>(stable)     public static final ULocale US</li>
<li>(stable)     public <i>ULocale</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public <i>ULocale</i>(java.lang.String, java.lang.String, java.lang.String)</li>
<li>(stable)     public static java.lang.String <i>canonicalize</i>(java.lang.String)</li>
<li>(stable)     public java.lang.Object <i>clone</i>()</li>
<li>(stable)     public static ULocale <i>createCanonical</i>(java.lang.String)</li>
<li>(stable)     public boolean <i>equals</i>(java.lang.Object)</li>
<li>(stable)     public static ULocale <i>forLocale</i>(java.util.Locale)</li>
<li>(stable)     public static ULocale[] <i>getAvailableLocales</i>()</li>
<li>(stable)     public java.lang.String <i>getBaseName</i>()</li>
<li>(stable)     public static java.lang.String <i>getBaseName</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getCountry</i>()</li>
<li>(stable)     public static java.lang.String <i>getCountry</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getDisplayCountry</i>()</li>
<li>(stable)     public java.lang.String <i>getDisplayCountry</i>(ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayCountry</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayCountry</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public static java.lang.String <i>getDisplayKeyword</i>(java.lang.String)</li>
<li>(stable)     public static java.lang.String <i>getDisplayKeyword</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayKeyword</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getDisplayKeywordValue</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getDisplayKeywordValue</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayKeywordValue</i>(java.lang.String, java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayKeywordValue</i>(java.lang.String, java.lang.String, java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getDisplayLanguage</i>()</li>
<li>(stable)     public java.lang.String <i>getDisplayLanguage</i>(ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayLanguage</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayLanguage</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getDisplayName</i>()</li>
<li>(stable)     public java.lang.String <i>getDisplayName</i>(ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayName</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayName</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getDisplayScript</i>()</li>
<li>(stable)     public java.lang.String <i>getDisplayScript</i>(ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayScript</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayScript</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getDisplayVariant</i>()</li>
<li>(stable)     public java.lang.String <i>getDisplayVariant</i>(ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayVariant</i>(java.lang.String, ULocale)</li>
<li>(stable)     public static java.lang.String <i>getDisplayVariant</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public ULocale <i>getFallback</i>()</li>
<li>(stable)     public static java.lang.String <i>getFallback</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getISO3Country</i>()</li>
<li>(stable)     public static java.lang.String <i>getISO3Country</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getISO3Language</i>()</li>
<li>(stable)     public static java.lang.String <i>getISO3Language</i>(java.lang.String)</li>
<li>(stable)     public static java.lang.String[] <i>getISOCountries</i>()</li>
<li>(stable)     public static java.lang.String[] <i>getISOLanguages</i>()</li>
<li>(stable)     public java.lang.String <i>getKeywordValue</i>(java.lang.String)</li>
<li>(stable)     public static java.lang.String <i>getKeywordValue</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public java.util.Iterator <i>getKeywords</i>()</li>
<li>(stable)     public static java.util.Iterator <i>getKeywords</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getLanguage</i>()</li>
<li>(stable)     public static java.lang.String <i>getLanguage</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getName</i>()</li>
<li>(stable)     public static java.lang.String <i>getName</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getScript</i>()</li>
<li>(stable)     public static java.lang.String <i>getScript</i>(java.lang.String)</li>
<li>(stable)     public java.lang.String <i>getVariant</i>()</li>
<li>(stable)     public static java.lang.String <i>getVariant</i>(java.lang.String)</li>
<li>(stable)     public int <i>hashCode</i>()</li>
<li>(stable)     public static synchronized void <i>setDefault</i>(ULocale)</li>
<li>(stable)     public ULocale <i>setKeywordValue</i>(java.lang.String, java.lang.String)</li>
<li>(stable)     public static java.lang.String <i>setKeywordValue</i>(java.lang.String, java.lang.String, java.lang.String)</li>
<li>(stable)     public java.lang.String <i>toString</i>()</li>
</ul>
</ul>


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

<h3>Package com.ibm.icu.lang</h3>
<ul>
<li><span style='color:red'>*internal*  </span>public final class <i>UScriptRun</i></li>
UCharacter
<ul>
<li><span style='color:red'>*internal*  </span>public static java.lang.String <i>getName</i>(java.lang.String, java.lang.String)</li>
<li><span style='color:red'>*internal*  </span>public static java.lang.String <i>getStringPropertyValue</i>(int, int, int)</li>
</ul>
UCharacter.UnicodeBlock
<ul>
<li>(draft)      public static final UCharacter.UnicodeBlock BALINESE</li>
<li>(draft)      public static final int BALINESE_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock COUNTING_ROD_NUMERALS</li>
<li>(draft)      public static final int COUNTING_ROD_NUMERALS_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock CUNEIFORM</li>
<li>(draft)      public static final int CUNEIFORM_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION</li>
<li>(draft)      public static final int CUNEIFORM_NUMBERS_AND_PUNCTUATION_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock LATIN_EXTENDED_C</li>
<li>(draft)      public static final int LATIN_EXTENDED_C_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock LATIN_EXTENDED_D</li>
<li>(draft)      public static final int LATIN_EXTENDED_D_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock NKO</li>
<li>(draft)      public static final int NKO_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock PHAGS_PA</li>
<li>(draft)      public static final int PHAGS_PA_ID</li>
<li>(draft)      public static final UCharacter.UnicodeBlock PHOENICIAN</li>
<li>(draft)      public static final int PHOENICIAN_ID</li>
</ul>
UScript
<ul>
<li>(draft)      public static final int BALINESE</li>
<li>(draft)      public static final int BATAK</li>
<li>(draft)      public static final int BLISSYMBOLS</li>
<li>(draft)      public static final int BRAHMI</li>
<li>(draft)      public static final int CHAM</li>
<li>(draft)      public static final int CIRTH</li>
<li>(draft)      public static final int CUNEIFORM</li>
<li>(draft)      public static final int DEMOTIC_EGYPTIAN</li>
<li>(draft)      public static final int EASTERN_SYRIAC</li>
<li>(draft)      public static final int EGYPTIAN_HIEROGLYPHS</li>
<li>(draft)      public static final int ESTRANGELO_SYRIAC</li>
<li>(draft)      public static final int HARAPPAN_INDUS</li>
<li>(draft)      public static final int HIERATIC_EGYPTIAN</li>
<li>(draft)      public static final int JAVANESE</li>
<li>(draft)      public static final int KAYAH_LI</li>
<li>(draft)      public static final int KHUTSURI</li>
<li>(draft)      public static final int LATIN_FRAKTUR</li>
<li>(draft)      public static final int LATIN_GAELIC</li>
<li>(draft)      public static final int LEPCHA</li>
<li>(draft)      public static final int LINEAR_A</li>
<li>(draft)      public static final int MANDAEAN</li>
<li>(draft)      public static final int MAYAN_HIEROGLYPHS</li>
<li>(draft)      public static final int MEROITIC</li>
<li>(draft)      public static final int NKO</li>
<li>(draft)      public static final int OLD_CHURCH_SLAVONIC_CYRILLIC</li>
<li>(draft)      public static final int OLD_HUNGARIAN</li>
<li>(draft)      public static final int OLD_PERMIC</li>
<li>(draft)      public static final int ORKHON</li>
<li>(draft)      public static final int PAHAWH_HMONG</li>
<li>(draft)      public static final int PHAGS_PA</li>
<li>(draft)      public static final int PHOENICIAN</li>
<li>(draft)      public static final int PHONETIC_POLLARD</li>
<li>(draft)      public static final int RONGORONGO</li>
<li>(draft)      public static final int SARATI</li>
<li>(draft)      public static final int SIMPLIFIED_HAN</li>
<li>(draft)      public static final int TENGWAR</li>
<li>(draft)      public static final int TRADITIONAL_HAN</li>
<li>(draft)      public static final int UNKNOWN</li>
<li>(draft)      public static final int UNWRITTEN_LANGUAGES</li>
<li>(draft)      public static final int VAI</li>
<li>(draft)      public static final int VISIBLE_SPEECH</li>
<li>(draft)      public static final int WESTERN_SYRIAC</li>
<li><span style='color:red'>*internal*  </span>public static final int <i>getCodeFromName</i>(java.lang.String)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li><span style='color:red'>*internal*  </span>public class <i>BreakDictionary</i></li>
<li>(draft)      public class <i>DateTimePatternGenerator</i></li>
<li><span style='color:red'>*internal*  </span>public static class <i>DateTimePatternGenerator.FormatParser</i></li>
<li>(draft)      public static final class <i>DateTimePatternGenerator.PatternInfo</i></li>
<li><span style='color:red'>*internal*  </span>public static class <i>DateTimePatternGenerator.VariableField</i></li>
<li>(stable)     public static class <i>NumberFormat.Field</i></li>
<li><span style='color:red'>*internal*  </span>public class <i>RuleBasedTransliterator</i></li>
<li><span style='color:red'>*internal*  </span>public static abstract class <i>UnicodeSet.XSymbolTable</i></li>
ArabicShapingException
<ul>
<li><span style='color:red'>*internal*  </span>public <i>ArabicShapingException</i>(java.lang.String)</li>
</ul>
BreakIterator
<ul>
<li><span style='color:red'>*internal*  </span>public static BreakIterator <i>getBreakInstance</i>(ULocale, int)</li>
</ul>
CanonicalIterator
<ul>
<li><span style='color:red'>*internal*  </span>public static void <i>permute</i>(java.lang.String, boolean, java.util.Set)</li>
</ul>
ChineseDateFormat
<ul>
<li><span style='color:red'>*internal*  </span>protected void <i>subFormat</i>(java.lang.StringBuffer, char, int, int, java.text.FieldPosition, Calendar)</li>
</ul>
DateFormat
<ul>
<li>(draft)      public static final int QUARTER_FIELD</li>
<li>(draft)      public static final int STANDALONE_QUARTER_FIELD</li>
</ul>
DateFormatSymbols
<ul>
<li><span style='color:red'>*internal*  </span>public static final int DT_CONTEXT_COUNT</li>
<li><span style='color:red'>*internal*  </span>public static final int DT_WIDTH_COUNT</li>
<li>(draft)      public java.lang.String[] <i>getQuarters</i>(int, int)</li>
<li><span style='color:red'>*internal*  </span>public void <i>setEraNames</i>(java.lang.String[])</li>
<li><span style='color:red'>*internal*  </span>public void <i>setMonths</i>(java.lang.String[], int, int)</li>
<li><span style='color:red'>*internal*  </span>public void <i>setQuarters</i>(java.lang.String[], int, int)</li>
<li><span style='color:red'>*internal*  </span>public void <i>setWeekdays</i>(java.lang.String[], int, int)</li>
</ul>
DecimalFormat
<ul>
<li>(stable)     public java.text.AttributedCharacterIterator <i>formatToCharacterIterator</i>(java.lang.Object)</li>
<li><span style='color:red'>*internal*  </span>protected Currency <i>getEffectiveCurrency</i>()</li>
<li>(stable)     public boolean <i>isParseBigDecimal</i>()</li>
<li>(stable)     public void <i>setParseBigDecimal</i>(boolean)</li>
<li>(draft)      public void <i>setRoundingIncrement</i>(BigDecimal)</li>
</ul>
DecimalFormatSymbols
<ul>
<li>(draft)      public char <i>getMonetaryGroupingSeparator</i>()</li>
<li>(draft)      public void <i>setMonetaryGroupingSeparator</i>(char)</li>
</ul>
DictionaryBasedBreakIterator
<ul>
<li><span style='color:red'>*internal*  </span>public <i>DictionaryBasedBreakIterator</i>(java.io.InputStream, java.io.InputStream)</li>
<li>(draft)      public int <i>getRuleStatus</i>()</li>
<li>(draft)      public int <i>getRuleStatusVec</i>(int[])</li>
<li><span style='color:red'>*internal*  </span>protected int <i>handleNext</i>()</li>
</ul>
MeasureFormat
<ul>
<li><span style='color:red'>*internal*  </span>protected <i>MeasureFormat</i>()</li>
</ul>
Normalizer
<ul>
<li><span style='color:red'>*internal*  </span>public static int <i>getFC_NFKC_Closure</i>(int, char[])</li>
<li><span style='color:red'>*internal*  </span>public static java.lang.String <i>getFC_NFKC_Closure</i>(int)</li>
<li><span style='color:red'>*internal*  </span>public static boolean <i>isNFSkippable</i>(int, Normalizer.Mode)</li>
</ul>
NumberFormat
<ul>
<li><span style='color:red'>*internal*  </span>protected Currency <i>getEffectiveCurrency</i>()</li>
<li>(draft)      public boolean <i>isParseStrict</i>()</li>
<li>(draft)      public void <i>setParseStrict</i>(boolean)</li>
</ul>
RuleBasedBreakIterator
<ul>
<li><span style='color:red'>*internal*  </span>protected static java.lang.String fDebugEnv</li>
<li><span style='color:red'>*internal*  </span>protected int fDictionaryCharCount</li>
<li><span style='color:red'>*internal*  </span>protected RBBIDataWrapper fRData</li>
<li><span style='color:red'>*internal*  </span>public static boolean fTrace</li>
<li><span style='color:red'>*internal*  </span>public <i>RuleBasedBreakIterator</i>()</li>
<li>(stable)     protected static final void <i>checkOffset</i>(int, java.text.CharacterIterator)</li>
<li><span style='color:red'>*internal*  </span>public void <i>dump</i>()</li>
</ul>
SimpleDateFormat
<ul>
<li><span style='color:red'>*internal*  </span>public <i>SimpleDateFormat</i>(java.lang.String, DateFormatSymbols, ULocale)</li>
<li>(stable)     protected int <i>matchQuarterString</i>(java.lang.String, int, int, java.lang.String[], Calendar)</li>
<li>(stable)     public void <i>setNumberFormat</i>(NumberFormat)</li>
<li><span style='color:red'>*internal*  </span>protected void <i>subFormat</i>(java.lang.StringBuffer, char, int, int, java.text.FieldPosition, Calendar)</li>
<li><span style='color:red'>*internal*  </span>protected void <i>zeroPaddingNumber</i>(java.lang.StringBuffer, int, int, int)</li>
</ul>
Transliterator
<ul>
<li>(draft)      public static void <i>registerAlias</i>(java.lang.String, java.lang.String)</li>
</ul>
UTF16
<ul>
<li>(stable)     public static int <i>charAt</i>(java.lang.CharSequence, int)</li>
</ul>
UnicodeFilter
<ul>
<li><span style='color:red'>*internal*  </span>protected <i>UnicodeFilter</i>()</li>
</ul>
UnicodeSet
<ul>
<li><span style='color:red'>*internal*  </span>public static final int CASE</li>
<li><span style='color:red'>*internal*  </span>public static final int IGNORE_SPACE</li>
<li><span style='color:red'>*internal*  </span>public <i>UnicodeSet</i>(java.lang.String, int)</li>
<li><span style='color:red'>*internal*  </span>public java.lang.StringBuffer <i>_generatePattern</i>(java.lang.StringBuffer, boolean, boolean)</li>
<li><span style='color:red'>*internal*  </span>public UnicodeSet <i>applyPattern</i>(java.lang.String, int)</li>
<li><span style='color:red'>*internal*  </span>public java.lang.Object <i>cloneAsThawed</i>()</li>
<li><span style='color:red'>*internal*  </span>public UnicodeSet <i>closeOver</i>(int)</li>
<li><span style='color:red'>*internal*  </span>public java.lang.Object <i>freeze</i>()</li>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getRegexEquivalent</i>()</li>
<li><span style='color:red'>*internal*  </span>public boolean <i>isFrozen</i>()</li>
<li><span style='color:red'>*internal*  </span>public int <i>matchesAt</i>(java.lang.CharSequence, int)</li>
</ul>
UnicodeSetIterator
<ul>
<li><span style='color:red'>*internal*  </span>protected int endElement</li>
<li><span style='color:red'>*internal*  </span>protected int nextElement</li>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getString</i>()</li>
<li><span style='color:red'>*internal*  </span>protected void <i>loadRange</i>(int)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
<li><span style='color:red'>*internal*  </span>public final class <i>CompactByteArray</i></li>
<li><span style='color:red'>*internal*  </span>public final class <i>CompactCharArray</i></li>
<li><span style='color:red'>*internal*  </span>public interface <i>Freezable</i></li>
<li>(draft)      public class <i>GlobalizationPreferences</i></li>
<li><span style='color:red'>*internal*  </span>public class <i>OverlayBundle</i></li>
BuddhistCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
Calendar
<ul>
<li>(draft)      protected int <i>getDefaultDayInMonth</i>(int, int)</li>
<li>(draft)      protected int <i>getDefaultMonthInYear</i>(int)</li>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
CaseInsensitiveString
<ul>
<li>(stable)     public java.lang.String <i>toString</i>()</li>
</ul>
ChineseCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
CopticCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public static java.lang.Integer[] <i>getDateFromJD</i>(int)</li>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
Currency
<ul>
<li><span style='color:red'>*internal*  </span>public static java.lang.String <i>parse</i>(ULocale, java.lang.String, java.text.ParsePosition)</li>
</ul>
EthiopicCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public static java.lang.Integer[] <i>getDateFromJD</i>(int)</li>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
GregorianCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
HebrewCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
IslamicCalendar
<ul>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
JapaneseCalendar
<ul>
<li>(draft)      protected int <i>getDefaultDayInMonth</i>(int, int)</li>
<li>(draft)      protected int <i>getDefaultMonthInYear</i>(int)</li>
<li><span style='color:red'>*internal*  </span>public java.lang.String <i>getType</i>()</li>
</ul>
MeasureUnit
<ul>
<li><span style='color:red'>*internal*  </span>protected <i>MeasureUnit</i>()</li>
</ul>
SimpleTimeZone
<ul>
<li><span style='color:red'>*internal*  </span>public <i>SimpleTimeZone</i>(int, java.lang.String, int, int, int, int, int, int, int, int, int, int, int)</li>
<li><span style='color:red'>*internal*  </span>public <i>SimpleTimeZone</i>(java.util.SimpleTimeZone, java.lang.String)</li>
<li>(draft)      public java.lang.Object <i>clone</i>()</li>
<li>(draft)      public boolean <i>equals</i>(java.lang.Object)</li>
<li><span style='color:red'>*internal*  </span>public int <i>getOffset</i>(int, int, int, int, int, int)</li>
<li><span style='color:red'>*internal*  </span>public int <i>getOffset</i>(int, int, int, int, int, int, int)</li>
<li><span style='color:red'>*internal*  </span>public int <i>getRawOffset</i>()</li>
<li><span style='color:red'>*internal*  </span>public boolean <i>hasSameRules</i>(TimeZone)</li>
<li>(draft)      public int <i>hashCode</i>()</li>
<li><span style='color:red'>*internal*  </span>public boolean <i>inDaylightTime</i>(java.util.Date)</li>
<li>(draft)      public java.lang.String <i>toString</i>()</li>
<li><span style='color:red'>*internal*  </span>public boolean <i>useDaylightTime</i>()</li>
</ul>
StringTokenizer
<ul>
<li><span style='color:red'>*internal*  </span>public <i>StringTokenizer</i>(java.lang.String, UnicodeSet, boolean, boolean)</li>
<li><span style='color:red'>*internal*  </span>public <i>StringTokenizer</i>(java.lang.String, java.lang.String, boolean, boolean)</li>
</ul>
TimeZone
<ul>
<li><span style='color:red'>*internal*  </span>protected static final int MILLIS_PER_DAY</li>
<li><span style='color:red'>*internal*  </span>protected static final int MILLIS_PER_HOUR</li>
<li>(draft)      public boolean <i>equals</i>(java.lang.Object)</li>
<li>(draft)      public int <i>hashCode</i>()</li>
</ul>
UResourceBundle
<ul>
<li><span style='color:red'>*internal*  </span>protected static synchronized void <i>addToCache</i>(java.lang.ClassLoader, java.lang.String, ULocale, UResourceBundle)</li>
<li><span style='color:red'>*internal*  </span>public static UResourceBundle <i>getBundleInstance</i>(java.lang.String, ULocale, java.lang.ClassLoader)</li>
<li><span style='color:red'>*internal*  </span>public static UResourceBundle <i>getBundleInstance</i>(java.lang.String, java.util.Locale, java.lang.ClassLoader)</li>
<li><span style='color:red'>*internal*  </span>protected static synchronized UResourceBundle <i>loadFromCache</i>(java.lang.ClassLoader, java.lang.String, ULocale)</li>
<li><span style='color:red'>*internal*  </span>protected abstract void <i>setLoadingStatus</i>(int)</li>
</ul>
UniversalTimeScale
<ul>
<li><span style='color:red'>*internal*  </span>public static final int EPOCH_OFFSET_MINUS_1_VALUE</li>
<li><span style='color:red'>*internal*  </span>public static final int MAX_ROUND_VALUE</li>
<li><span style='color:red'>*internal*  </span>public static final int MAX_SCALE_VALUE</li>
<li><span style='color:red'>*internal*  </span>public static final int MIN_ROUND_VALUE</li>
<li><span style='color:red'>*internal*  </span>public static final int UNITS_ROUND_VALUE</li>
<li><span style='color:red'>*internal*  </span>public static BigDecimal <i>toBigDecimalTrunc</i>(BigDecimal, int)</li>
</ul>
VersionInfo
<ul>
<li><span style='color:red'>*internal*  </span>public static final java.lang.String ICU_DATA_VERSION</li>
<li>(draft)      public static final VersionInfo UNICODE_5_0</li>
<li><span style='color:red'>*internal*  </span>public static VersionInfo <i>javaVersion</i>()</li>
</ul>
</ul>

<hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Mon Sep 18 18:07:27 EDT 2006<br/>Copyright (C) 2006, International Business Machines Corporation, All Rights Reserved.</font></i></p>
</body>
</html>
