Configure player

Close

WWDC Index does not host video files

If you have access to video files, you can configure a URL pattern to be used in a video player.

URL pattern

preview

Use any of these variables in your URL pattern, the pattern is stored in your browsers' local storage.

$id
ID of session: wwdc2001-500
$eventId
ID of event: wwdc2001
$eventContentId
ID of session without event part: 500
$eventShortId
Shortened ID of event: wwdc01
$year
Year of session: 2001
$extension
Extension of original filename: mov
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: ...

WWDC01 • Session 500

Java Overview

Java • 1:14:40

Every copy of Mac OS X includes Java 2 Standard Edition v1.3, making Mac OS X the ultimate platform for developing and deploying Java 2 applications. This session covers Apple's plans for Java on Mac OS X. Topics include the Java runtime environment, the HotSpot Client VM, Java development tools, and shared libraries.

Speakers: Steve Naroff, Sean Reilly, Steve Lewallen, Larry Abrahams, Blake Stone

Unlisted on Apple Developer site

Transcript

This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.

Good morning. I hope it's not too early for all the Java developers in the audience today. Looks like we've got a good group. I just want to kick off this morning's session with a little bit of information for you on the rest of the week. This is obviously our first session, our overview session. We've got a total of 10 sessions in one feedback form just in the Java track.

That's the most content that we've ever had for you guys in Java. We've got a lot of exciting stuff to share with you. I don't want to steal any of the thunder that we have in this presentation and some of the other ones. If you add that together with the WebObject sessions, I believe there's a total of 17 of those. There's a whole lot of Java-related content at this show.

With that in mind, I want to go ahead and make my introduction brief this morning and bring up Steve Naroff. and the senior director and dynamic object dweeb for Apple, and have him come up and tell you about all this great stuff we've been doing. Thank you, Steve. Hi there.

I've never put such a silly thing in my title, but last year when I say I'm director and I get off the stage and I want to interact with you guys, a lot of times people are taken aback. He's a director. There's this line between me and you, so I figured it was really important to let you guys know that I still actually enjoy programming and enjoy basically being very active in the software community, not just a people pusher, so to speak. One of the things I wanted to open with is I'm feeling great today. Are you guys feeling great today? Last night I felt really bad. I was here until 10 o'clock getting ready, and I was feeling very old.

And it was because it was the first day of the show, we're getting all this stuff together, getting the demos ready for you guys, putting the finishing touches on the presentation. And also Steve in his keynote reminded me of my age, unfortunately, when he said he had been working with Avi for 15 years.

I actually started at Next two months after Avi, and then realized I had been working with him for 15 years as well. And I did some simple math, and I'm like, holy cow, I've been doing this for 35% of my life on Earth. I've spent with Steve and Avi doing this stuff.

And as most of you know, Steve's a pretty intense guy. And one year with Steve. And one year with Steve is not really equivalent to one normal year, right? So it's not quite a one to seven with dogs, right? But it's probably a one to three. So I really hope my life isn't going to end any time real soon, because the math just doesn't add up. But anyway, speaking of age, Java is six years young.

And I think it's sobering to realize it's just a child, okay? It's just a child. And from its inception in 95, where it hit the streets about spring of 95, to today, a tremendous amount of change has occurred. Okay, not only at Apple, but in the Java community. And so I'm going to spend the first half of this talk giving the 10,000 foot view of what's going on in the Java community. I'm also going to talk about what's changed in the Apple community.

I'm going to talk about what our goals are. Fortunately, they haven't changed a hell of a lot in the three and a half years I've been on this stage representing the Java team. What's our strategy? Our strategy has changed a little bit over the years, but ever so slightly.

I go back and review the presentations of prior years before putting a presentation like this together, and I was fairly happy with the consistency. I think that should also be good for you guys because you don't want to see us jerking you around, so to speak. That's not what we're here to do.

So from an Apple perspective, and actually a Sun perspective, we don't have any more excuses. I think Java's in a pretty interesting place right now, not to say that we've solved all the problems or it's in an ideal location, but there's really nothing to be embarrassed about anymore.

So for instance, when Java started in the browser for applets, it really wasn't an appropriate API for developing industrial strength applications. At that time, it was called the Java 1.1, and it had AWT, which was insufficient for developing great applications. And Sun has fixed that. Sun has Java 2, Sun has Swing, Sun has JFC.

There are quite a few interesting APIs on the platform. There are quite a few interesting APIs on the platform that do enable you to do non-trivial things. And other things that I guess have changed is the development tools in this space have gotten fairly robust. And we're going to talk about tools as well later on.

Let's see, what else do I want to say about what's changed? Well, we'll talk about it later on over the course of time. What's our goal? Our goal is to be the number one desktop for deploying Java applications. Now, we've been working hard on this, and we're going to tell you where we are today and where we expect to be tomorrow. That's part of what the talk is about.

And we want to be the number one desktop for developing Java applications. We have the coolest hardware on the planet. I see so many people with Titaniums and running 10. And we need to enable Java developers to buy this great hardware and software and do their Java development.

So why are we doing this? Java is the fastest growing language on the planet right now. Just so you don't get mad at me, this is not my data, it's Gartner, that's why Objective-C isn't on the chart for you Objective-C people in the audience. And also C# is at the bottom there with a question mark. C# is a language which is Java-like, and Microsoft is currently promoting it as the next generation language for programming their platform.

Right now it's not really on the radar screen, so to speak, because there are very few people presently programming in it, hence it doesn't have a line right here. So it's unclear whether it's going to overtake Java, but certainly at this point in time there's no evidence of that, certainly from a cross-platform perspective.

So, last year at Java 1, Sun, I guess, had said that there were more than 2 million Java programmers. And that was really exciting, given Java 1 had about 25,000 developers at the conference. And hearing there were 2 million people programming in Java was actually very exciting and a good marketing slogan.

