<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ojwiki.soldin.de/index.php?action=history&amp;feed=atom&amp;title=The_difference_of_PlugIn_and_Extension_and_Registry</id>
	<title>The difference of PlugIn and Extension and Registry - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ojwiki.soldin.de/index.php?action=history&amp;feed=atom&amp;title=The_difference_of_PlugIn_and_Extension_and_Registry"/>
	<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=The_difference_of_PlugIn_and_Extension_and_Registry&amp;action=history"/>
	<updated>2026-04-22T03:51:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=The_difference_of_PlugIn_and_Extension_and_Registry&amp;diff=315&amp;oldid=prev</id>
		<title>Mentaer: Created page with &#039;Here are some explanations from Martin Davis, designer of JUMP workbench about PlugIn, Extension and Registry, three important OpenJUMP workbench concepts for every people who wa…&#039;</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=The_difference_of_PlugIn_and_Extension_and_Registry&amp;diff=315&amp;oldid=prev"/>
		<updated>2009-10-18T20:46:08Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;Here are some explanations from Martin Davis, designer of JUMP workbench about PlugIn, Extension and Registry, three important OpenJUMP workbench concepts for every people who wa…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Here are some explanations from Martin Davis, designer of JUMP workbench about PlugIn, Extension and Registry, three important OpenJUMP workbench concepts for every people who want to contribute :&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Originally JUMP just had the concept of plugins, but this quickly turned out to be limiting.  Many JUMP add-ons (to use a neutral term) comprise a whole collection of inter-operating plugins. They may also contain other things, such as objects or classes which need to be added to the Registry (more on this later). Also, while plugins can self-install, sometimes it&amp;#039;s more convenient to have another piece of code manage their installation (note: just like as the JUMPConfiguration class!)&lt;br /&gt;
&lt;br /&gt;
A JUMP Extension was intended to be a way of managing a whole collection of plugins and associate objects.  It provides a single place where the developer can do all the various house-keeping tasks needed to install &amp;amp; configure a large add-on.  The extension class &amp;quot;gets control&amp;quot; during the load, and gets full access to the JUMP core.&lt;br /&gt;
&lt;br /&gt;
An extension also provides a way of managing a set of plugins which are related.  The extension has a version number and a name.  If JUMP allowed you to unload things, it would be extensions which were unloaded.&lt;br /&gt;
&lt;br /&gt;
Hopefully that clears things up, and convinces people that Extensions really are a necessary and fundamental JUMP concept.&lt;br /&gt;
&lt;br /&gt;
As for the Registry, I&amp;#039;m not sure if people really grok what this is for.  There are more and more things in JUMP which aren&amp;#039;t plugins, but which need to be installed, managed, discovered and used by plugins which actually do work.  These are things like I/O drivers, Datastore&lt;br /&gt;
drivers, Decorators, Geometry Functions, etc etc. The Registry was developed as a central place where these things could be managed. The Registry formalizes and provides a standard pattern for doing this.  It of course can have new Categories of objects added to it (by an&lt;br /&gt;
Extension, naturally).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Martin Davis&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Question&amp;#039;&amp;#039;&amp;#039;: It seems to me the purpose of the Extension Class is to provide a container that allows for the easy installation and configuration of a set of plug-ins and cursor tools. Is this correct?&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Answer&amp;#039;&amp;#039;&amp;#039;: Yes, installing GUI components is the primary use for extensions ... but&lt;br /&gt;
this is not there sole purpose.&lt;br /&gt;
&lt;br /&gt;
Extensions are intended as a method of automatically injecting an initialization routine into Jump. For example: reading properties, loading layers, creating GUI components, checking for external drivers ... Installing plugins. &lt;br /&gt;
&lt;br /&gt;
Keep in mind, you will be executing in the GUI thread, so longer exercises (for example creating DB connections) should be spawned in a new thread.&lt;br /&gt;
&lt;br /&gt;
David Zwiers&lt;br /&gt;
Vivid Solutions Inc.&lt;/div&gt;</summary>
		<author><name>Mentaer</name></author>
	</entry>
</feed>