SGI Logo Developer Program

Innovate Online: interactlogo.gif
Menu Bar
forum archive
---------------------------------
Interact
Overview

Getting Started

Forum
archive

Enter Conferences


Topic search

Submit
conference
concept

Suggest a
guest expert

Feedback


Guest: Hank Shiffman

Date: May 14, 1997

The following page is a transcript of the live forum held on May 14.

--------------------------------------------

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...

    1. 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?
    2. 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)

[--------]


Home | Glossary | Library | Market | Interact | Site Map
We welcome feedback and comments at [email protected].
Copyright � 1996 Silicon Graphics, Inc. All Rights Reserved. Trademark Information
320