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: wwdc2002-400
$eventId
ID of event: wwdc2002
$eventContentId
ID of session without event part: 400
$eventShortId
Shortened ID of event: wwdc02
$year
Year of session: 2002
$extension
Extension of original filename: mov
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: ...

WWDC02 • Session 400

Java and Apple: State of the Union

Java • 1:07:13

Every copy of Mac OS X includes Java 2 Standard Edition, making Mac OS X the ideal platform for developing and deploying Java 2 applications. This session covers Apple's roadmap for delivering the latest and greatest advances with the J2SE platform.

Speakers: Ted Goldstein, Alan Samuel, Deven Poolman, Pete Deemer, Jared Kaplan, Sean Allen, Toni Trujillo-Vian, Andreas Wendker, James Gosling

Unlisted on Apple Developer site

Transcript

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

Please welcome Vice President of Development Technologies, Ted Goldstein. So I don't even know if that was a long enough break for people to forget my name. So we're going to go through this pretty quickly because Java on Mac OS X, it just works. It just works great. And I think that really the questions that came up in between the last session and here, people talk about, well, so if you're putting efforts into Objective-C, you're taking efforts away from Java, maybe you're going to drop Java, maybe you're going to drop Objective-C.

And I think it's important to realize that Apple is not a small little company, right? We can do many things and appeal to many people and really have a very rich commitment. And I'll talk a little bit about some signs that you can see of Apple's commitment to Java. We'll talk, of course, about Java on Mac OS X and give you kind of a roadmap through WWDC of sessions and a roadmap of where we are going with Java and the pathway forward. to 1.4.

So, without further ado, why Java at Apple? Well, Java is Apple's cross-platform development strategy. We think that certainly in this marketplace, many developers need to develop applications for Macintosh and for other platforms. And Java fulfills this function not just well, but incredibly well. And that's because it has some fabulous features. It's binary portability, it's reliability because it is a well-safed and semantically checked language, which actually helps the first feature as well.

The fact is that many machine problems, many times when you write perhaps a C program for one machine architecture but bring it over to another machine architecture, you find and discover all sorts of flaws in how you programmed it that you were not actually writing in a machine-independent way. Java is designed from the beginning so that it is portable, it is safe, and it is reliable.

It is secure when you want to develop web-based applications or applications that are incrementally built, that load themselves and is composed of frameworks and piece parts from multiple vendors. And of course, very importantly, it is popular. There are many feet of books on Java and there are many other components and reusable systems that you can use to make a great Java system.

And then again, Java works great on Mac OS X. And you'll see in what we talk about that there are similarities in the fundamental design of the Mac OS X system and of Java that are inherently similar, that have allowed for these two great environments and great platforms to work well together.

So don't believe just my word for it. Hitesh Seth in the Java Developer Journal writes, "There's been a dramatic shift in Apple's strategy toward Java support in Mac OS, and it could jumpstart the deployment of Java-based applications and services on a user-friendly consumer operating system." We think this is key.

This marriage of X and Mac OS, really, we think we're doing a pretty fabulous job at enterprise applications. Now the frontier is on shrink-wrapped apps, where people are developing applications that are going into the consumer marketplace. And I think you'll see some examples of why we believe that's possible now.

Peter Coffey, the well-named, writes in E-Week, "Apple has done a tremendous job of making Java a more efficient and more efficient way of developing and deploying Java. And Java code run well, really well on the Mac, supporting such refinements as hardware graphics acceleration and anti-aliasing in a way that's completely transparent to the programmer." If you think about it, it really is our job to make your lives easy.

Part of that has got to be that we take these features of the fabulous Quartz graphics engine and the Quartz system and really use it to the full advantage and really to take things like OpenGL and really make it so that these are are simple and easy to use.

Apple drinks our own Java. We use Java ourselves in many, many systems, actually, not just three, but I'm going to talk only about three today. When you go into one of our beautiful new Apple retail stores, take a look at that point-of-sale system. That cash register is a Java application.

In fact, all of Apple's business runs on Java. Apple uses SAP and SAP client applications written in Java for all of our sales automation and order tracking and really just managing the whole inventory and parts pieces. And that has been a fabulous piece of the system. So really, when you buy a Macintosh today, some part of that order, probably most of that order, has transited through a Java application environment.

