[gameprogrammer] Re: Carmack on Java phone games

  • From: Bob Pendleton <bob@xxxxxxxxxxxxx>
  • To: Gameprogrammer Mailing List <gameprogrammer@xxxxxxxxxxxxx>
  • Date: Tue, 29 Mar 2005 12:34:57 -0600

On Mon, 2005-03-28 at 19:07 -0600, Chris Nystrom wrote:
> On Tue, 29 Mar 2005 00:40:53 +0200, Frank Henry <frank.henry@xxxxxxx> wrote:
> > 
> > Now you can say what you want about java but it does its job and that
> > quite well.
> 
> But point of fact it does not do its job. I quote from and agree with John:
> 
>   "Write-once-run-anywhere. Ha. Hahahahaha."
> 
> Is this not the whole point of Java? A safer C was a secondary goal I
> think. The latter is nice, but what was really needed was the former.
> 
> Anyway, I think the real question is why did Java fail to meet its
> design goals? 

Java did not fail to meet its design goals. You can write a Java program
that will run on anything that runs Java because Java really is designed
to run on any thing. What I just said is true of Java the *language*. It
is also true of C and C++ and many other programming languages. The
*langauge* is portable. What isn't portable are the majority of the
libraries and most applications written in the language.

It is a simple academic exercise to design, and even implement, a
portable language. But, as soon as the language has to run on real
hardware and access real devices and services the portability breaks
down. The language is still portable, but *applications* written in that
language may not be. The simplest example is memory. If an applications
is written to use 16 megabytes it will not run a machine with 1
megabyte. Ok, with virtual memory it might execute... but I wouldn't
call it running, more like crawling.

An example closer to game programming would be 3D graphics. You can have
a 3D graphics API that is portable to any device with a video display.
That doesn't mean programs written for that API will be *usable* on any
device with a display. The display has to meet the performance
requirements of the application to make the application usable. The
display can meet all the requirements of the API spec and still be
totally unusable.

Another example would be the Java database API. Great API. Totally
non-portable to an environment that doesn't have a database.


> Which is bad? The concept, the design, or the
> implementation? Maybe it just needs more time to mature, but Java has
> been around for what 8-10 years now?

I know I am being pedantic. Please forgive me. Designing a portable
language is trivial. Designing a system that guarantees application and
library portability is impossible because real hardware has physical
limitations. What I am saying is that Java is "technically" portable but
for all practical purposes programs written in Java are not and can not
be portable.

A long time ago I was busily writing 68k assembly language code for a
strange little box I was working on when the head of marketing (also the
president of the company) walked into the lab and asked me if it was
possible to make the box do "blippo" (meaning I don't remember what). I
thought about it for a minute and said, "sure, it could do that". A
couple of months later I was covering the phones because everyone else
was at a trade show (very small company) when I got a phone call from a
very angry man. It seems he had paid for 4 of our boxes with the
"blippo" functionality and he wanted them *now*. Of course, we didn't
have any such box to send him. So, I told him he would have to call back
when the president of the company was back...

After a few minutes I realized that the same guy (the president) had
asked me a lot of questions like that. So, I went into his office and
tried to check the sales files. The files were locked, but engineers
know how to use tools and locking desk drawers are only held on by a few
screws. Engineers understand screws and that technical knowledge coupled
with a screw driver and ten minutes got me into and out of the files
with no visible marks on the desk. It seems the guy had sold, or tried
to sell, a box with every feature he had ever asked me about. There was
a good 5 years of development needed to meet all his commitments. The
punch line is that the company went broke, he barely avoided jail for
fraud, and I learned an important lesson. Never tell marketing people
the truth, always direct them to your boss. 

What does this have to do with Java? I can just imagine that one day the
Java team was having a meeting with upper management and the head of
Marketing was there. He asked, "So... what you are saying is that with
this language you can write code that will run anywhere?" and Gosling
said something like "Well, yeah... theoretically...". And the rest is a
marketing blunder like the world hasn't seen for a very long time.

                Bob Pendleton



> 
> Chris
> 



---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html


Other related posts: