[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [jdt-ui-dev] Pre-reqs are not exported
|
Here is a graph of the plugins I have
loaded in my workspace (jdt.ui, GEF, and dependencies). It is not all of
Eclipse. The layout algorithm isn't finished yet, but it does a pretty
good job so far.
There are two versions attachments.
In one graph, all required plugins are "exported", reducing
the number of edges. In the second attachment, *every* requirement
is shown.
(Sorry if this post is a duplicate.
I think my first attempt was rejected due to address problems).
| "Erich Gamma" <Erich_Gamma@xxxxxxx>
Sent by: jdt-ui-dev-admin@xxxxxxxxxxx
12/18/2002 08:23 AM
Please respond to jdt-ui-dev
|
To:
jdt-ui-dev@xxxxxxxxxxx
cc:
jdt-ui-dev@xxxxxxxxxxx
Subject:
Re: [jdt-ui-dev] Pre-reqs are not exported |
>I said "tag", singular. So if I do require *one* of
the same pre-reqs, I
need to require the same
>version, so I need to copy that one tag exactly (otherwise I might
pick up
a different version).
Looks like we are still disconnected.
In the import element you specify the version of the pre-req plugin that
is
required by your plugin. A plugin importing org.eclipse.jdt.ui can have
more specific
version requirements on other plugins than org.eclipse.jdt.ui. Therefore
the tag can be different.
Eclipse will then attempt to satisfy your version requirement.
>I agree class loading is very important. But, If everyone follows
this
convention, the
>people at the bottom might end up with 100+ requires statements. I
guess
the PDE
>should help out at managing this list.
Since you only have to state the direct dependencies of your plugin this
number
will not increase that drastically. Typically you will only pre-req plugins
that expose API.
>Are there any benchmarks that show startup time comparisons each way?
Failed class look-ups contribute to the start-up time so they
should be minimized (see the recent package prefxi optimization option
offered
by core).
>In my graph, I'm going to continue "promoting" plugins even
though they
aren't exported.
>This makes for much easier reading, without any real loss of meaning.
well you loose explicit dependencies so you loose meaning, but I agree
that
the
graph will be easier to digest. If it is an interarctive graph than you
can
support to show the full dependencies for the selected node.
--erich
Randy Hudson
<hudsonr@xxxxxx.c To:
jdt-ui-dev@xxxxxxxxxxx
om>
cc:
Sent by:
Subject: Re: [jdt-ui-dev] Pre-reqs are not exported
jdt-ui-dev-admin@
eclipse.org
12/17/2002 03:38
PM
Please respond to
jdt-ui-dev
I said "tag", singular. So if I do require *one* of the
same pre-reqs, I
need to require the same version, so I need to copy that one tag exactly
(otherwise I might pick up a different version).
I agree class loading is very important. But, If everyone follows
this
convention, the people at the bottom might end up with 100+ requires
statements. I guess the PDE should help out at managing this list.
Are
there any benchmarks that show startup time comparisons each way?
In my graph, I'm going to continue "promoting" plugins even though
they
aren't exported. This makes for much easier reading, without any
real loss
of meaning. Hopefully I can post a "Map of Eclipse" pretty
soon.
-randy
"Erich Gamma"
<Erich_Gamma@xxxxxxx>
To:
Sent by:
jdt-ui-dev@xxxxxxxxxxx
jdt-ui-dev-admin@xxxxxxxxxxx
cc:
jdt-ui-dev@xxxxxxxxxxx
Subject:
Re: [jdt-ui-dev]
12/16/2002 06:07 PM Pre-reqs
are not exported
Please respond to jdt-ui-dev
nice words & nice try <g>
>Do you agree that by not re-exporting plugins, you are requiring
downstream
>plugins to copy *exactly* your <requires> tag?
Not really, a downstream plugin can more precisely state its dependencies.
For example a plugin that requires org.eclipse.jdt.ui
doesn't have to require org.eclipse.jdt.debug.ui plugin.
See org.eclipse.jdt.junit as example, it doesn't
require access to the org.eclipse.compare classes and
hence org.eclipse.compare isn't listed as a pre-req plugin.
By precisely stating your dependencies the class look-up
for your plugin will be more efficient since
less plugin class loaders will have to be consulted when looking-up a
class.
--erich
Randy Hudson
<hudsonr@xxxxxx.c To:
jdt-ui-dev@xxxxxxxxxxx
om>
cc:
Sent by: Subject:
Re: [jdt-ui-dev]
Pre-reqs are not exported
jdt-ui-dev-admin@
eclipse.org
12/16/2002 03:42
PM
Please respond to
jdt-ui-dev
I still don't see the harm in exporting. I know all of Eclipse is
consistent, I just decided to ask JDT for the reason because you guys are
so smart :-)
Do you agree that by not re-exporting plugins, you are requiring downstream
plugins to copy *exactly* your <requires> tag? If they don't
copy it
exactly, there is a risk of the downstream plugin picking up a different
version of the pre-req than the one JDT-UI picks up, which would cause
a
link error (2 different versions of the same class) at runtime. So,
if I
have to copy your tag exactly .... ?
Randy
"Erich Gamma"
<Erich_Gamma@xxxxxxx>
To:
Sent by:
jdt-ui-dev@xxxxxxxxxxx
jdt-ui-dev-admin@xxxxxxxxxxx
cc:
jdt-ui-dev@xxxxxxxxxxx
Subject:
Re: [jdt-ui-dev]
12/16/2002 04:03 AM Pre-reqs
are not exported
Please respond to jdt-ui-dev
The convention is that dependent plug-in classes are not reexported to
clients. This makes the plugin dependencies explicit. Jdt-ui should not
be
different from other plugins in the platform.
Notice that most uses of exports are the consequence of a plugin split
(see
org.eclipse.ui as an example). In these cases exporting was used to not
break existing clients of the splitted plug-in.
--erich
Randy
Hudson
<hudsonr@xxxxxx.c
To:
jdt-ui-dev@xxxxxxxxxxx
om>
cc:
Sent
by: Subject:
[jdt-ui-dev]
Pre-reqs are not exported
jdt-ui-dev-admin@
eclipse.org
12/16/2002
01:56
AM
Please
respond to
jdt-ui-dev
jdt.ui requires several plugins, but the plugins are not exported. What
is
the reasoning behind not exporting these plugins to other plugins that
pre-req jdt.ui?
Much of the public API in jdt-ui requires that these other plugins be
present *AND* that they be exactly the same version. For example,
IClassPathEntry returns an IPath, which is from org.eclipse.core.runtime.
Why make other plugins prereq both jdt.ui and core.runtime? The only reason
I can think of is to optimize for the plugin class loader.
The reason I am asking is that I am writing a graphical view of the plugin
registry. Each plugin is represented as a box, and lines are used
to show
the plugins required by each plugin. Plugins are positioned vertically
(in
ranks) such that all required plugins appear above a given plugin. Long
lines make the diagram hard to read, so I added code to reduce redundant
imports. Then I found out that there weren't any redundant imports, so
I
cheated. Without changes, a diagram of all Eclipse plugins requires
about
300 lines. If I cheat and "export" all requires statements,
the same
diagram only needs about 85 lines.
Randy Hudson
_______________________________________________
jdt-ui-dev mailing list
jdt-ui-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/jdt-ui-dev
_______________________________________________
jdt-ui-dev mailing list
jdt-ui-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/jdt-ui-dev
_______________________________________________
jdt-ui-dev mailing list
jdt-ui-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/jdt-ui-dev
Attachment:
plugingraph.gif
Description: GIF image
Attachment:
alldependencies.gif
Description: GIF image