And then thirdly, and most recently, we've introduced off our Mac.com, our iTool system, Webmail. And that's available and able to access your Mac.com email account. And that uses Java and WebObject Server that we'll be talking more about as well. So really, we've used Java for multiple things, not just our own internal applications, but also in helping us choose what applications we want and how we interact with the rest of the world.

[Transcript missing]

Two more features. So if you use this, you also get the ability to--you also get JAR caching. What that means is that the JAR file, which represents the applets, which is the container for the applet, is kept on the system and is cached and shared across browsers. And it also has a new developer console. This is a new feature. The Java plugin is a new feature for Jaguar that we encourage people to use.

On top of all that, we then do a bunch of optimizations. The Acqua look and feel means that when you use a Java application-- How many people, by the way, saw the WebObjects demonstration previously? Just before now. What that--you know, you could see that it was clearly an Acqua interface, but it is 100% pure Java application.

Using JAR files, a well-formatted JAR file with the correct manifest in it will actually be double-clickable on the platform. Just two clicks, you know, bam, it's up and running. And as well, we support JAR files stored in the Mac OS X bundle format for when you need to ship many resources that are more complicated.

Another very important feature that is, I think, special about Java on the Mac OS X is the sharing technology. It essentially is the equivalent of shared libraries that allow for about six or seven megabytes of the common class file information, the Java Foundation classes, to be shared between one Java application and another. So this improves responsiveness means that the incremental overhead for additional Java applications is much less on the Macintosh. Although this is a technology that we've given back to Sun, and we hope that Sun will be including it in other platforms as well, it started here first.

Graphics, of course, are crucial and critical to how we believe people should use the Macintosh. So, of course, we have the Quartz-based Java 2D system and Quartz Extreme interfaces, which really take advantage of hardware acceleration. But above and beyond that, we've gone and used OpenGL whenever possible, when you have enough video RAM on your box, to really accelerate everything, all the way down to the texture mapping.

And there are sessions later in the week that will go into more detail about these terrific features. So, given this, what I want to do is invite Alan Samuel, our Java evangelist, up to show a little bit about actual applications. Because this is not just about the technologies, but also about what people do with it to create great shrink-wrap apps. Alan? Thank you, Ted.

So I'm supposed to be showing you guys a demo, right? It looks like I'm doing a presentation myself here. This little application right here, I don't know... Hey, Alan? Yeah? That's not right. What's not right? You're not Minister of Java Evangelion, you're Chief Minister of Java Evangelion. Oh, let me correct that here.

If you guys take a look and look at the application here that I'm working in here, this is actually... oh, let me spell it right. You're the Chef. Chef, right? How about that? This is actually ThinkFree Office. ThinkFree Office is an application written by a Korean developer. The idea here is this is a complete Office compatible suite, so it can read and write all of Microsoft Office file formats.

Now, the really interesting thing here is you'll see you've got all the correct placement for the menu bars. The interface itself is in the Aqua look and feel, so it is a swing application. Some of the value that ThinkFree actually adds, beyond what you get today currently with Microsoft Office, is the fact that they actually localize for several languages that you currently don't have available to you if you were to go out and purchase Microsoft Office's products.

The cool thing here is I just want to show you that we could actually use a 100% pure Java application to be able to do our presentations here today. This actual application was not actually written on our platform. It was written somewhere else and was easily taken over to Mac OS X.

So this is kind of great. This is kind of fun. Now I'm showing you some of the features that we've got here. Now I'm showing you some of the productivity stuff. Now let's get down to what I would really be doing if I was up here and having a good time. And that would probably be playing a game. Now let me tell you a story about this particular developer. This is actually a Japanese developer, CyberStep.

The story about these guys, I met CyberStep at Java 1 Japan. We actually came off the stage. I did a presentation there. They walked up to me and they showed me this massive multiplayer game, completely written in Java on a Windows laptop. I went, "Hey, that's great. What do you guys need to make this happen?" We sat down and we talked with them. And the only real specific technology that they had that was outside the Java specifications, they had written some of their own JNI libraries to call out to OpenGL.

So they had done their own glue work there. So we sat down with them. We spent an hour in the booth at Java 1 Japan. And this is what we got. I'm going to give you guys a little example of this here. I'm going to go down to game settings here.

