[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [platform-core-dev] Can I use Eclipse Platform Core functionalityoutside Eclipse?
|
Jeff,
Thank you very much for the comment. I appreciate it a lot! I'll
follow the track and try it out.
Right now, I have a specific question regarding this approach.
I guess EclipseStarter will use a separate classloader to load the
platform. If so, how can I get the classloader in my Java application? I
think the main Java application can only access the Eclipse platform and runtime
functions through that classloader. Is it the only way to do
it?
Thanks,
Kai
From: platform-core-dev-bounces@xxxxxxxxxxx
[mailto:platform-core-dev-bounces@xxxxxxxxxxx] On Behalf Of Jeff
McAffer
Sent: Tuesday, April 12, 2005 5:24 PM
To: Eclipse
Platform Core component developers list.
Subject: Re:
[platform-core-dev] Can I use Eclipse Platform Core functionalityoutside
Eclipse?
Kai, Sure, I know of several people who are doing this
already. Keep in mind that OSGi was originally designed for embedded
applications to it is eminently suited to this task. The runtime is not
particularly special. The entry points on EclipseStarter are there
precisely so you can start Eclipse from another Java program so you are on the
right track. Note that you can also
consider using the extension registry by itself. The registry has very
little dependency on OSGi. If you look carefully through the code you will
see only a half handful of references to OSGi API (primarliy in
ConfigurationElement). you could strip the extension registry code out of
the runtime plugin and tweak to suit your needs. We actually wanted to do
this in 3.1 but ran out of time. Perhaps you could contribute some
ideas? Someone mentioned issues with
allowing other plugins to be installed as being a problem for the use of Eclipse
on the server. This would be a problem anywhere then I guess.
Eclipse (OSGi and the Runtime) to not enable people to just install
plugins as they choose. Some agent always has to install plugins.
There is one call in particular (BundleContext.installBundle) that does
the work. If no one calls that, nothing will be installed. So, you
can setup any system (server, desktop, ...) to be locked down simply by not
making that function available. Jeff
"Kai Shen"
<kshen@xxxxxxxxxxx> Sent
by: platform-core-dev-bounces@xxxxxxxxxxx
04/12/2005 07:16 PM
Please respond
to "Eclipse Platform Core component developers
list." |
|
To
| "Eclipse Platform Core
component developers list."
<platform-core-dev@xxxxxxxxxxx>
|
cc
| Kai Shen
<kshen@xxxxxxxxxxx>
|
Subject
| [platform-core-dev] Can
I use Eclipse Platform Core functionality
outside Eclipse? |
|
Hi,
We're working on a server side
project. In this project, we'd like to provide user an extension framework so
that user can use Eclipse's extension mechanism in server side. Our goal is to
allow user to develop their plug-ins in Eclipse environment and use those
plug-ins directly in server side without any modification. I understand
Eclipse use org.eclipse.osgi and org.eclipse.core.runtime to
manage the bundles, classloaders and extension registry, etc. So, ideally, we
can use org.eclipse.osgi and org.eclipse.core.runtime in our java
application. However, I found the following in the Eclipse on-line
help: The Eclipse
Platform makes heavy use of Java class loaders for loading plug-ins. Even the
Eclipse Runtime itself and the OSGi framework need to be loaded by special class
loaders. Client programs, such as a Java main program or a servlet, cannot
directly reference any part of Eclipse directly. Instead, a client must use the
EclipseStarter class in org.eclipse.core.runtime.adaptor to start the platform,
invoking functionality defined in plug-ins, and shutting down the platform when
done. Clients that
do not need to access any particular function, but just need to start the
platform, can use Main.run() in startup.jar. However, clients that need to
invoke specific function should use EclipseStarter. See the javadoc inside this
class for details. It looks like we can NOT use
org.eclipse.osgi and org.eclipse.core.runtime directly. We need to
start the platform by calling EclipseStarter. The EclipseStarter will use
another classloader to load the Eclipse Platform. So, I think
our solution could be as follow: 1. In the java application, use EclipseStarter to start Eclipse
Platform. 2. Configure the
Eclipse Platform so that workbench and other UI related plug-ins won't be
loaded. (Actually, only org.eclipse.osgi and
org.eclipse.core.runtime are needed). 3. If the Java application needs to use the Eclipse core
functionality (e.g. Platform.getBundle(symbolicName),
platform.getExtensionRegistry(), etc.), we need to use the classloader's
functions to find the class instance and then call the function in the class
instance. Is this solution feasible? Did anyone do it before? I think
the extension framework is a very nice feature of Eclipse. If we can use it in
server applications, it will make Eclipse core even greater! Since I'm new to
Eclipse Platform Core, this idea might be unrealistic. But anyway, I just want
to start the discussion, because I think the goal is great, it will make Eclipse
Platform more popular and benefit other developers. Your thoughts and comments
are highly welcome! Thanks, Kai _______________________________________________
platform-core-dev
mailing
list
platform-core-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/platform-core-dev