WWDC2004 Session 628

Transcript

Kind: captions
Language: en
we'd like to welcome wiley Hodges senior
project
of developer products at Apple good
afternoon things I deal with that Apple
are related to development and developer
products and a very critical part of
that is Java one of the most important
and for me exciting java development
products that's available today on Mac
OS 10 is a cliff I'm very pleased to be
able to welcome John Wiegand and Erich
gamma to tell us more about eclipse on
Mac OS 10 so with no further ado thank
you thanks for that I'll go one more
step in terms of introduction Erich
gamma is the JDC lee lee to the java
development tools but that's really a
significant understatement of where
Eric's involved he's part of the
platform pmc has insights into how
compare should work leads to compare
team in fact search team the team is
involved in doing the back work in
addition a lot of the UI principles and
ideas are greatly influenced by Eric so
so then let me return it and this is
tommy guns he is the flash from leap
however he's fierce of influence it's
kate to platform so he is an old java
compiler guy and of course they're still
very positive influences on the child
development tooling so we can work
together without stepping on each other
toes so that's that's good news once the
compiler guy always compiler guy it's
hard to leave that behind give you a
little bit of a flavor of our plan for
this afternoon I'm going to probably
just a brief overview of what eclipse is
all about I'm confident that many of you
have at least heard of eclipse so we
won't go into great detail there we'll
try this flavor and where the Java
development tool fits in then we'll do a
quick demo and then transition into what
we've done new in 30 turns out we've got
a little bit of a precursor of s will
show some of the 30 stuff early but but
that's the overall in time
buy yourself some exercises well how
many of you are using a quiz how many of
you have written plugin for Eclipse see
when you leave the room we have doubled
this number okay how many of you have a
product gonna quit well good still
so I can't promise e double D's it in a
session but it's a good thing to do so
so what is the club the first question
this is our famous quote we've used this
repeatedly for the last three years
universal tool platform and open expense
lady for anything but nothing in
particular this is an important theme
it's we have good Java development tools
but it's much more than that so let's
look at the building blocks here we
start with a runtime very small less
than a megabyte knows about the notion
of plugins and nothing else built on top
of that is a window toolkit and then a
UI library so this is our generic
application platform knows nothing about
tools even this is just the core base
can be used for any application you
choose so it's leading to two layers no
swt is just vanilla widget and chase a
high level application level
functionality like if you connect to
which is to your to your model behind
that this kind of stuff in chasing so
it's to explain it to two layers now has
the notion of tools on top of that we
have a project model that we add health
facilities an update mechanism text
infrastructure compare search to bug all
the specific stuff that makes it a tool
platform so all that's layered on top
those are optional components they can
actually get leveraged for someone who's
built using it as a general-purpose
application platform as well and what
you see on celtic ide stack you see now
we have basically language neutral layer
you have searched debug compare text
that its infrastructure is not language
specific and what you will see now when
you go to the next layer in JDT we built
on top of those and as
chawla specific search shallow specific
compare shallow specific editing right
that's the model so the j-e-t-s
knowledge of Chawla to the platform that
the core platform doesn't know about
Charla which means for us jay-z
developers we get no privileges on the
platform right which is the hell you
think because this gives us it's fair
play and insurers good API right so we
were kind of over the pioneers of the
whole Asian extension story and what's
really health experience to go through a
period of frictions right we want based
on the platform you know you cannot have
it so that's how we will JT so we're
really going to focus in the JDC area
for the most part this afternoon will
show the breath but JCC is going to be
our primary focus on the platform
through JDT perspective so we had three
primary goals when we set out to do a
cliff the first called the open platform
we want to work on a wide range of
platforms showing Mac Windows Linux
Solaris the full gamut and besides
working on this platforms we want to be
able to leverage the facilities that
those platforms provide so it looks like
a Windows app on Windows and it looks
like in is a mac app on the match next
school is eric already alluded to we
want to build good java development
tools but that doesn't want to be our
center our centers were a platform and
we make it possible so you can build a
see development environment java
development web tooling whatever makes
sense all this can result so the model
is and we have some solutions nothing
about different this different artifacts
extensive platform with knowledge about
the particular artifact are you flirting
XML cluing you plug in each ad tooling
to make the platform aware of these
artifacts that's a model so then once
you put these tools in place we want it
to be such that you don't look at it as
a user you've got this wide range of
tools that have nothing to do with each
other but rather you've got a seamless
whole so this seamless integration is
really important both in terms of the
product you get the Eclipse based
product initially but also any
extensions to get added later it feels
like all parts of a single
all so our background you see it's not
our first attempt to build an IDE if you
look at the whole knowledge which you
have in our team on different tools you
see me a small dark we have television
technology which likes for java TV c++
tool so some of these projects are more
successful some of them less successful
some of them even died but I think the
key point here we really try to say
eclipse is our last chance to get things
right so we hope it succeeded partially
so we think we've really leveraged our
experience and the other thing that sets
our community grows we've brought many
more different areas of background to
play over time as well so we're seeing
more teams and our roots are broadening
so what is the clips again look at it
from a different perception extensible
tools platform out of the box function
we didn't really talk about this yet but
we wanted eclipse when you get it you
take that initial download it's
something that's interesting and it's
useful so the Java development tools was
a good test case of the platform but
it's also useful function so if you take
that with the plug-in development
vironment on top of it you can build
plug into your own immediately so within
minutes and one of the things we're
going to show today is how easy that is
to do so the trick here is there
actually you want to get your Christmas
presents that you haven't forgotten to
put the batteries in there so it's not
just good technology but it's being
applied so we have a close foundations
been established there's on the order 50
major organizations involved they're
building real products based on a cliff
that real feedback is very valuable and
puts it's a serious product level use
but not just product level you we really
care about the open source community and
the open source project is basically our
lifeblood and then that's where we spend
our our time listening and responding
and working together and also to make
open source even see where we want to do
we ask first class integration of open
source tools like
and CBS j unit that you can really work
in open source environment in a seamless
and productive manner so what is JDT
screenshot but i think the screenshot is
not too interesting huh so what I want
to do is I will go through some demo I
must confess I don't daily code on the
Mac so some of my keystrokes might slip
and I claim my wife is guilty for that
because she says having a mac right but
she only borrowed it to me on Saturday
morning when she goes shopping so I've
really limited training experience so
what I will show yes thank you so i will
show how some code explorations and as
we go i will show you some new stuff i
have also show you some old stuff wow
you can still profit from it first of
all let me start with something I guess
example one word about example hm let's
get rid of this guy here the example is
j hofstra which is a drawing framework
which is based on hofstra which was
initially built to oregon can tech and
this is basically some sample code I
wrote when I still talk about design
patterns right who wants to know about
that anymore but it's really good
science them let's first start with some
fish is really invisible but which i
think is where we have a big advantage
over over many other tools it's a
feature I don't want to miss which I
don't see in other platforms which is
incremental compilation in the
background so how compiler technology
maybe Johnny can say something about it
while I try to open something here one
of the things that we've done from the
beginning with our compiler is we use
our compiler both to do the build engine
but also for all of our tools are built
on top of the same piece we get the same
exact characteristics between the two so
our recovery mechanisms etc all leverage
the same pieces I feel like this is
unfair we need something to make it a
little more challenging no no I want to
wait I like to search I want to show you
what i would go look our goal was you
change a massive body and below one
second
you should be able to run again okay so
if you have to watch fast I think we're
done now we need to can we run this up
battery todd just to make it a little
bit so well we have the progress you
here let's just drag it that you can at
least see your building watch quickly
right so you won't have something more
advanced you want to change a comment
for instance so you see incremental
building hi sophisticate Vanek wanted
quick turnaround one thing which is also
special we come from explorative
environment sean even more than i do and
no small talk which is a highly
optimistic language which means what our
compiler can do which I don't know if
any other one which can do that it can
generate code even when you have errors
in your source right if I have one
message in error for all the other
mathema files code gets still generated
which means I can execute curly there
earth which is just great now if you
have a large piece of soft you want to
port so I want to run it without having
kind of having done the Big Bang
approach so that's just some in heritage
from our exploration day no small talk
which was just given debugging is also
very important so let's do some
debugging here and so have to run this
thing don't be confused about the
package name it's old code CH steps of
this one shoulder off shore drive via
via run it in debugger now and we debug
it as a java application
there you go I want to just make a
little bit more interesting and add some
data that's the most critical part of
the demo since I can easily get lost on
the disk it happens to me
captain now Charlie filthy need to talk
so then again notice we're using the
native controls as we work through here
this shows the native control
integration we leverage those pieces ago
and I'm I save you chump so here we go
Francis's from the young times when you
had loved the Sun so not only drawing
two hotels animation so now I run an
indie debugger and you know usually you
use them use tool palettes to change
colors except holy get boring so we can
do better than that getattribute I think
that's another one by one gets to color
can you imagine what I'm up to go to the
break point here we are in the debugger
now so we look at what is in this dual
color just get the expression
and inspect it
so that's something you will be off with
a new religion I we work with these
lightweight dialogues which means really
we don't want to distract stuff so we
often work which is code assist like
that's lightweight dialogue that's what
you see here right this is the inspector
but it's really lightweight and you can
still have the full functionality there
are some color stuff here now we want to
be mean let's continue running what we
will do now a little I'll have to remove
the break point I will be better so
guess what i'm up to now I don't use the
pellet to change the color i just
changed code so I'm sort of restarting
the program you're just changing
analytes apple style huh correct and
here's rare so now what I will do it I
will save oops
so what happened right I saved in the
background the code compiled the change
code cuz updated into the running vm and
of course it could do that without so
the next feet just to show you know
structure is really important to us so i
made it change the method that's awesome
heritage from small soft bring small
talk you could be fine grained history
method level so i can still do this now
so i want to go back to the previous
stuff but I don't want to code it
instead I want to use local history and
that they replace with and then I get
the local history but just off the
single method so on the fly you know we
parse out the structure things like that
we replace ladies and you're happy again
ok so just to reiterate they're all this
is built on top of the language neutral
structure right so this is Java static
function that's layered on top so let's
look a lil bit refactoring refactoring
its course I think one of the most
production productivity increasing ideas
and tools these days and that i think
the different stairways to heaven when
you think about respecting so the first
step is now we can rename an ass or a
method and it sings get updated
references that's the first step the
next step is you can do kind of
structural manipulations like extract
the method then the third step to me is
the really interesting refactorings like
extract interface you have a type you
extract an interface and you change all
the code which could use this interface
to research this new interface now this
is based on more interesting algorithms
like em we are using type constraints
which have published oops law last year
and then the fourth level is where it
gets really interesting desperate start
not only refactor but first of all you
can also update derived resources like
child ox comments or you can allow
others to participate like an updated
JSP or you can update derive stuff like
variable name I change a class name i
also want to update variable names that
researches class main things like that
so we are up here at level three on the
move to level four so let me show you
something
some smell detection let's go ahead and
bookmark here and that's a good one
let's just do a reference to it should
wear this election is used where is this
guy used without this for factoring
support people tend to live with
programs that are wrong it's just not
worth the effort of fixing them up but
with this you just naturally keep your
programs with better hygiene so I see
this expression along North s collection
contains so that's kind of some code
smell I want to extract it as a method
or just can do that too let's call the
respecting many which is
context-sensitive and I want to do
extract method however what is
interesting here is this little checkbox
right when I extract its method we will
go in and find others place in your code
very use the same code to duplication
and we will reflect it as well for you
right this is kind of smell detection we
not only do what you want we also help
you detect all the smells in your code
in this case duplication of office of
this method so let's do that the disease
that I didn't lie to you contains sugar
and let's do the preview here
then you see replace duplicate code
fragments to go in and other stuff
another place in your code in the
opposite is as well you're contending
that you can go in further with that so
but that's kind of where it's your
exacting it's going resetting a javadoc
as i mentioned derived data refactoring
let's maybe add some java daxing here
leather have a parameter let's just add
you didn't really draw much attention
eric to the the context sensitivity let
me just mention you went by that because
we're used to it but what happens on the
pop-up is the JDT is finding the
refactor ease that are appropriate so
instead of seeing the long list of all
the possible refactorings you're seeing
the ones that make sense in that context
so again it's helping you do the work
you need to do and behind this is a
quite a machinery right there is always
an abstract in texture you have to have
to make these decisions so i want to
show javadoc updating for instance yeah
I've added a javadoc tag I just go in i
renamed this parameter to figure who and
if the child doc is not all getting
updated since you all never has a
representation of these comments in our
AST so next thing is what about what I
want to show you is coding assistance of
course we do all kind of code assist
stuff which it just expected a from an
IDE doing you ash mess is good so when
you do that you will import but you have
gone a little bit beyond sir now we also
offer what we call quick assist which
helps you with tedious coding tasks for
instance now I have to type the object i
want to create i have to type it such as
to control one and i can now assign the
state into new local variable and of
course the system will come in and infer
which Titus's help me with the name of
hash map is better so which time should
have well okay that's the clipping book
so i want to lose the collection all
right a mess a map is good I don't want
use the concrete as I used to map but
you see we help you with editing the
Sorvino of you know your program very
well in fact we like we like codices
that much that we have all extended it
to also be part of our dialogue so for
instance when you change when you have
been to enter a class name you also be
decoded this in dialogue and I guess
it's just a homogeneous experience want
to use to not type anymore you really
wanna have it everywhere so dislike
solve this indicator and of course you
are not only do this for classes it's
also really helpful when you do a
regular expressions right who knows this
index of regular expressions I don't but
of course the code is this you can get
the same so these are some of the ideas
yet here um so coding huh so template is
very interesting stuff for really boring
a lightweight over an array with and
with a collection things are linked
together actually I can I go back Kenny
even know what I chose this I have
something cooler for you I want to hit
rate over collection because then the
system will has to be smart either
either so what it is an object things
like that right you don't have to type
if you get stuff with links editing very
important when you do test first
development XP practices you often write
code test first and a rocket test first
you write some method which doesn't
exist yet and of course you can also get
support for creating this message but
from unknowns references so and what you
see here is a preview we always can show
you the preview of what will generate
for you that's also pretty neat
technology because it requires that we
can do what if analysis of an abstract
syntax tree so click this there are some
fun ones that I'd like to show you for
instance some new ones which we have
imagined you want to add a new
constructor here
and the constructor you now 3d we also
have a depth argument so I sedative
argument to the constructor but of
course now I want to have to assign it
to a field I have to declare the field
all the stuff so you dissolve or you can
just control warm and safe and parameter
to a new field and this will give you
the option to change the name the name
is okay yeah and type is ok well maybe
take a long right things like that so
really helpful when it comes to adding
new code and consistent with that one of
our nicer quick fixes is what is a good
example I looked up a loose collection a
good one so if I add another parameter
here no no no no at the call sign right
I just see this message I change it here
at the call time taken additional
parameter the system can help me to the
chest to also change the calling side is
really do what I mean right exchange to
call and quick assist quick fix will
help me to fix up the code so i can say
Nia I want actually changed the method
to have this additional parameter as you
see highlighted here exedy poof I think
poof disturber to swing okay searching
quickly what's new there is research in
the background you have this new nice
responders infrastructure as a possible
search vector do I have a vector
somewhere I have to look something which
takes a little bit longer vector how
here you go so back to let's the
reference to search
see that's when I sleep I sleep I didn't
get it come on a references in the
workspace and now you see I have the
option to run in the background and then
i can continue working Wow looks too
fast keep it slow with that machine I
returned on my ID and think back to add
plenty of time to talk you have to look
for a string no strings you from
facility so i would like to show it i
will concurrency story but i will do it
in another another example to pass so
buddy TV you can run in the background
you can continue working and you can
group your result in different
presentations things like that what's
also coordinates we have opened up
search so we do a thorough search you
can now have the option to plug in
additional sources to be looked up so if
you have for instance to JSP development
you can hook into the channel search so
say when you look for reference to java
class you can also look in your chase
piece and give us a result alright so
this is kind of sanity of opening up to
the different hand will not only to our
architect so searching well call
hierarchy something new we have the hood
of sexually the drawing patrol all you
all ok call hierarchy I want to show it
like nice to show the call hierarchy is
because this is something you wouldn't
have done because i think in over option
system call higher cases they were
diverse thing to look at because it's oh
so complicated but someone has written a
nice call hierarchy plugin and in fact
these are so good that we decided to
take it so that's nice how open source
stuff work okay now let's move to
something which i think it's pretty fun
and i will back around this we came for
more I want naturally exploration how we
explore code how we can navigate code we
don't know yet so we conference for
small from small talk and what we have
offered here is now when you come from
small he has typically hierarchical
browsing alright so do I get some types
here yeah right you do some hierarchical
top-down browser that's cool but what we
found what really helps also need a more
exploratory on the Cenacle program you
want to do it way more edit eccentric
you want to really have just two editor
open it's everything you want to be at
your fingertips okay so let's go bien
show you how we do that so our new look
also helps us with that so we can really
that's how I were hurt everything is the
editor everything else is either
collapsed here without you minimizing
feature and then you look or I have fast
use on the side and that's my folks is
really in the code so must example ever
I want to go to hear i havta
yeah that's not fair so first of all
know if I want to navigate inside to
file of course I have it's quick
navigation I can go to get type whatever
I want if I want to also see the
inherited code I can choose to do it
twice and then I get the inherited
methods as well if I want to understand
how something over Asian I haven't in
place tight hierarchy which shows me
what I in heard it from how it is Method
overridden of course you are folding
folding the air is also for that because
basically what you want is when you work
edit eccentric you want to often hide
child or comment so we can do that out
of the box when you open the file we
collect our documents that you can
really focus on your coat so we have
folding we have in place stuff i showed
you in the debugger we do the same thing
just in place this basically now when i
type hear something I don't have to go
to compare you to find out what I change
which is sure we hear this change for oh
well that's something i will show you
later and in a change bar I can see what
change and can retrieve my stuff if I
want to I can revert it to what it was
before so that's the same thing right
you wanna make it every everything
editor centrix you don't have to do lots
of humping around to find what's
available similarly we have these
occurrences highlighting this mark
occurrences feature here which basically
behind the scenes we know the structure
of your program so the idea is whenever
you click somewhere we can tell you more
information about what have come to
click that for instance you click on
parameter we show you where this
parameter used our diversity result
computed it gets highlighted immediately
or similarly here is an exception versus
exception thrown you just click at it
and all the place where this exception
is thrown is highlighted or you go on to
return type you click on it and all the
exit points of the methods are
highlighted and of course we go on we
will go on with that now you click on an
interface and you will highlight all the
methods implement this interface things
like that you will see 3d point and
click the other thing is linking so if
you just want to see what something is
right you have this link view
below right i click somewhere and
immediately see the Declaration of it
and that's Lee again I don't have to do
anything I can just by clicking I've all
the context to do my stuff or is a click
on a variable I see the Declaration I'm
pretty sure all right this guy here yeah
it shows you the Declaration say Majella
doc if I'm more document or
documentation oriented I will see the
javadoc below as I click around
interesting point to mention here this
is Safari right so we have a native in
this our riches story we natively
integrated the platform which means on
the Mac when you're on the max we
integrate with safari or to WebKit so
just if you're overwhelmed with all this
function you actually don't need to
remember everything that Eric's playing
here the tips and tricks section goes
through and enumerate both the nuclear
billions of the other existing stuff so
there's a lot of things at your
fingertips ringing navigation at your
fingertips now if you want to go quickly
to another open editor it's just one
keystroke away and i'll open editors
channel draw stuff like that so each
other's interaction codices like feel
free to type this is used heavily so
that's I think you're not for now well
oh no I want to show you one thing and
then i will stop how are we doing with
the time okay i have to find some
documentation that's kinda documentation
of sure so we do a lot of validation as
you type so we have added many options
and
completion know as more as the more
validation that you type the better your
code gets so we have rejected some
unused code new in through your witty
texts Charl doc problems so when you
have a missing tag and have the wrong
tack we will select that and the other
thing we have added we try to help you
as much as you can so why should we
stopped checking with the code we can
also help you checking the command again
you see the wiggly line here so our
spell checkers founded in this comment I
have mistyped this control one and the
same thing as quick fix kind of lunatic
strong code it can also help you fix
your comment so I change it back to
content or edit to my dictionary so
beyond that there's janitors and
integration time for some slight break
[Applause]
it is kind of harsh to only let you demo
that little amount of function because
if you look at the amount of things that
were done in Eclipse 30 there were on
the order of if you look at the the pile
of enhancements and bug fixes in the
last year 10,000 line items were
addressed so lots of things this gives
you a flavor of the biggest one lots of
stuff occurred so let's put JDT in place
again it's a set of plugins built on top
of the platform and what we're going to
do now is look at plug-in architecture
itself a little bit more closely so
everything in Eclipse is a plug-in look
at a plug-in as a set of contributions
you look at it ranging from an HTML
editor set of things the Java
development tools it can be a simple
contribution to be just a menu entry
with an action for that menu entry so
the full range of things can be
contributed the plug into finds its
implementation its prerequisites and it
has this ability to define an extension
point which is a named entity so it
names a concept that can be contributed
to so we've got a very simple story or
plugins define extension points then
other plugins find contributions for
those extension points and then the
platform connects them together so that
is our extensibility model in a nutshell
so one thing I'd like to make here is it
was important other stations have
plug-in architecture as well like you
start knocking again plugging well it's
really different eclipse is that we have
thought about from the beginning how can
we scale up if you have lots of plug-in
and the extension extension point story
is our mechanism how we can scale up to
hundreds even thousands plugins and
ideas we don't have to load everything
since the node extension points what
they do you can present them without
having to load code that's really
important characteristic if you compare
our plugins story with the one from our
system you want to give us a quick look
at what PD you could do I love to do
that ok well you're setting that up will
switch over what will show now is just a
quick overview will show the
the steps that one goes through to build
a plug-in will do the I Istanbul nothing
special just the same workspace and when
you get a clip ship you get also some
simple tools to help you with the plug
in writing that's pde plug and
development environment so the only
thing you have to know one plugin
corresponds to one project in the IDE so
here we start I created plugin pro check
[Music]
jaw literally DC image view so the
wizard help you to create stuff in which
you I want to create the plugin with of
you there is some way that helps me to
do that but it could generates very
little code so as you'll see again this
is the community helping ourselves
because we're building a lot of plugins
we need to build tools to make it easier
for us to build plugins we're just kind
of kept making this better and better
so basically this extent extension point
model is declarative which means we
declare the information you need to sis
needs to know about extension extension
points in an XML file which is called a
plug in XML and we provide you with ways
to edit it in a convenient way for
instance EVC the extension we define
here in this case will define one
extension which is the sample view and
you see what extension has to do it will
has a name it has an icon as the
category life is needed because you want
to be able to present it without having
to load the code of the instruments that
implements the view so here you see
that's how we can present views and give
the information in the plug in XML we
can do that without loading code the
word of the code come in there is a
class attribute and this class attribute
will be responsible to implement the
actual behavior once the user has
activated the contribution but not
before so of course is linked let's look
at this code so what I haven't told you
what I want to build so this is true
story so we were hacking away Kent Beck
and I were have reaction today and he
came in one of these small talk here's
one of his small talk retro attacks no
we want to find an image he said see in
small talk I would have just written
plug some code and would ever get in the
view which shows in all the damages and
of course a well the candidate eclipse
as well and five minutes later we had it
so I replay this experience now for you
and I hope I don't wake and you
crow I want to have a table with all the
images that are used in equipped so it's
all the standard images so that's
basically two things you have to know
there is a content provider this is the
guy who defines what is the data you
show interview there's the label
provider and this is the guy that knows
how to render your option your your data
okay so currently if there's just the
string 1 2 3 not very interesting so
what do you want to do is you want to
render here all the images so it's come
here so you will recognize some of the
stuff I've shown before you already
please i want to collect all these
images
court i'm lazy I don't touch the stuff
myself fine while I'm still alive I use
a collection so then I will iterate over
its rato the collection so again the
flavor here is we've got the template
generated the plug-in created the view
and now Eric's just putting the contents
in for dispute so you have a class the
shared image class that has all these
static fields in it you're going to
collect all their icons clan I know it
will cool bum so where did I screw up
and over
so
actually I was like why did I worry
everything was fine so so I iterate over
the guy enjoyed over the array the
temporal herbal I know there's a class
shared images so i go to the class and I
want to get it feels because all the
images are loading fields there and get
feel okay the array type well I'm too
tired to type that so let you eclipse no
set yet the fields that's right ok here
we go and then you have to add it you
have to add it to our list and what's
the guy yeah sure the array element they
want to do it so boring boring and you
return the stuff we turn this to Ray ok
so let's do some cleanup here and that's
a bad name list that's basically feel
right we may be fine it should be feel
alright again we have some code smell
here top duplication let's just
extracted quickly what is it
so let's just extract it quickly respect
the method field so by putting this
function right in your fingertips you're
naturally inclined to clean up your
career after and you will see you be
many play code like plastics they're
easy again it s is code there's a
duplicate code fragments of course is
your brief fix as well so okay now have
to get the image that will just show you
them object to string should do it and
now this code is almost right right I
want to pass in the name of the image
and it should be should it should return
it from me from this call but it's too
specific is called it has a hard-coded
parameter so let's fix that and two
objects to string and we want to hear
using other refactorings we want to
introduce a parameter I want to make
make this maximal general so I say here
just introduce a parameter
and the parameters Cal field name access
code exists as the lamp tells me here
but a very helpful field name okay so
you see what's happened is here an
additional parameter got added and to
call the parameter got all the fixed up
at the call side so i don't need the
object parameter anymore so we do just
the other refactoring change method
signature and remove this time okay so i
think we should be able to run now so
let's do it in the butter just to be
careful so we're on the workbench on
data presley bugger from can't quite
focus primary
I did do it
did I do a search
so it should be up somewhere here we go
so I've added with you it should show up
now sample category sample you and I
will get this nice table with all the
images 0 hey this is beyond their
program you program altogether okay but
I can't let it go like that so we ran
out we got to label but we didn't get
the Danai like on himself the name right
I have to put the name of the field here
so so I compile safe till I close and
reopen did you notice I didn't restart
right and with jyoti Naidu plugging
development big system hot code applies
relievers and it can happen Oh depending
on the quality of EVM I can work for a
full day without them to restart three
depends on the strength of you vm i know
one vm which is really good that can
almost a wise one day of coding so that
gives you the flavor what's more to move
on to the next part but thank you the
flavor how easy it is to start in build
a plug-in and and make things happen so
there's more of the world than just plug
in there's cases where you want to be
able to attack additional function on on
to a plug-in so logically there's the
notion of a plugin but there's fragments
where you can provide platform specific
function you can provide translation or
subsets of translations and there's
cases where you need to be able to
provide auxiliary function for other
other means so logically we think of
this as part of the plugin but just to
show you there's more there so it's
plugins plus fragments equal to logical
unit so that's the basically what the
runtime operates in plugins in fragments
then we have a notion of features which
is the other way this is the deployment
unit so you deploy sets of plugins and
fragments this group's them into logical
chunks that make sense at the user level
so as developers we build plugins that's
too small of a unit for forgiving to our
end users so we have this notion of
feature for deployment purposes should i
click into a feature to me Nick look
let's keep moving on this we can come
back at at the end if we get my next
life I will demo it for you
it kind of had a sec so that gives the
flavor of how all our pieces come
together and just to reiterate
everything from the bottom to the top of
this picture we have the runtime
everything above that is constructed on
a plugin so the kinds of tools that Eric
was showing here we can leverage those
for building f TT jphayes all these
pieces and all the pieces above it so
transitioning on to what's new in 30 now
Eric leaked a lot of what's new entry
already so stop being boring right thing
too boring enough to hide it from you so
so I didn't want to hold it so what will
give you a flavor of what happened over
the course of the last year we started
off listening to what what issues are
important to the community so back up a
year 15 months and the kinds of comments
we were hearing are things like this I'm
lost in all these contributions you know
i love this plugin for you guys have but
I've got a lot of plugins and now
there's more function I can't navigate
my way through all of it so basis media
here is and chosen via toting platform
and what we see observe let's be self
alum it's the tools are getting bigger
and bigger and bigger I want to have
thousands of plugins and they all want
to show the self in the UI you get lost
considered Business Process Model ER
right since the surface modeling is also
plugging the clips the business process
model will be exposed to Java right
that's kind of not what they want in
fact it's confusing to them so you have
to think about how to scale up the
really large-scale application and
that's the problem that you pointed out
to us now the next one Eric's already
shown us the fix for which is I don't
want to be blocked when I'm doing
operation hey B or C so I'm doing
searches or I'm doing repository
synchronization and I'm stuck waiting
all the time this is in the past people
were stuck waiting and they want to get
that fixed
what this can't be true it was a year
ago this statement was being made so
people wanted to see more it says if we
like what we're seeing you're on a good
path we want more we'd like to see more
coolness I mean he it could steer the
third class of feedback it is very
interesting the community went off and
started they took a clip they were using
it as their ide and they said I really
like some of the things I'm seeing here
so the the way the UI presents itself
this plug-in architecture this is
something I can leverage in my own
application so it's great as a tool but
I'd actually like to leverage some of
this code as as the basis for for my my
development work so the first few things
that happened is people took the plugins
they threw some away they modified a bit
of code and then they kind of set this
cookbook around to other people say
here's the kinds of things we needed to
do to make this work and we went from
that cookbook into a rich client
platform so before we look at the
response point here it this is just to
give you the flavor there's lots of
input and lots of different ideas so we
structured these ideas into a set of
themes that we could work on and the the
kinds of themes that we flavored that we
worked on as mature the platform so
improve the user experience make things
more responsive one big area enhance the
job ID which actually has many facets to
it Eric you want to talk about the range
of things you had in mind on on the
platform it's not just the things that
Eric demoed it's JDT as a platform in
its own right at this point right I will
get rid later okay you'll come back to
that and then the rich client piece so
we'll walk through these and we'll we
may or may not interspersed a few demos
we're actually moving through the
certainly to gamma yet so we'll get some
fast down okay so I'll go very fast in
the description here and then we get
quick demo
so the prom with large product now we
have to help the user find their way
into it so it can important how you
welcome them to you to the product so we
all think if the platform supports that
it's even better than just letting each
product invent how we want to welcome
its users so that's why we come with the
standard welcome frameworks others can
plug in and we support different
learning styles demo in two minutes
chichi complex workflows complex
products have complex workflows like the
web service know me and no one likes to
go to 12 pages of wizard that's kind of
really moat full you won't have a more
guided way but less multiple ways to do
complex stuff and that's what you teach
is for demos in one mystery and
capabilities I've already shown me that
so the demo yet seeing for that no I
haven't shown that the problem is
exactly the Business Process Model er
they don't want to teach our so we want
they wanted the shower gets hidden from
them now that imagine the Business
Process Model that learns Charla how can
it is covered that resolves a Chow in
eclipse the capabilities are our means
to do that and okay the last one in this
improve the user experience area is our
work on responsiveness we've already
demo'd this as well with the search
facilities so basically we're stuck in
this modal world and we got we got rid
of the modality number one number two we
did such a good job of getting rid of
the modality the the users didn't
realize things were happening in the
background so then there was did I do it
and then you found the build build build
characteristics that we needed to do
another iteration on how the user
experience work to make sure the user
was in control of what was happening
they understood i was working i think in
fact at least four iterations right so
till we got this right that we really
felt that use in control it was really
it's one of the most challenging things
you have so inept is crinkly and prickly
welcome I matching i will not do now you
just got up your screen for the first
time so you get the Welcome experienced
developer experience it's kind of you
can count you to it now you can count be
documentation to over you tutorials for
the different learning styles
pretty nice eye candy samples that's
interesting examples get fetched from an
update side installs and emily on your
on your workspace so they can explore
them or if it's just bored of the stuff
you can just go to the work spanish
right okay so that's the welcome the
nice thing is it's extendable you can
define and you have a mechanism to
current view to this in the platform
chichis so this is nan modal multi-step
operation so let's do it tell the world
application GG that's not the typical
application consider making a building a
web service something really complex
multi-step so here's my cheat cheat
cheat sheets are modeless interview they
are they guide you through stuff and
they have their active right some steps
they provide you with actions that you
have to fill in I when I create a hello
world project I have to create my hello
world project so hello world finish the
nice thing is now the user think in
control hello so it's folder
so you see how to basically works right
you have always access to documentation
you have active links you know we're
done if you want you can go back and
revisit it to stuff things like that
what's nice is it's very easy to build
this teaches it's really mostly a
configuration tasks on the coding test
so basically describe an XML orders what
the steps are define the actions that
should be called out and a few have you
teach it must less much less program is
involved income of the wizard okay what
was it capabilities capabilities next
again it's your transition capabilities
facilities are all facilities provided
by the platform that plug-in developers
can leverage and the users gain the
advantages of so capability it's almost
too simple in eclipse because the clips
now has about 60 70 plugins by now a
real rich product can go to one hundred
five hundred thousand plugins which is
south south and features so in eclipse
the basics group the functionality into
capabilities development team support
right when I don't use CBS I don't want
to see CBS in the UI at all so princess
plugging development i will disable it
now because when i chose to child
element i don't wanna be bothered by
plugging development so i disabled
disabled it and the thing is now hiding
function is easy how does it use the
discover it once it's hidden so for
fixing death we have a trigger point
which in each visit for instance
penetrating using the plugin protea is a
trigger point i still see it it's an
intentional fill the bath but when i say
next the system will remind me hey this
is actually a capability unit you
haven't seen yet do you want me to
enable it when you say yes then all the
contributions will show up in the UI
okay so that's basics how it works at
ideas reuse overload of many toolbar in
a featured feature oriented way
back to the presentation so enhance the
JDT we've went through for the most part
so I'm gonna go through this pretty
quickly and you can talk as fast as you
want and I'm going to keep flicking know
guys who solve it I have some sháá
families that's another thing one system
shower you notice when you do develop
today yes other artifacts which which
refer to each other when you do strops
that a lot when you have class names in
X in this truck description files we
need it will develop over a new JSP so
we have thought they have really have to
support that so we open up we allow
others to participate in our stuff and
see I heard that much I'm talking around
life looks okay still so we have to
handle jsps and other stuff and reach
your API you want to make change here
reach a platform if you want too many
put you on a right tool that manipulates
our source we have extended it now we
have added abstract syntax tree API
which not only allow you to analyze java
code but also to modify it if an AC
rewriting a peon we make our function
our own function open that you can
extend it quick assist quick fix you can
compute to death by extension points and
what's very important and that you see
our design style we start pioneering new
stuff in che dici and over time you push
it down into the lair it is language
into a layer so others can also be cool
alright so the linking stuff the
external link editing is was pushed down
one layer below that other tools like
the sea development tools that you also
have any clips 10 leverages as well good
refactoring support just the same theme
participations enhanced raditi you have
seen that life which reusable yes hinges
we didn't talk about this one yet um the
the work for j2se 1.5 has been ongoing
throughout 30 development cycle we
decided somewhere in the spring time
frame it didn't make sense to try to
release that with 30 but the works in
progress you can download it we've
codenamed the effort cheetah and it's
going to be we're going to be working on
it um well from when we started early
this year through through the summer and
fall the primary effort so far has been
in the compiler and extending the
compiler region but it turns out there's
lots of tooling opportunity but ronique
ago the one week ago most of us folks
I'm compiler that's a sense of shape co
everybody with eager to do new stuff so
I guess by midnight tonight if you go to
the update side you get a known your
core compiler plugin without you i plug
in and with this you can already browse
kovash users want to fly features and i
also checked the jdk coverage and we are
now at ninety-seven percent so it's
tremendous progress but the nice thing
is we leverage our plugging story to not
risk the main three old stream for now
but now offers eoe we will immediately
merge the stream and work on on the 15
support so we've done this demo already
so move on to the rich rich client is a
wide range of a comments from the
community on this one so the first is
I've got all these plugins in Eclipse
more than I need so i'd like to feel to
get rid of some of them the second
although you've given me too much some
of these are not i beez ide specific so
it's kind of talked about optional
plugins already so you get the flavor of
that and the third is just the request
I'd really like to be able to build my
application on top of the clips so what
did we do I'm just going to give you a
little bit of a philosophy statement
here and then we'll run a brief demo
first we remember we're a tools platform
we started off tool centric we didn't
want to lose that so that's quite
important however some of our decisions
or ide centric so we wanted to remove
that predisposition and move that to a
separate layer so we'll have a generic
work bench with a separate layer that
has the ID specific characteristics in
then
an implementation detail we also knew
about projects well project Phil make
sense that's the wrong data model for a
rich client application so we needed to
break that linkage and then provide
optional components so that's what we
set out to do the simple version given
we have no time anyway as we just took
the UI plugin carved it in half so we
took it it was ID specific we made it a
generic workbench so generic component
then we layered on top of that the idea
specific stuff so it was my name is Jay
your names on that okay so basically the
show is now how you can little stock
eclipse to run really simple stuff but
still having all eclipse plugin
infrastructure in your in your hands so
i will run this famous HP 35hp 35 is the
famous calculator and you're going to
carry a computer museum it can even
calculate a 9 enter 9 plus great so what
you see here that's an eclipse
application but you see there is no
project management there's no build its
really post opted to vanilla application
right so you have the choice you can
basically read little socket you almost
nothing and the nice thing about our
rich prime placement stories everything
is optional you want to have health sure
install the plugin you want to get some
resources support install the resources
plugins they can grow and there is a
spectrum of functionality can get from
eclipse but the key point is you always
get the component model the plugin model
with your application which is a think a
really good thing to have so the last
thing I not should run now we getting
ready advance so what I want to show you
is we have a new runtime we have built
the ransom in 30 on top of a standard
component model osgi and the idea was
for 301 a half dynamic plugin which
means plugins which can dynamically
comment go and I will show you that so
first let's look at the plugins which
you currently have
okay we have 15 plugins now installed
ohg i guess is called a bundle and i
will now go in and install another one
and then see what happens in d1 so i
need to file one so one of the
characteristics who got when we moved to
OS g is the ability to dynamically add
plugins and technically we're able to
remove plugins from the system so what
Eric's doing now is he's going in
pointing to an area in the file system
saying there's a plug in here let's
install it please so he can type to pass
directly bound lady 16 now we start it
and you have to watch over here so
basically I have done a plug-in which
extends to calculate with a new operator
so I start 16 books okay dynamically the
plugin gets loaded will be all this low
plugins dynamically but we now have
mechanisms to also update the
presentation the UI of your plotting
dynamically and John lets me I even
calculate with it once well yes you're
right x 800 okay he said stop me we're
good go back to the slides
so a reminder Clips 30 available today
turns out the final bites went up on
Friday and they're available for
everyone to put to use