Motet Administrator (motet)
Hank is a Strategic Technologist at Silicon Graphics, responsible for
helping to define and then explain SGI's vision for web technologies
like Java and VRML.
Hank will be here to post his responses on Wednesday, May 14th.
Welcome, Hank!
Hank Shiffman (shiffman)
Hank is in the building! Posts to follow...
M Normal (miga)
So, Hank... I wonder what you think the future of the web holds, in a
general sense - do you think all these new standards and technologies
will cause fragmentation? Also, what do you think is the most
exciting thing going on on the web today?
Hank Shiffman (shiffman)
To me the most obvious point is that eventually we'll stop noticing
the web entirely. At this stage we're always conscious of the web
because of the tools and techniques we use: browsers, links, URLs and
so on. Over time I would expect (and hope) that all of that garbage
would disappear beneath the surface and we'd focus on the
applications.
The web is just another layer on top of operating systems, networks
and other junk that most of us take for granted. (At least until it
doesn't work!) I can't wait until the web is like that: both
ubiquitous and invisible.
As for the most exciting thing that's happening today, I personally
find the openness of the web to be its greatest virtue. When I
first started my web site
(http://www.disordered.org/), I did
it mostly for the experience. I never expected that people would
write from all over the world to share their experiences with things
that interested me. Having people communicate interest in graphics
or digital cameras or my travel experiences or cartoons or Star Trek
makes me feel connected to the world in a whole new way.
It a sense, personal web publishing is the vanity press of the 90s
and beyond. We write because we want to write. And, amazingly
enough, other people come to see what we've written and, if it's
any good, write back.
I think of an Ann Landers column where she trashed the web as
dehumanizing. She couldn't have been more wrong.
Judith Schwartz (judith)
Hank,
Would you explain what is different about the way SGI is dealing with
Java? What special tools exist? If the whole point is that Java can
run on any platform, what impact does using an SGI machine for
development have?
Thanks.
Hank Shiffman (shiffman)
There are probably several different answers to this one. Our
Java work falls into three categories: core Java technology (the
compiler, native code translation, development tools), extending
Java (the external authoring interface for Cosmo Player that lets
a Java programmer extend and control a VRML scene) and using Java
(Cosmo Color has Java-based components). We have always had a
strong emphasis in visualization, both through hardware and software.
A lot of our work with Java has been involved in defining or helping
to define new APIs. We did a lot of work with JavaSoft in defining
Java3D and JavaMedia. And we're doing a lot of work to make our
implementations as good as they can be.
As far as your last point, I disagree strongly that the whole point
of Java is that it's cross-platform. A lot of people are excited
about Java because it's easier to program, more dynamic and more
flexible than other languages. For many uses the cross-platform
aspect is a nice feature but hardly essential. Besides, just because
something will *run* everywhere doesn't mean it will run *well*.
Even for cross-platform applications the development platform can
and does matter. If we build a better (easier, faster, more
efficient, more extensible) tool for building programs that will
eventually run on a variety of platforms, why *wouldn't* a developer
choose it for their work?
David Dennis (david)
Suggestion: As the first post of any of these interview topics, give
a brief summary of who the person is. If my memory serves, Hank has
something to do with the WebForce team?
Is there any prospect to replace the rather moldy Adobe Photoshop with
something more specific to the SGI platform, like maybe a junior Alias
product? It must have been a rather bitter disappointment to hear
that Adobe wasn't going to develop for Unix anymore, and therefore
that we're stuck with Photoshop 3.x. :-(
It's strange, since performance with Photoshop on the demo O2 I saw
with 128MB RAM was pretty zippy, but when I got one of my own, it's a
little slow. I have 192MB RAM, but Photoshop, Netscape and the
FastTrack Server seem to conspire to take up way more RAM than I would
hope. Is there any way to keep them restrained?
gmemusage reveals something like 250-400mb total memory usage for
Photoshop, 250mb for Netscape FastTrack (why? I'm only getting about
2,000 hits a day on my web server) and 102mb for Netscape Navigator.
I love the machine like a pal, but I wish I could reign in the
voracious appetite of these applications. Any suggestions?
D
Hank Shiffman (shiffman)
Fraid not. I'm in Developer Marketing, where I function as a sort
of technology spokesperson and general gadfly. My only connection
to WebForce these days is that they have responsibility for the core
Java engineering. I spend a fair amount of time with those guys,
mostly discovering how much I *don't* know about the details of
implementing Java. As far as things like Photoshop or Netscape's
FastTrack server are concerned, I'm just a user (or potential user,
if someone would buy me a Photoshop license!). I have my own set
of issues with FastTrack...
Caroline Lowry (clowrys)
Hank,
In all your latest world travels what is the main technology you spent
time discussing and was it well received? I'm interested to hear what
folks around the world have to say when you're on one of your world
tours.
caroline
Hank Shiffman (shiffman)
Until recently, most of my time was spent talking about our C and
C++ development tools. Now I talk more about graphics APIs (OpenGL
and Open Inventor), Java and VRML. You won't be surprised when I say
that everyone is interested in Java, particularly in places like
Egypt, Turkey, Greece and Hungary (sites from my last seminar tour),
where they've heard a lot about it but don't have much direct
experience. People have heard a lot less about VRML; most of my
audiences outside the US are seeing it for the first time!
My task is to convince people that 3D (whether through VRML or one
of the programming APIs) is both a valuable tool and one that they
can learn and use. My first exposure to graphics came in the days
of Tron, when there were a handful of graphics programmers who worked
like slaves for wages to match. With the technology we have today,
it's a lot more practical to use graphics within applications which
aren't focused around graphics, like financial data modeling. Showing
people that there are easy and (relatively) portable ways to write
graphic programs goes a long way to getting them to rethink their
notions of how a user can interact with their information.
Kelli Ambrosi (kelli)
Hank,
Within the Development Community, what impact will the increasing use
of Java have on the use of other programming languages? Do you think
that Java will in effect make any of them obsolete?
Hank Shiffman (shiffman)
Programming languages hardly ever become obsolete. There's usually
too much code that people need to run and nobody wants to rewrite
for that to happen. (Also too many programmers who have fond
memories of their first language to ever give up on it!)
That said, I think a lot of tasks will move to Java, either because
Java is a better (easier, more flexible, faster to code) language
or because they've bought into the hype. (I remember talking to a
customer a few years ago who planned to move all of their Cobol
programmers to C++. I can't even imagine trying that.)
Java won't replace C or C++ or Fortran; it isn't nearly fast enough,
nor do I believe that it ever will be *as* fast as equivalent code in
those languages. Fortunately, there are lots of applications for
which raw speed isn't an issue. The other limitation is in access
to system services and libraries. Someday I'll be able to write
Super Mario 64 in Java; today it doesn't have all of the 3D graphics
and sound processing I'd need.
One of the reasons C++ gained acceptance so quickly was that a C++
program had access to every single library available in C. The
disadvantage of this is that C++ programmers had to make do with
ugly procedural interfaces instead of cleaner object-oriented ones
that C++ makes possible. Java can only use libraries that are given
Java interfaces, which means you can't use them until someone does
the work and someone (JavaSoft) blesses it as the One True Way(TM)
to do that job from Java. The good news is that every Java interface
was designed specifically for Java and is likely to be easier to use
than the C/C++ equivalent.
So C and C++ are likely to get a lot of use for system applications
and those for which performance is a factor. And the big
computational programs will likely remain in Fortran until the
universe explodes. But a lot of the other stuff is fodder for the
great explosion of Java programmers.
Heidi Axtell (heidi)
Welcome Hank:
I just read your recent Dev News article and you briefly mentioned
that security limits what we can build with Java. Can you expand on
that and some of the security issues with Java?
Hank Shiffman (shiffman)
Gosh, a technical question! Here goes:
Java defines the concept of a security manager. This is a component
that is asked every time an application tries to do something
interesting (like open a file) and gets to decide whether the
application is allowed to do it. The default security manager for
an application allows anybody to do anything. An application can
define its own security manager that is as restrictive as it wants
to be. So even though Java applications can write files, a given
program might install a security manager that restricts file writing
to a specific directory.
When you run applets on a web page, there's a security manager that
prevents you from doing much of anything. Netscape provides that
security manager, which an applet can't override. Today it uses a
very simple rule: code that's installed on the system can do anything;
code that came from the web can't.
This model is too limited; you would like one with more levels of
security. For example, a game applet might want the ability to
write one small file to save high scores; we could even restrict it
to only create the file in a special high scores directory so it
can't damage anything else on the system. We want a model where the
applet can ask for a specific kind of privileges and have the user
decide that, yes, they're comfortable granting that privilege.
(There were also some holes in the old model. Even though downloaded
code couldn't do restricted tasks, there were ways to fake one of
the installed classes into making the request. This is fixed by
a model where privileges are always off until someone asks that they
be enabled.)
So Java has the ability for an application (or the web browser, in
the case of applets) to define the level of privileges that are
necessary. Applets can use digital signatures to make it easier on
the user. Instead of having to ask the user to grant the privilege,
it can ask once and then remember that it's okay for future uses of
the same applet. The digital signature helps identify to the user
the source of the applet, so they can grant a privilege level to
everything that comes from a particular supplier.
This is all in contrast to Microsoft's ActiveX technology. With
ActiveX the only security is your ability to refuse to let it run
at all. If you let it in, it can do anything it wants. There's
no analogue to Java's sandbox and its security restrictions for
applets.
Jetta Tatom (jetta)
Hank,
What is your opinion of VRML as one of the latest fads on the
internet, and how do you feel it will grow in the future? Just a
quick comment on my personal experience with it, I find it to be quite
cumbersome, and not easy to navigate through. I realize that it is
still in it's infancy, but so far I can't seem to get over how clumsy
it navigates, and the art usually takes on a rather jagged and
unrefined look. Are you a strong believer in this technology?
Hank Shiffman (shiffman)
I think that VRML has great potential. And I'm finally starting to
see a few applications that make me believe that it will be more
than a novelty. I mean, as much as I love Floops I don't think that
there's a huge market for 3D animated comic strips. But an easy and
portable 3D library has great possibilities, particularly as the tools
for building and manipulating it get better.
Think of VRML and Java3D as analogues to Open Inventor. Inventor has
both an API and a file format. The API gives a programmer complete
flexibility and control; the file format gives them the ability to
use real graphical tools (or, in the case of someone with my lack of
graphics talent, the ability to collaborate with someone like that)
to build models and scenes that can then be loaded easily into the
program for further manipulation. You would rather not do
*everything* in code; it takes too much time and effort. Having both
an interface and an external model format is a great combination.
I suspect that today VRML doesn't have all the capabilities I'd need.
But with a bit of augmentation and a Java API for building,
manipulating and extending the VRML scene graph it might be a great
solution for building visualization programs, at least where the
complexity doesn't stress either Java or the VRML engine beyond their
capacities.
Gretchen Helms (ghelms)
A note on your first answer, Hank: I've had the same experiences with
my Web pages as well. I never dreamed that my hockey page would get
so much attention; I have even heard from several of the players on
the team we played against in the State Finals who read my writeup on
the event!
But back to Java. I've heard a lot of people who are used to
programming in C complain about the "black box" aspect of programming
in Java. I know I've had problems with the object oriented aspects of
Java...my brain doesn't quite warp in that fashion. So I'm left in a
quandry right now, trying to figure out: should I learn C++ first?
Should I learn Java first? Should I learn JavaScript first? What
kinds of advice can you give folks like me who are trying to figure
out where to start?
Hank Shiffman (shiffman)
In December of 95 I decided to sit down and learn about this Java
thing that everyone was talking about. One result was that I wrote
a page called Making Sense of Java:
http://www.disordered.orgJava-QA.html
that lists a lot of the claims I'd heard people make and why I thought
they were full of hot air. I got it listed on Yahoo and watched the
hits roll in.
A couple of months later I was doing a customer briefing and the
subject turned to Java. I mentioned my page, at which point the
customer showed me the copy he had printed out before leaving his
office so he could do some research on the plane!
If your goal is to learn object-oriented programming and Java, that's
where I'd start. Java is a much easier language to learn than C++,
in part because it was designed from a different set of goals. With
C++, the intent was to be an OO language while still maintaining the
efficiency of C. (And wherever possible compatibility with C's
syntax and semantics.) So what you have is a bit of a kludge, a
language which is relatively simple as long as you don't stress it
too hard.
Java doesn't worry about C efficiency *or* C compatibility. It's
behavior is a lot easier to understand and a lot more consistent with
the model you build up about it. So you'll find yourself being
surprised a lot less often with Java.
I'd never tell someone to start with C++ if their goal is to
understand and appreciate object-oriented programming. Fortunately,
I learned objects with Lisp, which has a very clean and logical
concept of objects and their interaction.
The best book I've found so far is called Exploring Java by Patrick
Niemeyer and Joshua Peck. O'Reilly
http://www.ora.com publishes it.
As for JavaScript, it's a useful but extremely weird scripting
language whose syntax is loosely based on Java syntax. I usually tell
people that JavaScript is to Java what the C shell is to the C
language. You're likely to find uses for JavaScript; but learning
JavaScript won't do much to help you understand Java.
B.J. Murphy (beejay)
Hank,
A couple of questions for you...
-
Do you know offhand the percentage of users who have their
"disable java" button clicked on their browser? Do you see it as a big
issue potentially cutting off part of your audience?
-
When I was in school, Java was just emerging. I happened to be
taking a comparative programming languages course where we went over
different languages. The professor believed that java would destroy
other programming languages and become the language of choice. What do
you think?
(That was 3 questions, if you count the first one as two. Sorry.)
Hank Shiffman (shiffman)
I vaguely remember seeing some numbers in an article in one of the
trade magazines regarding percentages of browsers with Java and/or
JavaScript disabled. They didn't make much of an impression. And
a couple of searches at inquiry.com and the InfoWorld archives didn't
locate any articles.
Is it a problem? It really depends on why you're using Java in the
first place. Most sites I've seen use it for cutesy little graphic
effects. To me, losing those is a feature. (Now if only Netscape
gave me a button to disable animated GIFs!) Give someone a Java
applet that does something they really want done and which is done
better in Java. Then help them get over their not entirely irrational
fear of Java-borne viruses (or is it virii?). After all, if we were
really concerned about security we'd never put our computers on a
public Internet to begin with!
Two things, neither of them complimentary. First, I don't believe
that any one language is the best (or even a good) choice for every
kind of problem. IBM thought it had the answer to all of programming
with PL/I; they were wrong. The DOD thought they had it with Ada;
they too were wrong, although they were a lot righter than IBM. When
you give a language all the tools it needs to support every kind of
problem you're likely to end up with a big, overcomplicated mess: a
jack-of-all-trades/master-of-none like PL/I. Java isn't the ultimate
language. It's just another step along the way. Your professor must
be experienced enough to know that.
(There's an old joke that we have no idea what the programming
language of the future will be. The only thing we're sure of is that
it will be called Fortran.)
My second comment is more general and philosophical: those who believe
that there is One True Way(TM) are wrong, whether the subject is
programming languages, operating systems, religious, ethics or
political systems. Why people feel an obligation to extol the value
of one solution by denying any place for others is beyond me.
A more practical concern regarding Java's supremacy is economic: at
some point Java is going to be fast *enough* for most of the
applications for which people want to use it. At that point the money
to improve it further will start to dry up, a situation that happened
long ago with C and C++ compilers on PCs. (These days most of the
investment in PC development is in better tools and better libraries,
not in faster code generation.) I believe that Java's performance
will hit a plateau long before it becomes fast enough for CAD packages
or CFD algorithms. Improvements beyond that will come from faster
processors and systems, which will tend to improve *all* languages.
Wendy MacLeod (wendymac)
Hank,
Do you think Java is ready for 'prime time'?
-Wendy
Hank Shiffman (shiffman)
Yeah, but probably not during the family viewing hour!
But seriously, folks... I think that there are applications that
could be written in Java as it exists today. I think there are a
lot fewer than most people would expect, owing to limited interfaces
and performance issues. SunSoft's Java WorkShop, a Java development
environment written in Java and first released almost a year ago,
was an example of an application that was well before its time.
Java was neither fast enough nor stable enough to support such a
sophisticated piece of code, as customers were quick to point out
on various newsgroups.
If I wanted to write database client applications today I'd give
Java serious consideration. (Database clients don't typically
demand a lot of processing, which is why interpreted environments
like Visual Basic and PowerBuilder can be used for them.) And if
I wanted to write a networked and distributed application I'd want
to use Java, since it makes it so easy to write networking code.
And over time I'd consider more demanding applications, as Java's
performance improved and the range of interfaces available increased.
Java's useful for some things today and will be useful for a lot
more things tomorrow. The day after, we'll see.
Hank (who has now *left* the building)
[--------]
|