<!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.6 with ICU4J 4.7.1</title>
<!-- Copyright 2011, IBM, All Rights Reserved. -->
</head>
<body>
<h1>ICU4J API Comparison: ICU4J 4.6 with ICU4J 4.7.1</h1>

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

<h3>Package com.ibm.icu.lang</h3>
<ul>
UCharacter
<ul>
<li>(stable)     public static int <i>getPropertyEnum</i>(java.lang.String)</li>
<li>(stable)     public static int <i>getPropertyValueEnum</i>(int, java.lang.String)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
MessageFormat
<ul>
<li>(stable)     public static java.lang.String <i>format</i>(java.lang.String, java.lang.Object[])</li>
</ul>
UnicodeSet
<ul>
<li>(stable)     public final UnicodeSet <i>add</i>(java.lang.String)</li>
<li>(stable)     public final UnicodeSet <i>addAll</i>(java.lang.String)</li>
</ul>
</ul>


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

<hr/>
<h2>Changed in ICU4J 4.7.1 (old, new)</h2>
<p>(no API changed)</p>

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

<h3>Package com.ibm.icu.text</h3>
<ul>
DateFormat
<ul>
<li>(stable)     public static final int MILLISECOND_FIELD</li>
</ul>
</ul>


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

<h3>Package com.ibm.icu.charset</h3>
<ul>
CharsetDecoderICU
<ul>
<li>(draft)      public final float <i>maxBytesPerChar</i>()</li>
</ul>
CharsetEncoderICU
<ul>
<li>(draft)      public final float <i>maxCharsPerByte</i>()</li>
</ul>
CharsetICU
<ul>
<li>(draft)      public boolean <i>isFixedWidth</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.lang</h3>
<ul>
UCharacter
<ul>
<li>(stable)     public static int <i>getPropertyEnum</i>(java.lang.CharSequence)</li>
<li>(stable)     public static int <i>getPropertyValueEnum</i>(int, java.lang.CharSequence)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
MessageFormat
<ul>
<li>(stable)     public static java.lang.String <i>format</i>(java.lang.String, java.lang.Object...)</li>
</ul>
PluralRules
<ul>
<li>(draft)      public static final double NO_UNIQUE_VALUE</li>
<li>(draft)      public java.util.Collection<java.lang.Double> <i>getSamples</i>(java.lang.String)</li>
<li>(draft)      public double <i>getUniqueKeywordValue</i>(java.lang.String)</li>
</ul>
UnicodeSet
<ul>
<li>(draft)      public static final UnicodeSet ALL_CODE_POINTS</li>
<li>(draft)      public static final UnicodeSet EMPTY</li>
<li>(stable)     public final UnicodeSet <i>add</i>(java.lang.CharSequence)</li>
<li>(stable)     public final UnicodeSet <i>addAll</i>(java.lang.CharSequence)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
<li>(draft)      public final class <i>BytesTrie</i></li>
<li>(draft)      public static final class <i>BytesTrie.Entry</i></li>
<li>(draft)      public static final class <i>BytesTrie.Iterator</i></li>
<li>(draft)      public static final class <i>BytesTrie.Result</i></li>
<li>(draft)      public static final class <i>BytesTrie.State</i></li>
<li>(draft)      public final class <i>BytesTrieBuilder</i></li>
<li>(draft)      public final class <i>CharsTrie</i></li>
<li>(draft)      public static final class <i>CharsTrie.Entry</i></li>
<li>(draft)      public static final class <i>CharsTrie.Iterator</i></li>
<li>(draft)      public static final class <i>CharsTrie.State</i></li>
<li>(draft)      public final class <i>CharsTrieBuilder</i></li>
<li>(draft)      public abstract class <i>StringTrieBuilder</i></li>
<li>(draft)      public static final class <i>StringTrieBuilder.Option</i></li>
<li>(draft)      public static final class <i>TimeZone.SystemTimeZoneType</i></li>
TimeZone
<ul>
<li>(draft)      public static final java.lang.String UNKNOWN_ZONE_ID</li>
<li>(draft)      public static java.util.Set<java.lang.String> <i>getAvailableIDs</i>(TimeZone.SystemTimeZoneType, java.lang.String, java.lang.Integer)</li>
<li>(draft)      public static java.lang.String <i>getRegion</i>(java.lang.String)</li>
</ul>
</ul>

<hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Wed Mar 09 00:38:19 EST 2011<br/>Copyright (C) 2011, International Business Machines Corporation, All Rights Reserved.</font></i></p>
</body>
</html>
