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