---
title: WWDC2001 Session 500
framework: wwdc
role: article
path: wwdc/wwdc2001-500
---

# WWDC2001 Session 500

## Transcript

Kind: captions Language: en good morning I hope it's not too early for all the Java developers in the audience today it looks like we've got a good group I just want to kick off this morning session with a little bit of information for you on the rest of the week this is obviously our first session our overview session we've got a total of 10 sessions in one feedback form just in the Java tract that's the most content that we've ever had for you guys in Java we've got a lot of exciting stuff to share with you I don't want to steal any the thunder that we have in this presentation and some of the other ones if you add that together with the web object sessions I believe there's a total of 17 of those there's a whole lot of Java related content at this show so with that in mind I want to go ahead and make my introduction brief this morning and bring up Steve near off the senior director and dynamic dynamic object dweeb for Apple and have him come up and tell you about all this great stuff we've been doing it thank you Steve hi there I've never put such a silly thing in my title but last year when I when I say I'm director and I get off the stage and I want to interact with you guys a lot of times people are taken back oh he's a director you know he's a there's this line between me and you so I figured it was really important to let you guys know that I still actually enjoy programming and enjoy basically being very active in the software community not just well people push her so to speak so one of the things I wanted to open with is I'm extremely I'm feeling great today are you guys feeling great today last night I felt really bad I was here at 10:00 till 10 o'clock getting ready and I was feeling very old and it was it was because the first day of the show getting all this stuff together getting the demos ready for you guys putting the finishing touches on the presentation and and also Steve and his keynote reminded me of my age unfortunately when he said he had been working with avi for 15 years I actually started at next two months after avi and then realized I had been working with him for 15 years as well and and I did some math a simple math and I'm like holy cow I've been doing this for 30 35 % of my life on earth I've spent with Steve and avi doing doing this stuff and as most of you know Steve's a pretty intense guy and one year with Steve is not really equivalent to one normal year right so it's not quite a one to seven with dogs right but it's it's probably a 1 to 3 so I really hope my life isn't going to end any time real soon because the math just doesn't add up in any way speaking of age Java is six years young and I think it's it's sobering to realize it's just a child okay it's just a child and from its inception in 95 where it hit the streets about spring of 95 to today a tremendous amount of changes occurred okay not only at Apple but in the Java community and so I'm going to spend the first half of this talk giving the 10,000 foot view of what's going on in the Java community I'm also going to talk about what's changed in the Apple community I'm going to talk about what our goals are fortunately they haven't changed a hell of a lot in the three and a half years I've been on the stage representing the Java team and what's our strategy our strategy has changed a little bit over the years but ever so slightly I go back and review the presentations of prior years before putting a presentation like this together and I was I was fairly happy with the consistency and I think that should also be for you guys because you don't want to see us jerking you around so to speak that's not that's not what we're here to do so from an apple perspective and actually a Sun perspective we don't have any more excuses I think job is in a pretty interesting place right now not to say that we've solved all the problems or it's it's an ideal location but there's really nothing to be embarrassed about anymore so for instance when Java started in the browser for applets it really wasn't an appropriate API for developing industrial-strength applications okay at that time it was called the Java 1.1 and it had a WT which was insufficient for developing great applications and son has fixed that son has Java 2 son has swing son is JFC there are quite a few interesting api's on the platform that do enable you to do non-trivial things and other things that I guess have changed is the development tools in this space have gotten fairly robust and we're gonna talk about tools as well later on let's see what else do I want to say about what's changed well we'll talk about it later on over the course of time what's our goal our goal is to be the number one desktop for deploying Java applications now we've been working hard on this and we're going to tell you where we are today and where we expect to be tomorrow that's part of what the talk is about and we want to be the number one desktop for developing java applications we have the coolest hardware on the planet I see so many people with Titanium's and running ten and we need to enable Java developers to buy this great hardware and software and do their Java development so why are we doing this Java is the fastest growing language on the planet right now okay just just so you don't get mad at me this is not my data it's Gartner that's why objective-c isn't on the chart for you objective-c people in the audience and also c-sharp is is at the bottom there with a question mark c-sharp is a language which is java-like and microsoft is currently promoting it as the next-generation language for programming their platform right now it's not really on the radar screen so to speak because there are very few people presently programming in it hence it doesn't have a line right here so it's unclear whether it's going to overtake java but certainly at this point in time there's no evidence of that certainly from a cross-platform perspective so last year at JavaOne sun i guess had said that there were more than two million java programmers and that was really exciting given Java one had about 25,000 developers at the conference and hearing there were 2 million people programming in Java was actually very exciting and a good marketing slogan however if you look closely a lot of these people are not qualified to do the type of development that's I think being done by people in this room so there are a lot of hobbyists in fact most of the community are hobbyists right now you know this isn't a surprise right if any of you have been in small companies or even big companies that are growing when you grow from what Java when you experience this type of phenomenal growth it's pretty clear that your hope all 2 million developers are not going to be wildly qualified right so this is just natural growing pains of of any successful platform so this isn't meant to disparage the community but to just educate you guys that basically not all the developers are created equal so it's becoming mainstream this isn't any surprise there are slices of this pie which we're very interested in certainly education 19% as you know apples very big in education finance personal finance in particular last year Schwab released an application that was heavily advertised on on television called velocity that application runs very well on on our platform and in fact was developed on it and now there's all kinds of financial applications that are following suit and later on we'll bring up someone from a company that does a product called money dance which is a very interesting financial application written in Java so it's becoming mainstream and what's cool is it's mainstream and it's good it's good technology especially the language the language is excellent and the api's are evolving to become excellent so you know I'm very much into music and most of the popular music of today really stings okay well you know I sort of expect that in our industry because it's becoming a fashion industry whether you recognize it or not so it's it's sort of it's sort of cooled it Java is technically sound and mainstream and both of those are very important so java technology usage there's a lot of energy going into the server as as you can see that red that red point on the graph is for servlets and Java server pages so right now the biggest application or the largest amount of java code is being written on the server to do Java server pages and servlets the second most common is still applets good old applets the difference between applets and Java server pages is Java server pages says Gartner is going to go up and at a faster rate than applets applets tend to be pretty stagnant if you look into the future the other point in the graph is applications the blue line the blue line is steadily going up and we anticipate that to even go higher mainly because all of these server applications need to have a face and HTML and applets aren't going to cut it for a lot of them so there's going to be lots of applications which need to either supplement the web-based interface or replace the web-based interface and then the most growth that's expected even though it's a small a man of energy right now is the enterprise javabeans right now enterprise javabeans is the least popular in 2001 but that's expected to grow significantly as the data indicates so here's a diagram which is explain our strategy excuse me from that we love the java language as I said there's three virtual machines underneath the one that we're focusing on is the hot spot Java Virtual Machine there's a KVM and a card VM so on one end of the spectrum people are doing lots and lots of work in the enterprise again on the server as you know most of you know web objects has been completely retooled to be in Java and it's certainly one example of this over time I expect the web objects team to roll out their j2ee or Java 2 Enterprise Edition strategy right now the reimplementation of web objects in Java is a necessary first step however to play on the server in the application server space with Java you have to start adopting some of the idioms and methodologies that j2ee is is implementing mainly because be EA and an Oracle and IBM all these companies their application servers are starting to talk enterprise javabeans are starting to talk Java server pages and unless we talk that language we're not going to interoperate with all that other work that's going on in the community and hence we're not going to take advantage of the full power of Java so on the other end of the spectrum is Java card and also Java ring in Java light bulb and you know all that kind of stuff we're not interested in that there's there's companies investing lots of time and energy in it and that's great and on that side of the space there's really no kpi's per se that sit atop the java language on the other hand for these other class of devices cell phones back palms all that good stuff there's the micro addition there is an API suite that again is cross-platform as you define the the washing machine and fax machine there's some common denominator API that they're developing called the micro Edition ok this is what we're focusing on we're focusing on the standard edition the standard edition is could be considered the desktop Edition the other way of thinking about it it's the core of Java again it's the core of Java for instance the Enterprise Edition is a superset of the standard edition so it includes all the standard edition technology so one of the reasons we're focusing on it is the better we make our core the better we make Java 2 standard edition the better products like j2ee will run for example there are companies like bluestone who I think is now owned by HP that have a pure Java j2ee implementation I don't know if they formally support it on Mac 10 yet but I ran into a couple of the guys at one of the meetings and they said yeah we brought it over to Mac 10 and it just ran and so that type of stuff blows me away it's like wow we have a full Java 2 Enterprise Edition stack and it just worked on Mac 10 yeah and that that type of stuff again explains the value of what we're trying to do here so Java 2 standard edition and the Sun packages just to be technically accurate this includes a little more detail than the previous slide there are three packages which are really built into the language definition there the utilities or the collection classes io and Lang which includes things like language reflection and so on right above we have packages like security remote method invocation mathematics networking ok and I'm not going to go through all the packages I'm trying to highlight the the most important ones okay above that you start to have user interface technology is swing AWT geom which is just a poor name for Java 2d and applets and sound so without getting into any more detail about what packages there are this is the pure java to java to stack so to speak the people are writing to and we want to support applications that are being written on other platforms so that they just work on our platform but that that's not enough for us okay we want to go beyond java to SE we don't want to go beyond it because we don't think sun is doing their job or that we think java to se is not good we're going beyond it because Apple has some core competencies and some great technology that we think need to be available to Java programmers so again it's not a competitive thing it's not like by virtue of doing some of this work that we are not subscribed to the pure Java platform we are in fact all these technologies layer on with standard Sun extensions like Jay and I so right there we have cocoa for cocoa to interoperate with pure Java we have something we call the Objective C Java bridge and that again uses j'ni which is the lowest-level standard interface for native method invocation so in addition cocoa implements a lot of the same stuff at a GUI layer as swing so sometimes people get confused and later on I'm going to try and remove some of that confused and I don't want to go through it right now here's quick time so quick time is also layered on some subset of the java TSE stack and we have web objects which is layered atop the entire stack that is you don't need any native code to to run it whereas cocoa and QuickTime both contain native code cocoa in the form of objective-c and C code QuickTime mostly in C code so we also aside from offering the web objects cocoa QuickTime advantage we want to take swing and make it integrate with our on platform in some fairly obvious ways one it needs to have the alcohol look and feel so we've done that swing looks great and we think it looks better than any other platform you can run Java on and I'll have some people up later on to demonstrate some of that and the menu placement is what Mac people expect it's at the top of the top of the screen not associated with the window courts - the integration basically we get all the PDF support that Steve was talking about and very fancy graphics by virtue of having this stuff layer on top of courts and we also have out-of-the-box support now here's a quote from Tony de l'alma at Berlin let me take a minute and really emphasize the importance of this the java 2 platform is at the end of the day an operating system ok and when you think of it in those terms the JRE which is just the runtime environment is about 10 roughly 10 megabytes ok it's I think it's actually 8 8 and change but let's just say 10 the problem with not bundling it as part of the operating system is number one you have to have a fairly fast connection to download this stuff ok now that's only a small part of the problem the much bigger part of the problem is if it's not bundled each application will bundle its own because it doesn't trust any other application to install the right one for it ok so for instance you'll have if in the worst case you might have 5 Java applications on a Wintel system that actually each application not only has its own copy of some unique version of the virtual machine but when it's running it has to instantiate that copy and each application will instantiate its own copy okay so the analogy is imagine if all the carbon apps that are being developed carried around its own version of carbon and when you ran it had to instantiate its own version of carbon that's crazy okay so it's really important to know this is an architectural flaw that we is basically not not a flaw in our system but a flaw on every other system right now that's running java particularly windows so let's move on I'm gonna get back to something I said before which is okay there's the java 2 standard edition and we have cocoa but they have swing and you know we have quicktime and they have JM f and there's there's some confusion about what people should be programming to so one way to remove the confusion is to say and I can't say this cuz I don't know all of you you need to put yourself in a box okay and I know it's not easy sometimes but you need at least nice leaf to think what are my goals and what which box am I in so the one box that I'm totally uninterested in for purposes of this discussion unfortunately most of the software in the planet probably lives in the box is the single platform and simple box so let's just get rid of that okay don't care about it the next box is multi-platform and simple so on one end of that spectrum you have something like a dumb terminal it has the maximum reach that isn't runs on the most platforms but it's arguably the worst user experience okay so HTML is in that same box okay it has a great reach okay but in its and it's richer but it's still not as rich as you'd like so let's go to the blue box the other end of that spectrum is a native application and I'm doing this native app a little bit of a disservice because it actually isn't a point okay depending on how you've architected your application spectrum so let me describe what I mean by that with Java to se it you're running cross-platform code not only for your engine but for your GUI okay and that's a fully cross-platform application what a lot of people do especially the shrink-wrap vendors that care about quality in a big way what they do is they divide the backend of their application and their front end of the application so what they do is they port the backend and make it as portable as possible but plug in a native GUI so to speak so there are a lot of people right now doing that on the Mactan platform they'll use cocoa as the front-end but they'll bring over a lot of engine code from other platforms okay and that will give you the best possible native application experience on mac ten again using technologies like cocoa and carbon so another point on that graph is the browser plug-in that usually contains some native code and I'm not going to talk much about that you guys know what that is but Java is in that green box which is multi-platform and rich so the very first version of Java had quite a bit of reach in fact it was almost as as close as HTML well that's unfortunately changed because Microsoft and Sun decided not to see eye-to-eye on on life with Java okay so the bottom line is it isn't as ubiquitous gets back to my previous point on unbundling so you can't depend on it in the same way as you can depend on HTML the other point on the graph is a Java two out this is where we see Mac OS 10 Java we think that it's going to have much further reach than the standard Java 2 app we also think that it's a much richer experience because of the integration we're doing which we're going to demonstrate in this talk ok it's right right below the native app we think we're pretty close but it certainly is not the ideal to get to all the functionality of the mac-10 platform can you get to 90 plus percent of it yes and we hope to close that gap over time so let's move on let's talk about precisely what we're doing you've seen this stuff so I'm not gonna you've seen it from everyone practically I'm sure but for purposes of this discussion it's critical because Java was developed on a UNIX based operating system this enables us to port more quickly enables us to innovate rather than just on port which is not always fun and it enables us to offer an environment which is familiar to the Java community okay so there are many people in the Java community who never considered us before that are now coming over to ten and like it or not they open up a terminal and they could type Java C or Java and they get all excited wow this is a Mac platform and I could I could actually go into this terminal run my Emacs VI and all these lowest-common-denominator editors and and and use Java and that's great okay that's great because who are we to tell them no you have to live in this IDE or you have to live in that ID that's not appropriate so we have a spectrum of tools starting from the command line to some very great ideas that we're going to talk about later so just to put some of this into concrete perspective I wanted to bring someone up from the company that's actually the first to deploy a Java shrink-wrap app on Mac OS 10 fellows name is Sean Riley and he's chief technical officer from at Jen hi and he said my name is Sean Riley I work with app Jen and I wrote money dance money dance started out its life being developed under Linux FreeBSD that's kind of the world I come from I had a lot of time one summer when my girlfriend went to London and I started writing money dance you know kind of the evenings and weekends kind of thing continued that way for a couple of years and now doing a full time and my name is developing a lot faster because of that and I'm gonna talk a little bit about money dance and then talk a little bit about how you know my experience went with bringing money dance to OS 10 my current development environment is OS 10 right now I switched completely from Linux FreeBSD so I'm now a part of the Mac world and enjoying it money dance is a personal finance application kind of program that helps you manage your checking account credit cards investments check a budget things like that the newest version allows you to do some online banking we've got a lot more online features you know on the way and I'll show you that in a little bit yeah the program is probably familiar to anyone who's seen any type of a personal finance application you know it looks kind of like a checkbook register click through things and enter transactions and has autofill you know the standard features you expect to find that you don't generally see in a lot of job applications one thing about Java on OS 10 I like is the look and feel you know this looks a lot you know what's very nice the buttons and the aqua and everything like that when you run it on metal and Linux and things like that it looks you know it looks nice too but Java is on OS 10 is just beautiful I think did you put a picture of it on your box yeah we have a box of money now that should be in stores now and the screenshots on the box you know show the OS 10 version even though the version in the box you can put on any platform pretty much so you know it can step through the program a little bit show you the investment management different views and it's a yeah I think it's a very full-featured application you know not like a lot of the you know you can go on the internet and probably find that you know ten thousand you know small java applications that do one or two things you know money dance is intended to be very comprehensive include all the features you need and be a real you know full-fledged desktop application some of the extent some of the features that we have that are that you can really only have in a java application are things like extensions we have a an interface to add something like plugins so you can add new features to the program you know even after it's released so we can go through editing an extension and this works cross-platform it'll work on Windows Mac OS 9 Mac OS 10 Linux anything and we'll just choose an extension here I don't know how many of you heard of JJ Python but it's a Python scripting language implementation written in Java and we've written a little extension that will allow you to run Python scripts in Java and get at your finances your transactions and accounts and do whatever you want to do with them so you know make money that's more extensible this is just one extension that we have we've got a whole bunch of them on the way you know a lot of online services a lot of you know you know some extensions that are really only for hackers you know if you want to just play around with it and you know and you can write your own extensions we have a public API that you can add whatever type of extension do you want and if your company wants to add say online service the money dance that connects to your service you're free to write your own extension and give it to us and yeah we can provide it to - users so you can enter Python commands in here I won't really get into this much but you know just know that you can enter Python commands in there and it will access your uh your data so how long did it take the port support I don't know if I would really call it porting you know we didn't we didn't have to rewrite any code at all we didn't even have to recompile it we just took our jar file when we just didn't mind enhancement distribute it with a jar file and several supporting jar files like JC e j SSE things like that and we took the exact same jar file that we use on any other platform and we packaged up using mr j app builder and it took us under an hour to figure out how to do all of this stuff and to have a clickable icon you know that you could run the application with and that was you know starting from never seen Mac OS 10 before to having an application that looks like it's written in cocoa you're running on that well thanks a lot thank you so OneNote that's running on stock Mac OS 10 okay so he wasn't running on any custom version that we have and we will be showing you some custom versions so I want to make sure I distinguish between between that so Mac 10 is appropriate for development deployment of these java applications and I'm amazed at the performance of that happened just the overall fit and finish given again where we were a couple years ago with Java so very exciting here's our roadmap for 2001 as you all know we shipped again the Mac 10 GM on March 24th available at the show I believe there's a pre-release two of ie one of the things we didn't ship for the GM release of Mac 10 is applet support so that was a collaboration between us and the browser vendors the most notable ones are the Omni web group and the Microsoft folks who do ie so I he's doing a pre-release we're a little bit behind on the Omni web work but we expect to do that as well we're gonna have a release by the end of this week we wanted to have it available for you this week too so that you can start playing with this stuff on in the browser and we expect to have a full fledged GM update of 131 in July okay for those who aren't aware last week Sun actually blessed 131 GM and that means we're only going to have a two-month Delta between sons latest stuff and our latest stuff okay this is the best that we've ever done and in fact I think the best in the industry at tracking sons latest release again years ago we were always apologetic this year no excuses we have this stuff in a timely fashion - claps okay so what's new in dp1 as I said Appling embedding now works we've made many improvements to the Aqua swing look and feel debugging and profiling work and many bug fixes so even though you can deploy obviously we still have bugs and we still fix them so what's left we are going to be updating to 131 and that contains some new api's a new version of hotspot and we have to make sure we're conformed into son's jck validation suite right now I think we're passing the relisha yet I think we're passing 90 plus percent so we don't have far to go there and certainly fix more bugs so now I'm going to shift gears you know we're shipping with ten you know what our plans are for the update fairly straightforward stuff well what are other things that are on the horizon okay cuz I think we only meet once a year and it's important for me to talk about about this because I know many of you are interested in it even though some of these things I'm going to be talking about then we don't have product plans for to talk about today but its direction so java Secure Sockets this is some really good news you can go get this today it's a pure Java implementation of SSL and TSL for doing HTTPS or just secure sockets it's it it's available from Suns website and there's the the URL for it and you can bundle it with your application so this is a perfect example of son continuing to add value to the platform and us being able to take advantage of it without doing any work okay so that's the ideal world from my perspective and the other thing to note is on Mac OS 9 the only place we had Secure Sockets was within the browser because of how we chose to implement it we didn't have this feature for applications and now with our emphasis on applications it's critical that this feature exists so again this is richer than the capabilities we were providing online with mrj Java Web Start this is a very interesting technology that enables you to just click on an icon within a browser and get your application to run there's no ad hoc stuff you have to do which varies from product to product and it gives you transparent update it also is available from anywhere it's a shame this didn't exist three three or four years ago but it exists now and we're right on top of it we think it's great and it is also integrated with IE so to demonstrate some of this is Steve Llewellyn from my team thanks Steve good morning everybody so I have two actual cool web-based demos for you this morning one is Java Web Start and actually I'm also going to show applets running in Internet Explorer as well so Java Web Start what is it where did it come from you know what's the deal about Java Web Start well Java Web Start was developed through the Java community process and for those of you who don't know anything about that that's basically a forum that Sun established to work with their partners on developing critical technologies like web start for Java so web store web start is all about permitting job applications be they small or large simpler complex to be deployed from any vendors web server to any Java enabled Web Start desktop such as Mac OS 10 from any vendors web browser meaning a web browser doesn't have to for example have the capability to display an applet to still use web start and all of that is to be done securely through a single click of the user's mouse so we have a simple HTML page above us on the screens and this is vanilla HTML just some images and some links the WWDC web start image here has a hot link behind it that is tied to a jnlp a java network launching protocol web start document which is written in standard XML this document contains everything web start needs to know in order to find the application it needs to present to the user so I'm gonna start the demo off I'm going to click on my little image here and this click will trigger the download of the HTML doc or the XML a document and that in turn will trigger the web start technology which we saw it happened very rapidly but it triggered the the web start technology to examine that jnlp file it found out what application needed to be downloaded what version it was what's the what's its name who wrote it where to find out more information about it all that kind of good stuff it in our case downloaded the application because it wasn't already in our system had it been and had the user requested the same versions was on our system already it wouldn't have downloaded it would have just reused what was there and the download have done faster and then it launches the application so once you get a bunch of these applications on your system you may have difficulty managing them well Web Start has built in application management in it so I'm going to go and I'm going to start the web start management console bringing my dock and once this launches will see that the Aqua pod application that launched is now being managed by web star here we can see it highlighted there whoops right and from the Web Start application manager we can actually launch the application again say we took out a web page we have originally got it from or whatever when we do that even when we launch it from the web store application manager it's still launched in a secure environment so the users as safe launching it from the manager as he was launching it from the web browser we could also remove the application completely say we're done with this application we want to clean up some space instead of having it being some mysterious cache somewhere in our we're just running out of this space you knows why so we can completely wipe it from our system we can also find out more about who wrote the application in this case Apple Computer we can find out a description about it in this case it's the Web Start aquapod demo also from the application manager we can do things like set our operational settings for example do we want the Java console to open up when we run a Web Store application we can also set security settings like the digital certificates you use during the security a piece of rule that that Web Start plays so that in a nutshell is web star now since we have this application up aquapod let's take a closer look at it we can see that as we'd expect it has a crisp clean aqua compliant appearance but there's a few things about this application that are different that may not be apparent immediately what we've done is we've enhanced aqua pad with a couple of Apple Java frameworks newly available as of this week from Apple's developer website and freely downloadable by you guys to use in your java swing applications the first of these is the Java speech synthesis framework now this framework uses these speech capabilities built into every copy of OS 10 and it enables a Java programmer to do basically text-to-speech conversion handed a bunch of text the computer reads it back to you through its speaker it also can play a few other tricks and do some neat things it basically has a hundred percent coverage of the capabilities of the speech technology built-in to us from Java so I'm going to demonstrate in our aqua pad application we're using this to read back the contents of the aqua pad document to the user so I'll just ask you to do so application this is a demonstration of integrating Mac touch technologies such as speech synthesis and total system services such as spell checking with Java to standard editions living applications on Mac OS X the Java frameworks for these two technologies as analyst each recognition will be discussed in session 5 so Mac OS X should have been Mac OS 10 go to that session I'll show you how to fix that so so the other capability included in aqua pad is the job of spelling framework the job of spelling framework uses the built-in cocoa spelling service that's included with every copy of Mac OS 10 and as you might guess it allows the Java programmer to build in Java spell building and spell checking capabilities into its job application so in this case for today's demo we're going to take a look at the real-time spell checking capabilities of the framework so I'll turn on the real-time spell checker and I'll go down to the bottom of the document here and I will deliberately type in horribly misspelled sentence I think I'm the first person that stood on stage and said that so let's see this is really something okay I have three misspelled words so the first thing to notice is the pace with which the real-time spellcheck are kept with my typing now what it's doing when it's when it's checking the spelling is from Java it realizes I've hit a key it gets the text out of the style pad and it hands it to another process the cocoa spelling service also running on the system asks it if it's spelled correctly if it's not it goes and it marks up in the red underscore misspelling cue that the word is misspelled now that's really fast now when we when we type since the real-time spellcheck are still active simple is si I know I've just made a typo there I can just correct him but watch as I go back and forth I'm going to keep making this misspelling error and correcting it and every time it's doing a whole conversion back to the koko spelling service back to Java so I mean that it's like it can do it faster than I can type it so that is a premier example of how tightly you can integrate koko services with current Java so we can also ask the framework you know what are the suggested corrections I don't really know how to spell the word this maybe so I'll go and I'll control click over the word and I'll get a list of possible Corrections and this is this is my correction and I'll do the same thing for the second word the second word I want to point out that we can also tell the system just ignore this you know it's a funky word you know remove that red underscore I don't want to see it or we could say this is a new word a lot of times in our business we know that these spell checkers complain about all kinds of technical terms that we know it really spoke correctly so I can actually ask the system to learn it and then all applications native and otherwise that use the coco spelling service on OS 10 will now realize that that word is a correct spelling woman spelled word and and not spell it you know indicate that it's misspelled incorrectly so in this case I'll just choose something and it's corrected so now there we haven't we've taken a standard Java swing application we aqua fide it we turned on knock we'll look and feel and we added a few new Apple Java frameworks or at least this week that you can use for free and we wrapped it up in a web star we deployed it through an Apache web server down to our Mac OS 10 desktop through Internet Explorer all of the single click of the mouse so that's the web start demo so let's see how applets are doing today as you know in the first version of Mac OS 10 applets weren't running so great we've made a lot of progress with working with Microsoft and the Java team has worked really hard on getting this to work so here is pretty much the biggest swing applet I could find it's a demo application that son wrote quite a while ago to demonstrate all the capabilities of the swing UI toolkit and we've probably all seen this before I'm just gonna play with it a little and we can see the performance and see that it's okay now the first demo tab that comes up is really my favorite internal frames and the developer that did this really went to extremes to make it very oh s 10 look and feel so we see our windows here we can move them around that's pretty fast and we can resize them that's happening fast and let me make this small so I can scroll and that happens fast but what's really cool is of course Mac OS 10 has a dock on it right a transparent dock so if I start minimizing these windows we see a transparent little dock appearing at the bottom and it's even you see the transparency as I move the window around so that's really cool that it did a great job so let's take a look at some other pieces of this swingset demo this is a good one we can see how fast the the columns move around and I can you know resize them and do that kind of cool stuff and we can see you know we'll look at the progress bar you know and it's it's you know home the mail it's working very fast so that is you know swing set to demo running as an applet inside of Internet Explorer and there's a my demo so thanks 3 thanks to you pretty cool next I like to bring up Larry Abraham's from Sun Microsystems Larry Larry has been one of our strongest supporters and son I just wanted to bring him up to thank him for all the work that his team has done on our behalf and all the help they give us so I also wanted him to take the time to say a few words thanks Larry thank you first thing I want to do is thank Steve and his team for the for the great job they did on 1.3 it's it was sort of a long time coming and getting Java 2 on the Mac but it was worth the wait as you could see here it's just fantastic implementation so thanks Steve to you and your team for doing such a great job and one of the comments Steve made about 131 about Apple shipping 131 I guess within two months of when SunChips well just just to put that in perspective Apple will probably be I can't say for sure but Apple will probably be the first platform port of 1.3.1 so we've come from a situation where Apple in many cases lagged behind son much further than then either party would have liked to today when Apple is the first licensee to be shipping on 131 so congratulations and thanks for that and and I expect the same on on 1.4 as well I expect Apple will be did you give a date for that yet Steve well did you yeah end of November and we're right on schedule in fact the next next week we'll be shipping the beta for 1.4 so let me let me talk a little about the state of the partnership and let me make a little confession so before I joined Sun I joined Sun in 98 I was an Apple employee I worked at klaris actually which at least in those days was Apple's software arm in a sense and as most of you know klaris is now sort of migrated into a filemaker Inc well when I was there I was responsible for Clara's internet products home page and email learned some other things still some good email her fans out there glad to hear that it's great product and when I when I came to son my boss at the time who is who was heading up all of Suns Java efforts told me I have three three missions for you number one get Java to ship because at the time son was having problems getting one two Oh Java two out the door it was a big deal and and there were some problems with schedule and with getting the getting getting the thing product ready the second mission was to get hotspot ship this is sort of in a similar state hot spot was a really cool next-generation VM technology that we're having some trouble at the time productizing and the third thing was can you please given that you're coming from from Apple could you please try and fix the Apple and cent relationship and get Apple to a point where we're shipping compatible products in a reasonable timeframe so very early on and those were that's true those were my three free commands from my boss at the time so very early on as Steve and I got together and talked about well you know what what could we do to make things better and I just want to once again thank Steve for from from those early conversations the spirit of partnership that the two teams have shown and the really getting better with every month collaboration we've gone from almost two you know two camps that were barely working on the same agenda to now intimately working on technologies that were sharing for you know fundamental java technology so that the two teams developed collaboratively I'll give you two examples of that the aqua look and feel for swing that that looks so beautiful I won't I won't in any way put down our metal look and feel or our windows look and feel but I got to say this one looks pretty hot it was actually the result of a really tight collaboration between Sun engineers working in Apple and Apple engineers and now that's something that you know son is committed committed real resource to invest in it and will continue to invest in the second example I'll mention is on the VM our two VM teams ever since hotspot have worked extremely closely together and our our our VM team is extremely excited about working with Apple on Apple's port of hotspot and as a matter of fact there's some really exciting work that Steve may talk about for the future where Apple has developed some great extensions to hotspot that Sun is going to be looking at productizing so at this point the collaboration is so strong that the technology is flowing in both directions and that's that's just a great great comment on the state of the partnership so let me talk a little about the the future of client java as sun season and I think it lines up very well with what you've seen and heard here today sends Suns latest statement and vision for client Java is is something we call rich clients for web services if you come to Java one you'll hear a lot more about that but there's a lot of talk about web services so what a web service web services are essentially internet or web or network services in our case implemented on top of either j2se and things like servlets Java server pages in some cases and Java 2 Enterprise Edition and things like ejbs and these web services today are being made accessible through standard XML protocols like soap which is something that that Sun is at this point standing behind from a from a strategic web service perspective so what good are these web services though I think Steve brought this up without without it without a great face on them so as we all know the most popular or lowest common denominator face is HTML and technologies that create HTML but it's always been my vision in particular that the need for interfaces that go beyond the browser for a lot of reasons is something that that is going to really is going to really come come back in a sense we've sort of took a detour in many ways with the birth of the web through HTML and in a sense a lesser user experience for for online and network data and I think the time is rapidly approaching where we're going to see a lot more innovation in user interfaces that go beyond the browser and I think Java is going to play a key role in that and the the types of things you're seeing with java 2 are gonna play a key role in that so our vision is that java 2 and certainly apple's version of java 2 will be a great great user experience for this emerging generation of rich clients for web services and I think it's only it's only natural that Apple in a sense be the leading provider of those or the or the vanguard of those since Apple invented the rich rich client the rich interface and son would like nothing more than to see Apple be at the be at the be in the lead in terms of showing off this new generation of technology so thank you once again and I look forward to thanks a lot our next year so for those of you that didn't attend Java one last year actually Steve Jobs was on stage he was featured along with Scott McNealy and it was one of the first appearances steve has made where he wasn't the star and it was pretty interesting to get him up on stage with Scott and actually shake hands and make sure the two companies are working together so not only the people in the trenches working well we have our executives that are actually kissing and hugging as well which is great so for as far as kissing and hugging goes performance I think you'll want to kiss and hug me after we go through this at least I hope so what's hot as Larry alluded to we're innovating in the area of shared metadata well I don't think he said that but that's what we're doing basically in a dynamic language like Java well in static languages all you care about is the instruction stream that's pretty much all that you share so dll's or or shared library schemes all their concern with is sharing code instructions with a dynamic language it turns out that metadata or data that describes the program overwhelms the instruction stream so the important thing is to share metadata okay and we've done that and I'll show you some numbers in addition the more you share the more launch times improve the other thing I'd like to talk about is accelerated swing so first let's look at two applications obviously to talk about sharing you need to run two things so the two things that we benchmark is running jbuilder which is a non-trivial big app and money dance which is a non-trivial big app and today was shearing off when you're using both apps the working set is roughly 92 megabytes with sharing basically we reduced the working set by 30% okay this is significant this is significant again just because you go to and interpreted dynamic language doesn't mean you throw the baby out with the bathwater make sure libraries and co-chairing metadata sharing is something that's been proven and we needed in the Java space and Apple has done that and right now it's primarily focused at sharing the platform classes we don't right now enable you to share your frameworks but that's a feature we anticipate adding in the future so that's sharing by the way I'm running low on time so I'm gonna really have to zoom unfortunately I usually go too fast now I'm going too slow so an industry-first in the Steve Jobs to Jewish tradition very dramatic hardware accelerated swing is is what I'd like to talk about right now okay in the product that we're going to be giving you later this week it is not the default okay however this support is in there and if you go to some other talks that are part of the Java track the guys will hopefully tell you how to enable it again if you're nice to them so accelerated swing caffeine marks caffeine mark is a micro benchmark which we don't particularly like but everyone else seems to want to measure Java by it so let's talk about the imaging score in the past when we focused on the just-in-time compiler we we have had advancements over the years in some of the low-level compiler jitsi space we always looked fairly mediocre if not poor on imaging and graphics but now with the hardware accelerated swing basically were eight point five times faster for graphics okay I'm sorry that was imaging now it's graphics the graphics score is even more impressive okay we go from a mark of what is that 200 - whoo 23 times faster for caffeine mark so again we don't really like caffeine marks but we're showing them because now we do well and [Laughter] a more interesting benchmark is is actually an internal benchmark that that swing that son has developed to measure swing okay so because a lot of the focus of the GUI is now centered around swing and not AWT measuring how fast swing performance can be is very important so for swing our swing mark on a 500 megahertz g4 with a radeon is 65 that's the mark when we Hardware accelerate we're 55% faster in this benchmark unlike the other one lower is better okay and an interesting test that the engineers who are working on this decided to do they said what if graphics were infinitely fast okay so what they did was they stubbed out so to speak it from Java the calls to the lower-level graphics where they didn't do any drawing at all and the swing mark was only what five points off from where we were when we were doing hardware acceleration I mean this is incredible okay so the pendulum swings right oh the JIT sees the problem the garbage collectors the problem no we got that right now the graphics are the problem looks like graphics are going to go away well the pendulum will swing back and we'll be back to the compiler so it's an iterative process the important point is performance is critical and we're working on it I'd like to close with development tools core Apple tools we're investing in tools Steve told you that you know that you have a disk in the bag actually I'm thrilled to say you have three disks in the bag you have Apple's tools which I'm responsible for you have jbuilder which is a fabulous pure Java development environment and you have code warrior early access so I think at a high level it seems like Mac 10 is just out of the gate but you guys have more tools and you've ever had in previous years okay again Steve is very aggressive about wanting you to be on the platform without the tools you could you wouldn't be as successful so I think you have all the tools to be successful here's a slide on Apple's tools we have objects you're familiar with I'm not going to go through this in detail because I have eight minutes left and but there are talks on all these I think the important point is this what I said you have the tools to be successful we have the application server so again you could do your rich swing based Java app or you could do the browser UI this is a risk rich GUI rich web GUI again Apple uses this stuff so you could be assured that we're eating our own dog food and if we have problems we're going to fix them and it's it's critical that we find them before you do typically so code warrior has Java to support full rat support debugging is much improved for both applications and applets and the Java deployment you folks are mostly familiar with hopefully 0g they have been a great partner for the last three years they're very easy to work with give us lots of feedback on the runtime and I think they have some great products and hope you you agree with that Java performance analysis one of the reasons we're getting faster is because we actually have tools to analyze performance now and this tool is fabulous its Best of Breed that's another point I need to make the dust has settled in the Java tool space okay if we were to choose a tool three years ago we would have probably picked the the okay so right now the dust is settled we are choosing to work specially with the products that I am referencing here I'm not just putting them on a slide because the product exists there are many products that exist for instance forte is son's development environment okay I hope that's very successful on our platform there are other Java development environments the people who are being called out here are people that Apple has chosen to partner with and give special love and care okay so these these tools we think are the best of breed basically so last I have six minutes left I'm going to bring a blake stone of Borland someone who supported us the last two or three years thank you Steve we're really excited about this this is something that we've been working hard for the past year you saw early technology demos last year of jbuilder for but announced last week is our jbuilder 5 product and shipping in all of your bags you have a preview release of jbuilder 5 so I hope you have a chance to look at that after the show's over or even during the show I wanted to talk a little bit about this and some of some of the paths to get here but we have only a few minutes here so I'm going to sort of tailor this discussion I guess and showcase the product you'll get us just a little bit of a glimpse of what jbuilder 5 is about here you can see an awful lot more in a couple of other sessions Wednesday at 10:30 there's a session showcasing a couple of Java related tools will be there but there's also a session Wednesday at 5 o'clock I'd encourage you to come to where will showcase jaybo during a lot more depth and see a lot of what we're gonna gloss over very quickly here still I would like to bring up and showcase a few things just for those of you who may not be familiar with jbuilder of course we brought it to the Macintosh of course we've got a nice aqua icon forward it was critical to us it really looked like we belong in this environment in fact we've done quite a bit of tailoring and we can't necessarily see all of the details we went through but everything from the default order of button to making sure that aqua looked right in the environment these are things we really focused on with jbuilder so here it is in all its glory and we'll demo it in aqua this time around because aqua works great it looks fantastic it's the right way to work on on products on the Macintosh platform so I have a simple application on our welcome app the default that comes up here and I want to extend that a little bit by taking advantage of a few pieces of the product first of all I'm gonna go into our graphical designer which allows us to to do visual manipulation of javabeans and so we're going through and looking at this particular application and discovering that what we have here essentially is an empty frame this empty frame we want to use instead of border layout perhaps you want to use a an XY layout allow me to position some things drop a button in place drop a text field in place and we get to see our app being designed in aqua here that's an option we could choose if we were designing something for another platform to preview that but why so we'll get a scrolling region and perhaps just drop a list in this region as well I can even work with non-visual components you can see on this side here I'm getting a collection of components that I'm manipulating and all of them so far are visual components but I could also go in and say you know I'd like to select a non visual component in this case I'd like to go find a model for this list and I could just scroll down and find my default list model and drop one of those as well so now I have a non visual component that I can interact with by telling it that I'd like my list to use this model that I've created and then write some code so the visual designer lets me very quickly assemble the user interface it doesn't use any proprietary techniques what it's doing is it's writing java code for me the way i would write it using setters and getters but it then allows me also to drop in and write my custom code and i might want to write some code here that interacts with this default list model and if i can't remember the name of it I can ask for some assistance with that and perhaps I can add and element and the element I will get from a see we have a text field on here jtextfield I'll just go ahead and get the text from it and compile that one of the things that's really critical to us is fast compile time we've got an integrated compiler it does incremental compiles for through a smart dependency checker so that even on large projects and I mean enormous projects jbuilder itself consists of more classes than the entire JDK and we can do an incremental compiled in under 10 seconds so speed again is critical to us we can go from right from there to being able to actually run this code and we'll take a shortcut here and jump right into even debugging this code so it'll do a quick dependency check to make sure that nothing's been changed we'll get the debugger UI up and we'll launch our java swing application here where i can type some text in click the button to add it and our we hit a breakpoint so we have a pure Java debugger here that has a really rich set of capabilities now we're not going to be able to look at them all here again encourage you to come to another session but if I want to find things out about this text field I've got access to a really rich UI that allows me to browse that object and all of its characteristics the class it belongs to and so forth so that's pretty exciting in its own way because we've got a real best-of-breed development environment here running on Mac OS 10 letting me do all of my work on my favorite platform by the way that's not just marketing speak longtime Apple fan you may be able tell that I wear the colors here I've been a believer for a long time and this is like coming home for me but there are a lot of other interesting things that showcase the power of the environment that we're working on we're working on an environment that has a ton of a very sophisticated integration with the native environment Jabil there's probably the worst torture test you could throw at a Java VM because not only are we a fast editor a graphical environment a debugger which is which is one of the nastier areas and in porting the Java VM but also we just include a whole bunch of function so one of the things I wanted to showcase is if we go and look at our release notes we'll bring them up in our integrated HTML viewer well if you're not really too fond of the HTML view or your reason currently you may want to note that this particular view or you can just type a URL into and from within jbuilder browse directly to the web and get completely reasonable performance now for sort of the surprise all of this is running without hardware acceleration okay so the hardware acceleration makes things enormous ly faster let's showcase perhaps one of the worst case examples of what happens without that the hardware acceleration if I grab and move this this split you can see that the performance is perhaps not what we would hope for let's see what that's like with hardware acceleration on so I'm going to come down and go find my collection of jbuilder icons and I'm sorry I absolutely have to we spent enough time on the the artwork for these you know we really wanted to get that photorealistic icon thing down here and go in and have a look I've got a couple of configuration files that if you go ahead and register your version of jbuilder that's in your bag you'll find that we provide you tips so once you can get the the new Java VM from Apple and please get the new Java VM from Apple table there really benefits from a lot of the work these guys have been putting into it will show you how to make these kinds of changes to turn on things like the hardware graphics acceleration into the license email you get so we'll bring table there back up and have a look at the kind of difference it makes and sort of that one key indicator which is dragging that splitter so if you remember before we were getting sort of a frame or two a second and now with hardware acceleration it's smooth why aren't you go to the wet place close the webpage can you go to the webpage okay yeah we can actually sure that just a text view let's let's bring up something with graphics so um you have a favorite page in mind no well why don't the one you just brought up let's go back to the Mac os10 page from from Apple side here so and that this the scrolling performance you'll find is remarkable we're really pleased with what hardware acceleration can do and I would like to take this opportunity to thank many of you in the audience who worked on this and have been working on it very hard the Java team at Apple has been doing a phenomenal job and we've been really proud to be working with them thank you Steve thank you so I'm pretty much at a time I think I've said a lot today which is why I'm at a time along with my my great demo ores and speakers so I just I guess want to touch on the important points the important points are what we ship with Mac 10 we're very proud of we're actively working to make it a lot better and we've talked about some of that we think we're gonna have the best platform on the planet for running Java and you've seen applications today that all work very well and we hope to bring the hardware acceleration to you guys in a in a timely fashion and I guess that's that's all I have I have a bunch of tracks here there's the java virtual machine track or obsession I should say wrapping Mac OS api's in Java beans Java development tools Java performance jbuilder and there's another five sessions and since we didn't have time today to take Q&A given the length of the talk feel free to come to the Java feedback forum on Friday and we'll help to answer any questions you have so thanks for coming take care you
