
                          Debian Java FAQ.


---------------------------------------------------------------------
                                  
                           Torsten Werner

                        <twerner@debian.org>

                            Niels Thykier

                         <niels@thykier.net>

                   Javier Fernández-Sanguino Peña

                          <jfs@debian.org>

                           Sylvestre Ledru

                       <sylvestre@debian.org>

                           Shirish Agarwal

                       <shirishag75@gmail.com>

                         Release: 0.57build1

---------------------------------------------------------------------

Date: 2025-12-15

Abstract

Answers to Frequently Asked Questions on Debian and Java (Note: some
information is not up-to-date). Any changes/corrections to this FAQ
are appreciated. Please send them to the Debian Bug Tracking System
as described in Section 1.3, “Sending bugs on this FAQ”.

---------------------------------------------------------------------

Table of Contents

1. Introduction
    1.1. Introduction to this FAQ
    1.2. Location of this FAQ
    1.3. Sending bugs on this FAQ
    1.4. What is Java?
    1.5. Where can I ask questions about Java on Debian?
    1.6. Complementary information
    1.7. Uncovered issues
2. Java Development
    2.1. What full-fledged Java development platforms are available
    in Debian?
    2.2. What free platforms are there and how can I contribute?
    2.3. Questions on platforms and license concerns
        2.3.1. Java 7 and 8
        2.3.2. Oracle proprietary JVM
    2.4. Making Debian packages for Java programs.
        2.4.1. Can the package go into main?
        2.4.2. Is there a good example Debian package?
        2.4.3. What tools are available to make maintaining a Java
        packages easier?
        2.4.4. Linking package Javadoc to system javadoc.
3. Managing Java (for users and administrators)
4. Java Virtual Machines (JVM)
    4.1. What JVMs are available in Debian?
    4.2. What Java Compilers are available in Debian?
    4.3. What API do these JVMs provide?
    4.4. Are there known problems?
    4.5. How can I use the proprietary version of the JDK/JRE from
    Oracle as a Debian package?
    4.6. Do I need a JVM to run a Java program in Debian?
5. Java Plugins for Browsers
6. Java Servlets
    6.1. How can I make Java servlets work?
7. Java Policy
    7.1. Is there a Java policy for Debian?
    7.2. Are there holes in the Java Policy?
8. Other Java alternatives for Debian
    8.1. Java programs not yet available on Debian

Chapter 1. Introduction

1.1. Introduction to this FAQ

    This FAQ was started by Javier Fernández-Sanguino who on February
    1st, 2000 was enough to send a message to the debian-java mailing
    list with the subject "How about a Debian-Java-FAQ?". Of course,
    since "every idea is a responsibility" he had to do this himself
    looking through the three month-long archive of the newborn
    mailing list.

    The purpose of this FAQ is to be a place to look for all kinds of
    questions a developer or user might have regarding Java as far as
    Debian is concerned. It includes license issues, development
    packages available, and programs related to building a Free
    Software Java environment.

    Thanks go to all the (many) contributors from the debian-java
    mailing list, who have made this document possible. Without their
    knowledge this FAQ would not be at all possible since I only have
    a vague knowledge of what they're talking about when I browse the
    list.

    Special thanks go to Paul Reavis, whose previous Debian-JDK
    informational page I used to add more information, and who made
    useful suggestions to this document. Also to Peter Moulder who
    revised thoroughly the FAQ and provided many suggestions, to
    Juergen Kreileder, maintainer of Blackdown's debian packages who
    pointed out some mistakes, and to Egon Willighagen, who has
    provided quite a lot of proper patches to update its content.

    This document does not address issues with other Linux
    distributions, or with non-Debian-specific problems.

1.2. Location of this FAQ

    This FAQ is published under the Debian Documentation Project at
    https://www.debian.org/doc/manuals/debian-java-faq/. The
    java-policy (available at https://packages.debian.org/
    java-policy) provides an HTML version for offline reading. The
    package version does not provide Text and PDF versions currently
    (if you want them please submit a bug 'wishlist' to the package).
    Also, the web version might be more up-to-date than the package's
    offline version.

1.3. Sending bugs on this FAQ

    Please note that this FAQ is still outdated but gets updated step
    by step.

    Please file bug reports against the java-policy package if you
    find errors or have suggestions on how to improve this document.
    However, make sure you have read the latest online version of the
    english text available at https://www.debian.org/doc/manuals/
    debian-java-faq/index.html before filing a bug report.
    Translations, if available, and the offline version in the
    java-policy package might be out of date.

1.4. What is Java?

    Java is a programming language originally developed by James
    Gosling at Sun Microsystems (which is now a subsidiary of Oracle
    Corporation) and released in 1995 as a core component of Sun
    Microsystems' Java platform. Since May 2007, Sun/Oracle with some
    partners like Red Hat provide a free implementation released
    under the GNU GPL called OpenJDK. More information can be found
    at Wikipedia.