However, if you look closely, a lot of these people are not qualified to do the type of development that's, I think, being done by people in this room. So, there are a lot of hobbyists. In fact, most of the community are hobbyists right now. You know, this isn't a surprise, right? If any of you have been in small companies or even big companies that are growing, when you grow from what Java, when you experience this type of phenomenal growth, it's pretty clear that all 2 million developers are not going to be wildly qualified, right? So, this is just natural growing pains of any successful platform. So, this isn't meant to disparage the community, but to just educate you guys that basically not all the developers are created equal.

So, it's becoming mainstream. This isn't any surprise. There are slices of this pie, which we're very interested in. Certainly education, 19%. As you know, Apple's very big in education. Finance, personal finance in particular. Last year, Schwab released an application that was heavily advertised on television called Velocity. That application runs very well on our platform and, in fact, was developed on it.

And now there's all kinds of financial applications that are following suit. And later on, we'll bring up someone from a company that does a product called MoneyDance, which is a very interesting financial application written in Java. So, it's becoming mainstream. And what's cool is, it's mainstream and it's good. It's good technology, especially the language. The language is excellent and the APIs are evolving to become excellent.

I'm very much into music, and most of the popular music of today really stinks. I sort of expect that in our industry because it's becoming a fashion industry, whether you recognize it or not. So it's sort of cool that Java is technically sound and mainstream, and both of those are very important. So Java technology usage, there's... A lot of energy going into the server.

As you can see, that red point on the graph is for servlets and Java server pages. So right now, the biggest application or the largest amount of Java code is being written on the server to do Java server pages and servlets. The second most common is still applets, good old applets.

The difference between applets and Java server pages is Java server pages, says Gartner, is going to go up at a faster rate than applets. Applets tend to be pretty stagnant if you look into the future. The other point in the graph is applications, the blue line. The blue line is steadily going up, and we anticipate that to even go higher. Mainly because all of these server applications need to have a face, and HTML and applets aren't going to cut it for a lot of them, so there are going to be lots of applications which need to either supplement the web-based interface or replace the web-based interface.

The most growth that's expected, even though it's a small amount of energy right now, is the enterprise Java beans. Right now, enterprise Java beans is the least popular in 2001, but that's expected to grow significantly as the data indicates. So here's a diagram which I hope will explain our strategy. Excuse me for a minute.

We love the Java language, as I said. There's three virtual machines underneath. The one that we're focusing on is the HotSpot Java virtual machine. There's a KVM and a CardVM. So, on one end of the spectrum, people are doing lots and lots of work in the enterprise, again, on the server.

As you know, most of you know, WebObjects has been completely retooled to be in Java, and it's certainly one example of this. Over time, I expect the WebObjects team to roll out their J2EE or Java 2 Enterprise Edition strategy. Right now, the reimplementation of WebObjects in Java is a necessary first step.

However, to play on the server in the application server space with Java, you have to start adopting some of the idioms and methodologies that J2EE is implementing. Mainly because BEA and Oracle and IBM, all these companies, their application servers are starting to talk enterprise Java beans. They're starting to talk Java server pages. And unless we talk that language, we're not going to interoperate with all that other work that's going on in the community.

And hence, we're not going to take advantage of the full power of Java. So, on the other end of the spectrum is JavaCard and also Java Ring and Java Lightbulb and, you know, all that kind of stuff. We're not interested in that. There's companies investing lots of time and energy in it, and that's great.

And on that side of the space, there's really no APIs per se that sit atop the Java language. On the other hand, for these other class of devices, cell phones, faxes, POMs, all that good stuff, there's the micro edition. There is an API suite that, again, is cross-platform as you define the washing machine and the fax machine. There's some lowest common denominator API that they're developing called the micro edition. Okay? This is what we're focusing on.

We're focusing on the Standard Edition. The Standard Edition could be considered the desktop edition. The other way of thinking about it, it's the core of Java. Again, it's the core of Java. For instance, the Enterprise Edition is a superset of the Standard Edition. So it includes all the Standard Edition technology.

So one of the reasons we're focusing on it is the better we make our core, the better we make Java 2 Standard Edition, the better products like J2EE will run. For example, there are companies like Bluestone, who I think is now owned by HP, that have a pure Java J2EE implementation.

I don't know if they formally support it on Mac 10 yet, but I ran into a couple of the guys at one of the meetings, and they said, "Yeah, we brought it over to Mac 10 and it just ran." And so that type of stuff blows me away. It's like, "Wow, we have a full Java 2 Enterprise Edition stack, and it just worked on Mac 10." Yeah. And that type of stuff, again, explains the value of what we're trying to do here. So Java 2 Standard Edition, the Sun packages.

Just to be technically accurate, this includes a little more detail than the previous slide. There are three packages which are really built into the language definition. They're the utilities or the collection classes, I.O., and LANG, which includes things like language reflection and so on. Right above, we have packages like security, remote method invocation, mathematics, networking.

Okay, and I'm not going to go through all the packages. I'm trying to highlight the most important ones. Above that, you start to have user interface technologies. Swing, AWT, Geom, which is just a poor name for Java 2D, and Applets and Sound. So, without getting into any more detail about what packages there are, this is the pure Java 2 stack, so to speak, that people are writing to. And we want to support applications that are being written on other platforms so that they just work on our platform.

But that's not enough for us, okay? We want to go beyond Java 2 SE. We don't want to go beyond it because we don't think Sun is doing their job or that we think Java 2 SE is not good. We're going beyond it because Apple has some core competencies and some great technology that we think need to be available to Java programmers.

