ICU4J Modularization
Misc Notes:
concerns about making coding inside icu4j more complicated since you can't depend on another part of icu4j
don't slice and dice too fine
code (1.8 MB (i18n) + 1.3MB (common)):
code components:
i18n: coll, format, regex, translit
common: conv, prop (hardcoded), str, breakiter, set
separate library targets for separate functionality
top level target which depends on all other targets
restructure code to remove dependencies: break away builder from runtime code
e.g. code for collator includes build and runtime
e.g. use reflection instead of builder / dependencies
same applies to unicodeset, breakiterator
split not just functionality, but also by frequency of use. (thus builders, and other code that isn't used very often)
data (13 MB):
monolithic 11mb data file -> break up into pieces
format, conv, coll, tz
locale dependent separation / data saving
mark: might be big win to break out data google never uses (some east asian)
but priority 4...last priority
1. separate data
2. separate code
3. split builders apart
4. split by locale