Eclipse Yoxos Services Downloads Blogs About
Home > Blogs >

Archive for June, 2009

on Jun 16th, 2009Distributed OSGi EventAdmin Service

For those interested, there’s a new Distributed OSGi EventAdmin Service remote services example now available.

Distributedeventadmin Distributed OSGi EventAdmin Service

What does this mean? Well, you can now create distributed implementations of OSGi services using JMS or other messaging frameworks for distributing messages to other OSGi frameworks. This is all possible because of ECF’s provider architecture that allows the creation of a distributed EventAdmin implementation that can use a variety of wire protocols (e.g., XMPP, ActiveMQ).

Please let email the ecf-dev list if you have any questions!

on Jun 15th, 2009Google Wave and ECF

As part of our next release cycle, the Eclipse Communications Framework (ECF) project is going to implement the Google Wave Protocol as described in this enhancement request.  Please join the request if you are willing to contribute to this effort, or would like to use the implementation.

This will make it easy for Eclipse and any Equinox, RCP or RAP-based application to interoperate with other Google Wave applications.

on Jun 15th, 2009EPP Wizard Preview

The EPP Wizard is now available as a preview from our website: http://epp.eclipsesource.com.

The idea behind the EPP Wizard is to simplify the installation process of dynamic downloads. With the EPP Wizard, you can easily choose what you want to include in your Eclipse installation and install this selection.

The wizard itself consists of four pages. The first three pages contain the components that can be installed and the last page provides a configured p2 installer to install the selected components. To navigate through the pages of the EPP Wizard, use the buttons placed on the bottom of each wizard page:

screenshot11 300x191 EPP Wizard Preview

EPP Wizard Navigation

The first page of the EPP Wizard contains downloads for Java, Java EE, RCP, C/C++ and Dynamic Languages. You can select a main group or expand it and select more specific subcomponents of this group (e.g., the Java group contains subcomponents for Java and mobile Java development).

screenshot2 300x191 EPP Wizard Preview

EPP Wizard Navigation

The selected components are then displayed on the right of the page under ‘My Selection. The second page of the wizard contains downloads for DataBase Development, Mobile Device Development, Modeling and SOA Development. The last page of the wizard provides different tools. We were not sure how to arrange the downloads so we decided on the first page to place the programming language extensions of Eclipse. On the second page, the more abstract extensions and on the third page the various tools. Feedback about the arrangement of the downloads would be appreciated.

On the last page of the EPP Wizard, you can choose how to install your selection. Currently, there are two possibilities, both of them use the P2 Installer. The P2 Installer can be launched as Java Web Start application or you can download the P2 Installer and start it from your local machine. The provided P2 Installer is already configured with a set of p2 repositories and your selection list, and you only need to select the install location. The last wizard page contains also a section with external download providers. From this section you will be able to choose an external download provider and you will be redirected to the site of the selected external download provider. Your available selection will be transfered to the chosen external download provider. So you don’t need to select the already selected downloads again and can continue with your download.

screenshot3 300x191 EPP Wizard Preview

EPP Wizard Navigation

Note that the P2 Installer fails sometimes to instal selected components. There is bug 280205 open that covers this issue. The problem happens when p2 repositories are used which contain compressed artifacts and the selected download is very large.

Enjoy.

So don’t wait, try it now! Feedback is welcome!

on Jun 15th, 2009Eclipse Galileo RC4 is out!

Good news, Galileo RC4 is out and available for download.

Why is this good news? Well, if we look at the Galileo calendar, Galileo GA’s next week!

galileocalendar 300x191 Eclipse Galileo RC4 is out!

If you want to get Galileo a bit faster, I highly recommend supporting Eclipse development by becoming a Friend of Eclipse. By donating a bit of money, you get access to Galileo earlier and you get access to a faster download mirror. Note that you can use this mirror for other Eclipse releases, including when Eclipse starts releasing 3.6 milestones. I personally find the mirror worth the small donation. I’m able to get my integration builds much faster than usual icon smile Eclipse Galileo RC4 is out!

If you like to blog, the Eclipse Foundation is hosting a Galileo blog-a-thon. The rules are simple, blog about Galileo and get your choice of a ‘Friend of Eclipse’ membership, a customized t-shirt or a golf shirt. If your blog entry happens to be really good, you have a chance at winning an Eclipse jacket and a full pass to EclipseCon 2010 or Eclipse Summit Europe 2009.

If you’re into Twitter, become part of the Twitterati that are following the Galileo release!

There will also be a virtual conference entitled Galileo in Action. There will be talks about Mylyn, ECF, p2 and more!

galileoconference1 Eclipse Galileo RC4 is out!

If you want to learn more about the Galileo release, I highly suggest you register and attend.

Other than that, enjoy Galileo!

on Jun 11th, 2009Eclipse Day At Googleplex 2009

From the EclipseSource team, Scott Lewis and I will be speaking at the Eclipse Day held at the Googleplex this year. I plan to tell some tales around OSGi and Eclipse. Scott will talk about Distributed OSGi and the Eclipse Communications Framework (ECF). There are other talks on topics like Android, DSLs and the Google SDK.

