IceBox offers several advantages:
- For a language like Java where a program is executed in a virtual machine, being able to execute several independent services in the same JVM reduces memory utilization.
- For interdependent services in performance-sensitive applications, implementing them as IceBox services gives you the option of using collocated invocations between services. This optimization eliminates some of the overhead of a "remote" procedure call. Ice takes care of this automatically thanks to its location-transparency behavior.
- Building services as discrete entities forces developers to think in terms of independent components instead of monolithic applications, allowing you to deploy services in whatever combinations you choose.