So, again, it's not a competitive thing. It's not like by virtue of doing some of this work that we are not subscribed to the pure Java platform. We are. In fact, all these technologies layer on with standard Sun extensions like JNI. So, right there we have Cocoa. For Cocoa to interoperate with pure Java, we have something we call the Objective-C Java Bridge. And that, again, uses JNI, which is the lowest level software. standard interface for native method invocation.

So, in addition, Cocoa implements a lot of the same stuff at a GUI layer as Swing. So sometimes people get confused. Later on, I'm going to try and remove some of that confusion. I don't want to go through it right now. Here's QuickTime. So QuickTime is also layered on some subset of the Java 2 SE stack. And we have WebObjects, which is layered atop the entire stack. That is, you don't need any native code to run it. Whereas Cocoa and QuickTime both contain native code. Cocoa in the form of Objective C and C code.

QuickTime mostly in C code. So we also, aside from offering the WebObjects, Cocoa, QuickTime Advantage, we want to take Swing and make it integrate with our platform in some fairly obvious ways. One, it needs to have the Aqua look and feel. So we've done that. Swing looks great. And we think it looks better than any other platform you can run Java on. And I'll have some people up later on to demonstrate some of that.

And the menu placement is what Mac people expect. It's at the top of the screen, not associated with the window. Quartz 2D integration, basically we get all the PDF support that Steve was talking about and very fancy graphics by virtue of having this stuff layered on top of Quartz. And we also have out-of-the-box support. Now, here's a quote from Tony De La Lama at Worland.

Let me take a minute and really emphasize the importance of this. The Java 2 platform is, at the end of the day, an operating system. And when you think of it in those terms, the JRE, which is just the runtime environment, is about roughly 10 megabytes. I think it's actually 8 and change, but let's just say 10.

The problem with not bundling it as part of the operating system is, number one, you have to have a fairly fast connection to download this stuff. Now, that's only a small part of the problem. The much bigger part of the problem is if it's not bundled, each application will bundle its own because it doesn't trust any other application to install the right one for it.

Okay? So, for instance, you'll have... In the worst case, you might... You might have five Java applications on a Wintel system that actually each application not only has its own copy of some unique version of the virtual machine, but when it's running, it has to instantiate that copy, and each application will instantiate its own copy. Okay? So the analogy is, imagine if all the Carbon apps that are being developed carried around its own version of Carbon.

And when you ran it, it had to instantiate its own version of Carbon. That's crazy. Okay? So it's really important to know this is an architectural flaw that we... That is basically not a flaw on our system, but a flaw on every other system right now that's running Java, particularly Windows.

So, let's move on. I'm going to get back to something I said before, which is, okay, there's the Java 2 Standard Edition, and we have Cocoa, but they have Swing, and we have QuickTime, and they have JMF, and there's some confusion about what people should be programming to.

So, one way to remove the confusion is to say, and I can't say this because I don't know all of you, you need to put yourself in a box, okay? And... I know it's not easy sometimes, but you need to think, what are my goals and which box am I in? So the one box that I'm totally uninterested in for purposes of this discussion, unfortunately most of the software on the planet probably lives in the box, is the single platform and simple box.

So let's just get rid of that. Don't care about it. The next box is multi-platform and simple. So on one end of that spectrum, you have something like a dumb terminal. It has the maximum reach, that is it runs on the most platforms, but it's arguably the worst user experience.

So HTML is in that same box, okay? It has a great reach, okay? And it's richer, but it's still not as rich as you'd like. So let's go to the blue box. The other end of that spectrum is a native application. And I'm doing this native app a little bit of a disservice because it actually isn't a point. Depending on how you've architected your application, it's a spectrum. So let me describe what I mean by that.

With Java 2 SE, you're writing cross-platform code not only for your engine, but for your GUI. And that's a fully cross-platform application. What a lot of people do, especially the shrink-wrap vendors that care about quality in a big way, what they do is they divide the back end of their application and their front end of the application. So what they do is they port the back end and make it as portable as possible, but plug in a native GUI, so to speak.

So there are a lot of people right now doing that on the Mac 10 platform. They'll use Cocoa as the front end, but they'll bring over a lot of engine code from other platforms. And that will give you the best possible native application experience on Mac 10. Again, using technologies like Cocoa and Carbon.

So another point on that graph is the browser plug-in that usually contains some native code. And I'm not going to talk much about that. You guys know what that is. But Java is in that green box, which is multiplatform and rich. So the very first version of Java had quite a bit of reach. In fact, it was almost as close as HTML.

Well, that's unfortunately changed because Microsoft and Sun decided not to see eye to eye on life with Java. So the bottom line is it isn't as ubiquitous. Gets back to my previous point on bundling. So you can't depend on it in the same way as you can depend on HTML. The other point on the graph is the Java 2 app.

This is where we see Mac OS X Java. We think that it's going to have much further reach than the standard Java 2 app. We also think that it's a much richer experience because of the integration we're doing, which we're going to demonstrate in this talk. It's right below the native app.

We think we're pretty close, but it certainly is not the ideal way to get to all the functionality of the Mac 10 platform. Can you get to 90 plus percent of it? Yes. And we hope to close that gap over time. So, let's move on. Let's talk about precisely what we're doing.

You've seen this stuff, so I'm not going to... You've seen it from everyone, practically, I'm sure. But for purposes of this discussion, it's critical because Java was developed on a Unix-based operating system. This enables us to port more quickly, enables us to innovate rather than just port, which is not always fun. And it enables us to offer an environment which is familiar to the Java community.

Okay, so there are many people in the Java community who never considered us before that are now coming over to 10. And like it or not, they open up a terminal and they can type Java C or Java and they get all excited. Wow, this is a Mac platform and I could actually go into this terminal, run Emacs, VI, and all these lowest common denominator editors. And use Java.

