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