I'm going to put this on full screen. Now remember, this is a full-blown Java application. A lot of cases people don't believe me. We'll pick a little character here. We'll pick, I don't know, who should we pick here? Let's pick, we'll go back to this guy here. This is an anime-style game, typical Japanese application here. Let's see if I can play a little bit here.

[Transcript missing]

If I could get rid of my gun, I could go get that head and throw that at all the little people here. Let me get in here and battle a little bit and see if I don't get beaten up by some of these women. The whole point here, I mean, if we look at this sort of game, is that this is the type of application that you guys can build, anybody can build, with Java and Mac OS X. I personally was pretty amazed when we saw the sort of solutions that these guys were developing.

Just to let you know, the company here, CyberStep, who built this particular game, actually they're a middleware company. They're actually going to be selling this as an engine that's currently in beta for anybody that wants to do massive multiplayer game development. So these are all the types of services that are available to you guys today, the sort of solutions that we expect to see on the platform.

Later on, you're actually going to see some excellent demos. I don't want to steal anybody's thunder, but that's just a look at some of the things that you guys are doing, and keep it coming. That's basically what I want to say, keep coming up with great solutions like this. Can we go ahead and go back to slides?

[Transcript missing]

Oh, it was over there. Thank you, Ted. I better not throw this.

Let's talk a little bit about some of the tools that are available on our platform today. I'm sure you've seen a lot of sessions so far covering Project Builder, our excellent integrated development IDE, but let's talk about some of the other language-specific IDEs that are out there and available today.

One of which I'll mention right off the gate, which is Borland's JBuilder and their Optimize-It product. One of the things that you do have with Borland if you're interested in purchasing the JBuilder product is we do have a significant discount available to all ADC members. That's a great benefit of being a member of our program, so you'll be able to get that at a discount. Optimize-It is another excellent tool that Borland recently acquired. IntelliJ's IDE, Sun, NetBeans, and Forte for Java. Also IBM has an Eclipse IDE that's recently out, and of course MetroWorks Code Warrior for those of you that saw the last presentation.

These are just a host of some of the solutions that are available. We couldn't obviously cover all of the solutions that are available today on Mac OS X and Java, but with more and more tools out there in the Java space actually being written in Java themselves, the story of bringing those folks over to Mac OS X is much easier. I think as more and more people move to pure Java, we're going to get more and more tools obviously on our platform. With that, I'm going to go ahead and bring up... Let me go the other way here.

I'm going the wrong way. I'm going to go ahead and bring up Devon Poolman of Zero-G Software. And Devon is going to give you a demonstration of Install Anywhere. Now, hopefully all of you know that you do have Install Anywhere in the bag and you've had a chance to sample your chocolate. So I think you have Devon to thank for that.

Well, today, Zero-G and Install Anywhere is releasing Install Anywhere Mac OS X Edition. It's a brand new edition for Install Anywhere for the Install Anywhere family. And as Alan mentioned, you'll find the Cocoa version, we call it, in your bags. And if you are not a attendee, maybe an exhibitor, please feel free to drop by our booth. We do have some extras. But Mac OS X Edition is very important to Zero-G, and I think it's important to developers for two reasons. One is, well, it's generally a perfect fit. It's Install Anywhere in Mac OS X.

Mac OS X backend is Unix. Install Anywhere has been doing Unix development, Unix installations for over five years now. On top of that, Install Anywhere is built on Java. Java being a virtually native API on Mac OS X makes it very easy to run and operate on Mac OS X. I'm gonna go ahead and start off here. By showing how easy it is to work with Install Anywhere, we're gonna start with installing a demo application called Office Suite. Now, this application is a Java application, but Install Anywhere is equally capable for deploying your Cocoa application, your Carbon application, whatever you need to do.

So here's the basic designer. In adding files to Install Anywhere, it's as simple as just dragging and dropping into our designer. And we have kind of a what you see is what you get layout. We can move stuff around. And this shows you exactly what's going to be installed. Additionally, as this is a Java application, we can look at some of the Java-specific features in Install Anywhere, such as automatically setting the class path.

and creating a launcher for our application. In this case, it's even going to automatically search our main classes. And it'll pop up here, and we'll see Office Suite, which is my application. and I'm even going to add an icon for this particular application. Go ahead and select that.