And that's great. Okay, that's great. Because who are we to tell them, no, you have to live in this IDE or you have to live in that IDE. That's not appropriate. So we have a spectrum of tools starting from the command line to some very great IDEs that we're going to talk about later. So just to put some of this into concrete perspective, I wanted to bring someone up from the company that's actually the first to deploy a Java shrink wrap app on Mac OS X. The fellow's name is Sean Reilly, and he's Chief Technical Officer from AppGen. Thanks, Sean.

Hi. As you said, my name is Sean Reilly. I work with AppGen, and I wrote MoneyDance. MoneyDance started out its life being developed under Linux FreeBSD. That's kind of the world I come from. I had a lot of time one summer when my girlfriend went to London, and I started writing MoneyDance, you know, kind of evenings and weekends kind of thing. Continued that way for a couple of years, and now I'm doing it full time. And MoneyDance is developing a lot faster because of that.

And I'm going to talk a little bit about MoneyDance, and then talk a little bit about how, you know, my experience went with bringing MoneyDance to OS X. My current development environment is OS X right now. I switched completely from Linux FreeBSD, so I'm now a part of the Mac world.

and enjoying it. Moneydance is a personal finance application, a kind of program that helps you manage your checking account, credit cards, investments, track a budget, things like that. The newest version allows you to do some online banking. We've got a lot more online features, you know, on the way, and I'll show you that in a little bit. You know, the program is probably familiar to anyone who's seen any type of personal finance application. It looks kind of like a checkbook register. Click through things and enter transactions. And has autofill.

Standard features you expect to find that you don't generally see in a lot of Java applications. One thing about Java on OS X I like is the look and feel. This looks a lot, it looks very nice, the buttons and the Aqua and everything like that. When you run it on Metal and Linux and things like that, it looks nice too, but Java on OS X is just beautiful, I think.

Didn't you put a picture of it on your box? Yeah, we have a box of money and answers. It should be in stores now, and the screenshots on the box show the OS X version. Even though the version in the box you can put on any platform, pretty much. Thank you.

So, you know, I can step through the program a little bit, show you the investment management, the different views. And it's a, I think it's a very full-featured application, you know, not like a lot of the, you know, you can go on the Internet and probably find, you know, 10,000, you know, small Java applications that do one or two things. You know, MoneyDance is intended to be very comprehensive, include all the features you need, and be a real, you know, full-fledged desktop application.

Some of the features that we have that you can really only have in a Java application are things like extensions. We have an interface to add something like plug-ins, so you can add new features to the program even after it's released. So we can go through adding an extension. And this works cross-platform. It'll work on Windows, Mac OS 9, Mac OS X, Linux, anything. And we'll just choose an extension here.

I don't know how many of you have heard of JPython, but it's a Python scripting language implementation written in Java. And we've written a little extension that will allow you to run Python scripts in Java and get at your finances, your transactions and accounts, and do whatever you want to do with them. So, you know, make money that's more extensible.

This is just one extension that we have. We've got a whole bunch of them on the way. You know, a lot of online services, a lot of, you know, some extensions that are really only for hackers. You know, if you want to just... play around with it and, you know, and you can write your own extensions. We have a public API that, you know, you can add whatever type of extension that you want.

And if your company wants to add, say, an online service to Moneydance that connects to your service, you're free to write your own extension and give it to us and, you know, we can provide it to Moneydance users. So you can enter Python commands in here. I won't really get into this much, but, you know, just know that you can enter Python commands in there and it will access your data.

So how long did it take to port? To port? I don't know if I would really call it porting. We didn't have to rewrite any code at all. We didn't even have to recompile it. We just took our JAR file. When we distributed MoneyDance, we distributed it with a JAR file and several supporting JAR files, like JCE, JSSE, things like that. And we took the exact same JAR file that we use on any other platform, and we packaged it up using the MRJ app builder.

And it took us under an hour to figure out how to do all of this stuff and to have a clickable icon that you could run the application with. And that was starting from never seeing Mac OS X before to having an application that looks like it's written in Cocoa running on that.

Well, thanks a lot, Sean. Thank you. So, one note, that's running on stock Mac OS X. Okay, so he wasn't running on any custom version that we have. And we will be showing you some custom versions, so I want to make sure I distinguish between that. So, Mac X is appropriate for development, deployment of these Java applications. And I'm amazed at the performance of that app and just the overall fit and finish, given, again, where we were a couple years ago with Java. So, very exciting. Here's our roadmap for 2001.

As you all know, we shipped, again, the Mac 10 GM on March 24th. Available at the show, I believe, there's a pre-release 2 of IE. One of the things we didn't ship for the GM release of Mac 10 is applet support. So that was a collaboration between us and the browser vendors. The most notable ones are the OmniWeb group and the Microsoft folks who do IE. So IE's doing a pre-release.

We're a little bit behind on the OmniWeb work, but we expect to do that as well. We're going to have a release by the end of this week. We wanted to have it available for you this week so that you could start playing with this stuff in the browser. and we expect to have a full-fledged GM update of 1.3.1 in July.

For those who aren't aware, last week Sun actually blessed 131 GM, and that means we're only going to have a two-month delta between Sun's latest stuff and our latest stuff. Okay, this is the best that we've ever done, and in fact, I think the best in the industry at tracking Sun's latest release. Again, years ago, we were always apologetic. This year, no excuses. We have this stuff in a timely fashion. Two claps.

Okay, so what's new in DP1? As I said, applet embedding now works. We've made many improvements to the Aqua swing look and feel, debugging and profiling work, and many bug fixes. So even though you can deploy, obviously we still have bugs and we still fix them. So what's left? We are going to be updating to 1.3.1, and that contains some new APIs, a new version of HotSpot. and we have to make sure we're conformant to Sun's JCK validation suite. Right now I think we're passing, the release you'll get, I think we're passing 90 plus percent, so we don't have far to go there and certainly fix more bugs.

