The Jax project from 1998-2003 aimed to shrink Java applications for faster downloading and use on embedded devices. It used static analysis and program transformations like method inlining and class merging to remove unused code. Its call graph construction relied on type-based algorithms like CHA, RTA, and XTA. Jax was used by IBM teams and integrated into Smartlinker to optimize apps for IBM's WebSphere. It reduced app sizes by 30-50% and improved performance. Lessons included debloating being broadly applicable and future work in scenario-based modular optimization.