and that's how we just add our files, very simply. And customizing our install is also very simple. We have our pre-install steps. You can see our important note, our introduction. And we can also control the look and feel, which is very important for Mac OS X developers. We can control and view the look and feel inside of our project. So I'm going to select a different background image. It's fully skinnable.

and we can even preview directly inside of the designer, see what your installer is going to look like. From that point, all I need to do is click Build, and it's going to go ahead and build, in this case, a web installer. Got one precooked right here. And the web installer includes not just your downloadable, executable installer, but also a nice web page in Java applet that makes it easy for your end users to download and run the installer.

All you need to do is click on the button. The applet will run, download, and launch the installer. And now here we have the installer that we created. We're localized to 29 different languages. And as we click through, you'll see we have the nice Aqua look and feel. Thanks to Java, it comes very easy to us.

Here we get to see the basic installer. As it walks us through, you can see the steps we take. The readme we have here has full HTML support, including links that actually pop out. We'll continue to click through. We'll install this application. And here's one of the features that's unique to Install Anywhere, which is the ability to install our alias directly to the dock. So we'll see that as we go through installation. Click Install, and once again you'll see our nice Aqua progress bar. And here's our new shortcut, our new alias.

Excuse me. Now that our application is installed, mind you this was a Java application, we created a native launcher for it. You click and we'll see here's our Office Suite application 1.0 and that's it. Now, that's client installers for Install Anywhere, but Install Anywhere is equally capable of building installers for your client applications, but also your server applications. And some of the new features in this latest release make it very easy to do your server-side deployment.

One of the features specific to Install Anywhere 5 that's brand new and great for server-side deployment is Merge Module technology that allows you to OEM your installers, to build suite installers. And in this case, it allows us to pull in a component that is going to be part of our installer.

In this example, what I want to do is I want to I want to go ahead and build a web application and deploy it, but I want to deploy it on Tomcat. And all I need to do is import a Tomcat merge module. And a merge module is just a self-contained installer component.

I go ahead and select the Merge module, in this case the Tomcat. It's going to load in all those resources, ask me where I want to put them, and I can load all sorts of different And just by doing that, what it's done is it's populated all the Tomcat files and resources necessary, all the information it needs to install Tomcat.

All I need to do is just drag and drop my WAR file into the web apps directory, build my installer, and I'm done. So that's Install Anywhere: Building Client and Server Installers. Great tool. I hope you guys find it useful. If you have questions, please feel free to come by our booth. We're in the exhibitors hall. And that's about it. Thank you very much, Deven. Thank you, Alan.

So, sort of in the cavalcade of tools, the next tool I want to bring up is Techadance with their new Magic product. I want to bring up Pete Deemer, their CEO. Sort of similar to some of the other stories, I met these guys when I was at Java 1 in San Francisco, literally walking by the booth and saw the product. And unfortunately at that time it wasn't actually running on our platform, but after a loan of a CPU and, I don't know, a day or so, I'm sure you'll tell the story, Pete, we had it on Mac OS X. So I'll go ahead and turn it over to you.

Great. Well, Tekadence Magic is a new visual authoring tool for building Java software. As we see it, Java is sort of like a 100-story skyscraper. The entrance is three stories up, above ground level. And unfortunately, that works to the benefit of less powerful, non-portable environments like Visual Basic.

And we created Tech-at-its-Magic to directly address this market need, which is for an accessible, easy-to-use tool for building 100% pure Java applications with the portability and power that Java offers. So, for a little bit more on our technology, I'm going to turn it over to Sean Allen, our CTO. Hi there. Thanks, Pete.

Prior to co-founding TechAdents, I actually worked at Apple Computer for about 10 years, becoming a QuickTime engineer, which was fun. Added some of the Wired Movies technology to QuickTime. About two years ago, I got together with Jared Kaplan and Matthew Peterson out here to try to apply our experience with runtime engines and authoring tools to create a solution to make creating software easier for everyone. The result of this effort was TechAdents Magic. And Magic's basically based on standards. Our file format is XML.

