Mac OS X Essentials • 56:15
New features and performance enhancements make Java a greatly improved technology on Mac OS X Leopard. Discover how Leopard makes the Java development experience better than ever with resolution independence, a crisper Aqua look and feel, a 64-bit virtual machine, and more. Get the latest news on WebObjects and find out how other developers are using Java successfully on Mac OS X.
Speakers: Tom O'Brien, Pratik Solanki, Tad Frysinger, Steve Buck
Unlisted on Apple Developer site
Transcript
This transcript has potential transcription errors. We are working on an improved version.
[Tom O'Brien]
This is Discover Java on Mac OS X Leopard and I am Tom O'Brian the manager of the Java engineering team at Apple. We're going to talk today about why Mac OS X is such a great Java platform for developing and delivering your applications, this is true whether you're an experienced Java developer on other platforms and are coming to Mac OS X. For those of you who are already developers and have already been on a platform developing in Java for sometime, but its especially true for your customers, the people you ship your software to.
Because we think the way we deliver Java on Mac OS X makes it a great consistence experience for your customers running your applications in the best way possible. We're going to have five sections in the talk today. First we'll do a brief overview of Java on Mac OS X and a little bit of the philosophy of the way we deliver Java to make it the best experience.
We're going to look at some Java developers who are delivering applications on Mac OS X today and focus especially on a couple of them who are doing extra polish to make their applications really stand out on Mac OS X. We'll give you pointers to two sessions later this week to help make your applications great so that you can take advantage of new features that we're bringing to Java and Leopard and really make your applications something your customers really want to see. We'll spend a while covering highlights of new features that we've added to Java in Leopard and we have a couple things coming up, but lets get started.
Java on Mac OS X is delivered in a particular way that's unique in all the platforms that have Java. Java is a core feature of the OS on Mac OS X and its available in all this standard deployment application, options, applications, applets in the browser, web start applications and server command line apps, as you'd expect, but its preinstalled as part of the OS and that makes a difference to the way you can deliver your applications and what your customers experience when using your applications.
What does it mean that its part of the OS, well it's integrated into the OS, which means both that we take advantage of technology that's in the OS to make Java work the best possible and the OS also knows about us, to make Java integration in other applications work great. We keep it up to date through regular software updates that customers get to make sure that it's always up to date with the best technologies in the OS and the best technologies in Java.
And in contrast to some other platforms where you are delivering Java applications, this means that Mac OS X, you typically don't bundle a JRE you don't have to take the additional download hit for the size and the additional instillation complexity to bring along your own Java runtime when you deliver applications on Mac OS X because you can count on a Java that's in the operating system by default on all Mac OS X's and we make Java transparent to our users. That's our overall goal here, is to make the Java experience transparent to the users of your applications.
One of the ways we approach this is to have at any time a single preferred Java version on Mac OS X, on Leopard this will be J2SE 5.0 and one of the benefits of having a preferred Java version is that you have a predictable user configuration on the platforms, the systems that your delivering to so that you know what Java their getting and its always going to be kept up to date.
Users can choose other versions in some cases. Let's look a little bit more at the preferred Java VM. There's one Java version that we consider best to anytime and we focus our attention on bringing that forward to all the new technologies. We move it to new technologies and features in the operating system and we'll be talking about those in Leopard soon.
We keep the older versions around for compatibility but we phase them out over time and we'll do a brief compressed recap of what the preferred Java version has been in older versions of Mac OS X starting with Java 1.3.1 on 10.0 and 10.1 and then moving all the way forward to the newest version of Java in Leopard which is Java version 1.5.0 under bar 11, and we phase out the older versions as I said. Now we're focusing more on the right-hand side of this chart.
One of the other benefits about having Java integrated with the OS and shipped as part of software updates is that we bring you and your customers through transitions transparently. Of course as I talked about we shipped, we've switched the preferred Java version over time from 1 thru 1 then to 1.4 and then early last year we shipped an update for Tiger which brought the preferred Java version for application and applets in the browser forward from 1.4.2 to 1.5.0.
As a result of that transition we has over 10 million downloads of that software update and we had fewer then 40 bugs in connection with that transition. We worked very hard to make these transitions very seamless for you and your customers, so that in principal what they are getting is just a better Java and they don't notice that they've been switched to a newer version.
Other transitions of course that you know about are hardware transitions over the past two years we've been in the process of switching form PowerPC processors to Intel processors and again Java came across that transition very seamlessly. Java was unique in an application delivery strategy. In most cases you didn't even have to recompile your applications, your code just continued to work on the new processors when they came out.
Also beginning last year and continuing in earnest as you've heard at the conference this year, we've been in transition from 32 bit processors to 64 bit processors and again Java is uniquely suited to benefit from transitions like this because Java updates on the operating system will make your applications naturally take advantage of new architectures like 64 bit Intel.
Let's fill in some of the Java improvements in the last year. First as I mentioned early in 2006 we shipped an update, our fourth update of J2SE 5.0 in which we switched the default Java version, the preferred Java version on Tiger to Mac OS, to J2SE 5.0 and that was a very seamless transition for our customers. Later in that year we shipped an improvement to the SWT compatibility for the SWT tool kit from the Eclipse Foundation and we also began previews of Java SC6 also on Tiger.
In the middle of the year last year with the release of new Intel processor Macintosh's, we updated the version of Java in that version of the operating system with those processors, with those machines to better advantage of the hardware, to make it an even better performance story for you on Intel. We continued our developer previews through the summer so Java SC6 on Tiger.
Early this year we shipped two updates, one for Panther, Mac OS X3 and one for Tiger, Mac OS X4 to again brig them up to date with the latest Java versions from Sun and also to include additional enhancements and fixes that were essential for our customers and developers.
We're continuing our strategy of making sure the Java in those versions of the operating system is the best it can be. And now of course at the conference this week your getting yet another update of new Java versions in the Leopard beta preview that you are getting on DVD this week and we'll be talking about that quite a bit in this talk.
All of this goes together we feel to make Mac OS X the best platform for desktop Java and for other Java deployments. This is because every Java at any time had the best Java version they can have that automatically gets updated with new improvements in the operating system, new architectural features and new technologies. You as developers have both the great SDK tools that are part of Mac OS X, but you also have access to a wide arrange of Java development tools that also run great on Mac OS X and you can use those to benefit in developing your apps.
So that's a brief coverage especially for those of you new to the platform of how we do Java on Mac OS X. Let's take a look at what some Java developers are doing on Mac OSX with their applications and other products today. As you saw in Bertrons (Assumed spelling) talk there's a whole constellation a whole galaxy of applications out there and many of them are written in Java.
Here's just a few, a sampling of some of the most recent applications written in Java, delivered on the Mac and, Mac OS X and looking great. Of course in the Enterprise Java space, Java's a major player and all the names that you know form the Enterprise Java world run great on Mac OS X in addition there are several that are specific to this platform like web objects that you probably already know about.
And again as java developers in addition to the tools that are built into Mac OS X you have access to the wide range of development tools out there from third parties all of which we work to make run great on Mac OS X and many developers chose Mac OS X as their development platform for this reason, even if they are deploying to multiple other operating systems. We think that Mac OS X is a great development story.
Let's take a closer look at two developers who are doing great work to polish their applications, to take advantage of new technologies on Mac OS X and really make them stand out. First I would like to invite (inaudible) from the development team, the Java development team at Apple to demo Maple which is great mathematical analyze package written in Java.
( Applause )
Good morning I am (inaudible) and I work on the Java team over here at Apple. If my machine wakes up, and it's up, there we go. Okay so today I am going to showcase Maple. Maple is a mathematical analyze tool and it helps you develop advance mathematical models and its written in Java so it runs on Windows, it runs on Linux and of course it runs on the Mac and what I am going to show you today is how, some of the things that they have taken care of to make sure that the app look like a polished app on the Mac, so the first thing you notice when you download Maple is that they have an installer package, so they need to install some source code, some example code along with it and (inaudible) they create an installer package that looks right at home on the Mac and I'm going to install it because I already have it. Alright so just launching Maple here and you'll notice that it's a double clickable bundle that just looks like a normal Mac OS X app.
So once you launch it you see this nice little simulated (inaudible) display, very slick, very polished with some real nice (inaudible) effects. And one of the things you notice is the menu bar is at the top, now that's the normal place for the menu bar on the Mac but when you take a Java app and you just run it and when you create a menu bar on the, when you put a menu bar inside a window on a Mac by default the menu bar show up inside the window which is how it shows up on all the other platforms, but you know a small little tweak, one extra system property and the menu bar goes at the top. So you got to be aware of that when you bring your app to the Macintosh.
Okay the other thing to notice is the app name, it says Maple 11 over there and again by default usually you would see the main class name over there, you'd see like, if they didn't take care of it your would of seen com.maplesof.mainpp but you know a small little tweak to your info.p list file and you will see the app name.
So let's take a look at some of the UI controls that they've added. They have a really polished looking pop down over here with (inaudible) style and look really, feels right at home on the Mac. If you look over here they've got buttons but these are (inaudible) style buttons sort of like the ones you find in the Safari (inaudible) box bar and again you know just a nice little touch of polish.
So what I am going to do over here is I am going to open up my document and if you noticed I just double clicked on the document and it opened it up using Maple. Well how did it do that? You know the Maple engineers took the trouble to actually register their extension the .mw extension and they UI type in the info.p list so that Mac OS X knows that when a document of type (inaudible) of extension of mw it should open it up using Maple.
So again another thing you need to do in your info.p list file. So you know you could obviously create lots of advanced mathematical models over here but what I am going to do is something very simple, I'm just going to change the color of this oval from hideous purple to something more pleasing to the eye.
So I just go to the drawing properties and here's another you know neat little thing. They've got segmented controls over here for the fill type again very Mac like and when you click for the color, what you see is a color chooser that looks like a Mac OS X color chooser and it even has a color sampler so I can take that you know and select some nice lets say this aqua blue alright so lets say I am done with my color change and now I go ahead and quit the app and I go to the app menu and I press quit, now by default on a Mac when you press quit the (inaudible) will cause (inaudible) it will just shut down the whole application and while that maybe fine for a normal, for many Java applications, for a document based app like Maple that's now the right thing to do.
You want to be given then chance to save the document which is what they have done, so they have taken care of it, there is some little extra code that you need to add to your application, to ensure that you know that you get notified when the app quits.
So you get a nice little save dialog and again this is not your standard yes, no, cancel j dialog you know it looks right at home on the Mac with the don't save, cancel and save which is what it is suppose to be. Each button is an action like it's suppose to be on the Mac.
So just save over there and (inaudible). Okay so that was a really short small demo of Maple and we believe that its fantastic Mac OS X app that just happens to be written in Java and I think you know, you can definitely take your app and really polish it up and we got sessions later today and tomorrow to help you do that.
Now can we go back to the slides? Well from one fantastic app to another and I'd like to welcome onstage Ted (inaudible) and Steve (inaudible). Tad and Steve will (inaudible) and they double up an app called (inaudible) which is a video production assistance and as you see it a really amazing app. Thanks.
( Applause )
[Tad Frysinger]
Morning everybody I am very glad to be here to share some of our experiences that we've had. Steve and I have been doing Java developments for a long time as well as our other crew back home that's helped us do this application and I'm pleased to say when we wrote this application we chose to do it in Java.
Tom is reminding me to say Java, Java, Java, Java, Java a bunch of times because the app is really about 98 percent Java, there is a little bit of native code which I will go into but the real message is that when we, we didn't start on the OS X platform when we started writing this thing and when we decided to make it the primary emphasis of our efforts, the bulk of moving it over and getting it working correctly in an Apple way was very short time, was you know way less then a week, a couple day, two, three days to get most of the things you need to do right and there was a couple of other polish things that we wanted to do, which I'll point out.
But what single shot does, it solves a problem that if anybody shot any video here in this room, whether professionally or semi-professionally or maybe it's just your kid at the school play, you've had the following problems. You've had, you get everybody up and you want to go set it and you get to shot and the lighting was wrong and the audio was out and you don't realize it or your color calibrations wrong and you don't find this out till you get back and you load what's on your tape up into iMovie or final cut or something and you go oh I just screwed that up I got to go redo the whole thing again.
Now you can solve this a couple ways. You can go to a shot, something like this which are several dozen across the country every year and you can buy very expensive dedicated hardware, one to solve lighting, one to solve audio, one to solve focus and these range from 1,000 to 5,000 dollars a pop or and this is what the Spielberg's of the world do, they have these huge budgets and they go and buy the dedicated hardware and they need that, for the rest of us, there's something like single shot.
Now what single shot is, it's a Java application, let's go to the camera and let's see if you could, and what we got is a live video feed from Fire wire connected to this video camera. This is standard DV camera, a Panasonic camera and we are care capturing video and audio in real time at thirty frames a second, this is a 720 by 480 size image because that's the raw image that we get off the camera in Java.
So we have a video canvas which is the big upper left canvas and we have a four track video timeline down below that and then to the right we have a tool palette. And this too palette has a dozen or so tools each of which you have to spend that hundreds of thousands of dollars in hardware, we got completely in software a Java software to let you know what's going on in your shot.
So what were going to show today is a couple of ways that single shot can help you both before the shot, so as you are getting setup and making sure that your camera's calibrated right so that when you take that footage you get what you want as well as something's we can do during the shot to help you with your film.
So what can we do in shot setup? Well if we go to the video area, were going to go to the exposure tool and were going to talk about lighting because this is one of the big things that particularly beginning videographers get wrong, they get out there, you get the shots set up and the lighting is wrong and you don't know it's wrong.
So what can we do? Well in this tool palette we have an exposure histogram and on the right side what you see is a bunch of white pixels, lets do something in front of the thing and kind of adjust, there you go you can kind of see it bouncing around.
Now what we're taking, is again, in real time, 720 by 480 pixels, each pixel, 30 times a secon0d and we're plotting that in Java 2D on that right hand side to tell you what the luminance value is. If you see a bunch of pixels to the left like you see here, that means we're way underexposed in what the camera is looking at. If you see a bunch of pixels on the right side it means you're way overexposed.
So right off the bat, you have some sense of I got to do something about my lighting, I've got to change the iris on the camera, I've got to adjust lighting if I have lights, I've got to move the camera somewhere else. And that gives you a rough approximation, but we can also show you exactly where the problem is. And we do that by these check marks called the highlights and the shadows.
And what highlights are going to do and shadows are going to do is tell you where you are overexposed and underexposed based on a number of indicators. The first one we have is a zebra indicator. And as Steve is adjusting the camera, you're seeing those red lines appear on me, which means the lighting is at a certain level of brightness and we want to adjust things until basically you don't see any more of those red lines.
Okay? That's our zebra marks. Now we can do that with both highlights and lowlights based on thresholds that you set in the application. And we can also be very specific about where we want to look. So if we change the input from the entire camera shot to a region, now we can focus directly on just what you want to look at and we can also change the indicator from an overall gross approximation, which is what zebra marks give you, to a very fine grained approximation, which is what our false color gives you.
Let's go back to the, there we go, as he's adjusting this what's going on is if you see that color band on the bottom of the histogram from oranges on the right side all the way to purples on the left side, purples means underexposed regions, red means overexposed regions. So right from my face here, over here, it's too bright. On the back of my head it's too dark. And this is what this is showing you. So that's how, again, with our Java application, we are showing in real time exactly what's going on inside your video.
So let's move over to the audio tools. We can do the same thing in audio. Now in audio what we've got is a levels indicator. And the level indicator is going to show you a gross approximation of where your audio inputs are and then we've only got two channels in this particular camera, so we just see the two channels active on the left side there. But this tells you am I piquing my audio out? Am I going to get back tonight and try to put this together I iMovie or Final Cut and realize I've blown my audio out and I've totally wasted the shot? I better dial down this audio.
So we can do both the gross approximation here by the levels meter and then we can also go to the spectra analyzer and we can see individual frequencies of the sound in this room as I'm actually talking here. And one of the big problems is you'll go and you'll set up and you don't realize it's right next to a refrigerator or an air conditioner and it's got a 60 hertz hum and you don't really hear it but you pick it up on your film and you get back and you go, argh, what am I going to do about that? So we can let you know is my audio dialed in right? Now that's all during the shot. You get your shot set up correctly, you like what you see, and now we're going to do something for you while you shoot.
We can actually directly capture video to disk with this tool. We do a little bit of it. Go ahead and do a little bit of it, just keep the camera where it's at. So we're actually recording now, what the camera is seeing, directly to disc. Let's go ahead and stop it not Steve.
And when we do that, we set it up in a project, so let's go back to the project view. And we've actually taken a couple of clips here. One before the session started and this one we just did. Bring up the second on Steve. There we go. Now we can scrub this clip, just like you would in any other tool. So we can move back and forth. Do I really want to keep this or not? Or do I want to take a still frame? And then all those tools for analysis, you can look right there and see if this is something I want to keep.
The other thing we can do for you during the shot is we can analyze the frames in real time. Steve, if you can go to the analyzer. And we can turn on audio here, and it's picking up in real time our audio channels. And we can set a threshold to while we're doing a recording if it sees a frame that piques the audio or piques the luminance values or we have too many dropped frames. Boom. It knows that. And it puts a marker in our timeline.
So the last thing I want to show before we end up today is another way that we can help preview and this is a little bit more of a sophisticated set up. If you have more than one shot, and typically what you'll do is you go do some outside footage and then you want to shoot somebody and you want to set them in the scene, you want to do what they call a composite shot, well we can actually do some of that as well. If I can get Tom to come over here, he's going to be our guinea pig. We're going to bring up a clip that we took earlier that has the empty audience in it.
There we go. And now we're going to go to our composite effects area of the tool and what this allows us to do is to key a color in the green screen color back here and get an approximation of where we want that, the key in color, to be and then what you would normally do is you would shoot the subject in front of the green screen and get that clip and then that is going to allow us to put him into the shot that you shot previously.
So let's move over to the other source. There we go. Now we've got Tom kind of in the middle of the audience here really, kind of, sort of. And so what this is for, it's not to replace the composite king in Final Cut or the sophisticated editors, it's to give you an approximation set correctly.
Do we really want him there or do we want him moved over in front of the mountains, or what have you? And is the color key approximately correct? And then you do your shot. And now you've got something that you can actually use as a clip. Let's go to the sunny ad.
So in summary, what we have here is a java application. The only native code we have here really, is if you look in this video, the big panel video area, when we did those zebra marks and we did the false color, we are using some native code on the backend to process that with what's called a pixel shader to actually get those zebra marks. But everything else, all the tools that you see, all the UI that you see, all that's pure Java.
So we're able to help you with the shot setup, we're able to help you during the shot, with the record and the analyzer. And again, it took us two or three days to get 98 percent of the way to porting this app to Apple, including all the stuff, not to mention, with the menus and all those other things.
And we're actually very pleased. This app runs very well, even on a Power PC notebook. Steve develops on a Power PC, an old Power PC book every day. He doesn't have mine. I don't let him have the new dual core stuff. He gets that when we ship the app. So all in all it's been a very pleasing experience to develop with Java on OS X.
( Applause. )
[Tom O'Brien]
Thank you. That's a really great example of high performance Java application that is also just a great application on Mac OS X. Thank you Ted and Steve. So there's a recap of some of the developers on Mac O X that you should know about today with some great examples. But at this point you're probably wondering how you can learn more about how to make your applications great on Mac OS X. Today's talk is the first of three talks on our Java World Tour this week. We have two more coming up later today and tomorrow.
In the talk later today, we'll cover the essentials of developing an application on Mac OS X or bringing a Java application to Mac OS X. one of the typical things we'll show you in that talk is how to take a Java application downloaded from the web at random, which is a collection of random jars and files in a directory and turning it into a double clickable that your customers will expect running on Mac OS X. There's some very simple steps you can take, some of which we talked about in the demos, that will get you that far. That and more is in the Bring Your Java Application Into Mac OS X talk, this afternoon at three thirty in Russian Hill.
In the third talk, we'll talk about advanced tips for polishing your Java application. Here's an example swing application on Mac OS X. one of the things we'll show you in the third talk is how to take this swing application and make it look like this with some very simple code changes that remain portable. Your code will continue to run just fine on other platforms and will still look good, it'll just look great on Mac OS X. that and a lot more is in the advanced Java development talk, tomorrow at three thirty in the Marina.
So we hope you can join us for those two talks. Now let's talk about what's new for Java in Leopard. We've made a lot of improvements over the past year or more to make the Java experience on Leopard even better than on previous versions of Mac OS X. one of the highlights I'll start with is enhancements to swing user interface elements.
Here's a typical swing application. It's a random blogging application. You notice there's a list of blog entries. It looks like this blogger's probably at the conference this week. They have some comments about lunch yesterday, it looks like, perhaps. This is a good looking application. It looks like a standard swing application, and this is what you get for free when you bring your application just in from the web.
But you can make it look even better on Mac OS X, to make it look like it really fits into the look on Leopard. The first step we'll do is just giving the window a face lift and making it look like a Leopard window. And that's one very simple step you can make. And again, all of the steps we're going to show you, remain portable.
Your code continues to run. The same code continues to run on other platforms, just looking better on Mac OS X. Next the toolbar at the top of the window could be updated to have real toolbar buttons more appropriately sized menu items and a real search field rather than an anonymous text field. That's a real working search field with a simple step you can do on Leopard.
Next, we can update many of the other elements in the window. We can give a sort indicator to the J. table. We can update other components of the window that may make them work better on Mac OS X. If we can give it a better splitter, and we can update other controls including the controls on the lower left corner of the window, this application is looking pretty good.
You can also if you have a palette. You can turn the palette into something that looks like a palette on Mac OS X by giving it more appropriately sized controls, and a pallet sized toolbar. Again, simple steps for each one. So here's where we started we started with this good looking swing application, and we turned it into a great swing application.
For many more details on how to do this and more come to the talk advanced Java development tomorrow at 330 and we'll tell you how you can take easy steps to make portable code that looks great when running on Mac OS X Leopard. Next, let's move onto SWT support.
We've been working with the eclipse community and the SWT team to continually improve the SWT experience on Mac OS X. But let's step back a little bit and recap. We have Apple engineers who are continually working with eclipse team contributing to the community and working with them to solve problems to make things work better. As I mentioned before, we released a compatibility upgrade in early 2006, and we may even more improvements in the updates we shipped in February of this year to make SWT really great, integrated really integrated well on Tiger.
But in Leopard were taking this a step further. We've improved the over all stability of embedding the SWT components and AWT Windows. And we've also made Java start up more SWT away or so SWT and AWT get along together better in the same application, and other stability improvement. We added support for RCP applications. We've launched by Web start so that you can take advantage of that functionality on Leopard. For many more details about our SWT support improvements in Leopard come to the advanced Java development talk tomorrow.
Now let's move on to the Java command line. This is a small thing, but it's been a major request for years since we introduced multiple versions of Java on Mac OS X. On Tiger, when you switch the Java version, when a user switches the Java version using the Java preferences application, it changes the version of Java used for double clickable applications and for Web start. But it didn't effect the version of Java used on the command line.
You had to use full paths to get to the version that you wanted, if you wanted to run something that wasn't the latest. Now in Leopard, when you switch the Java version in Java preferences the version on the command line policy changes, so user bin Java will change behavior for you when you switch it in your preferences.
Thank you, we thought you'd be pleased. Next, let's move onto performance. We wouldn't be talking about performance if it wasn't better performance. Performance on Leopard is looking even better than Tiger. But let's go into a little more detail. Here's our recent run of swing mark using J2SC on Leopard.
Well first let's look at Tiger. On Tiger our performance is here. But in comparison our Leopard performance is significantly improved in recent testing. So, we're really pleased how well performance is looking in Leopard. And you should be able to check this out in the preview that you're getting this week at the conference. We're 41 percent faster at this point, and we're really proud of that.
And the server space, spec JVB is a common bench mark used. And if you're in that space, you may already know that our Tiger performance is better than comparable operating systems on the same hardware. This is the Tiger performance compared on a fork war 3 gig hertz Mac Pro. And we're already doing much better than Lennox on the same hardware. But on Leopard were pleased to say we're doing even better than that.
And this is true when you also look at the version of this switches scale per instance of the Java virtual machine, because there's two virtual machines running on this four core machine. And the story is basically identical, but were including that for completeness. We are publishing these results today on the spec site.
Overall, the message I want to give you is that Java performance on Leopard is great. We've been doing a lot of work over the past year to really make Leopard performance great for Java and were really proud of that. Now let's move to some graphic enhancements. Resolution independence is a direction you are hearing more about in other sessions of the conference this year in Leopard and beyond.
As higher resolution displays become available. You want the operating system to be aware that there are different numbers of dots per inch on those displays, and adapted that take advantage of them because the default is that your original window, which was rendered in the user interface space of 72 dots per inch through the original standard.
When run on an extremely high resolution display of three times that resolution, just ends up getting a lot smaller sure isn't really what you want. What you really want is to take advantage of all this extra pixels to make your application windows and elements the same size but sharper.
So, if you look closely at this pixels scaled up, if you look closely at those pixels. If we just scale them up, naively, you'd end up with the same pixels except they'd just be bigger. So the net effect is that your window would be, and the elements in the window would be blockier.
You really want things to be Chris. We have a great story for you as Java developers with resolution independence. When resolution independence is fully supported, and you have bought some super high res display your application will end up looking like this, with no additional work on your part. You notice we've made the text crisper, taking full advantage of the higher resolution. We've made the user interface elements crisper.
I'll go back and forth here. We've made the user interface element sharper and overall your window is really taking advantage of all of those pixels. You paid for on the high wrist display. But if you look closely, there is one part of this that is not at the full resolution yet.
In the upper left-hand corner of the screen the images in these toolbar buttons were provided by the application. And they were provided at a single resolution. And so the automatic scaling that we're doing, because we're part of the operating system and take advantage of the resolution independence, can't do anything about that. We can't make your images magically sharper.
With a simple step that we'll tell you about later this week. You can make your application's images also support resolution independence, so that they end up looking like this. For more about that and about resolution independence in Java come to the advanced Java development talk tomorrow at 330.
( Silence )
[Tom O'Brien]
Now let's move onto another graphics enhancement. The Sun 2D render is going to be the default in Leopard. But let's go back to recap and tell you what that really means. Graphics rendering on Tiger and early operating systems was rendered using something we called the Quartz renderer, which mapped the Java drawling primitives to Mac OS X Quartz APIs. And because of that we were able to take advantage of some key functionality in the Quartz rendering APIs to do cool things with text that Quartz could do, that wasn't in other rendering.
However, we added the Sun 2D renderer in the past and past updates over the past year as an option for you to try out. And the reason we did, that is that the Sun 2D renderer is a better match for the foreman's profile of graphics rendering on the other Java platforms and a better match for pixel fidelity. So you get the exact same pixel coverage using the Sun 2D renderer on Mac OS X, Java, and on other Java on other platforms.
But because the Tigers Sun 2-D renderer didn't support all of the functionality that we were used to from the Quartz API's such as advanced texts like bi directional text rendering, we kept Quartz renderer to default on Tiger. We left the Sun 2D renderer available on options so that you could try it out in special cases. But we felt the Quartz renderer was the best default on Tiger. On Leopard, we flipped that.
The Sun 2-D renderer is now the default on Leopard, because we've improved it to take advantage of the Mac OS X graphics and text enhancements that we wanted to support. We left the Quartz renderer still available. So you can switch to that as an option. But again, we believe that using the Sun 2-D renderer by default is the best match for performance of graphics with other Java platforms and with pixel coverage that you may be expecting when you're rendering Java where that really matters. But we need your feedback, we need you to tell us how this change in default is working for you. So please try it out on the Leopard data preview, and with your application and let us know what you find. So that's the Sun 2D renderer.
You've been hearing a lot this week about how Leopard before bit from top to bottom and the good news for you as Java developers is Java is no exception in the Leopard preview that you're getting this week J2SC50 to 64 bit enabled for Intel. So again we're bringing you, we're bringing you to new enhancements in the operating systems without work on your part.
You're getting the advantage of new hardware and new operating system improvements and this is just one example of that. Well, what's the performance like? Well let's take a look at a recent comparison we did on Leopard with 32 bit J2SE 5.0 SciMark and here 64 bit. You notice that we are up across the board. 64 bit performance on Leopard is great. And we are really pleased that it's looking good so far. We are 39 percent faster in our recent measurements. So again, our performance story on Leopard is looking spectacular.
But your next question of course is what runs? Well, if you've been to talks in previous years, you know that we are bringing new enhancements to you without much work on your part or any in most cases. But we'll reiterate here, everything we spent just to work all J2SE 5.0 should work great in Intel's 64 bit. We want you to try it out on your preview.
Of course if your application has a little bit or a medium size bit or a live native code. You're going to have to make that native code run on Intel's 64 bit as well. The benefits of job of being transparent, across transition don't apply to native code. But there are simple steps you can do to make that transition for your native portions. For more information about 64 bit in Leopard, and about 64 bit in native code come to the talk later today bring your Java application to Mac OS X. That's at 330 in Russian Hill.
( Silence )
[Tom O'Brien]
( Silence )
[Tom O'Brien]
We have a lot of great performance goals on Mac OS X and we have even more great ones on Leopard. Going back to Tiger. We've had Java support in Shark. And if you don't know about Shark, you should check it out. It's a great performance tool, including with Mac OS X with profiles both native and Java code and the Java profiling is available in Java 1.4.2 and in J2SE 5 on Tiger. And this continues in Leopard, of course. So again, if you haven't checked out Shark, it's a fantastic tool included with the operating system that lets you really target performance in your application.
Also beginning when we shipped J2SE for Tiger, we picked up Suns J Console profiling Tools, which are especially useful for server and other long running deployment applications. And those are also included in Tiger and continue to be included in Leopard. But new in Leopard, you should know about Xray.
Xray is a new performance tool from Apple that lets you get the big picture of your applications performance, including java applications, we're pleased to say, because one of the tools you can use in Xray is the java threads inspector tool. You can use many tools in Xray to understand the overall picture of your applications performance and customize it to what you're trying to find out about performance. And this is true for java applications as well. Let's take a look at the java threading tool briefly here.
Here you see running across the timeline in the middle of the window, each java thread in this sample application running, some are running, some are waiting, some are blocked. The two threads in orange red in the middle of the window are blocked because they're contending for a single java lock.
And you can double click on the threads and find out exactly what they're contending on and really target the problem. Xray is a great tool for understanding performance in Leopard in applications in general and it's a great tool for understanding performance in your java applications. So check that out. That is on the DVD as well.
( Applause )
We've improved the support for Ant in X Code. New in Leopard, Ant understand build XML files. So if you're working on an Ant based project with others on your team or in a community, you can just drag and drop the available XML file into Leopard and it will understand how to deal with it so you can continue to collaborate with other people using Ant based projects.
In addition to improving Ant support in X Code, we've also updated the version of Ant that comes with Leopard. And we've added two more tools that you, as java developers, may be interested in, J Unit and Maven, are also included in Leopard and they're included on the DVD that you're getting this week.
Of course, there's many other tools. I told you that there's a lot of great tools for java. Some of them are java specific, like jar bundler for doing basic packaging of an application to make it a double clickable. We talked about Shark and Xray for performance profiling, but there's other tools for performance and other analysis of your application that are not specific to Java, but can be used to understand your Java application. For example, DTrace and Quartz Debug.
Quartz Debug would be especially useful in some cases when you're profiling graphics issues on your application. Quartz Debug can help you with that. You should look into all of the tools in the Mac OS X developer tools folder to understand which things may be useful to you as Java developers. Because it's not just the java tools.
Of course, if we're talking about tools, all of the standard java development tools that you're used to, and that means Idea and Eclipse run great on Mac OS X and we continue to work to make that story great. Many java developers as we say prefer Mac OS X as their platform of choice even if they're deploying it across multiple environments. And we're pleased that the Mac OS X development story is so strong for Java.
( Pause in speaking. )
So those are just highlights of some of the top things that we've changed in Leopard in Java to make it even better for you and for your customers running your applications and other Java code. We've also made tons of other improvements. We've made over 700 bug fixes so far in Leopard for Java. And that's a conservative estimate. I cut out some that I didn't count.
We're doing this to take advantage of new Leopard features and functionality. We're responding to developer and customer reports of things that they wanted improved, some of them very long standing that we're pleased to have fixed in Leopard. We're improving overall stability and we talked about improvements to performance and we're continuing that story. We have a lot of just plain bugs. We've been fixing those diligently over the past year and I've very pleased with the team's work to make Leopard Java so great at this point.
( Pause in speaking. )
[Tom O'Brien]
Let's talk about the preferred Java versions for Leopard. As I mentioned earlier on Leopard, J2SE 5.0 will be the preferred Java version where we're focusing most of our attention on performance and stability and other enhancements. Java 1.4.2 is still present on Leopard, but it's deprecated. And what that means is that it's there, but we don't suggest that you use it or count on it for operating systems after Leopard.
You can's expect it to be in the next thing after Leopard. So you should migrate anything that depends on Java 1.4.2 specifically to J2SE 5.0. and we need to hear from you if there are specific issues that are keeping you from migrating from Java 1.4.2 to J2SE 5.0 on Leopard, because Java 1.4.2's days are numbered.
The clock ran out on Java 1.3.1 in Leopard. Java 1.3.1 was deprecated in Tiger and it has been completely removed in Leopard. It's gone. We already gave you warning about that. Now we talked a little bit about Java 6 previews. Hold that thought for one more second.
( Pause in speaking. )
[Tom O'Brien]
We've made a ton of improvements in Leopard and we'll recap those highlights again. But let's move on to the last step that I had in the talk, which is something coming up. What was coming up? Well, I gave it away already. It's Java SE 6.
( Applause )
[Tom O'Brien]
We're continuing our developer previews with DP 7 on Leopard. But what's in that preview? Well, it's DP 7 on Leopard. It runs on the WWC beta that you get at the conference this week. It's in synch with Sun's 1.6 underscore 01 release of Java. And it's available today. If it's not live right now, it should be live in moments.
Today, I feel safe saying today. But what works? We've made a lot of enhancements since DP 6 on Tiger, our last developer preview. You should expect, on Leopard in DP 7, bundled applications, Java web start and command line Java, including command line Java that launches graphical applications all to work in DP 7. and you should try those out. This preview is Intel 64 bit only. So you'll need that hardware to take advantage of the functionality in DP 7.
there's many tips in the relief notes that you should read over to understand how to take the best advantage of Developer Preview 7, learn a lot more about all of the bug fixes that we've made since DP 6, and get more tips about how to use DP 7.
as always with Developer Previews, we actively want you to report bugs you find, report bugs you find we've fixed, and give us your feedback on how DP 7 is working for you. You can use bugreporter.apple.com to report that, as developers. You can find that link from the Apple web site.
Let's talk a preliminary look at the Java performance numbers for SE 6 DP 7. in SciMark, here's our Java 5 performance on our recent Leopard build and here's the Java 6 performance, which is as good as or better in most cases. We're continuing to improve this, but right now we're overall 13 percent faster on this benchmark than Java 5, which is a great story for performance in Java 6.
your next question, of course, is where do I get it? Some of you may already know, but it's connect.apple.com, you should log in with your developer account and look in the new Java downloads section. And again, if it's not live right at this second, it should be live really soon today. Again, please read over the release notes very carefully for tips on how to take advantage of this preview. And that's Java 6, which we're pleased to continue previewing on Leopard.
( Applause )
[Tom O'Brien]
Every Java talk needs a pun. This is it. So, where have we been today? Well, we've had an overview of our Java deployment strategy on Mac OS X and how we work to make it the best place for you to develop and the best place for your customers to run Java applications, applets and other java code.
We looked at what some java developers are doing on Mac OS X today and we had two great examples of applications that did extra steps to really polish their apps and stand out on Mac OS X. we gave you pointers to two sessions this week, which I'll put up again in a minute, to help you make your applications great on Mac OS X and we want you to keep delivering great java on Mac OS X. we covered a lot of highlights of new things we've added to java in Leopard. And we told you about DP 7 for Leopard, which you can get today.
So here's those sessions again. The Bring Your Java Application To Mac OS X Leopard talk is this afternoon at three thirty in Russian Hill. That contains information about getting your application off the ground on Mac OS X and doing all the basic things to make it look good, have the double clickable application icon, make the menu bar work.
And also that's the talk you should go to if you're interested in learning more about the Intel 64 bit story in Leopard so that you can understand how to take advantage of 64 bit in your dapplication, especially if you have pieces of native code. Come to that talk for 64 bit information.
The Advanced Java Development talk tomorrow, at three thirty in the Marina, is where we'll give you a lot more details on how to polish your application, make it really stand out. Those tips about how to make your swing application both great looking on Mac OS X and still portable are in that talk, and there's a lot more. The SWT embedding updates are gone into in much more detail in that talk. Three thirty tomorrow in the Marina.
We have two Java labs this week. The first one immediately follows this talk is downstairs on the lab level in the IT Lab at ten thirty. Tomorrow at ten thirty in the Mac OS X lab, section A at ten thirty, we have another Java lab. Come to those labs, bring your applications, bring your questions. The Team will be there to talk to you.
For more information, these are some major links that you should know. Matt (inaudible) is our evangelist who covers our area. For documentation and all the other resources, you probably already know about the developers site, in addition to the WWDC portion of the site. There's many other resources and documentation, technical notes, and other information for you as a java developer.