<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- © 2018 and later: Unicode, Inc. and others. -->
<!-- License & terms of use: http://www.unicode.org/copyright.html#License -->
<title>ICU4J API Comparison: ICU4J 60.1 with ICU4J 61.1</title>
</head>
<body>
<h1>ICU4J API Comparison: ICU4J 60.1 with ICU4J 61.1</h1>

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

<h3>Package com.ibm.icu.text</h3>
<ul>
TimeUnitFormat
<ul>
<li><span style='color:gray'>(deprecated)</span> public java.lang.StringBuffer <i>format</i>(java.lang.Object, java.lang.StringBuffer, java.text.FieldPosition)</li>
</ul>
</ul>


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

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

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

<h3>Package com.ibm.icu.text</h3>
<ul>
<li><span style='color:green'>(stable)</span> public abstract class <i>CaseMap</i></li>
<li><span style='color:green'>(stable)</span> public static final class <i>CaseMap.Fold</i></li>
<li><span style='color:green'>(stable)</span> public static final class <i>CaseMap.Lower</i></li>
<li><span style='color:green'>(stable)</span> public static final class <i>CaseMap.Title</i></li>
<li><span style='color:green'>(stable)</span> public static final class <i>CaseMap.Upper</i></li>
<li><span style='color:green'>(stable)</span> public final class <i>Edits</i></li>
<li><span style='color:green'>(stable)</span> public static final class <i>Edits.Iterator</i></li>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
MeasureUnit
<ul>
<li><span style='color:green'>(stable)</span> public static final MeasureUnit POINT</li>
</ul>
</ul>


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

<h3>Package com.ibm.icu.number</h3>
<ul>
<li><span style='color:orange'>(draft)</span> public static enum <i>NumberFormatter.GroupingStrategy</i></li>
NumberFormatter.GroupingStrategy
<ul>
<li><span style='color:orange'>(draft)</span> public static final r.NumberFormatter.GroupingStrategy AUTO</li>
<li><span style='color:orange'>(draft)</span> public static final r.NumberFormatter.GroupingStrategy MIN2</li>
<li><span style='color:orange'>(draft)</span> public static final r.NumberFormatter.GroupingStrategy OFF</li>
<li><span style='color:orange'>(draft)</span> public static final r.NumberFormatter.GroupingStrategy ON_ALIGNED</li>
<li><span style='color:orange'>(draft)</span> public static final r.NumberFormatter.GroupingStrategy THOUSANDS</li>
</ul>
NumberFormatter.SignDisplay
<ul>
<li><span style='color:orange'>(draft)</span> public static final r.NumberFormatter.SignDisplay ACCOUNTING_EXCEPT_ZERO</li>
<li><span style='color:orange'>(draft)</span> public static final r.NumberFormatter.SignDisplay EXCEPT_ZERO</li>
</ul>
NumberFormatterSettings
<ul>
<li><span style='color:orange'>(draft)</span> public T extends r.NumberFormatterSettings&lt;?&gt; <i>grouping</i>(r.NumberFormatter.GroupingStrategy)</li>
<li><span style='color:orange'>(draft)</span> public T extends r.NumberFormatterSettings&lt;?&gt; <i>perUnit</i>(MeasureUnit)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li><span style='color:orange'>(draft)</span> public static enum <i>DateTimePatternGenerator.DisplayWidth</i></li>
CurrencyDisplayNames
<ul>
<li><span style='color:orange'>(draft)</span> public abstract java.lang.String <i>getNarrowSymbol</i>(java.lang.String)</li>
</ul>
DateTimePatternGenerator
<ul>
<li><span style='color:orange'>(draft)</span> public java.lang.String <i>getFieldDisplayName</i>(int, DateTimePatternGenerator.DisplayWidth)</li>
</ul>
DateTimePatternGenerator.DisplayWidth
<ul>
<li><span style='color:orange'>(draft)</span> public static final DateTimePatternGenerator.DisplayWidth ABBREVIATED</li>
<li><span style='color:orange'>(draft)</span> public static final DateTimePatternGenerator.DisplayWidth NARROW</li>
<li><span style='color:orange'>(draft)</span> public static final DateTimePatternGenerator.DisplayWidth WIDE</li>
</ul>
TimeUnitFormat
<ul>
<li><span style='color:gray'>(deprecated)</span> public NumberFormat <i>getNumberFormat</i>()</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
Currency
<ul>
<li><span style='color:orange'>(draft)</span> public static final int NARROW_SYMBOL_NAME</li>
</ul>
</ul>

<hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Wed Feb 28 17:22:31 EST 2018<br/>© 2018 and later: Unicode, Inc. and others. License & terms of use: <a href="http://www.unicode.org/copyright.html#License">http://www.unicode.org/copyright.html#License</a></font></i></p>
</body>
</html>
