Jonathan Payne, Sami Shaio, Arthur van Hoff and Kim Polese, four
members of the original Java development team, recently left Sun and started their own Palo Alto based product development company.
Computer languagesaren't normally big news. Java, Sun Microsystem's new language, is a phenomenon unlike anything else to hit the
computer world. It's bigger than Windows '95 because it isn't an Intel dependent technology. In fact, it isn't a computer dependent technology.
Java was designed to be small and compact so that it would run on personal digital assistants (PDA's) and set-top boxes. In fact, the goal was to make it possible for Java to run on anything that connected to a network. If your toaster oven ever gets connected to the Net, it will probably run on Java. I guess then you'd have toast with your Java.
JDJ was lucky enough to catch Kim Polese, formerly Sun's one-person Java marketing department. She and three of Java's original development team have decided to launch their own Palo Alto based Java application development company. When their phones get turned on, we'll make sure that JDJ readers know how to get in contact with them. Kim has a distinction that few people know about. She was the person who gave Java its now famous name. Kim was kind enough to answer a few questions for JDJ.
JDJ: How did you first become involved with what was to become Java?
KP: I had been employed at Sun Microsystems for seven years. Sun put together a team to find all the problems with both operating systems and languages. Mainly, they wanted to address the insanity of having application tied to operating systems. They decided to create a new language from the ground up. Some of the people, James Gosling, Patrick Naughton and Mike Sheridan, decided to take the best parts of Cedar-Mesa, SmallTalk, Objective C, C++ and Eiffel. Three years ago I learned about this new technology called Oak that was being developed. It solved a lot of problems for developers. I was the product manager for C++ at Sun Microsystems at that time and when I found out about Oak, I decided that I wanted to come and work on this new technology. I transferred to a spin-off company called First Person that Sun had created to productize and commercialize Oak, but there was no marketing or business development. Here were developers, some UI (User Interface) designers and documentation people, but no marketing or business development, so I was the first and, as it turned out, the only marketing person. As product manager, it was my job to figure out what to do with the technology and how to make it a commercial success. That was what I set to do.
JDJ: You've recently left Sun and started a new company. Could you describe your company?
KP: Four of us started the company. The other three people, aside from myself, are part of the original Java team. Their names are Arthur van Hoff, Sami Shaio and Jonathan Payne. Between them they have over twelve years of experience working on Java technology, so we have a lot of development experience.
JDJ: Are you going to be doing application development or services or consulting?
KP: We are a product company, not a services or consulting company. We will be developing products.
JDJ: Your company is already expert in Java. What should a company without that expertise do to start developing applications using Java?
KP:There isn't any single set of needed qualifications. Ideally they should have programmers who are familiar with C or C++. You don't need a networking expert because that's built into the language, but you might want people who are familiar with building applications that are network-centric. Java lets you to take advantage of the fact that you are on the network. In today's market, you need to have real programming experience to use Java because there aren't a lot of visual tools out there yet, but within the next couple of years that will change.
JDJ: How is an application developed in Java different from your classic client/server application?
KP: There are a few differences. One very important difference is that with Java, you can actually move the code between the client and server easily. With a traditional client/server application, you have code resident on the client and code resident on the server. If there is a big load on the server one day and you want to unload some pieces of the program and put it on the client side, you can do that in Java, but it is difficult to do that in a traditional client/server application.
Another difference with Java is that you are developing a totally platform independent application. It can run on a Mac or a PC or any flavor of UNIX without recompiling, whereas a traditional client-server application is not written in a portable programming language. You end up doing a lot of recompiling.
Another difference is in maintaining the application. Java applications are much easier to maintain because the physical language is designed to prevent many different kinds of bugs. For instance, Java has automatic garbage collection. Programmers don't have to allocate and reallocate memory manually. Memory smashes can be a very difficult bug to track down, especially if you are trying to track down the error in someone else's code. Java has a lot of features in the language in addition to garbage collection that makes it much easier to maintain the application during its life cycle.
JDJ: We've heard some discussion about using Java as an operating system.
KP: It makes perfect sense. Not much has to be added to Java to make it an operating system. All that it has to be added is a function to peek and poke at random memory locations and you'll have an operating system.
JDJ: Do you see Java at any risk from competitive development environments, such as Visual Basic, Optima++, etc?
KP: Java is on a different level than the environments you just mentioned because Java is a programming language, and those are full scale visual programming environments. Visual programming environments are being built around Java now. There are a number of companies in this area including Sun, JavaSoft Business Unit, Borland and Microsoft that are creating visual development environments for Java. What you'll have is all the benefits that you have with the visual environment, plus you'll have the advantage of a very powerful platform-independent, network-centric pure programming language. You will get the best of both worlds. You get the performance and security aspects of Java, as well as all the easy to use visual graphical development capabilities.
JDJ: How about some of the other players like Borland?
KP: What Java needs is more tools. The more tools and the more big players, such as Borland, the better things will be.
JDJ: Is Java pretty stable now, or will we be seeing lots of changes?
KP:Java is very stable. You won't see any more changes for quite a while, and those will be backward compatible.
JDJ: Where does Java fit into the whole scheme of things?
KP: Java is general purpose like C++. Many people think of Java as an animation language for Web pages. I see it more for use in Internet and enterprise applications. It's an MIS manager's dream. It saves money in development time because you only write one application for every platform. It also saves time and money in maintenance and distribution. Sun is using Java internally. The programs that Sun's employees use to access information about their 401K and health plan benefits are all being re-written in Java and distributed over a Web browser. Those programs used to be major support nightmares for the MIS department.
JDJ: You mentioned that Java is like C++. The big question is, will Java replace C++?
KP:Yes, but not immediately. There are a few things necessary before Java will replace C++. First, we need more tools and visual development environments. Second, we need more class libraries like multimedia, 3D, animation, database access, and integration with object management systems like CORBA. Third, the just-in-time compiler. This will compile applications as they come over the Net for the specific platform.
JDJ: When will we see that?
KP: Fall of 1996.
JDJ: Where do you see Java going by the year 2000? What are the big things coming down the road for Java enhancements?
KP: One of the big areas is consumer devices. These are hand held devices such as cellular phones, building control systems, etc. This is ironic because that is the original platform that Java was designed for. It was originally aimed at the consumer device market, but because that market was not maturing fast, we pointed Java at the Internet and created the Web versions of Java. But Java is very suitable for running inside very small footprint devices. As that market matures, we will start seeing the kinds of devices that will be at a low enough price point and have a high enough degree of functionality that there will be a viable market. As that market matures, you will see Java running inside those devices.
JDJ: What would you tell a person who wants to jump into doing Java development? What kind of background do you think they should get? What kind of training?
KP: There are a number of good books that are coming out on Java. That is a good place to get started. You need a good basic "How to Program in Java" book.
JDJ: Would they need a C++ background?
KP: It certainly helps to have a C or C++ background, but some of the books that are being written now are for teaching people how to write Java without having known C or C++. It is possible to learn Java as a first programming language, if you have the right book. Tutorials are also available off the JavaSoft home page. There are some very good aids there for learning how to write programs. They have examples of source code. So that is what I would do: get a book, go to the JavaSoft home page, and look at some of the materials they have there for teaching people.
JDJ: How does using Java affect your typical development life cycle?
KP: It shortens the development period up front, so it makes it possible to build the application faster than if you were using C++ or C. Java has a much simpler syntax because a lot of the complexity has been removed from the language. That makes it easier to get the application up and running more quickly. Because of that, maintenance is much easier; fewer bugs are found in the code and, because it is object-oriented programming language, you can take advantage of all the code reuse capabilities.
JDJ: What are the biggest problems you see when you develop in Java?
KP: The biggest problem today is the fact that the language is very young. It has been out for a year, and it's missing some things such as extensive class libraries and the easy to use visual environment. Performance improvements will also help. All of that stuff will be here soon.
JDJ: Do you think Sun is the right company to market Java? Its reputation has not been in the language or development areas.
KP: Actually, in one very strong sense, Sun is a great company to market Java. It is a network company. It is a company based on networking and the Internet. This is a company that pioneered networking twelve years ago. Sun was in that business and Java is a network-centric programming language. It is a programming language designed for writing applications that live on the network. That fits very nicely with Sun's philosophy and products.
JDJ: How does Java address the issue of security on the Internet?
KP: There are several different levels of security in Java. The first is the language itself. There are no pointers in Java to give you access to data. You have pointers in languages like C and C++, but they were removed from Java because of security reasons. This was a language that was designed from the ground up with security in mind. The second level is called the bytecode verifier. It is a mechanism that sits there on the client computer and checks the code that comes across the network. It checks the code first before running it to make sure the code hasn't been tampered with during transport. It will run the code through several very sophisticated checks for additional verification. The third level is an access control mechanism and that prevents Java from doing things like writing to the disk and opening sockets on the network. The third area is not inherent to the Java programming language. It's something that was implemented as part of the Web browser implementation of Java. It can be modified and it is a flexible feature. In other implementations of Java, you can write to disk, but in the Web browser applet implementation, you are prevented from doing that.
JDJ: What do you see as the key to successful and profitable Java applications ? Is there
one out there now that you can use as an example?
KP: I think applications that take advantage of the network-centric features of Java are some of the more interesting ones. The fact that you can write an application which can incorporate new functionality dynamically instead of having to recompile the entire application is fascinating. For instance, take the example of a multi-user game. (See JDJ's regular Games & Graphics Department.) Maybe you are a very successful game player and you want to try the next level. Instead of having to buy the next version of the game that has the pro level, this application can be designed to tune itself to the player's level of sophistication. An entirely new piece of the game can be incorporated and the game can be modified on the fly based on how somebody is using it. That is one of the big advantages of Java. The dynamic nature of the language, the fact that it is platform independent, the security features, and all the network-centric features of Java will help make an application be successful. I think that the ESPN Sports Zone is a good example of a production Java application. Bullet proof systems, a financial application is another interesting one.
JDJ: Who do you see as the Java users?
KP: For Java, there is a wide range of people who can take advantage of the language. Developers are at the core of a set of concentric circles of users, because they are the ones who will immediately benefit from the advantages of Java. They can write an application faster. They can write it once and it will run on all different machines. They don't have to deal with security issues. Those are dealt with automatically in the language. They can write applications that are living and that can modify themselves in functionality over the life cycle of the application .
As you move out from the center of that circle, you will also get people who aren't programmers, but may be media specialists who are creating graphical applications or multimedia applications like games that will run on the Web. Visual tools are starting to come on the market and they can take advantage of those.
On the outer edge of the circle are the end users who will take advantage of Java by using the Java applications that are developed by the people in the core.
JDJ: What are the inherent limitation that you see in Java right now?
KP: I wouldn't say that there are inherent language limitations other then the fact that it is not yet a mature language. It has only been on the market for a year and the tools and libraries are only now coming. Those aren't inherent limitations of the language. It's only a matter of time, and it won't take long.
JDJ: There has been a lot of talk about problems that are inherent within the Internet infrastructure. How do you see those problems affecting Java development?
KP: I see Java as having a tremendous advantage and a solution for a lot of those problems. With Java you can write an application that can live both on the server and on the client and you can have functionality and processing happening on the client side. You don't have to depend on getting to the application on the server every time. In traditional applications, every time the user has to do something, they click and it involves the network connection and it involves increasing the load on the bandwidth. That's a problem. Java, however, can download the functionality to the client side, have local processing and computation happening and not require a connection.
JDJ: How long do you think it will take for Java to mature and get things like certification programs, hook to debugging tools, change management tools, libraries, etc.?
KP: Java is maturing very quickly. It's surprising to think that it's only been out there for a year and the language is as advanced as it is. There are a number of those features already in the language. There are hooks that can be used by debugging tools already in the current version of the Java Development Kit available on the JavaSoft site. For change management, you can use standard tools today such as SCCS. There are a number of libraries already part of the JDK and there are many more that are coming. By the end of the year, you will have libraries for graphics, 3D multimedia, database, security verification and integration with CORBA. Sun is moving very aggressively towards getting some consistency in the training, consulting and support of Java.
JDJ: Is there anything else that you would like to add?
KP: I continue to be very excited about the potential for Java, where it is today and how much people are accomplishing. There are a lot of very innovative applications being written. I think one point I would like to make is that there is talk of Java being hyped, but it wasn't hyped by Sun. What happened was that people started using it. They got tremendously excited and started talking to their friends about it in conferences and in newsgroups, so the excitement spread. That is why it became so hot. It was really addressing some serious needs. There was a lot of pain out there in trying to develop applications that could live on a network. Java addresses that pain and hype is really a bunch of very excited developers talking about what they've discovered. So, the hype is well deserved. There is a lot of substance to the language and there is so much more that's going to come.
JDJ: We follow all the news groups, articles and gossip about Java. As you said, most of the time we see the word "hype" next to the word "Java".
KP: I think it's a validation of Java as a platform that my partners and I would risk our salaries to start a Java application development company. We would not be doing this if we didn't believe Java was a strong and viable platform.
JDJ: Could you tell our readers something personal about your company and colleagues that would make them think of the people behind the products?
KP: Sure. All four of us have a pretty deep artistic bent here. Both Sami and Arthur are accomplished guitarists and Jonathan is practically a professional level drum player. I am a dancer in a dance company. That's how I stay sane!
The Java Developer's Journal wishes Kim Polese, Arthur von Hoff, Sami Shaio and Jonathan Payne the best of luck in their new venture. We will be covering their success and the stories of other companies betting everything on Java.
Parts of this interview were conducted by JDJ founding Editor Ted Coombs.