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 may have transcription errors.
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. 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. 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 and 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-safe 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's 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 and 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 10 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. In Peter Coffey, the well-named, writes in eWeek, Apple has done a tremendous job of making 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 eQuartz system and really use it to the full advantage and really to take things like OpenGL and really make it so that these are simple and easy to use. Thank you.
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 what we do in an app, 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.
Java is compatible. Java compatibility is, in some sense, really the one big thing that even though it's really tremendously good, sometimes when you write an application perhaps on a Windows platform, sometimes small Windows specific incompatibilities maybe you can find. And what the process of porting from a Windows or Solaris environment to Mac really often involves removing a tiny, tiny bit of window platform fetishes.
What happens when you do that port, almost 99.9% of the time you'll find that, in fact, the applications just work fine. And then if you want to do a little bit of tuning to get even that last little bit out of it, you'll find that, in fact, then we can slide in under these terrific Mac OS X features for free. That these features just accrue to you because you have used the Java APIs we've implemented outside of the Java APIs so that they actually take best, most popular advantage of things like hardware acceleration and binding to Windows system APIs. And that's incredibly important because it really means that once you have this, you can write an application that is very slickly portable between all these environments. We ship Java in every box. Every version of Mac OS X has always shipped with Sun Java 2 Standard Edition. In the current version, Jaguar, we're being 1.3.1 in the Hotspot client virtual machine. And what this means is that you don't have to worry about delivering a virtual machine that's right for the environment. It's just there, and it will work. We think that the Mac OS X is an excellent environment to develop and run your Java applications on, and we think that it's the platform vendor's job to do the integration with web browsers to really provide the API that is a terrific plugin API that says that this component using the embed and object tags allows for the the Java applet to recognize the platform. And we've done this in a way of course utilizing the Sun Netscape system so that it works well with Internet Explorer, with Mozilla, and with other browsers that are emerging on the market. And this means that you can always be sure as a browser maker that you will have the best Java possible on the platform.
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 Acqualook 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 Acquia interface, but it is 100% pure Java application. Using jar files, a well-formatted jar file with a 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. that we have.
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. So 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. It was easily taken over to Mac OS X. So this This is kind of great. This is kind of fun. 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. 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.
over here a little bit. We've got some excellent music here. Now, 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. It'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?
We'll walk over here and advance one. We'll talk a little bit about developer tools. You let, 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, Metrowerks 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, and I think that's gonna be-- I think as more and more people move to pure Java, we're gonna get more and more tools, obviously, on our platform. So with that, I'm gonna 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 Devin Pullman of Zero-G Software. And Devin 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 Devin 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 an 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 going to go ahead and start off here by showing how easy it is to work with Install Anywhere. We're going to start with installing a demo application called Office Suite. Now, this application is a job 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. And adding files to Install Anywhere is 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. And in this case, it's even gonna 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 gonna 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 gonna 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's 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, that's gonna be part of our installer. In this example, what I wanna 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.
and go ahead and select the merge module, in this case the Tomcat. It's gonna load in all of those resources, ask me where I wanna put them, and I can load all sorts of different things. 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, David. Thank you, Alan. Thank you.
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. Um 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. but 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.
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, 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 Tekadence Magic. And Magic's basically based on standards. Our file format is XML. Our 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 gonna talk about how it got to OS X. Our first attempt at porting Magic to OS X 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 in 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 prebuilt objects. We supply 80 plus objects across all of these different categories to get you started with your development. bring up our, uh, 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 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 gonna 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-- video controller here. So we've set up our user interface. Let's start to connect some of these objects together. We do that using the magic patch tool. And the patch tool connects the properties and messages of objects to each other. So, for example, let's say we wanted the slider to control the video. We click on the slider and choose the property that we want to connect. In this case, the percentage value of the slider. Now we click on the video, the movie, and select current time. And we can do the same with the button clicked value. And we're going to set the playing property to true. And we can also set the button clicked for the pause, set playing to false. Now when we go into preview mode, we've got a little scrub control for our movie. We've got a pause button and a play button. Now we've been operating in what's called novice mode, also known as CEO mode. In Magic, you can actually set the user level, and if we go into expert mode and go back to the patch tool, the button, which previously the message that was available to us was just the button clicked message, now you've got a long list of properties and messages that are available. So we're actually just going to cancel out of that. Now, with Magic, we're not limited to, as I said, prebuilt objects. We can also bring in external objects. For example, I'm going to bring in-- open a custom scrapbook and bring in a flash graphic.
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 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 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 your computer. When we hit enter, that will send it. Download your copy today. So, anyway, I wanted to 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. 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.31 package until we have 1.4 available. and that includes things like Java Web Start and the Java Secure Sockets extension. These features, they work fine in the 1.31 environment. In the Web Start case, they allow you to build double-clickable web-based applications as well. And altogether, you know, 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. 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, 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 port over? And they said, "What, you mean right now?" I said, "Now's okay." And within an hour, right? It was about two hours before my Java 1 talk, within an hour, they were up and running.
They had ported-- they had a little bit of JNI code as well for their I/O acceleration. The Java lines of code, I think, changed one path name, and bam, they were up and running. 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 we think is extremely healthy, and the comments, I think 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 was originally developed at Next and comes down to us today and is now written in 100% pure Java, and we think of it as really combining the best features of both Java and some of the previous work done before. And with that, to tell you more about it, I want to invite Toni Trujillo-Villan. Toni is our director of Web Objects Engineering, and she'll give us a tour of Web Objects.
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 WebObjects. 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 valid-- 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, Tony.
So for this presentation, I'm going to use the alpha version of the Next.io object 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 it asks 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. And the last step is just a question whether I want to build and launch my project now. So Project Builder now created this project for me, and the assistant automatically triggered that it compiles and then starts afterwards.
And so what 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. And the first window, as you can see, that it presents me with, is a query window that I can use to search for the different persons, administrators, agents, customers, and most importantly, the listings. So 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.
think about you know that's good test to start air conditioning yes nice photo so maybe i should call the agent and make an appointment and it was too long you let me see that i think find some more detail for this she definitely looks like i can't work with her and that's a phone number but they 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, Tony.
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. Thank you. 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, you know, 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? Right now, we're shipping 1.3.1, and we would, of course, prefer to be on 1.4. We need to think about how we want to do that. And 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 could write a system preferences panel with Java. So 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, you know, 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, and what we're doing here is to give you, in fact, I think, the most versatile and best Java possible. That's the road to 1.4. One more thing. You know, I-- as some of you may know, I'm originally from Sun Microsystems, and I'd like to invite my old friend, James Gosling, up.
James is... 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. Oh. 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 why I use a Mac. And in some sense, my purpose of coming here is to say to Apple, thanks for giving me the freedom to buy a Mac. I mean, I'm-- I mean, I'm one of these people who doesn't have the luxury of being able to deploy software just on the Mac. I have, you know, stuff that I write has to run on a lot of different places. And, you know, one of the, you know, sad tragedies of the world is that, you know, if you're going to buy a laptop, you know, most of them are, you know, 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, and, you know, it's -- 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. - No, I know I'm going to get a lot of hate mail tomorrow on that one. Not from this room. Not from this room, but I know that there are a few Linux spies in the room. There always are. Yes. But no, I do love Linux. But the Java world is a pretty interesting one, and I think Ted's gone through a lot of it. I think, you know, one of the things that's important for sort of general Mac developers to understand is that Java is a community. It's not a product. Sun, in some sense, is sort of the keeper of the flame, but we're not the drivers of the bus. There's this thing called the Java community process where basically the whole community gets involved. And typically on these expert groups in the Java community process, Sun only has one representative.
And the amount of stuff that goes on in the Java world is just huge. The number of developer environments. Ted, you put up that list of half a dozen environments, and there are just stacks more of them. Yeah. It seems like every time I turn around, I find a development environment from Checklist of Acquia and one from Italy. It's astounding the amount of creativity going on right now, I think, at that level of tools and such. Yeah, and a lot of them are fairly specialized and oriented towards interesting niches. Like one of the places where Java has been really successful is in education.
A lot of universities use it as their first course. And if you try try to compare Java to Pascal, which had tended to be the predominant first-course language, it's actually pretty similar for a lot of the things that instructors really care about. Things like it being very forgiving to novice programmers. When you do something wrong, it usually fails in a fairly clean way and it tells you actually what went wrong rather than you getting some sort of mystery error at some vague time as you've gone off the end of your array by only one and the usual mystery things happen. So there are, for example, there's a number of IDEs that are just for teaching Java. One of the most popular is this thing called BlueJ, developed by a consortium of folks. And if a real developer goes and looks at it, they'll go, "What is this?
This kind of stinks." But that's not what it's for. And you find a lot of that kind of stuff. Sort of the Berkeley Pascal of today, huh? Yeah. Yeah, sort of the Berkeley Pascal, only it's... I mean, the other half of why Java is appealing to university courses is that it's also one that has actual commercial relevance. Right. I'm not sure. And there's so many places that they can then go with that. As you know, Apple is very focused on education and the education market. And one of the things we hear constantly, of course, is schools being run on Java-based applications.
They, of course, are in some sense running the discards of companies or machines from many years ago. I know one of the things that many universities like is to have a common set of Java applications running on a variety of old and new systems. Yeah. I mean, having a daughter in middle school who's been taking Java courses for the last couple of years, it's a pretty weird thing.
So what does she go through when they see the name Gosling on the... It gets a little embarrassing. And they're that age, right? They're trying to disavow the existence of their parents. Yes. And it gets a little dicey at home sometimes. But the other dimension to the Java community that I think should be interesting to you folks is just sort of the incredible diversity of platforms on which it gets used. I mean, certainly, things like the Mac are wonderful, but there's also, you know, just giant honking supercomputer scale machines.
There's cell phones. There's smart cards. And given the way that the world is networked, all these things tie together. And it's a real interesting sort of end-to-end story where people can develop apps here and deploy them there or develop apps that really span multiple platforms. The whole notion of the word sort of application or program in some sense has gotten kind of meaningless because these days, particularly in large enterprises, you find that what one might think of as an application really is sort of a little piece running over here and a little piece running over there and this little bit running over there. They're all talking to each other. You might have multiple front ends to a database You might have one that runs on your Mac, but you might also have stuff that runs on your cell phone. I mean, the whole cell phone world in the Java universe has gotten just crazy, at least everywhere except North America. North America is kind of like living in the Stone Age. Somehow we always manage to live in the Stone Age on cell phone technology. Yeah, it's really depressing. But if you want to have a good time, go to Japan and look at some of their 3G phones. You know, all Java programmable. They all do, you know, streaming video into your handset. And you can hack them. It's really pretty lovely. So are you working on Bluetooth interfaces at all for Java? Some people have been working on Bluetooth interfaces.
the work I know of is sort of floundered for lack of interest, he says apologetically. One of the things which I think you'll start seeing on the Macintoshes is now we are beginning to support Bluetooth in some of our applications. And I think that'll be a call for having greater flexibility so that we can actually tie the desktop to the phone. I mean, we're very big, of course, on this digital hub concept where we can hook up devices like cameras and MP3 players. Now we want, of course, to get at the phone. And, of course, that's where Java is strong, how do we-- I think that this is an area of rich, fertile growth. Yeah, what I've seen a lot of is thinking of Bluetooth as yet another networking technology. A lot of the APIs in Java try really hard to abstract you away from the underlying transport layer. There are lots of people who do TCP over Bluetooth and run DHCP and the rest of it. It actually works when you mix and match these different technologies at different layers. Changing subjects, one of the things I'm very interested in always is the history of Java and some of the things that we've had on the Macintosh. What can you tell us about common foundations and threads between us? There are a lot of fairly interesting ones that tend to come from actually the Next heritage in OS X. A long time ago, before Java was released, we had a project at Sun that was called First Person. At the time, Next wasn't doing particularly well and had been shedding a lot of developers.
We ended up hiring a bunch of them. If you look through Java, you'll see a number of sort of Next-like things. For instance, interfaces in Java are almost a direct ripoff of interfaces from Objective-C, although they had strong typing added, but that's pretty much where they came from. If you look at the design of Swing, a lot of the design of Swing came from spending a lot of time looking at the next UI designs. Also, a lot of the people who worked on Swing actually came from the next world. In one of those odd twists of fate, the manager who ran the original Green project and first person was also the manager who at Apple ran Lisa.
So there's a certain sense of quality, of devotion to end user focus on that. Of course, it's something very big at Apple, but it hasn't been as big a focus in recent Java. I guess some of the hot Java browser work had a very strong end user bent. Yeah, it did. I mean, we sort of took this detour. I mean, one of the things about Sun is that Sun makes most of its money off of Big Iron. We're kind of the computation by the pound company. And so we sell these sort of big blue collar kind of steamroller machines that just breathe fire. And so we've tended to put a lot of our money on that kind of direction because that's kind of where the money's been coming from. And it's been with more than a small amount of reluctance that we haven't worked as hard on desktop issues as we would like.
And one of the things that I really liked about the way that Apple did their port was that in Java there's this UI toolkit called Swing and it's got sort of pluggable look and feels. And the common look and feel that we built that runs across all platforms is this thing called Metal. No relationship to our Metal, right? No relationship to your Metal. And the sad thing about Metal is that while it had a bunch of creative designers working for it, oddly enough, a lot of them came from Apple, 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. The bank. That looks like the bank. And using any old Java app. The first app I ever tried to run on a Mac was NetBeans. And I had one of the standard 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. You know, 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. Want to invite Alan Samuel up to give the roadmap again and discuss what else we will find. And then I think we may actually have a little time for some Q&A.
Thank you, Ted. So this week we've got a whole host of additional sessions. We've got nine more sessions. Next one's starting tomorrow morning with Java graphics. I definitely encourage you guys to go and see that because I know there's going to be some exciting demos in that session. We're going to see some great new stuff with some of the advancements that we've made in our graphics engine. We've got the platform overview where we're actually going to be talking about what's actually coming up with 1.4, Definitely a session not to be missed. Java in the browser, and we know a lot of you have, we've seen a lot of questions on Java dev on a lot of the lists regarding browser-specific Java issues. So we're going to be talking about things like Java Web Start. Actually, you'll see, I believe, we'll even have a tech in there showing an additional demo with some of their deployment stuff in Java in the browser. The other session, another one of the ones, all of these are obviously not to miss, but we've got a specific session this year that sort of looks at things that we've been hearing from you guys or issues or there's a constant stream of questions about it. And we decided to have our Java DTS engineers at Apple actually come up and give you a specific session about tailoring your Java applications for Mac OS X. So we'll be talking about everything from packaging on through to, you know, what are some of the caveats you might have if you're taking your Java source that was written elsewhere and you need to port that over to Mac OS X. What are some of the gotchas and what are some of the things that you can take advantage of too? There's a specific session on that. Web services, we're going to have a whole session dedicated to Java specific web services. We're going to see some cool demos on that too. Also on the VM side, we haven't talked an awful lot about that. We'll have Blaine Garth giving you an overview of the VM and also some performance tuning stuff on Friday. Another session that I think is definitely worthy of your guys' attendance is QuickTime for Java stuff. For those of you who saw the Techadance demo earlier, they were using some of the QuickTime for Java libraries to get the functionality that they were demoing in their product. We have a whole session on that. We're covering the new features with QuickTime 6 now and QuickTime for Java. And then lastly, the feedback forum. After you've had a chance to spend time with us all week, you can give us your feedback, positive and negative. We want to hear what you guys think about what we've been telling you all week. And then the last big thing, which is we're going to be having a lab that runs all week. It's both Java and WebObjects and RoomL. And we've sort of heard this issue before, which is, you know, I've got my Java code. Maybe I haven't had a lot of time to play with bringing it over to Mac OS X. And if I've written it elsewhere, I would like to get some one-on-one time with engineering. So we've got a lab that runs all week. We encourage you to get your Java code, bring it down to the lab, spend some time with both the Java and the WebObjects engineering team, if it's a WebObjects application, and get that application up and running and hopefully well on Mac OS X. So it's a full week. Like I said, 10 sessions, and I believe there's 17 on WebObjects. There is a ton of stuff this whole week dealing with Java and WebObjects. With that, we'll bring Ted back on. There's... That's me. You're back to being just a... I'm just... A Java technologist evangelist. Exactly. So if you guys have got any issues or any questions or comments, please feel free to send me an email. Thank you.