1.5. Where can I ask questions about Java on Debian?

    The appropriate place to ask such questions is <debian-java at
    lists.debian.org>. You can subscribe at the Debian Mailing Lists
    page.

1.6. Complementary information

    Users might want to access some online sources to complement the
    information available in this FAQ which might be, sometimes, too
    out of date. The main source of information is the Java entry at
    the Debian's wiki.

    Since Ubuntu is based on Debian, some users might find it helpful
    to check the tips on Installing Java on Ubuntu's wiki.

1.7. Uncovered issues

    This FAQ does not describe some issues due to lack of time and/or
    information. If you are able to help in any of these, please,
    provide them to the documentation maintainer:

      * Information on how to setup a fully working Servlet engine
        (Application Server) using Apache and Tomcat or information
        on how to setup non-free application servers (such as
        WebSphere) in Debian.

      * Specific information targeted for non-i386 users (PowerPC
        users and AMD64 users), some can be found in Ubuntu's wiki.

Chapter 2. Java Development

2.1. What full-fledged Java development platforms are available in
Debian?

    If you are looking for an integrated, java virtual machine,
    compiler and runtime environment Debian does provide them. Of
    course that would depend on the Debian GNU/Linux version you are
    using, generally speaking they would be:

      * Sun's OpenJDK 7, available since the Debian 8.0 Jessie
        release in the main section.
   
      * Oracle's OpenJDK 8, available since the Debian 9.0 Strech
        release in the main section.

    It is recommended to install one of the default-jdk or
    default-jre meta packages which installs the default version of
    OpenJDK for the current Debian version.

2.2. What free platforms are there and how can I contribute?

    Please help one of the Free Java implementations if you want to
    use Java in Debian. There are a lot of projects that you can
    choose from:

      * openjdk: https://openjdk.java.net/
   
      * Mauve https://sources.redhat.com/mauve/ is a free suite to
        test if these tools are 'compliant'.

2.3. Questions on platforms and license concerns

2.3.1. Java 7 and 8

    There are binary packages available for the Java 7 and Java 8
    platforms since the Debian 8.0 ('Jessie') release and Debian 9.0
    ('Stretch') release. Once this is done and you have updated your
    package database. You can either install the Java development kit
    in Jessie:

    apt-get install openjdk-7-jdk

    or the Java runtime environment:

    apt-get install openjdk-7-jre

    Similarly, you can install the Java 8 development kit in Stretch:

    apt-get install openjdk-8-jdk

    or the Java 8 runtime environment:

    apt-get install openjdk-8-jre

    You might want to update the alternatives system to have Sun's
    tools as the default:

    update-java-alternatives -s java-1.7.0-openjdk-amd64

    Or for java 8:

    update-java-alternatives -s java-1.8.0-openjdk-amd64

2.3.2. Oracle proprietary JVM

    Since the version 7 of the OpenJDK, the proprietary JVM
    developments are done on the OpenJDK. That means that the OpenJDK
    is strongly tested and high quality.

    However, some users might want to use the Oracle JVM for the
    proprietary extensions (for example: the browser plugin). For
    such need, Debian provides a tool called java-package. The
    program make-jpkg will take an upstream archive and convert it to
    a Debian package. For example:

        make-jpkg jdk-6u31-linux-x64.bin

    For more information see Oracle Technology Network Java.

2.4. Making Debian packages for Java programs.

2.4.1. Can the package go into main?

    Yes, but only if it can be build and run with Java programs/tools
    in main, and if it has a Debian compliant open source license. If
    it needs programs from contrib or non-free, then is must go into
    contrib or non-free, depending on the license of the program
    itself.

2.4.2. Is there a good example Debian package?

    There are many Debian packages of both Java applications and
    libraries. These may serve as an good starting point, as it can
    serve as an example for making a new Debian package.

    A good start would be to check out the pkg-java project on Salsa:
    https://salsa.debian.org/java-team/.

    Note that there are many ways to make a Debian package, making
    use of Ant or Makefiles does not really matter. But, some tips
    for good practice are given on the Debian Java packaging page:
    https://java.debian.net/.

2.4.3. What tools are available to make maintaining a Java packages
easier?

    Both cdbs and debhelper (dh9) have support for ant scripts. There
    are also a number of specialized tools or build helpers. Have a
    look at javahelper or maven-debian-helper.

