Whole document tree
    

Whole document tree

Debian Java FAQ. - Introduction
[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ next ]

Debian Java FAQ.
Chapter 1 - Introduction


1.1 Introduction to this FAQ

This FAQ was started by Javier Fernández-Sanguino who on Feb 1st, 2000 was (bold?) 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 kind of question 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, which I found had written a Debian-JDK informational page previously, which I used to add more information, and made useful suggestions to this document. Also to Peter Moulder who revised thoroughly the FAQ and provided many suggestions, and to Juergen Kreileder, maintainer of Blackdown's debian packages who pointed out some mistakes.

This document does not address issues with other Linux distributions, or with non-Debian-specific problems. See the Blackdown pages for information on these. More specifically you might want to check out the Java Linux FAQ.


1.2 What is java?

Java is a strongly-typed platform-independant object-oriented programming language often associated with the World Wide Web. Java was developed by Sun Microsystems for embedded applications, but has since grown to become a general-purpose programming language. Java source code can either be compiled to a machine-independant byte-code that can be run by Java virtual machines, or it can be compiled directly to executable code for any number of platforms, including Linux, Win32, and others. A common API, shipped with all Java development environments, provides socket support, a graphical user interface widget set, graphical drawing tools, standard IO, events, math, database interfaces, and multithreading, to name a few. The multithreading support can happen either in kernel threads or userland threads, depending on the implementation of the Java virtual machine used.


1.3 Why would I be interested in Java?

TODO


1.4 What is a JIT?

Acronym for Just In Time, A VM plugin to speed up VM execution by compiling bytecode to native machine code.


1.5 Where can I read more about Java?

Of course, http://java.sun.com would be the first place to read information on Java, right from the company who started it. However good places for Java and Linux could be:

Other sites regarding Java would be:

If you are browsing the web for free Java information try starting with Open-Source Java , if you are looking for applets with source code look at http://javaboutique.internet.com/javasource.html. Check also What free platforms are there and how can I contribute?, Section 2.2


1.6 Status of Java in Debian

The first thing you should understand about the design strategy of Debian is that our goal is to produce a 100% Free software platform. In that sense, some of these tools are not available in the standard Debian distribution for licensing reasons as opposed to some technical motivation.

That said, basically all of the technologies you might ask about can be or are available for Debian immediately. In order to usefully answer your questions, however, here you have a status from an Open Source availability perspective.

If you are really interested, read the following: http://www.debian.org/Lists-Archives/debian-java-9912/msg00015.html and http://www.debian.org/Lists-Archives/debian-java-9910/msg00017.html. This section is a summary of the information therein.


1.6.1 Java1 compiler (.java to .class)

There is the Kopi Java Compiler written in Java. And the super fast Jikes written in C++.

Gcj can also compile .java to .class. CVS version currently does handle inner classes, as well as any other jdk 1.1 constructs, but might not be able to compile a complicated program like the XSL processor xt. It is written in C, so is reasonably fast. It generates reasonably good bytecode. And of course being able to use the same compiler for .java to .class and .java to native has its advantages.


1.6.2 Java1 JVM/JIT

Kaffe 1.0.5 is largely feature complete and now includes support for RMI. It is not clear as to whether Kaffe's serialization is "binary compatible" with Sun's implementation in all cases so there may be interoperation issues in some casses. Kaffe comes with a big class library.

Japhar is also available.

libgcj (the run-time library for gcj) now includes an interpreter and ClassLoader.

tya, a JIT compiler, is also available.


1.6.3 Java1 native compiler

GCC, the Gnu Compiler Collection comes with GCJ, the Gnu Compiler for Java


1.6.4 Java2 native compiler

It is unclear whether native compiler refers to the adaptive JIT capabilities in Java2 or to a compiler that understands Java2 semantics. In either case, Kaffe's JIT strategy is not adaptive but performs correctly, and improving, it is believed IBM's Jikes compiler understands Java2 concepts such as weak references.


1.6.5 Java2 foundation libraries

Many of these components have been cloned under a Free Software license. Kaffe provides many of these routines, including an up-to-date RMI implementation. There are, however, definitely shortcomings. Swing, as far as we know, has not been cloned.


1.6.6 Debugger (jdb equivalent)

Debian has no debugger currently.

Gdb can debug native code produced by Gcj. Stuart Grossman (Cygnus) also wrote support for Gdb to debug other VMs using JVMDI. This has not been released, because the Gdb internals were changed at the same time, and no-one has had time to re-integrate the changes. We can probably get Cygnus to release the old code, if someone wants to look into getting this stuff working with the current Gdb internals. (A non-trivial job.)

See http://sourceware.cygnus.com/java/gdb.html on how to debug gcj-compiled Java programs.


1.6.6.1 What free edit-interactive/graphical debugging tools are available on Debian?

jde, ddd, more?

One of the some nice features of jde are autoindention and syntax highlighting, but it also supports debugging and compilation.


1.6.6.2 Known problems

My version of jdb (jdb version 98/01/06) terminates after a program finishes execution, and I have to reset every breakpoint if I want to run through the program again. This makes using jdb extremely frustrating. Jdb also can't (easily) print the values in an array which is more than three elements long. Ddd lets me work around both of these annoyances.

ddd 3.1 and earlier would "hang" when receiving certain prompts with wierd thread names from jdb. This made it very hard to use ddd with jdb. This has been fixed in ddd 3.2. It doesn't look like ddd 3.2 has been packaged yet. I suspect the current packaged version of ddd won't work well with jdb.


1.6.7 Appletviewer tool

There are some alternatives for an appletviewer tool:

  • Blackdown's appletviewer (in jdk1.1).
  • Kaffe's appletviewer.
  • Ibm's appletviewer (in ibm-jdk).

1.6.8 Jar tool

FastJar which is indeed very fast.


1.6.9 Javadoc tool

doc++ can work with C++ and Java.


1.6.10 Enterprise Java Beans (EJB)

There is activity in this area, the most noteworthy being the Open Source EJB implementation from Bull in France called Jonas. I have done some work with this system and it provides a good start towards a full EJB feature set. In particular, it provides a transaction monitor and a container based persistance implementation. I have used this system on Linux with free databases such as Postgresql. I have not been able to get the system fully operational on Kaffe. Additionally, the system depends on many Sun APIs which have not been cloned (JTA, JNDI, and EJB itself).


1.6.11 JAIN

It seems to be a system for controlling large scale, integrated communications infrastructures and modeling events with such networks via the JavaBeans API. The scale of this effort seems very large and encompasses the work of many organizations. The work is very new and seems to tie into Sun's SCSL strategy, which leads us me to believe that there is not much in the way of Open Source options in this area. However, some protocols such as H.323 are genuinely open and are even cloned so it is possible that chunks of the JAIN system may exist in a scattered manner. We have no knowledge of a serious Free Software implementation of RTP or the H.323 infrastructures in Java.


1.6.12 Jini

Jini presents an especially pronounced Free Software problem. Jini is only available as source from Sun and that source is only available under the SCSL. The SCSL is not compatible in any sense with either the legal mechanics or the political spirit of Free Software. The SCSL also makes cloning the API of an SCSL implementation illegal which precludes even a clean room replication of Jini. If you are interested in tuple space type implementations there are Open Source options.


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ next ]

Debian Java FAQ.

1.0 7 April 2002Thu, 7 Dec 2000 19:10:13 +0100
Javier Fernández-Sanguino Peña jfs@computer.org