TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy


Options: Use Classic View

Use Monospaced Font
Show Text Part by Default
Condense Mail Headers

Topic: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Sender: "Team Ada: Ada Advocacy Issues (83 & 95)" <[log in to unmask]>
X-To: Roger Racine <[log in to unmask]>
Date: Tue, 11 Apr 2000 11:55:45 -0400
Reply-To: Tucker Taft <[log in to unmask]>
From: Tucker Taft <[log in to unmask]>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=us-ascii
Organization: AverStar (formerly Intermetrics) Burlington, MA USA
MIME-Version: 1.0
Parts/Attachments: text/plain (47 lines)
Roger Racine wrote:
> I admit I do not know Java, but from your description below I have one
> question.
> Ada allows pointer arithmetic.  It is difficult (unchecked conversion is
> needed) but possible.  Does Java have any means of "breaking" its
> references (turning them into integers and back again)?  If not, then their
> statements are true.

Nope, they are confused.  Since I was intimately involved in developing
the Ada => Java byte code compiler, I can tell you that we can't circumvent
any Java security via Ada.  You can write whatever crud you want in your
Ada source code, but we are still obligated to generate Java byte codes
that go through the byte-code verifier, and that means you can't
do address arithmetic.  There are no "secret" byte codes that Ada
generates that Java doesn't.

Note that there is a Java byte code assembler available as well, which
allows you to choose to produce whatever byte codes you want.  These
byte-code assembler programs are just as safe as those written in
Java source code.  The only difference is user friendliness.  If
the byte code verifier rejects your code, you get a nasty low-level
generally uninterpretable message.  If the compiler rejects your
code, it generally gives a slightly friendlier message.

I also wonder whether COE outlaws use of the "Java Native Interface" (JNI),
which allows you to call code written in other languages (e.g. C) from Java.
If they allow that, then that is a much more significant "security" hole.
Via JNI you can pretty much destroy the Java virtual machine, since you
are running in the same address space as the JVM.

> Roger Racine
> ...
> Roger Racine
> Draper Laboratory, MS 31
> 555 Technology Sq.
> Cambridge, MA 02139, USA
> 617-258-2489
> 617-258-3939 Fax

-Tucker Taft   [log in to unmask]
Technical Director, Distributed IT Solutions  (
AverStar (formerly Intermetrics, Inc.)   Burlington, MA  USA