Feature Comparison Chart
This table lists down the differences between the functions provided by ICU, ICU4J and JDK.
In the case where ICU and JDK supports the same functionality, ICU has a more updated implementation that is Unicode conformant.
Functions
ICU4C 4.0 or later
ICU4J 4.0 or later
JDK 6
unicode/uniset.h
com.ibm.icu.text.UnicodeSet
not available
UTF16 manipulation
Code point order comparison
Code unit order comparison
Unicode Character Iterator
unicode/ustring.h
unicode/unistr.h
unicode/utf.h
unicode/utf16.h
unicode/chariter.h
unicode/uiter.h
com.ibm.icu.lang.Character
com.ibm.icu.text.UTF16
com.ibm.icu.text.UCharacterIterator
java.lang.String
java.lang.Character
(Since Java 5)
not available
java.lang.String
java.text.CharacterIterator
unicode/ucnv.h
unicode/ucnv.h
unicode/csdetect.h
Default build: Converter Explorer
com.ibm.icu.text.SCSU
not available
com.ibm.icu.text.CharsetDetector
icu4j-charsets-version.jar
Same data as icu4c.
not available
not available
not available
Locale data
String and string array storage and retrieval
Binary storage and retrieval
Object and object array storage and retrieval
unicode/ures.h
unicode/ures.h
not available
Uses CLDR 1.5.0.1.
com.ibm.icu.util.UResourceBundle
com.ibm.icu.util.UResourceBundle
use Java
Supports the same locale data as in ICU4C.
java.util.ResourceBundle
none that are locale sensitive
java.util.ResourceBundle
Uses some CLDR data.
Calendar
Time Zone
Time Zone rule based retrieval / comparison
unicode/timezone.h
unicode/basictz.h
unicode/rbtz.h
com.ibm.icu.util.TimeZone
com.ibm.icu.util.BasicTimeZone
com.ibm.icu.util.RuleBasedTimeZone
java.util.TimeZone
not available
Extensible format base class
Date / time
Date / time, relative
Date / time duration
Decimals numbers
Message
Extensible number base class
Rule-based number
Choice
unicode/format.h
unicode/datefmt.h
unicode/datefmt.h
(use relative style)
not available
unicode/decimfmt.h
unicode/msgfmt.h
unicode/numfmt.h
unicode/rbnf.h
unicode/choicfmt.h
use Java
com.ibm.icu.text.DateFormat
com.ibm.icu.text.DateFormat
(use relative style)
com.ibm.icu.text.DurationFormat
com.ibm.icu.text.DecimalFormat
com.ibm.icu.text.MessageFormat
com.ibm.icu.text.NumberFormat
com.ibm.icu.text.RuleBasedNumberFormat
use Java
java.text.Format
java.text.DateFormat
not available
not available
java.text.DecimalFormat
java.text.MessageFormat
java.text.NumberFormat
not available
java.text.ChoiceFormat
Decomposition
Composition
Canonical string comparisons
String concatenation
Note: result string is normalized.
FC_NFKC closure set retrieval
unicode/uchar.h
unicode/ustring.h
unicode/unistr.h
unicode/ubidi.h
unicode/unorm.h
unicode/normlzr.h
com.ibm.icu.lang.UCharacter
com.ibm.icu.text.Bidi
com.ibm.icu.text.Normalizer
java.lang.Character
java.text.Bidi
java.text.Normalizer
(Since Java 6)
not available
not available
not available
not available
Dictionary-based break iterators
Line boundaries
Sentence boundaries
Word boundries
Rule-based break iterators
unicode/brkiter.h
unicode/brkiter.h
unicode/brkiter.h
unicode/brkiter.h
unicode/rbbi.h
com.ibm.icu.text.BreakIterator
com.ibm.icu.text.BreakIterator
com.ibm.icu.text.BreakIterator
com.ibm.icu.text.BreakIterator
com.ibm.icu.text.RuleBasedBreakIterator
not available
java.text.BreakIterator
java.text.BreakIterator
java.text.BreakIterator
not available