So, now I'm going to shift gears. You know we're shipping with 10. You know what our plans are for the update. Fairly straightforward stuff. Well, what are other things that are on the horizon? Okay? Because I think we only meet once a year, and it's important for me to talk about this, because I know many of you are interested in it, even though some of these things I'm going to be talking about, we don't have product plans for to talk about today. But it's direction.

So, Java Secure Sockets, this is some really good news. You can go get this today. It's a pure Java implementation of SSL and TSL for doing HTTPS or just Secure Sockets. It's available from Sun's website, and there's the URL for it, and you can bundle it with your application. So, this is a perfect example of Sun continuing to add value to the platform and us being able to take advantage of it without doing any work. Okay? So, that's the ideal world from my perspective.

And the other thing to note is on Mac OS 9, the only place we had Secure Sockets was within the browser because of how we chose to implement it. We didn't have this feature for applications. And now with our emphasis on applications, it's critical that this feature exists. So, again, this is richer than the capabilities we were providing on 9 with MRJ.

Java Web Start. This is a very interesting technology that enables you to just click on an icon within a browser and get your application to run. There's no ad hoc stuff you have to do, which varies from product to product, and it gives you transparent update. It also is available from anywhere. It's a shame this didn't exist three or four years ago, but it exists now and we're right on top of it. We think it's great and it is also integrated. To demonstrate some of this is Steve Lewallen from my team.

Thanks, Steve. Good morning, everybody. So I have two actual cool web-based demos for you this morning. One is Java Web Start, and actually I'm also going to show applets running in Internet Explorer as well. So Java Web Start, what is it? Where did it come from? What's the deal about Java Web Start? Well, Java Web Start was developed through the Java community process, and for those of you who don't know anything about that, that's basically a forum that Sun established to work with their partners on developing critical technologies like Web Start for Java.

So Web Start. Web Start is all about permitting Java applications, be they small or large, simple or complex, to be deployed from any vendor's web server to any Java-enabled web server. Java Web Start is a platform that allows Java Web Start to deploy on any Java Web Start desktop, such as Mac OS X, from any vendor's web browser, meaning a web browser doesn't have to, for example, have the capability to display an applet to still use Web Start.

All of that is to be done securely through a single click of the user's mouse. We have a simple HTML page above us on the screens. This is vanilla HTML, just some images and some links. The WWDC WebStart image here has a hotlink behind it that is tied to a JNLP, a Java Network Launching Protocol WebStart document, which is written in standard XML.

This document contains everything WebStart needs to know in order to find the application it needs to present to the user. So I'm going to start the demo off. I'm going to click on my little image here. And this click will trigger the download of the XML document. And that in turn will trigger the WebStart technology, which we saw happen very rapidly. But it triggered the WebStart. So we used the WebStart technology to examine that JNLP file.

It found out what application needed to be downloaded, what version it was, what's its name, who wrote it, where to find out more information about it, all that kind of good stuff. It, in our case, downloaded the application because it wasn't already on our system. Had it been, and had the user requested the same version as was on our system already, it wouldn't have downloaded it. It would have just reused what was there, and the download would have been faster. launches the application.

So once you get a bunch of these applications on your system, you may have difficulty managing them. Well, Web Start has built-in application management in it. So I'm going to go and I'm going to start the Web Start Management Console. Bring up my dock.

[Transcript missing]

I mean, that is like, it can do it faster than I can type it. So that is a premier example of how tightly you can integrate Cocoa services with current Java. So we can also ask the framework, what are the suggested corrections? I don't really know how to spell the word "this" maybe, so I'll go and I'll Control-Click over the word.

and I'll get a list of possible corrections and this is my correction. I'll do the same thing for the second word. The second word I want to point out that we can also tell the system just ignore this, you know, it's a funky word, you know, remove that red underscore. I don't want to see it. Or we could say this is a new word.

A lot of times in our business we know that the spell checkers complain about all kinds of technical terms that we know are really spelled correctly. So I can actually ask the system to learn it and then all applications, native and otherwise, that use the Cocoa spelling service on OS X will now realize that that word is a correct spelled word and not spell it, you know, indicate that it's been spelled incorrectly. So in this case I'll just choose something and it's corrected. So there we have it. We've taken a standard Java swing application. We aquified it. We turned on the Aqua look and feel.

And we added a few new Apple Java frameworks released this week that you can use for free. And we wrapped it up in Web Start. We deployed it through an Apache web server. Down to our Mac OS X desktop through Internet Explorer all with a single click of the mouse. So that's the Web Start demo.

So let's see how applets are doing today. As you know, in the first version of Mac OS X, applets weren't running so great. We've made a lot of progress with working with Microsoft, and the Java team has worked really hard on getting this to work. So here is pretty much the biggest swing applet I could find.

It's a demo application that Sun wrote quite a while ago to demonstrate all the capabilities of the swing UI toolkit. And we've probably all seen this before. I'm just going to play with it a little, and we can see the performance and see that it's okay. Now, the very first demo tab that comes up is really my favorite, internal frames.

The developer that did this really went to extremes to make it very OS X look and feel. So we see our windows here. We can move them around. That's pretty fast. And we can resize them. That's happening fast. And let me make this small so I can scroll. And that happens fast. What's really cool is, of course, Mac OS X has a dock on it, right? A transparent dock.

So if I start minimizing these windows, we see a transparent little dock appearing at the bottom. And it's even, you see the transparency as I move the window around. So that's really cool. They did a great job. So let's take a look at some other pieces of this swing set demo. This is a good one. We can see how fast the columns move around. And I can resize them and do that kind of cool stuff. And we can see, we'll look at the progress bar.

