Design Docs‎ > ‎Size Reduction‎ > ‎

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