<?xml version="1.0" encoding="utf-8"?>
<!-- -*- indent-tabs-mode: nil -*- -->
<chapter id="bindings">
  <title>Language Bindings</title>

  <para>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.</para>

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

<section id="cpp">
  <title>C++</title>
  <para>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.</para>

  <para>For more information on the GNOME C++ bindings, visit <ulink url="http://www.gtkmm.org/">the gtkmm web site</ulink>.</para>
</section>

<section id="java">
  <title>Java</title>
  <para>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.</para>

  <para>For more information on the GNOME Java bindings, visit <ulink url="http://java-gnome.sourceforge.net/">the Java-GNOME web site</ulink>.</para>
</section>

<section id="perl">
  <title>Perl</title>
  <para>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.</para>

  <para>For more information on the GNOME Perl bindings, visit <ulink url="http://gtk2-perl.sourceforge.net/">the gtk2-perl web site</ulink>.</para>
</section>

<section id="python">
  <title>Python</title>
  <para>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.</para>

  <para>For more information on the GNOME Python bindings, visit <ulink url="http://www.pygtk.org/">the PyGTK web site</ulink>.</para>
</section>

<section id="other-bindings">
  <title>Other Languages</title>
  <para>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.</para>

  <para>For a list of language bindings, visit <ulink url="http://gtk.org/bindings.html">the GTK+ bindings page</ulink>.</para>
</section>

</chapter>
