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

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

<h3>Package com.ibm.icu.text</h3>
<ul>
ListFormatter
<ul>
<li><span style='color:orange'>(draft)</span> public java.lang.String <i>format</i>(java.util.Collection<java.lang.Object>)</li>
</ul>
</ul>


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

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

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

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

<h3>Package com.ibm.icu.lang</h3>
<ul>
<li><span style='color:green'>(stable)</span> public static interface <i>UCharacter.BidiPairedBracketType</i></li>
UCharacter
<ul>
<li><span style='color:green'>(stable)</span> public static int <i>getBidiPairedBracket</i>(int)</li>
</ul>
UCharacter.WordBreak
<ul>
<li><span style='color:green'>(stable)</span> public static final int DOUBLE_QUOTE</li>
<li><span style='color:green'>(stable)</span> public static final int HEBREW_LETTER</li>
<li><span style='color:green'>(stable)</span> public static final int SINGLE_QUOTE</li>
</ul>
UCharacterEnums.ECharacterDirection
<ul>
<li><span style='color:green'>(stable)</span> public static final byte FIRST_STRONG_ISOLATE</li>
<li><span style='color:green'>(stable)</span> public static final byte LEFT_TO_RIGHT_ISOLATE</li>
<li><span style='color:green'>(stable)</span> public static final byte POP_DIRECTIONAL_ISOLATE</li>
<li><span style='color:green'>(stable)</span> public static final byte RIGHT_TO_LEFT_ISOLATE</li>
</ul>
UProperty
<ul>
<li><span style='color:green'>(stable)</span> public static final int BIDI_PAIRED_BRACKET</li>
<li><span style='color:green'>(stable)</span> public static final int BIDI_PAIRED_BRACKET_TYPE</li>
</ul>
UScript
<ul>
<li><span style='color:green'>(stable)</span> public static final int CAUCASIAN_ALBANIAN</li>
<li><span style='color:green'>(stable)</span> public static final int MAHAJANI</li>
<li><span style='color:green'>(stable)</span> public static final int MIAO</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
BreakIterator
<ul>
<li><span style='color:orange'>(draft)</span> public int <i>getRuleStatus</i>()</li>
<li><span style='color:orange'>(draft)</span> public int <i>getRuleStatusVec</i>(int[])</li>
</ul>
ListFormatter
<ul>
<li><span style='color:orange'>(draft)</span> public java.lang.String <i>format</i>(java.util.Collection<?>)</li>
</ul>
TimeUnitFormat
<ul>
<li><span style='color:orange'>(draft)</span> public static final int NUMERIC</li>
<li><span style='color:orange'>(draft)</span> public java.lang.String <i>formatTimePeriod</i>(TimePeriod)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
<li><span style='color:orange'>(draft)</span> public final class <i>TimePeriod</i></li>
TimeZone
<ul>
<li><span style='color:orange'>(draft)</span> public static java.lang.String <i>getIDForWindowsID</i>(java.lang.String, java.lang.String)</li>
<li><span style='color:orange'>(draft)</span> public static java.lang.String <i>getWindowsID</i>(java.lang.String)</li>
</ul>
VersionInfo
<ul>
<li><span style='color:green'>(stable)</span> public static final VersionInfo UNICODE_6_3</li>
</ul>
</ul>

<hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Tue Jul 09 18:14:18 EDT 2013<br/>Copyright (C) 2013, International Business Machines Corporation, All Rights Reserved.</font></i></p>
</body>
</html>
