# Language Bindings

Although the GNOME platform is written primarily in C, it is written intentionally to make it easy to bind to other programming languages. Using language bindings, you can develop with the GNOME platform natively in your programming language of choice.

Language bindings exist for many programming languages, and the GNOME platform officially supports bindings for C++, Java, Perl, and Python.

## C++

The C++ bindings provide complete coverage of the GNOME platform, including GTK+, Glade, and GConf. The C++ bindings wrap all objects with native C++ objects and allow programmers to provide custom widgets with normal C++ inheritence. They provide a fully native API, with type-safe signal handlers, full use of the standard C++ library, and complete C++ memory management.

For more information on the GNOME C++ bindings, visit the gtkmm web site.

## Java

The Java bindings provide complete coverage of the GNOME platform, including GTK+, Cairo, and GConf. The Java bindings wrap all objects with native Java objects and allow programmers to provide custom widgets with normal Java inheritence. They provide a fully native API, using Java's class libraries and interfaces wherever appropriate.

For more information on the GNOME Java bindings, visit the Java-GNOME web site.

## Perl

The Perl bindings provide native Perl interfaces for the GNOME platform, including GTK+, GnomeVFS, and GConf. The Perl bindings wrap all objects with Perl objects and allow programmers to use standard Perl practices to manipulate them. They provide a fully native API, using Perl's native data types wherever appropriate.

For more information on the GNOME Perl bindings, visit the gtk2-perl web site.

## Python

The Python bindings provide native Python interfaces for the GNOME platform, including GTK+, GnomeVFS, and GConf. The Python bindings wrap all objects with native Python objects and allow programmers to provide custom widgets with normal Python inheritence. They provide a fully native Python API which automatically handles details like type casting and memory management.

For more information on the GNOME Python bindings, visit the PyGTK web site.

## Other Languages

Full or partial bindings exist for many other programming languages, such as C#, Eiffel, JavaScript, Ruby, and Scheme. Even though they may not currently be officially supported by GNOME, many of these bindings are of the same high quality as the official GNOME bindings, and some of them may be included as official GNOME bindings in future releases.

For a list of language bindings, visit the GTK+ bindings page.