An Overview of the Ice Platform

The Ice Approach: Flexible and Simple

Ice provides a communication solution that is simple to understand and easy to
program with. Yet, despite its simplicity, Ice is flexible enough to accommodate
even the most demanding and mission-critical applications.

Cutting-Edge Technology

Ice was designed and implemented by industry experts
with many years of distributed computing experience. ZeroC's class-leading technology is
flexible, easy to use, robust, and provides superior performance and scalability.

Programming Languages

Ice allows you to write your distributed applications in C++,
Java, C# (and other .NET languages,
such as Visual Basic), Python, Ruby,
PHP, and JavaScript. With
Ice Touch,
your application can include Objective-C components that run on the iPhone and iPad,
while Ice for Java can also be used to build Ice applications for
Android. This makes Ice the platform of choice for
heteregeneous distributed systems that span multiple operating systems and programming languages.

APIs

Ice provides a set of APIs that emphasize simplicity and ease of use. All APIs are
thread-safe and exception-safe, and the C++ APIs make it very difficult to leak or
corrupt memory. This shortens development time, decreases testing effort, and reduces
time to market.

The APIs for the various programming languages (apart from a very small number of
exceptions) are identical: for example, if you know the API for Java, you also know the
API for C++ and C# (and any other supported programming language). For systems written
in more than one language, this reduces the learning curve and allows reuse of design
patterns and implementation techniques.

Advanced Technology

Ice is much more than just a remote procedure call mechanism. For example, Ice
supports synchronous as well as asynchronous calls, co-exists with firewalls due to
its support for bidirectional connections, allows messages to be batched for efficiency,
and permits sophisticated control of threads and resource allocation. See
Ice Features for more detailed information.

Fault Tolerance and Load Balancing

Ice allows you to create systems that are fault tolerant. Multiple instances of a
server can be deployed on different machines, with transparent fail-over if a machine
crashes or is disconnected from the network. This not only makes applications resilient
against failures, but also increases performance because Ice allows you to balance the
load of a distributed system over several servers. Once a system takes advantage of
load balancing, it is easy to scale it to higher loads simply by adding more servers.

Performance and Scalability

Ice was designed from the ground up for applications that require the utmost in
performance and scalability. At the network level, Ice uses an efficient binary protocol
that minimizes bandwidth consumption. Ice uses little CPU and memory, and its highly
efficient internal data structures do not impose arbitrary size limitations. This allows
applications to scale to tens of thousands of clients with ease.

Ice is fast. So fast that, as a rule, it imposes no discernable overhead on a
distributed application. Data can be transmitted at whatever speed is supported by
the network, so Ice does not create any performance bottleneck. Our
Performance and Scalability white
paper provides a comparison with other popular distributed computing solutions.

Realistic Feature Set

Ice was developed to meet the demands of real-world distributed systems and it
incorporates extensive customer feedback. Ice provides realistic features that are
actually useful (as opposed to theorectical features that were considered possibly
useful by a committee).

Services

For realistic distributed systems, even the most sophisticated remote procedure
call mechanism is useless without additional infrastructure. Ice provides a rich set
of services, such as event distribution, firewall traversal
with authentication and filtering, automatic persistence, automatic application
deployment and monitoring, and automatic software distribution and patching. All
services can be replicated for fault tolerance, so they do not introduce a single
point of failure. Use of these services greatly reduces development time because they
eliminate the need to create distribution infrastructure as part of application development.
Our Ice Services page provides an overview of the different
services.

Security

Ice is inherently secure and suitable for use over insecure public networks.
Traffic can be encrypted with SSL, and a variety of authentication mechanisms ensure
that only authorized clients can access a system. Ice can work with existing firewalls:
a single port is sufficient to provide secure access for an unlimited number of clients
to an unlimited number of servers.

Web Integration

You can use Ice to integrate a distributed system with the web. Ice for JavaScript allows
you to run an Ice client inside a browser, and Ice for PHP makes it easy to
populate web content with data collected from back-end servers.

First-Class Documentation and Support

ZeroC prides itself on the industry-leading quality of its
documentation. The documentation
is arranged into topics by language mapping and programing task, so you can easily locate
a section of interest. The indexed and searchable text is available online and as a
PDF download suitable for off-line viewing. The
documentation includes many code examples that illustrate how to implement different
features, making it easy for programmers to learn implementation techniques and acquire
know-how. Beyond tutorial and reference material, the documentation covers many
non-trivial topics that are relevant for real-world application development.

ZeroC offers world-class support options with guaranteed response and
problem resolution times. Support is provided by the same engineers who develop Ice, in a prompt
and unbureaucratic manner, so you get help directly from our experts when you need it. ZeroC also
offers professional training and consulting services that help you get a development project up
to speed as quickly as possible.

Proven Solution

Ice is a solution with an established track record for many mission-critical applications,
ranging from battlefield simulations to real-time stock trading systems. Our
customer page shows a selection of companies that use Ice.