Steve Jobs on WebObjects and Dynamic Web Services


What Jobs talks about
Steve Jobs presents WebObjects as server-side software for a new phase of the web: moving from static publishing to dynamic services. He argues that the browser was “Act 1,” while “Act 2” will center on the server and on pages generated on demand.
He demonstrates WebObjects with live examples: car shopping, leasing, database updates, and an airline reservation flow. His point is that applications can be built from reusable components, connected to databases and existing services, and served dynamically to users.
Jobs closes by positioning WebObjects as practical, cross-platform infrastructure for developers. He stresses that it works with multiple browsers and servers, supports scripting and compiled languages, and is free at the base level so developers can layer it onto their web sites.
Bob Muglia introduces Jobs and takes questions; Jobs speaks throughout the presentation and Q&A.
In his words
“We believe that we are now entering Act 2 of the web”
“WebObjects builds webpages on the fly”
“It works with all HTTP servers. It works with all web browsers.”
“We think this is so important that everybody ought to have this on their web server”
“You don't have to know anything about HTML to use WebObjects.”
Key points
- The web is shifting from static publishing to dynamic services.
- The server, not just the browser, is becoming the center of the web.
- WebObjects builds pages on the fly from reusable components.
- Developers can connect web apps to databases, Excel, and other services.
- State management and business logic can live in the application framework.
- The base version is free; paid versions add custom objects and enterprise database tools.
- Dynamic web apps can be built quickly and updated in real time.
Full transcript
at the Microsoft Professional Developers Conference. But the times there are changing, and I think that one of the great aspects of all of today's sessions and this conference as a whole, is that the internet platform brings about all sorts of opportunities. Opportunities for developers to support these new standards and create new applications that broaden the market greatly. That's what this is about, and that's what this special keynote is about. So without any further ado, let me introduce Steve Jobs, President of NeXT Corporation, to talk to you about some opportunities that his company is bringing to the internet. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you. Thank you.
Good evening, thanks for coming tonight. I wanted to spend about 30 to 45 minutes talking about web objects, and going into a little more detail. Of course, there'll be even more at the technical session tomorrow, and then try to answer any questions which might come up. I've got a few slides. I'll repeat a little of what we did this morning, but maybe in a little more detail, and then take it quite a bit further, if that's okay with you. It's seven o'clock at night, so please feel free to give me lots of feedback if you don't like something, or occasionally if you like something. So web objects, we all heard about that this morning. Web objects is server-side software on the web. And we view the web as sort of filling out act one and entering act two.
And act one was clearly the web browser, and static publishing. And you can look at a plethora of wonderful websites. This is Next's up here. Here's Microsoft's, I'm sure no one loved. Here's Intel's, and as I highlighted this morning, one of my favorites, Toy Story. And we've come an incredible distance with static publishing. It's amazing what we can do with such a simple pervasive metaphor. Now, most of the activity that you hear about on the web today, even including most of the announcements today, are focused on the browser. And what they're focused on is enhancing the user interface of the browser.
And what I mean by that is if you take the user interface capabilities of, let's say, Microsoft Windows, and say it has the capability equal to that surface area of that square, then the web's user interface has that capability, substantially less today. And what most of the effort is going into so far on the web is to expand the surface area of the web's user interface with both plugins and now the ActiveX stuff, to stretch it and push it and pull it, to try to make it have as much capability as a PC user interface. And this is going to be successful. But this is mostly what we hear about today, and it's very important. So that's what's happening on the browser, is enhancing the user interface, our portal into this web.
We believe that we are now entering Act 2 of the web, and Act 2 is going to center on the server. And it's going to center on moving from static publishing to what one might call dynamic services or active services. Pick a name. So again, it's going to focus on the server. And if enhancing the user interface was the focus of the browser, what is the core focus of the server? Well, let's look at static publishing. If we, static publishing is in a way a metaphor of sort of taking a book or a brochure and tearing it apart into its constituent pages. Or maybe you scan these, maybe you build them, of course, with your favorite HTML editor. And you put these pages on an HTTP server, and anyone can access them with the browser, right?
We all know and love that. The problem exists, though, the problem arises, if the page the user wants to see doesn't exist, what do you do then? Well, six, nine months ago, people would have said, well, that never happens, of course. Well, it does happen. And let me use the example I used this morning, which is, of course, the Federal Express example. When I type my package tracking number in, it looks in four mainframe databases to find out where my package is, and then automatically, by computer, builds that webpage on the fly and sends it back to me, telling me the history of my package being picked up and going through Memphis and arriving at the local destination and maybe being on a truck and maybe somebody signed for it.
Now, clearly, that page did not exist, right? Before my package was sent, maybe before I asked for it. That page did not exist, and they had to make it on the fly. And this is trivial, right, compared to what we want to do. And it took them four months to write this. Now, they have about 10,000 people a day accessing this, and they claim it saves them eight bucks every time somebody uses the website instead of calling their 800 toll-free number to find out where their package is. So they think they're saving $80,000 a day. I don't know. Here's another example of a dynamic webpage. All of the indexed search services, when you go searching for something on the web, clearly they don't have every permutation of every search made up as a webpage to respond to you.
They make them on the fly. So this is what WebObjects is designed to address at its core. WebObjects builds webpages on the fly as one of the things that it does. And it builds pages not out of pages it stores but out of components it stores. And it can combine those components with any number of permutations, with any number of calculations to build webpages on the fly to answer your requests. And it uses a scripting language to glue all this stuff together. There's some very powerful objects that come with WebObjects that save state throughout sessions, that do all sorts of wonderful things. You can just glue together with a scripting language and have it build these webpages on the fly out of these components.
And so let me go back to that demo I showed this morning and let's go through it in a little more detail. Okay. We're switching screens here. All right. Now I used the Internet Explorer browser this morning. I'm going to use Netscape tonight just to show you that we work on all the browsers. But we like the Internet Explorer very much. So this was an app that we built literally in a few days. And we built it for one of our customers, Chrysler, right? And so this lists all their cars here. I hope you can see this.
And so I'm going to select all their cars and I'm going to select the whole price range from $8,000 to $90,000 and all their different models. And as we went through this morning, we could say, I want to sort on models. So go ahead and display the cars. This is going to get all the components necessary to build this web page together, automatically, dynamically build it, and send it back to me. And as you can see here, I've got Avengers because they begin with an A, and then the Caravans because they begin with a C because it's sorted by model type. And then I've got Neons, and I've got Ram Trucks, and I've got all sorts of random things here. And at the end, a Viper, which we'll come back to in a little while. And I could go back here and say, this is great. I want to now sort this by price. And it'll take that same set of components and just build a completely different web page, now sorted or ordered by the price of the cars.
So the Neons are here first because they're the cheapest, and then we'll get a cheap truck in there and a cheap Avenger, and just all sorted by price. And then I go say, I want to buy a Neon. And as we saw this morning, it'll take me into a more detailed screen, again, constructed on the fly. Now, I could say, I want to see this car in white. And it'll just simply go grab the white picture, stick it in there, build the page on the fly, and send it back to me. Well, I guess I have to click on it, sorry. And then if I pick one of these packages down here, what it will do is, again, go get that information, add it to the subtotal up here. So now I've got a $12,000 car. It also did things like check off the boxes and stuff like that. Let me give you a simple example, again, of WebObjects.
That check off button is a three-state button, right? It can either be non-checked, or checked, or grayed out. If you notice, the third option package is a subset of the first. So if you pick the first, you want to gray out the third. There's no such thing as a three-state button in HTML. You just build one, and you make an object out of it, and let the object know how to take care of the HTML itself. And you have to know nothing about HTML to use WebObjects. This app knows nothing about HTML. Now, let's go ahead and do some other fun stuff here. One of the things I want to do is go into leasing. And when we go into leasing, I'm going to ask Wayne to switch screens, which he's done here. Let's see what he's going to do.
OK, over here. I know you guys have to stretch your neck to see this. But this is my leasing screen, which you just saw, which put the total in. And over here, this is another machine that I've got right over here. This is running NT. And it's got Excel on it, as an example. And it turns out that WebObjects speaks Olay fluently. And it speaks distributed Olay fluently. So what I'm going to do here is I'm going to type in, you know, I have a down payment of, let's say, $736. And I want to lease this car over 48 months. And when I push calculate, it's going to actually message Olay, message Excel with an Olay automation message, shove all this data into Excel on another machine, perform the calculation, get an Olay message back, shove it into WebObjects and build a webpage and send it back to me.
And all this stuff just works. So I just type calculate now. Hopefully Excel will pop up. There it is. It does the calculation, messages it back, computes it, messages it back. A webpage should get built in a second. There we have it. So what this means is that we can use any Olay services we want with WebObjects quite naturally. A lot of people are doing this, like with Excel, for calculations because they don't want the liability of doing calculations themselves. They'd rather lay it off on Microsoft, I guess. And that's what they're doing.
Now, I want to go back and show you something. Let's go back here a little while to the cars that we can pick. Actually, let's just go right to the beginning. Let's go to the cars we can pick. And let's pick a Dodge Viper. And let's just say, you know, show me the Dodge Viper. There's only one in here. It's a $60,000 car. Can you see the price on this thing, $60,000 probably? I don't know if you can read that or not. Can you? $60,000? Okay. Well, what I'm going to do now is I'm going to go over here, and I'm going to put Excel away here. And I'm going to run a Visual Basic app that we wrote literally in an hour.
And the reason we were able to write in an hour is because we have all the business logic built with WebObjects for this app. And all this app does, this one I just launched, is it allows me to change the price of a car and update the database, right? Something you might want to do if you're Chrysler. So I select a model. As a matter of fact, could I put this on both screens right now for a minute, Wayne? And we'll go back to this one in just a second. I select a model, and so I'll just go ahead and select the Viper. And it goes and looks up the price, which is $60,000, and I'll just change it to like $10,000 or maybe $15,000 or something like that. $15,000, yeah, I know. Save price to database. And now if we could get the car up on both screens, right?
Can we get that? Okay. If you can see, the $60,000 is still there, and I'll just go reload the page, and it should say $15,000 next time it builds a page. And, of course, it does because I tried this before I did it. So what you've just seen is that you can write all these little apps to update the databases and stuff, and the next time that page goes to be built dynamically, of course, it just uses the new data. So does this make sense to you? Okay. So let's go back to slides. And I've got one more demo I'm going to do in a few minutes. Now, what you just saw was built with the very basic version of WebObjects, except for the OLA automation.
We've got three versions of this product. The first version comes with a bunch of objects and allows you to glue them together with the scripting language. The second version, the pro version, allows you to add custom objects of your own design. And, of course, to do that you need a compiler because interpreted languages, while they're fine for the browser, are too slow for the server when you have a zillion clients banging on it. So you need a compiled language, of course. And it also supports OLA automation as well as access to databases. And then we have an enterprise version which supports a very sophisticated enterprise database access technology that we have called the Enterprise Objects Framework, which would take another session to go into detail on, but it's way beyond anything that exists in the PC world, and it's very cool.
Now, we believe that dynamic services are going to be the coolest thing on the web starting real soon and are going to take the web to the next level, and they are server-centric. So we believe this technology can turbocharge your website. It works with all HTTP servers. It works with all web browsers. It runs on NT, Solaris, and Nextstep. And in terms of that scripting language, we are going to be supporting Visual Basic Script as well as JavaScript. And in terms of compiled languages, we currently support Objective-C, C++, and C today, and we're adding compiled Java sometime probably around Q3.
We've committed to Q4. Compiled Java, which we're doing ourselves in conjunction with Sun and the other Java folks. Now, you can download a free beta version of this stuff today off our website, and the final products are done the end of this quarter. You can also download that virtual showroom demo, that Dodge virtual showroom, to give you something to play with and see the code, and it's a good starting point. And this is a picture of our website. As I mentioned this morning, we've had the code up there for approximately five weeks, and we have downloaded over 12,000 copies. Over half of them are for NT. And this is our new pricing model, again, which we discussed this morning.
We have decided to give away the base-level version. We had a big argument in our company, and a lot of people think we're giving away too much, but we're going for it. And the reason we're doing it is because we think this is so important that everybody ought to have this on their web server so you can have a dynamic site. Now, the way in which we make money is the base version of this is free because you have full dynamic services and the full scripting language capability. The pro version adds the ability to add custom objects, the ability to do OLA messaging, and the ability to access databases through those OLA services. And that costs $3,000. And the enterprise version adds this very sophisticated enterprise object framework technology, and that costs $25,000.
So that's the high-priced spread. And what we'd like to do is to suggest that everyone who gets a Microsoft Internet server just zip on over to the next site and pick up your free version of WebObjects and layer it right on top and have a truly dynamic website. We've got some very cool customers using this stuff. Merrill Lynch is using it for some very interesting stuff. We're not allowed to talk about it, unfortunately. Motorola is using this for some very sophisticated internal custom apps as well. DreamWorks is using this across the board to build all of their internal production management systems for their feature-length animated films, and it's permeating their entire studio.
Fannie Mae is using this to build some very, very large applications that will really be used across the country with all of their lending institutions, which is almost every bank. What I'd like to do now is demonstrate WebObjects Enterprise. Again, this is going all the way up through this very sophisticated enterprise database access technology. And what I'd like to do is do a demonstration. It took us about a week to build this. Now, you're all familiar with the online airline guide, right? The book that has all the airline schedules in it. It turns out they collect all the airline schedules for everybody and then disseminate them back out to the airline reservation systems like Sabre and stuff. And so they have all the data, and a while ago they started letting people reserve tickets through their own service.
And this is kind of what it looks like today. It's very modern. And they wanted to make it even more modern and put it on the web. And they'd fussed around with it for a while without too much success. And in a week, let me show you what we collectively did with this. Okay. Right, we turned it into a dot. We said drive. Don't take a plane. Okay. This is the online airline guide. And let me go ahead and just... Okay. So we'll log in.
And what this is going to do is build us a dynamic page. And again, this works with any web browser. And it shows us a map. And so we're going to say, okay, I want to leave from somewhere near San Francisco. And so it's going to build a new page that's going to throw in all the airports. And we'll pick, okay, San Francisco International Airport. Okay, it's building a new page that just threw in that information. And then I probably want to go, let's go to like Chicago, somewhere near Chicago. So it's going to build a new page which throws in all the airports. And... Let's go to Chicago O'Hare, let's say. Boom. And it builds a new page with that. And then it's going to download a Java applet, I hope, and show us a little animation, just so you can see that this stuff works with Java quite well.
And not exactly sure why anybody would really want to do that, but that's what you can do. And so, OK, so then what we'll do is we'll say, great. That's where we want to come from and go to. So what it's going to do now is look up in this mainframe and find the, oh, I have to tell it when I want to go, of course. So I'm going to go, I want to be able to cancel this ticket. Say March 15th, and I want to go, yeah, the morning is fine. Let's go in the morning. So March 15th in the morning. And again, it's rebuilding all these pages on the fly. Right, just boom, boom, boom, every time I click on something. So flights. Now it's going to go look up all the flights on that day to go from my origin to my destination. And here's all the flights. I learned something, by the way, doing this, by the way.
You think that there's just first a business and a coach fare? Turns out that's not true. In coach, there can sometimes be seven different fares, depending on how far back in the plane you are in coach. It's surprising. The further back you are, the cheaper it is. So if you want the cheapest fares, you actually sit way in the back, and they're noticeably cheaper. So I want, what flights are there? There's a United going at 8 o'clock, one at 8.35. I'll take the 8.35 in the morning. Now it's going to go search on that one, and it's going to find out all the fares. And here it is, just built a new web page. Leaves at 8.35 from San Francisco to Chicago O'Hare. And I am going to get, I don't want the cancel penalty, so I'll get the cheapest one other than cancel penalty, which is 737 bucks.
So I click on it, and hopefully, it's got all my information, got my American Express card if I want it in there. And I can just say purchase this ticket, and I purchase it. And hopefully now, it will come back with an actual confirmation number when I've actually purchased it. There it is right there. I've actually bought this ticket now. So this is an example. As you can see, I can't emphasize enough. Like every one of these pages, remember when it showed me all the flights, right? Those things get changed constantly, so you could never pre-build up pages. That has to be built on the fly. The same with the fares, right? The same with the schedules.
They're constantly putting new flights on, scheduling old flights. And this was, these pages were built completely on the fly. These pages were built completely the second before I saw them, a few seconds before I saw them, using the up-to-the-minute information grabbed from, in this case, a mainframe in London, which is where they keep all their data. So completely dynamic construction of these websites, and you can see that it starts to almost feel a little bit like Windows. You know what I mean? You get this dynamic construction going on based on your inputs and data coming from data sources, and all of a sudden it really starts to cook and feel a lot different than the current web. Would you agree that this is a lot different than the current web? I mean, I hope so.
So, will it tell you if the flight gets changed? I mean, will it, once you've made your reservation, will it keep track of you and then come back and notify you if the flight gets changed? This app doesn't, but if you typed in your email address, it certainly could, sure. I mean, it could be enhanced to do something like that, sure. It took us a week to do this. I mean, it took them four months to write that Federal Express thing that has one line where you type in and it goes and gets your package. So you can start to see the difference of what you can do with the right tools. Okay. So, a few last things. Five things to remember about the Act 2 of the web. The first one is works with all web browsers and works with all HTTP servers.
WebObjects works with all of it. We are supporting Visual Basic Script as well as Java. It is free. You can download it off Next's home page, www.next.com. And because it is free and easy and because it is good and true and right, you should make it a standard icing on top of your Microsoft Internet server cake. And we encourage you to do that. And so that is what we had prepared for tonight. And I would love to take any questions for a few minutes while we are all here.
And I know you've got other things to do, so we'll have about five or ten minutes of questions and be on our way. Any questions? Yeah. Shout, shout. When you said it took you a week to write that application, how many programmers were you talking about? Good question. When we said it took a week to write this application, how many programmers were we talking about? I think we were... Good question. 632. It took us, I believe it was three, but one of them was dealing with the graphic arts. So I think it was actually two people writing code and two people dealing with the graphic arts. And the biggest problem was just hooking up to their mainframe database and getting the right information to do that.
If it had been an SQL database, it would have happened even faster. But that was what it was. Writing the actual business logic of this was a piece of cake. Yeah. Any other questions? Sir. The version of WebObjects for Microsoft's information server, is it a CGI application or an ISAPI application? It is a CGI application today. It uses the CGI gateway in. But it uses the second thing you said, which I forget the acronym of, in the labs. And I believe, I don't know if that's the one that's shipping at the end of March or that will be a rev after that. But that's all working and it will be that soon. One further question. Either the professional or the enterprise edition, is there any type of developer kit, for sake of argument, because as a solution provider, let's say, obviously the enterprise version is way beyond my financial capability, and how would I be able to help a client with this?
Come visit us. We have all sorts of ways of getting developers stuff at good prices. Thank you. Sure. I assume that you've shown that over here, on the side. Oh, sorry. I assume that you've showed that demo several times in the past. How many times are you planning on flying to Chicago? As many times as I show the demo, because I'm pretty scripted, so I forget things sometimes. Do you want me to fly somewhere else? I'd be glad to. That's his question, not mine. Any others? My question is, do these web objects know about transactions? Do they have any TP monitor-like functionality? And if not, what's your view on transactions on the web?
We don't have a TP monitor built into web objects, per se, but we hook into Encina and all the other TP monitors out there if you really believe you need one, although in most cases you don't. Our view of transactions on the web, in terms of currency transactions on the web, is very simple. It's not a technology problem. Giving your credit card to somebody over the phone is far less secure than giving it to somebody on the web. It is a liability issue. In other words, if I lose my Visa card, I'm liable for, I believe, $50 at most. And once Visa and MasterCard come out and say, if your credit card is stolen on the web, you're liable for $50 at most, I believe we'd have Internet commerce today. So it's a social and business liability issue, not a technical issue at this point, in my opinion.
And I believe that these issues will get resolved this year. Steve, you mentioned that WebObjects is available for NTs, SunSolar is the next step. Is that true for the compiler version? Yes. Or is that going to be available? No, that is true for the whole package, including the compiled. Hi. Is there any plans to take all this to one level up? And what I mean is, do you plan to encapsulate business objects or business processes, entire business process logic? Well, our goal is to provide an extremely rich set of capabilities in terms of the objects in these products. We believe we're way ahead of the curve right now, and as we learn more about what people want to do with this stuff, we will continue to make the objects richer and richer and richer.
So I don't know where you draw the line between what is just generic functionality and business process, but it will get richer. Yes. Okay. The question was, how are the WebObjects actually implemented into an existing website, and I don't have any idea what you mean. So I'm sorry, I'm kind of tired today. Come see me afterwards, and I'll see if I can figure that out. Your OAG demo ran on the enterprise version of your product.
Why couldn't that run on your professional version? difference in what we saw? Good question. The Enterprise version contains a very rich object framework called the Enterprise Object Framework, which we've been selling for a few years, which makes sophisticated database applications an order of magnitude easier to write because it does a ton for you. You could have done that demo on anything else. You could have done it on the Pro version as an example. It's just a simple matter of software. And the Enterprise Object Framework just does so much for you that, for these very sophisticated database applications, it allows you to do things that you really, on a practical level, couldn't begin to think about doing.
Let me give you an example of what it does. You can write an object. And let's say when you're done, you run a simple application that shows you all the data structures that your object created to do what it needed to do. You can point it at any data source. Let's say an SQL database. It reads the data dictionary and shows you the schema of that database. You graphically connect those things. And from that moment on, all the data in your object is persistently and coherently stored with the data in that database. So you don't have to think about storage at all of these objects. You don't have to think about database access at all. You don't have to know anything about SQL. And it's extremely sophisticated in its approach to doing that.
The OAG original database, what was that? The OAG original database was an IBM mainframe. And I'm not exactly sure what the database was. It might have been a flat file ISAM. But I think it was DB2. Thank you. How do your applications maintain state, for instance, with the three-state toggle button? WebObjects has a full capability of maintaining state for you, either on an application basis, a session basis, or a general basis. And if you come to the technical session tomorrow, the technical folks will go through that in, I think, some pretty great detail. OK, thank you very much for coming tonight. And if you have any more questions, come on up. We'll try to get them answered. Thanks. Thank you. Oh. Guess there's a music hanging around, cars are racing through the town.
I'll find a crowded avenue. Going through the empty without you. I can't get used to losing you. No matter what I try to do. Gonna spend my whole life through loving you.
Transcribed from the audio with OpenAI Whisper. Timestamps link to the video above. Errors are possible.