The event is going to happen on August 27, 2009 which is roughly two and half months away. It’s important to register in advance as space fills up fairly quickly. I recall last year that people weren’t able to go because space filled up.

So do yourself a favor and registry early! Google’s a great host!

We hope to see you there!

on Jun 10th, 2009OSGi and Start Levels

I’ve been working with OSGi for quite awhile and have recently been helping someone fight some start level issues. The problem turned out to be a misunderstanding of how start levels work in OSGi and its inspired me to write a little bit about how start levels work so others don’t repeat the same mistakes.

Let’s start with the basics first.

A start level is simply a non-negative integer value. The Framework has an ‘active start level’ that is used to decide which bundles can be started. Bundles themselves have an associated ‘bundle start level’ which is used to determine when a bundle is started. The bundles at a given start level will all have their start method completely executed before any bundles at a higher level are started. When booted, the Framework monotonically goes through each start level and starts relevant bundles (all the way until the active start level is met).

It’s also important to treat start levels as a management issue. In one system, a bundle could be running at start level 1 and in another system it could be at start level 42. This all depends on who is in control of deploying your bundle… so this means you shouldn’t worry about start levels at development time!

In the end, start levels are there to simply determine the start order of bundles.

Here are a few tidbits about start levels:

  • Start order within the start level is indeterminate!
  • The active start level is controlled by the ‘osgi.startLevel’ property and within Equinox, it defaults to a value of 6
  • A bundle start level of 0 is associated with the system bundle and can’t be changed

To illustrate things a bit better, let’s use a sample config from Equinox:

osgi.bundles=
 org.eclipse.equinox.common@2:start,
 org.eclipse.core.runtime@start 
 
osgi.startLevel=10
osgi.bundles.defaultStartLevel=4

The following will be true about this particular configuration:

  • org.eclipse.equinox.common will start at startlevel 2 (via @2:start)
  • org.eclipse.core.runtime will start at startlevel 4 (via default value)
  • the framework startlevel will get set to 10

In Eclipse land, we’ve always had an interesting dance with start levels. For the longest time, we hid the whole concept from people. For example, the old Eclipse Application launch configuration looked like this:

lc1 300x159 OSGi and Start Levels

In Eclipse 3.5, we updated the launch configuration to include information about start levels:

lc2 300x145 OSGi and Start Levels

The main reason this was done was due to the introduction of OSGi Declarative Services (DS) in the Eclipse SDK. When working with OSGi services, having the ability to start bundles is important due to the life cycle of a OSGi service. An OSGi service is ONLY available when the bundle is in the ACTIVE state. If you were writing Eclipse-based applications and using OSGi services… not having access to set start level related information was painful. During the Eclipse 3.5 development cycle, we realized this and now have made it easier to tweak start level information. Besides launch configurations, here are some the other areas to set start level information that is more useful at deployment time:

p2 Touchpoint Actions (p2.inf)

You can place a p2.inf (in the root of a feature or within the META-INF directory of a bundle) file with touchpoint instructions to set the start level of a bundle (amongst various other things). An example p2.inf file may look like this if you wanted your bundle to be started:

instructions.configure =
       setStartLevel(startLevel:4);
       markStarted(started: true);

Product Definitions

Another way is to use product definitions. In Eclipse 3.5, we added support so you can specify start level information via the Configuration page:

startlevels 300x205 OSGi and Start Levels

This information can be used to generate proper p2 metadata so your bundles will have the right start level information when you go to deploy your product.

Ok, I think that’s enough of me talking about start levels. On the whole, when working with start levels, never depend on start order. Think about start levels as a management issue, not a development time issue.

Hope this helps!

on Jun 10th, 2009p2 Publisher — Part II

Last week I presented the publishe, the tool used to put your deployable entities (e.g., bundles) into a p2 repository.  The publisher can be used in 4 different ways

  1. As a set of headless Eclipse applications;
  2. As a set of Ant tasks;
  3. Through its extensible API; and
  4. Within PDE Build

Last week I gave some examples of the first two uses. Today I am going to demonstrate how the publisher can be invoked programatically.  Before I continue, I should point out that the publisher has no official API.  It contains provisional API, which we will hopefully solidify, but there is a chance it might change.  While some might shy away from the provisional API, I argue that you should embrace it.  We are very interested in hearing your usecases.  By using the publisher now, and giving the p2 team feedback, we can help you move forward if the API does change.

The publisher is structured as a series of Actions and Advice.  The publisher can be invoked as follows:

 IPublisherInfo publisherInfo = ...;
 IPublisherAction[] actions = ...;
 Publisher publisher = new Publisher( publisherInfo );
 publisher.publish( actions, progressMonitor );

In this case we create a PublisherInfo to hold the context for this particular publisher request. We also create a series of actions to invoke. Finally we create and invoke the publisher.

PublisherInfo
The PublisherInfo provides a context to use when publishing. The publisher info object describes such things as:

  • The metadata repository where the IUs should be published
  • The artifact repository where the artifacts should be published
  • Artifact publishing options (overwrite existing artifacts, etc…)