And it's hauling the mail. It's working very fast. So that is swing set two demo running as an applet inside of Internet Explorer. And those are my demos. So thanks, Steve. Great. Thanks, Steve. No problem. Pretty cool. Next, I'd like to bring up Larry Abrahams from Sun Microsystems.

Larry has been one of our strongest supporters and son, and I just wanted to bring him up to thank him for all the work that his team has done on our behalf and all the help they give us. So I also wanted him to take the time to say a few words. Thanks, Larry.

Thank you. First thing I want to do is thank Steve and his team for the great job they did on 1.3. It was sort of a long time coming in getting Java 2 on the Mac, but it was worth the wait. As you can see here, it's just fantastic implementation. So thanks, Steve, to you and your team for doing such a great job.

And one of the comments Steve made about 1.3.1, about Apple shipping 1.3.1, I guess within two months of when Sun ships, well, just to put that in perspective, Apple will probably be, I can't say for sure, but Apple will probably be the first platform port of 1.3.1. So we've come from a situation where Apple, in many cases, lagged behind Sun much further than either party would have liked to today when Apple is... . ...the first licensee to be shipping on 1.3.1. So congratulations and thanks for that. Yeah.

And I expect the same on 1.4 as well. I expect Apple will be close behind us. Did you give a date for that yet, Steve? Well, did you? Yeah. End of November. And we're right on schedule. In fact, next week we'll be shipping the beta for 1.4. So let me talk a little about the state of the partnership, and let me make a little confession.

Before I joined Sun, I joined Sun in '98, I was an Apple employee. I worked at Claris, actually, which, at least in those days, was Apple's software arm, in a sense. And as most of you know, Claris has now sort of migrated into FileMaker Inc. Well, when I was there, I was responsible for Claris's internet products, homepage and email and some other things.

Still some good emailer fans out there? Glad to hear that. It's a great product. And when I came to Sun, my boss at the time, who was heading up all of Sun's Java efforts, told me, "I have three missions for you. Number one, get Java 2 shipped." Because at the time, Sun was having problems getting 1.2.0 Java 2 out the door. It was a big deal, and there were some problems with the schedule and with getting the thing product ready. The second mission was to get HotSpot shipped. It was sort of in a similar state.

HotSpot was a really cool next generation VM technology that we were having some trouble, at the time, productizing. And the third thing was, can you please, given that you're coming from Apple, could you please try and fix the Apple and Sun relationship and get Apple to a point where we're shipping compatible products in a reasonable timeframe? So very early on, and those were--that's true. Those were my first missions. Those were my three commands from my boss at the time.

So very early on, Steve and I got together and talked about, well, you know, what could we do to make things better? And I just want to, once again, thank Steve for, from those early conversations, the spirit of partnership that the two teams have shown and the really getting better with every month collaboration. We've gone from almost two, you know, two camps that were barely working on the same agenda to now intimately working on technologies that we're sharing for, you know, fundamental Java technologies that the two teams developed collaboratively.

I'll give you two examples of that. The Aqua look and feel for Swing that looks so beautiful. I won't in any way put down our metal look and feel or our windows look and feel, but I got to say, this one looks pretty hot. It was actually the result of a really tight collaboration between Sun engineers working at Apple, and Apple engineers working at Apple, and that's something that, you know, Sun has committed real resource to invest in and will continue to invest in. The second example I'll mention is on the VM.

Our two VM teams ever since Hotspot have worked extremely closely together, and our VM team is extremely excited about working with Apple on Apple's port of Hotspot. And as a matter of fact, there's some really exciting work that Steve may talk about for the future where Apple has developed some great extensions to Hotspot that Sun is working on. And Sun is going to be looking at productizing. So at this point, the collaboration is so strong that the technology is flowing in both directions, and that's just a great comment on the state of the partnership.

So let me talk a little about the future of client Java as Sun sees it, and I think it lines up very well with what you've seen and heard here today. Sun's latest statement and vision for client Java is something we call Rich Clients for Web Services. If you come to Java 1, you'll hear a lot more about that.

But there's a lot of talk about web services. So what are web services? Web services are essentially internet or web or network services, in our case, implemented on top of either J2SE and things like servlets, Java server pages in some cases, and Java 2 Enterprise Edition and things like EJBs.

And these web services today are being made accessible through standard XML protocols like SOAP, which is something that Sun is, at this point, standing behind from a strategic web service perspective. So what good are these web services, though? I think Steve brought this up, without a great face on them. So as we all know, the most popular, lowest common denominator face is HTML and technologies that create HTML.

But it's always been my vision in particular that the need for interfaces that go beyond the browser, for a lot of reasons, is something that is going to really come back, in a sense. We sort of took a detour in many ways with the birth of the web through HTML and through, in a sense, a lesser user experience for online and network data.

And I think the time is rapidly approaching where we're going to see a lot more innovation in user interfaces that go beyond the browser. And I think Java is going to play a key role in that. And the types of things you're seeing with Java 2 are going to play a key role in that.

So our vision is that Java 2, and certainly Apple's version of Java 2, will be a great user experience for this emerging generation of rich clients for web services. And I think it's only natural that Apple, in a sense, be the leading provider of those, or the vanguard of those, since Apple invented the rich client, the rich interface.

And Sun would like nothing more than to see Apple be at the forefront of that. And be in the lead in terms of showing off this new generation of technology. So thank you once again. Sounds good to me. And I look forward to-- Thanks a lot. Our next year.

So for those of you that didn't attend Java 1 last year, actually Steve Jobs was on stage. He was featured along with Scott McNeely. And it was one of the first appearances Steve has made where he wasn't the star. And it was pretty interesting to get him up on stage with Scott and actually shake hands and make sure the two companies are working together. So not only are the people in the trenches working well, we have our executives that are actually kissing and hugging as well, which is great.