A runtime engine basically builds a live object model out of precompiled Java objects, which you kind of wire together with JavaScript. But the output is a pure Java application. Magic itself is a pure Java application. Magic's sort of like a modern hypercard. In a way, it enables non-technical users to create applications without a lot of scripting knowledge. But we also think that Magic's really nice to use alongside an IDE. So you can do some source code level coding in the IDE and then combine it with what you build in Magic to create things quickly.

We really like Magic on Mac OS X. It can take advantage of QuickTime, Java Web Start, and other things like the Aqua look and feel. And also the tools provided with Mac OS X, creating content such as iMovie, iTunes, and iPhoto, work really nicely with Magic. So I'm going to turn it over to Jared Kaplan, who's going to talk about how it got to OS X.

[Jared Kaplan]

Our first attempt at porting Magic to OS X came after we released the Windows beta version of our software. And what actually happened was that a few of our users took it upon themselves to just copy the jars over from their Windows machine onto their Macs.

And of course, we tried it, and we were like, you know, wow, it actually works just like that. And the amazing thing is that Magic's a pretty big application. It's about 800 class files. And it took us about two years to develop the PC version. And less than a week, we actually got a complete Mac version done. And I think that's really important.

I think that's really important because that really shows how quickly that you can port a Java application and how easy it is to do. Great, so let's build a Java application using Teknins Magic for OS X. This is the Magic object browser, and right now our application just has a single object in it. It's a window, and these are the properties of that object. Let's go into the visual editor just by double-clicking on the window.

And I'm going to bring up a scrapbook of pre-built objects. We supply 80-plus objects across all of these different categories to get you started with your development. Let's bring up our scrapbook of UI objects, and let's bring in a -- start with a tab pane container. And let's drag in a couple tab panes. And let's drag in a couple of tab panes.

and let's bring in a slider and a couple buttons. Now, with Magic, you're not constrained to working with our collection of objects. You can very easily import external objects. For example, let's bring in a QuickTime movie. We're just going to drag and drop it straight into... Manage the drag and drop here. We're going to drag and drop it straight into our visual editor, and it recognizes it as a QuickTime movie.

And one of the really neat things about Magic is we're building a live application here. We're working with pre-compiled Java objects. What this means is that there's no compile step necessary. At any time, we can see our application running live just by clicking on our preview tool. The video runs and the UI is fully functional. And while we're working in this visual editor, we're also constructing a hierarchy of objects in the object browser. And we can actually go in directly and edit any of those properties.

We're actually going to build a little...

[Transcript missing]

and we support not simply standalone objects, but we also have something called compound objects. And compound objects are combinations of objects that you encapsulate into packages and can reuse or exchange with other users. So in this case, I'm going to drag and drop a compound object that does a couple of different things onto our flash graphic. You'll see it present there.

I'm also going to put a drag modifier on our video window and a drag modifier on our flash graphic so that those will now be draggable. So let's go into the preview tool. And we have the scrub control. We see our flash graphic animating and the alpha level changing. And we can click and drag.

We also have a little sound there. So, now this is part of a cool application, but I think we need something a little extra. And we're going to do that with the third major type of external object that you can import into Magic, and that's Java code. So let's say we have a jar file. This is just a simple text-to-speech synthesizer. We're going to just drag and drop that jar straight in.

We're going to import it as a Java class. And I'm actually going to define the class that we want to expose. And the speech class has two methods. We use reflection to expose those. And now I'm just simply going to drag and drop a text field into my tab pane there. And I'm going to patch the text value property from the text field to the say method of that Java class. So, this is our application. Now let's publish it and run it as a standalone Java jar file. We just choose publish.

Right now we support Java Web Start, Java applications. Shortly we're going to be offering Java source code generation, as well as a couple of other enhancements. So, a whole range of different destinations that you can publish to. Today, though, we're going to publish to just the standalone jar file. And we'll call this experience WWDC. And we're going to call this the Java source code generation. And we're going to call this experience WWDC.

And we're going to call this the Java source code generation. And we're going to call this experience WWDC. And let's hit OK. And while we're publishing, I did want to mention this is the Mac OS X version is available from our website, which is techadence.com. And it's a 90-day free trial. And it just works great on OS X.

So let's, let's go and pull up that jar file that we just generated and take a look at our application. and here it is. We have our scrub control and the draggable video and our nifty beat loop and animating graphic. And now let's go take a look at that Java code we inserted. Download your copy to and David Koehn. Thank you for your attention today.

