This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ARM support


James Mansion wrote:

No, it because the basic class library is very interconnected.
java.io is tied up with java.util which is tied up with java.text
which is tried up with internationization.  Even "hello world"
ends up referencing a lot of classes, even without reflection.


Out of interest, does anyone know whether mono does better?

You should ask about C#, the language, not Mono, the implementation, because the problem isn't with Gcj's implementation of Java, but with the Java "specification" - or rather the JDK.

Many, perhaps most, of the interdependencies are because of the
parameter and result types of the public methods.  That's what makes
it hard - if it was just implementation interdependencies we could
probably fix those.

Now there are a number of techniques and ideas that can solve or
reduce the problem.  Some have been implemented for C++ but not Java.
Here I'm thinking: If nobody calls a method foo(), then we can remove
it from the binary.  The complication is determining this fact when
foo() is a virtual method.  Standard static linkers won't handle this
well, because they see that the method is references from some virtual
method tables.  A smarter linker can do much better, but it needs to
understand how virtual- and interface- methods are implemented.

The problem is that there is no quick fix, most of us are volunteers,
and there isn't much motivation to work for free on a problem that
mostly effects people developing commercial applications.  Not
that we wouldn't love to have a solution, but it's too big a problem
to work on in our unpaid spare time.
--
	--Per Bothner
per@bothner.com   http://per.bothner.com/



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]