[Transcript missing]

So that's sharing. By the way, I'm running low on time, so I'm going to really have to zoom, unfortunately. I usually go too fast. Now I'm going too slow. So an industry first. In the Steve Jobs tradition, very dramatic. Hardware accelerated swing is what I'd like to talk about right now.

In the product that we're going to be giving you later this week, it is not the default, okay? However, this support is in there, and if you go to some other talks that are part of the Java track, the guys will hopefully tell you how to enable it, again, if you're nice to them. So, Accelerated Swing Caffeine Marks. Caffeine Mark is a micro-benchmark, which we don't particularly like, but everyone else seems to want to measure Java by it.

So, let's talk about the imaging score. In the past, when we focused on the just-in-time compiler, we have had advancements over the years in some of the low-level compiler jitsy space. We always looked fairly mediocre, if not poor, on imaging and graphics. But now, with the hardware-accelerated swing, basically, we're 8.5 times faster for graphics, okay? I'm sorry, that was imaging. Now it's graphics. The graphics score is even more impressive. We go from a mark of, what is that, 200 to, whoa, 23 times faster for Caffeine Marks. So again, we don't really like Caffeine Marks, but we're showing them because now we do well.

A more interesting benchmark is actually an internal benchmark that Sun has developed to measure swing. So because a lot of the focus of the GUI is now centered around swing and not AWT, measuring how fast swing performance can be is very important. So for swing, our swing mark on a 500 MHz G4 with a Radeon is 65. That's the mark.

When we hardware accelerate, we're 55% faster. In this benchmark, unlike the other one, lower is better. An interesting test that the engineers who were working on this decided to do, they said, what if graphics were infinitely fast? So what they did was they stubbed out, so to speak, from Java the calls to the lower level graphics where they didn't do any drawing at all, and the swing mark was only, what, five points off from where we were when we were doing hardware acceleration. I mean, this is incredible.

So the pendulum swings, right? Oh, the Jitsi's the problem. The garbage collector's the problem. No, we got that right. Now the graphics are the problem. Looks like graphics are going to go away. Well, the pendulum will swing back, and we'll be back to the compiler. So it's an iterative process. The important point is performance is critical, and we're working on it. I'd like to close with development tools.

Core Apple Tools, we're investing in tools. Steve told you that. You know that. You have a disk in the bag. Actually, I'm thrilled to say you have three disks in the bag. You have Apple's tools, which I'm responsible for. You have JBuilder, which is a fabulous pure Java development environment. And you have CodeWarrior Early Access.

So, I think at a high level, it seems like Mac 10 is just out of the gate, but you guys have more tools than you've ever had in previous years. Again, Steve is very aggressive about wanting you to be on the platform. Without the tools, you wouldn't be as successful. So I think you have all the tools to be successful. Here's a slide on Apple's tools. WebObjects you're familiar with.

I'm not going to go through this in detail because I have eight minutes left. But there are talks on all these. I think the important point is just what I said. You have the tools to be successful. We have the application server. So again, you could do your rich, swing-based Java app, or you could do the browser UI.

This is a rich GUI, rich web GUI. Again, Apple uses this stuff so you can be assured that we're eating our own dog food, and if we have problems, we're going to fix them. And it's critical that we find them before you do, typically. So CodeWarrior has Java 2 support, full RAD support, debugging is much improved for both application and applets. And Java deployment, you folks are mostly familiar with, hopefully, Zero-G.

They have been a great partner for the last three years. They're very easy to work with, give us lots of feedback on the runtime, and I think they have some great products, and I hope you agree with that. Java performance analysis, one of the reasons we're getting faster is because we actually have tools to analyze performance now. And this tool is fabulous. It's best of breed. That's another point I need to make.

The dust has settled in the Java tool space, okay? If we were to choose a tool three years ago... We would have probably picked the wrong one, okay? So right now, the dust has settled. We are choosing to work specially with the products that I'm referencing here. I'm not just putting them on a slide because the product exists. There are many products that exist. For instance, Forte is Sun's development environment, okay? I hope that's very successful on our platform.

There are other Java development environments. The people who are being called out here are people that Apple has chosen to partner with and give special love and care, okay? Okay? So these tools, we think, are the best of breed, basically. So last, I have six minutes left. I'm going to bring up Blake Stone of Borland, someone who supported us for the last two or three years. Thank you. Thank you, Steve.

We're really excited about this. This is something that we've been working hard for the past year. You saw early technology demos last year of JBolder 4, but announced last week is our JBolder 5 product, and shipping in all of your bags, you have a preview release of JBolder 5. So I hope you have a chance to look at that after the show's over, or even during the show.

I wanted to talk a little bit about this and some of the path to get here, but we have only a few minutes here. So I'm going to sort of tailor this discussion, I guess, and showcase the product. You'll get just a little bit of a glimpse of what JBolder 5 is about here. You can see an awful lot more in a couple of other sessions.

Wednesday at 10:30, there's a session showcasing a couple of Java-related tools. We'll be there. But there's also a session Wednesday. So Wednesday at 5:00, I'd encourage you to come to where we'll showcase JBolder in a lot more depth and see a lot of what we're going to gloss over very quickly here.

Still, I would like to bring up and showcase a few things just for those of you who may not be familiar with JBuilder. Of course, we brought it to the Macintosh. Of course, we got a nice Aqua icon for it. It was critical to us to really look like we belong in this environment. In fact, we've done quite a bit of tailoring.

And we can't necessarily see all of the details we went through, but everything from the default order of buttons to making sure that Aqua looked right in the environment. These are things we really focused on. So here it is in all its glory, and we'll demo it in Aqua this time around, because Aqua works great.