And give it a try. I want to thank both Zero-G and Techadance for showing us some really great stuff. With that, I'm going to go ahead and bring up Ted Goldstein. So, Alan, how can people learn more about Techadence, the website, and are they here at the show, too? but it's techadence.com. They'll be up front after the session's over if anybody wants to talk to them. And Zero-G will also be up here, too. Great.

Thank you. So let's talk about what do we do on top of 1.3.1. Well, you saw QuickTime being used. It's using the QuickTime for Java interface. We have these terrific Apple technologies that synergize very nicely with the Java interfaces. Although we didn't show it today, there is the project builder user interface, excuse me, programming environment, interactive development environment. We have provided a bridge to our Cocoa and Objective-C world, which allows you to leverage the Cocoa and core services frameworks.

From Sun, we've packaged some very important 1.4 features, because we can, and include them as part of the 1.3.1 package until we have 1.4 available. And that includes things like Java, WebStart, and the Java Secure Sockets extension. These features, they work fine in the 1.3.1 environment. In the WebStart case, they allow you to build double-clickable web-based applications as well. And altogether, I think we've done a very good job of just making the small things work and feel really just terrific together.

On the server side, we have two very important stories. There's Apache Tomcat that's included in the Mac OS X server platform. And it, of course, is a Java application environment for JSPs. We ship our virtual machine tuned for server applications on the server in the Jaguar release. The, uh, uh, uh, but we've taken a very different stance. We haven't developed our own J2EE server. And that's because what we find is so many other J2EE app servers come to the platform and work extremely well.

So, that includes Primati and Lutris, uh, JBoss and Orion, and Trifork. The story behind Trifork is yet another one of these Java 1 stories where we were walking the halls, we found a new guy, we said, "Hi, why don't you come on and, and, and port over?" And they said, "What, you mean right now?" I said, "Now's okay." Um, and within an hour, right, it was about two hours before my Java 1 talk, uh, within an hour, they were up and running. They had ported, uh, they had a little bit of JNI code as well for, for their I/O acceleration. The, the, uh, the Java lines of code, I think, changed one path name, and, and bam, they were up and running.

Um, we think this is a truly tremendous facet about the platform. And I think you'll see more J2EE app servers coming to the platform as well. It's a very rich environment. It's one that, uh, that, uh, we think is, is extremely healthy. And, and, um, uh, the comments, uh, I, I think, I think you'll, you'll, you'll be very pleased with any of these J2EE servers. Now, Apple has its own WebObjects application server. And this is a technology that has, was originally developed at Next and comes down to us, uh, today, and is now written in 100% pure Java.

And we think of it as really combining the best features of both Java and J2EE. And, uh, uh, some of the, the previous work done, uh, before. And with that, to tell you more about it, I want to invite, uh, Toni Trujillo-Villan. Toni is, uh, our director of WebObjects engineering, and she'll give us a, a tour of WebObjects. Toni Trujillo-Villan: Thank you.

Thank you, Ted. So what is WebObjects? Well, in addition to being Apple's best kept secret, WebObjects delivers everything that you need to create a complete three-tier application. That includes an IDE, a database mapping tool, and page layout and GUI design tools to help you create your application's user interface.

WebObjects' powerful combination of tools, frameworks, and rapid design technologies drastically decrease the complexity to develop, deploy, and extend your Java server application. The key payoff for you is that WebObjects does a lot of the work for you, so you end up writing a lot less code. And writing a lot less code means less testing, maintenance, and support down the road.

Enterprise Object Frameworks, more commonly known as EOF, is really the crown jewel of web objects. EOF basically takes care of all your connectivity needs for you. The key feature of EOF is the ability to do object relational mapping. So what is object relational mapping? Basically, it's the concept of taking raw data from your relational database and mapping it into objects. Then EOF transparently syncs up the data from your data source with the objects in your application.

Then using some object-oriented programming, you can integrate your business logic. and you can do things like consistency checking and database val- excuse me, data validation. The beauty of all this is you never have to write a single line of SQL. EOF will take care of all the calls for you.