2.4.4. Linking package Javadoc to system javadoc.

    The java-policy mandates that documentation must be linked with
    the javadoc installed on the system. This can be done by passing
    javadoc the "-link" argument or by using the <link> tag in ant.
    An example:

    # command line example of linking against system doc.
    javadoc -link /usr/share/doc/default-jdk-doc/api [other arguments]

    
    <javadoc [attributes]>
        
        [other tags]
    </javadoc>

    The documentation must be installed at the time the linking is
    done; so in the example cases above the package would need a
    Build-Depends or a Build-Depends-Indep on default-jdk-doc.

    Here is a short list of packages that can be used for reference:

      * libcommons-jci-java
   
      * libhamcrest-java

Chapter 3. Managing Java (for users and administrators)

    By default Java programs shipped with Debian will use the java in
    PATH. Some of them may respect the JAVA_HOME variable (usually
    only if upstream supports this) or have command line arguments to
    select a different java implementation.

    Unfortunately not all java implementations work as well as
    others. So some times it may be necessary to change the current
    java and Debian provides an easy way to change the default java
    in PATH by using update-java-alternatives (from the java-common).
    Some examples of how to do this are:

    # List available java implementations
    $ sudo update-java-alternatives --list
    # Use openjdk-7
    $ sudo update-java-alternatives --set java-7-openjdk

    For more information, please read the manpage (or the --help
    output) of update-java-alternatives. Also please note that
    update-java-alternatives is a frontend for update-alternatives.

Chapter 4. Java Virtual Machines (JVM)

4.1. What JVMs are available in Debian?

    The following JVMs are currently available in Debian Jessie:

      * openjdk-7-jre

    The following lists JVMs available in Debian 9.0 release
    ('Stretch'):

      * openjdk-8-jre

4.2. What Java Compilers are available in Debian?

      * openjdk-7-jdk
   
      * openjdk-8-jdk

    Compiles Java source to native code, also source to bytecode, or
    bytecode to native code. Please note that the support of the Java
    language is not completed.

4.3. What API do these JVMs provide?

    Note that providing an API does not mean that everything is
    implemented, and certainly not implemented correctly.

4.4. Are there known problems?

    Yes, there are. Some of these are reported as Debian bugs. You
    can look up the bugs for a specific Debian package at the Debian
    Bug Tracking System. As a quick link, here are some packages:

      * java-common

      * openjdk-7

      * openjdk-8

    As common within the Debian project, the developers would
    appreciate good bug reports on found problems. These include the
    good description of the problem, the command that gives the
    problem, the errors given when running the command, and any other
    information that might be relevant. A good tool to report bugs is
    reportbug.

4.5. How can I use the proprietary version of the JDK/JRE from Oracle
as a Debian package?

    The package java-package provides an easy way to convert an
    upstream installer into a Debian package. It should be as easy
    as:

    make-jpkg ~/Downloads/jdk-6u31-linux-x64.bin

    For more information, see this Blog article

4.6. Do I need a JVM to run a Java program in Debian?

    No, you can try to run the applications without a jvm by
    compiling the source code to native code is. However, the usage
    of the OpenJDK is recommended.

Chapter 5. Java Plugins for Browsers

      * You can install the package icedtea-7-plugin or
        icedtea-8-plugin in jessie

Chapter 6. Java Servlets

6.1. How can I make Java servlets work?

    You can use:

      * Apache tomcat7 from https://tomcat.apache.org.
   
      * Eclipse jetty from https://www.eclipse.org/jetty/.

Chapter 7. Java Policy

7.1. Is there a Java policy for Debian?

    It is still in the works. The current policy addresses some of
    the problems. It has not been officially released. You can find
    it at https://www.debian.org/doc/packaging-manuals/java-policy/.
    The Java Policy can also be found in the java-policy package.

7.2. Are there holes in the Java Policy?

    Yes, some until under discussion. Please check out the bugs
    against the java-policy package. Thus it is very inconvenient to
    use several compilers of virtual machines since there is not one
    CLASSPATH setting for all of them.

Chapter 8. Other Java alternatives for Debian

    If the Java packages provided in Debian are not sufficient for
    your needs you might need to take a look at other alternatives.
    Please understand that these alternatives are not supported by
    the Debian project directly, you might get help, however, from
    the debian-java mailing list if you encounter issues with them.

    Some of the alternatives presented use Debian packages which is
    convenient, since the user/administrator does not need to care on
    installation issues. However, mixing packages that come from a
    source which is not the Debian project might cause conflicts with
    your installation some times. Of course, Debian tries to
    integrate as many free software efforts as possible, so some of
    the alternatives described below might (if license permits) be
    included in Debian in the near future.

8.1. Java programs not yet available on Debian

    The following are programs that have not yet been packaged for
    Debian nor is there an installer. There are quite a lot Java
    programs out there.

    A list of missing packages is maintained on the Debian Wiki -
    Java Packaging Wishlist.