It looks fantastic. It's the right way to work on products on the Macintosh platform. So I have a simple application, our Welcome app, the default that comes up here. And I want to extend that a little bit by taking advantage of a few pieces of the product. First of all, I'm going to go into our graphical designer, which allows us to do visual manipulation of Java beans.

And so we're going through and looking at this particular application and discovering that what we have here, essentially, is an empty frame. This empty frame we want to use instead of border layout. Perhaps we want to use an X, Y layout, allow me to position some things, drop a button in place, drop a text field in place. And we get to see our app being designed in Aqua here. That's an option we could choose if we were designing something for another platform to preview that, but why? So we'll get a scrolling region and perhaps just drop a list in this region as well.

I can even work with non-visual components. You can see on this side here, I'm getting a collection of components that I'm manipulating. And all of them so far are visual components, but I could also go in and say, you know, I'd like to select a non-visual component. In this case, I'd like to go find a model for this list. And I could just scroll down and find my default list model.

and drop one of those as well. So now I have a non-visual component that I can interact with by telling it that I'd like my list to use this model that I've created and then write some code. So the visual designer lets me very quickly assemble the user interface. It doesn't use any proprietary techniques. What it's doing is it's writing Java code for me the way I would write it, using setters and getters.

But it then allows me also to drop in and write my custom code. And I might want to write some code here that interacts with this default list model. And if I can't remember the name of it, I can ask for some assistance with that. And perhaps I can add an element.

And the element I will get from a--see, we have a text field on here, jTextField. I'll just go ahead and get the text from it and compile that. One of the things that's really critical to us is fast compile time. We've got an integrated compiler that does incremental compiles through a smart dependency checker so that even on large projects, and I mean enormous projects, JBuilder itself consists of more classes than the entire JDK and we can do an incremental compile in under 10 seconds. So speed, again, is critical to us.

We can go from right from there to being able to actually run this code. And we'll take a shortcut here and jump right into even debugging this code. So it'll do a quick dependency check to make sure that we're actually running this code. We'll make sure that nothing's been changed. We'll get the debugger UI up and we'll launch our Java swing application here.

Where I can type some text in, click the button to add it, and we hit a break point. So we have a pure Java debugger here that has a really rich set of capabilities. Now we're not going to be able to look at them all here. I again encourage you to come to another session. But if I want to find things out about this text field, I've got access to a really rich UI that allows me to browse that object and all of its characteristics, the class it belongs to, and so forth.

So that's pretty exciting in its own way, because we've got a real best-of-breed development environment here, running on Mac OS X, letting me do all of my work on my favorite platform. By the way, that's not just marketing speak. Long-time Apple fan, you may be able to tell that I wear the colors here. I've been a believer for a long time, and this is like coming home for me. But there are a lot of other interesting things that showcase the power of the environment that we're working on.

We're working on an environment that has a ton of very sophisticated integration with the native environment. JBuilder is probably the worst torture test you could throw at a Java VM, because not only are we a fast editor, a graphical environment, a debugger, which is one of the nastier areas in porting the Java VM, but also we just include a whole bunch of functionality. So one of the things I wanted to showcase is if we go and look at our release notes, we'll bring them up in our integrated HTML viewer.

Well, if you're not really too fond of the HTML viewer you're using currently, you may want to note that this particular viewer you can just type a URL into, and from within JBuilder, browse directly to the web. And the performance is... and get completely reasonable performance. Now for sort of the surprise. All of this is running without hardware acceleration.

Okay, so the hardware acceleration makes things enormously faster. Let's showcase perhaps one of the worst case examples of what happens without the hardware acceleration. If I grab and move this split, you can see that the performance is perhaps not what we would hope for. Let's see what that's like with hardware acceleration on.

So I'm going to come down and go find my collection of JBuilder icons. And I'm sorry, I absolutely have to. We spent enough time on the artwork for these. We really wanted to get that photorealistic icon thing down pat here. And go in and have a look. I've got a couple of configuration files that if you go ahead and register your version of JBuilder that's in your bag, you'll find that we provide you tips.

So once you can get the new Java VM from Apple, and please get the new Java VM from Apple, JBuilder really benefits from a lot of the work these guys have been putting into it. We'll show you how to make these kinds of changes to turn on things like the hardware graphics acceleration in the license email you get.

So we'll bring JBuilder back up and have a look at the kind of difference it makes and sort of that one key indicator, which is dragging that splitter. So if you remember before, we were getting sort of a frame or two a second. And now, with hardware acceleration, it's Smooth.

Why don't you go to the web page? Go to the web page? Can you go to the web page? Oh, yeah, we can actually, sure. I mean, that's just a text view. Let's bring up something with graphics. So, do you have a favorite page in mind? No. The one you just brought up. Go back to the Mac OS X page from Apple's site here. So look at that. The scrolling performance, you'll find, is remarkable. We're really pleased with what hardware acceleration can do.

And I would like to take this opportunity to thank many of you in the audience who worked on this and have been working on it very hard. The Java team at Apple has been doing a phenomenal job and we've been really proud to be working with them. Thank you, Steve.

Thank you. Pretty much out of time. I think I've said a lot today, which is why I'm out of time, along with my great demoers and speakers. I just want to touch on the important points. The important points are what we ship with Mac 10 we're very proud of. We're actively working to make it a lot better, and we've talked about some of that.

We think we're going to have the best platform on the planet for running Java, and you've seen applications today that all work very well. We hope to bring the hardware acceleration to you guys in a timely fashion. I guess that's all I have. I have a bunch of tracks here.

There's the Java Virtual Machine track, or session I should say, Wrapping Mac OS APIs in Java Beans, Java Development Tools, Java Performance, JBuilder, and there's another five sessions. Since we didn't have time today to take Q&A given the length of the talk, feel free to come to the Java Feedback Forum on Friday and we'll hope to answer any questions you have. Thanks for coming. Take care.