On top of EOF, we include additional tools and frameworks that will help you rapidly develop your application. Using rule-based programming, you can create a complete WebObjects application based on your data model. And then you can tweak your application's user interface and the way your application behaves by simply adding a couple new rules or modifying existing rules, instead of writing any code.

We ship three distinctive rule-based programming technologies with WebObjects that support the most common application types. The first one is Direct-to-Web, which is used to create HTML applications. The second one is a new feature that we're working on called Direct-to-Web Services. And for those of you that were here at the session prior to this one, you saw an example of that. Direct-to-Web Services is used to automate the creation of web service based on your data model.

The third technology is called Direct-to-Java Client, and it's used to create rich, platform-independent desktop applications based on Swing. And Direct-to-Java Client is used in a three-tier architecture, but we've been working to extend this technology to a two-tier architecture, something we think that you'll really like. So with that, I'd like to invite Andreas Wendker, the manager of the Rapid Development Engineering team, up to give you a demo. Thank you, Toni.

So for this presentation, I'm going to use the alpha version of the Next Web Objects release we are planning to ship, and I'm going to use a database that stores real estate data. You can actually see the most important tables of this database on the screen right now in our database modeling tool.

And as you can see, there are tables that store information about persons in different roles, like agents and customers. There's a table for listing properties with the number of bedrooms and bathrooms and prices. And there are tables for addresses, features, and photos of listings. What I would like to do now is take this database model and run it through a project builder assistant to create a rule-based swing application. So I'm going to create a new project and select the right template for it. Then ask before name.

The next question is what kind of additional JAR files I want to use. I don't need any for this demonstration, so I'm going to just skip this step. And then I'm going to add the database model for this real estate database to my application. The last step is just a question whether I want to build and launch my project now.

Project Builder now created this project for me and the assistant automatically triggered that it compiles and then starts afterwards. While I'm talking to you right now, web objects in our rule system are actually hard at work to analyze the database and to come up with a user interface that is appropriate for the data. The first window, as you can see, that it presents me with is a query window that I use to search for the different persons, administrators, agents, customers, and most importantly, listings.

Let me just pretend to be a customer that wants to search for a house right now, and maybe I want to search a house in Cupertino. So the database offers me four properties here, and oops, they are all very expensive. Well, maybe I need to do another search. That looks a little better. Let me look at some detail for the first one here.

It's in Cupertino, that's good. It has two stories and air conditioning. Even has a nice photo. So maybe I should call the agent and make an appointment. My name is Toni. Let me see if I can find some more detail for this. She definitely looks like I can work with her. And there's her phone number. But wait, I don't have to call her. She's right here.

So as you saw, this was actually a realistic demonstration of our rule-based technologies with just a database model and a couple of clicks in Project Builder. I was able to create a fully-featured Swing desktop application that I can now use as a starting point for my development process. Thank you, Toni.

Thank you, Andreas. So when you develop with WebObjects, you have your choice of deployment platforms. You can deploy to a J2SE server application that we ship with WebObjects or any J2EE server applications, where WebObjects can run side by side with other J2EE applications. With either one of these deployment scenarios, you can create a flexible, scalable deployment configuration.

WebObject ships as a standalone product with development tools and a deployment license. Our deployment packages are also bundled with Mac OS X Server. and to ensure that WebObjects is no longer Apple's best kept secret, we have 17 sessions this year at the Developer Conference so you can find out more about this technology. All of our sessions are located in room A1 throughout the week.

Thanks. So I don't know if it was clear, but zero lines of code. Zero lines of code. And I think that's one of the amazing things about when you have this kind of rule-based systems is that really many applications really are a transformation of the schema and the database into the model that's being presented.

And the first cut of application is not bad, right? It's pretty usable. Then you can go on and refine it and tailor it to suit you yourself. So I think it's a very impressive technology. If you haven't taken a look at WebObjects before, I really highly recommend you check it out.

The next thing I want to talk about is raising the bar on Java. We talked about this morning at Steve's keynote how we want to raise the bar on development tools and the environment. We also want to raise the bar on Java. We're doing everything extremely well, but we can still do things better. You can still see that there's a short pause in startup times.

We want to get even better fidelity with Acquia. I think it's very hard for people to even see that there is any lack of change, but our goal is to be perfect with Acquia. We want to, of course, use less memory on the platform so that you can fit many, many Java applications simultaneously, and that makes it extremely good for shrink wrap applications. Now, Java app is probably still bigger than its Cocoa Objective-C equivalent, but nevertheless, it's still extremely usable.

