And so when I expand this out, I can see the HTTP post as the server viewed it and I can
see that there was a JDBC select call that happened on the server.
So what we've done, then, is combined all the sources of latency, client, network, server,
all into one view inside Speed Tracer. It helps you drill down and find any source
of latency whatsoever. So Spring Insight comes with the developer
edition of TC Server as part of Springsource tools.
And that's great for tuning performance at your desktop.
At some point, you feel like it's good enough. If you've used Google plug-in for Eclipse,
you know that deploying is really just, essentially, a one-button click.
There's an App Engine icon inside Eclipse. You click that icon.
It goes to App Engine and continues running as it did before.
So we clicked that button. And so now we have the same application running
on App Engine. And the network is a bit slow.
So this is the same application, same code, simple upload.
We've added some additional data to make it more realistic.
But if you've ever done any sort of real performance tuning, you know the way it works on your
desk is not the way it's going to work in production; right?
So you need the same sort of tools we were talking about, but you need them to work even
on your production server in the cloud. Well, it turns out App Engine introduced something
that's almost exactly like Spring Insight two months ago.
It's called app stats. And if you've seen app stats, you realize
that, wow, if you could get that data, pull that into Speed Tracer, then you could always
do diagnostics and performance tuning, even when your code is running in production on
App Engine. And, indeed, we did do that and integrated
it back into Speed Tracer. So, as you can click around here, use the
app a bit, we'll come back over to Speed Tracer, zoom out, take a look at some of the network
events here at the end. And -- well, network here is horribly slow.
But you see these icons popping in. That indicates that we have App Stats data
integrated back into Speed Tracer. Here you can see where we've hit the App Engine
data store. So --
[ Applause ] >>Bruce Johnson: Thank you, thank you, thank
you. That was not really -- I wasn't seeking applause,
I was just gathering my thoughts. Although, it is cool, I think.
Okay. So these are all tools; right?
We've been talking about the tools, editing, debugging, deployment, performance tuning
and so on. Tools are definitely a huge part of the story.
But, to be really productive, you also need great widget libraries and a great app framework.
Now, we've been a little deficient in the widget area in GWT in the sense that people
want easy-to-use widgets that are -- you drop them -- or you code them into your app.
It's very easy to connect those widgets to data that lives in the cloud or on the database
or so on. And they want to make it really easy to connect
widgets to each other with a minimum of glue code.
So we've taken this seriously as part of GWT 2.1.
And so we've got a new set of data presentation widgets that we're really, really excited
about. Now, if you're like us, you've seen dozens
of AJAX widget demos where they show you the kitchen sink; right?
So I wouldn't presume that you'd be especially excited to see some new widgets.
So I was thinking about how I can actually make you interested in this anyway.
So I said, well, we know that these widgets have been designed to be lightweight, fast,
small, and work with massive data sets. But let me actually figure out a way to convince
you that it actually works that well. I said to the team, like, "Hey, let's do some
ridiculous amount of data, like 18 million records and show that everything still works
fast." I was joking, but they took me seriously.
So yesterday, I think the latest numbers were, we had filled this database full of 125,000
employees, 5,000 expense reports, each of which has multiple line items, for a total
of about 20 million line items. So a nontrivial amount of data, I think 125,000
employees for an expense report app is probably towards the high end.
So now I want you to take a look at the widgets and think about how this app is performing,
knowing that we're working against a database with, you know, 20 million-plus records.
Okay? So what sort of things do you want to do?
Let's see. I'll -- I'll page.
And here I'm paging through 5 million records, expense reports.
Try this yourself. Because on a noncongested wireless, you'll
find that it pages about as fast as you'd want it to.
Actually, this does sort of undermine my point, doesn't it?
[ Laughter ] >>Bruce Johnson: Wired.
We'll see if the wired connection kicks in. Am I brave enough to do this?
Yeah. Okay.
[ Applause ] >>Bruce Johnson: Much better; right?
So that was what you were supposed to get excited about.
Everybody needs to page through 5 million records.
And when you do that, you want it to be fast. Okay.
So sorting is often done. So you click on the header and you want to
sort quickly. Quickly.
Sort by date. You know, I mean, we're talking about seconds,
which seems like a long time in demos, but when you think about sorting 5 million records
inside your own company, if you have to wait a couple seconds, not too bad.
As you can see, as it warms up through more use, it gets faster and faster and faster.
Okay. So maybe I want to narrow down by department.
Right now, they're all intermingled. I click on that, and I'm looking, among the
5 million, the ones that are just in engineering, or maybe finance, or maybe marketing.
Maybe I want to drill down to an individual person, also very fast.
Right? You saw before how quickly we can jump into
the details of any person we pick among the 20 million line items.
All right. Another neat feature is the ability to search
and highlight within the page. So here we see a lot of expense reports with
W slash, so I'll type on a keystroke-by-keystroke, you'll see it matching the records in the
current page, W, space, slash, Z. That keeps up with me.
That's fantastic. And now I can press enter, and it will do
an actual query that will give me back a result set that matches my search term.
So I'm going to press "enter." One, two, three, enter.
And now, among the 5 million expense reports, I am getting the ones that match my search
term and I can continue to page through those at my leisure.
[ Applause ] >>Bruce Johnson: Thanks.
Okay. Quick refresh of where we are.
A few minutes ago, you saw a start with a empty directory. In less than 200 keystrokes,
we had the scaffolding app. We used the tools that now are integrated
and that work really well together, spent a couple of days to create a more full-feature
application. We tuned it on the desktop, using Spring Insight
and Speed Tracer. With one click, we deployed it to App Engine.
We continue to tune it using Speed Tracer plus App Stats.
And we uploaded a massive amount of data. It literally took a couple of days to get
that much data in the database, as a matter of fact.
And the app still runs exactly like you'd want it to.
We think that's pretty cool. And we're excited for you guys to try these
tools yourself. [ Applause ]
>>David Glazer: Thank you, Bruce. Thank you, Ben.
If you want to learn more, there are sessions. You can find them on your Android app, you
can find them in the schedule where you can listen to the sessions and talk to the engineers
afterwards. What you just saw is not just a pretty cool
app built on stage. What you also saw is the tools to let you
build those kind of app was that kind of performance for your company, your needs, your use cases.
Well, the second promise we made is, we were going to show you how to make those apps mobile-ready.
I'm happy to say that that exact same widget library that Bruce just showed you, and showed
you how well it performs on a laptop at work, that same widget library is ready for mobile
devices, makes it much easier to take one application and say, "I want to access this
data from all the devices I'm using, from tablets, from phones," which matches the real-world
use needs for applications like this. To show you how this works, I'm going to ask
Ben and Bruce to come back up, and show you the same expense app how it runs on Mobile
devices using the same widget libraries. >>> Hello, again.
>>Bruce Johnson: All the cool widgets against a massive data set.
That was all in a desktop browser. But if your companies are like Google, chances
are people are not at their desks all the time.
They have all these great new mobile devices. And you want to make sure these apps work
well and are available on the device that your users happen to actually be using.
Well, as it turns out, when we designed these news widgets that I was just bragging about,
we made sure from the beginning that they worked particularly well on mobile devices,
you know, you have to think about mobile devices are typically slower CPUs to save battery.
You have slower network connections and so on.