Publisher Actions
There are a number of pre-defined actions for publishing well known constructs such as BundlesAction, FeaturesAction, SiteXMLAction, etc… In addition to the provided actions, custom actions can be created by extending AbstractPublisherAction.

(Tip: To see all available Actions, open the AbstractPublisherAction and press F4. This will open the hierarchy view and show you all the classes that extend AbstractPublisherAction).

Example
The following shows how you can create a publisher application that just publishes bundles. There are a few paths defined as constants at the top of the file.

...
 /**
  * This simple publisher example demonstrates how to use the publisher
  * API to publish a list of bundles.
  * @throws URISyntaxException
  * @throws ProvisionException
  */
 public class PublisherExample implements IApplication {
 
	public static String BUNDLE_LOCATION = "/home/mybundles"; // Set this to the location of your bundles
	public static String ARTIFACT_REPOSITORY = "file:/artifact_repo"; // Set this to your artifact repository
	public static String METADATA_REPOSITORY = "file:/metadata_repo"; // Set this to your metadata repository
 
	public Object start(IApplicationContext context) throws Exception {
		IPublisherInfo info = createPublisherInfo();
		IPublisherAction[] actions = createActions();
		Publisher publisher = new Publisher(info);
		publisher.publish(actions, new NullProgressMonitor());
		return IApplication.EXIT_OK;
	}
 
	public IPublisherInfo createPublisherInfo() throws ProvisionException, URISyntaxException {
		PublisherInfo result = new PublisherInfo();
 
		// Create the metadata repository.  This will fail if a repository already exists here
		IMetadataRepository metadataRepository = new SimpleMetadataRepositoryFactory().create(new URI(METADATA_REPOSITORY), 
"Sample Metadata Repository", 
MetadataRepositoryManager.TYPE_SIMPLE_REPOSITORY, 
Collections.EMPTY_MAP);
 
		// Create the artifact repository.  This will fail if a repository already exists here
		IArtifactRepository artifactRepository = new SimpleArtifactRepositoryFactory().create(new URI(ARTIFACT_REPOSITORY), 
"Sample Artifact Repository", 
ArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, 
Collections.EMPTY_MAP);
 
		result.setMetadataRepository(metadataRepository);
		result.setArtifactRepository(artifactRepository);
		result.setArtifactOptions(IPublisherInfo.A_PUBLISH | IPublisherInfo.A_INDEX);
		return result;
	}
 
	public IPublisherAction[] createActions() {
		IPublisherAction[] result = new IPublisherAction[1];
		File[] bundleLocations = new File[1];
		bundleLocations[0] =  new File(BUNDLE_LOCATION);
		BundlesAction bundlesAction = new BundlesAction(bundleLocations);
		result[0] = bundlesAction;
		return result;
	}
 }
...

To help get you started, I have attached the sample code as an Eclipse project

Happy Publishing!

on Jun 8th, 2009Galileo RC3 Packages Released

As of a few minutes ago, Galileo RC3 EPP packages are available from the Eclipse website. You can download them via a direct link to the Galileo RC3 packages website or by opening the main Eclipse download page.  Note, if you go that way, you need to switch to the “Develompent Builds” tab.

Why am I writing this? The main reason is that we – myself and all the other package maintainers – like to get feedback about the packages. This year, we provide even more packages! There will be a new PHP package (the name is self explanatory) and the Pulsar package which contains the bits from the Pulsar Working Group.

Back to the main topic: Feedback. If you want to send us bug reports about the packages, you can do so by pressing the “more…” link on one of the download pages:

epppackagesmoreinfo Galileo RC3 Packages ReleasedThis will bring you to a page where you can find in-depth information about every package. On the right-hand side, you will find a section with download links, MD5 and SHA1 checksums, but also relevant Bugzilla queries and a direct link that allows you to send bug reports about a particular package.

epppackagesbugzilla Galileo RC3 Packages ReleasedBut before opening a new bug, please read through the list of open bugs to avoid duplicates and consider filing the bug against a particular project if its related to a project and not to the package itself.

…and the logo that appears on every eclipse.org web page reminds me again: Galileo arrives in just a few weeks!

on Jun 7th, 2009Eclipse 3.5 RC4 is out!

The last release candidate for Eclipse 3.5 shipped!

Eclipse 3.5 RC4 is out for download (or update via p2).

There are no new features out in this release, as feature freeze has passed. There are only bug fixes. There will be no more builds of the Eclipse platform, we are now simply waiting for the Galileo release schedule.

From my count, there were 84 bugs fixed for the 3.5 RC4 release.

Also, if you want to try out Galileo, RC2 is available (follow the release on Twitter)!

Three more weeks to go until Galileo ships!

on Jun 5th, 2009Tutorial – First steps with RAP and Eclipse 3.5

This RAP tutorial will have you developing web-applications with the Rich Ajax Platform in no time.

rap tutorial lars Tutorial   First steps with RAP and Eclipse 3.5

The tutorial walks you through:

  • Installing RAP into Eclipse 3.5
  • Creating and running an app
  • Writing a view and perspective
  • Theming

As committers we love community contributions to our projects.

Thanks Lars for writing this!

© EclipseSource 2008 - 2011