I think one of the most important things that people have asked for that we do is we want to better track Sun's release schedule. Right now, we're shipping 1.3.1, and we would, of course, prefer to be on 1.4. We want to think about how we want to do that.

Of course, better integration with the rest of the desktop features, things like drawers and other kinds of components that really are part of what you expect from the Mac OS X environment that are not necessarily part of what most people tend to think of as Java native things, so that, for example, you can write a system preferences panel with Java. Our goal really is to raise the bar on Java so that it is 100% everything possible on the platform.

There is a course associated with this. We have to delay the 1.4 release until we can shift the foundation of Java away and off of Carbon today and into a Cocoa environment. And this includes things like shifting the threading model. Today we are very tightly tied into the Carbon way of doing things. Many of the applications that themselves are implemented today using Carbon are facing some of the same issues. Nevertheless, it's time now for Java to do this, to really make the transition from Carbon onto a full Cocoa, shall we say, environment where we can leverage and such.

So, to give you a quick roadmap, what we have today on the website, I believe, is that correct? Yes. I wanted to make sure. We have the 1.4.0 virtual machine working today, but it's using the 1.3.1 user interface classes. And so this is an interesting thing because it also means that we are actually beginning support for multiple VMs on the platform for developer mode and to make that work possible. And we want to get your feedback as to whether or not you think this is something which we should be doing for our production release.

We will beta later in the year the 1.4 virtual machine with the 1.4 user interface classes. And I say 1.4.x in the slide, meaning that we don't know whether we should be on 1.4.1 or 1.4.2. I think a lot depends upon Sun's release schedule and the way that they are seeing their releases shape up.

So, really, we want to get synchronized, if you will, so that, in fact, it's a very simple port to take the change set and to bring it over. That re-architecting is ongoing now and is fundamental to the commitment we want to make to you, that we are mindful of your desires to have 1.4.0.

And what we are doing here is to give you, in fact, I think, the most versatile and best Java possible. So, that's the road to 1.4. One more thing. You know, as some of you may know, I'm originally from Sun Microsystems, and I'd like to invite my old friend James Gosling up.

and James Goldstein. Good afternoon, Ted, or good evening, or... James is a long-time Mac user. Where's your titanium, James? It's sitting in my bag there with a basically dead battery. Battery exchange. That's what we've got to do. Well, you know, it's the end of the day, and I've been sitting there hacking along, and in between the good bits, you know, I actually get some work done.

But Ted had actually asked me to come here and say a little bit about, you know, why I do--why I use a Mac. And in some sense, you know, my purpose of coming here is to say to Apple, you know, thanks for giving me the freedom to buy a Mac.

I mean, I'm... I'm one of these people who doesn't have the luxury of being able to deploy software just on the Mac. Stuff that I write has to run on a lot of different places. One of the sad tragedies of the world is that if you're going to buy a laptop, most of them are infected. And, you know, ever since OS X came out, and then once the really nice Java VM came out, all of a sudden there was a machine that both I could do my job on and it didn't make my skin crawl, which I felt was a wonderful combination.

I mean, there are a lot of things to love about Macs. I mean, I'm a little bit of a Mac user, but I'm also sort of a closet Linux user. And, to a large extent, actually, these days I'm more an ex-Linux user than anything else, because I've sort of come to think of Mac OS X as sort of Linux with QA and taste.

[Transcript missing]

The user community that was used to guide the design was a bunch of bankers. So it's like if you're targeting bankers, you get something that looks like the bank. And, you know, using any old Java app, the first app I ever tried to run on a Mac was NetBeans.

And, you know, I had one of the standard, you know, really good experiences, namely I copied over the Windows release, wrote a little shell script to launch it, and it just ran. and that's predominantly the experience that people have. Unless they've done some JNI stuff, things just run. So you heard it from James Gosling: things just run. All right. Thanks, Ted. Thank you very much. Thanks.

So very glad to have James on board and to be using Mac as his personal productivity device. I want to invite Alan Samuels up to give the roadmap again and discuss what else we will find, and I think we may actually have a little time for some Q&A.

[Transcript missing]