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

<hr/>
<h2>Removed from ICU4J 4.8</h2>
<p>(no API removed)</p>

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

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

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

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

<h3>Package com.ibm.icu.charset</h3>
<ul>
CharsetEncoderICU
<ul>
<li>(draft)      public static int <i>getMaxBytesForString</i>(int, int)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.text</h3>
<ul>
<li>(draft)      public final class <i>MessagePatternUtil</i></li>
<li>(draft)      public static class <i>MessagePatternUtil.ArgNode</i></li>
<li>(draft)      public static class <i>MessagePatternUtil.ComplexArgStyleNode</i></li>
<li>(draft)      public static class <i>MessagePatternUtil.MessageContentsNode</i></li>
<li>(draft)      public static final class <i>MessagePatternUtil.MessageContentsNode.Type</i></li>
<li>(draft)      public static class <i>MessagePatternUtil.MessageNode</i></li>
<li>(draft)      public static class <i>MessagePatternUtil.Node</i></li>
<li>(draft)      public static class <i>MessagePatternUtil.TextNode</i></li>
<li>(draft)      public static class <i>MessagePatternUtil.VariantNode</i></li>
<li>(draft)      public class <i>TimeZoneFormat</i></li>
<li>(draft)      public static final class <i>TimeZoneFormat.GMTOffsetPatternType</i></li>
<li>(draft)      public static final class <i>TimeZoneFormat.Style</i></li>
<li>(draft)      public static final class <i>TimeZoneFormat.TimeType</i></li>
<li>(draft)      public abstract class <i>TimeZoneNames</i></li>
<li>(draft)      public static class <i>TimeZoneNames.MatchInfo</i></li>
<li>(draft)      public static final class <i>TimeZoneNames.NameType</i></li>
FilteredNormalizer2
<ul>
<li>(draft)      public int <i>getCombiningClass</i>(int)</li>
</ul>
IDNA
<ul>
<li>(draft)      public static final int CHECK_CONTEXTO</li>
</ul>
Normalizer2
<ul>
<li>(draft)      public int <i>getCombiningClass</i>(int)</li>
</ul>
SimpleDateFormat
<ul>
<li>(draft)      public TimeZoneFormat <i>getTimeZoneFormat</i>()</li>
<li>(draft)      public void <i>setTimeZoneFormat</i>(TimeZoneFormat)</li>
</ul>
</ul>

<h3>Package com.ibm.icu.util</h3>
<ul>
<li>(stable)     public static final class <i>ULocale.Category</i></li>
LocaleData
<ul>
<li>(draft)      public static final int ES_PUNCTUATION</li>
</ul>
TimeZone
<ul>
<li>(draft)      public static final TimeZone GMT_ZONE</li>
<li>(draft)      public static final TimeZone UNKNOWN_ZONE</li>
</ul>
ULocale
<ul>
<li>(stable)     public static ULocale <i>getDefault</i>(ULocale.Category)</li>
<li>(stable)     public static synchronized void <i>setDefault</i>(ULocale.Category, ULocale)</li>
</ul>
</ul>

<hr/>
<p><i><font size="-1">Contents generated by ReportAPI tool on Tue Oct 04 16:06:10 EDT 2011<br/>Copyright (C) 2011, International Business Machines Corporation, All Rights Reserved.</font></i></p>
</body>
</html>
