Holger Staudacher

An Apache Cordova hook to auto bump iOS CFBundleVersion and Android versionCode

April 7, 2015

Bumping versions is a topic that should be fully automated from my point of view. Doing it manually guarantees errors for sure. I experienced it so many times as well :) . Recently we have published a build service for Tabris.js which utilizes Apache Cordova to build Tabris.js apps. We wanted to leave the versioning up to you in order not to create pitfalls like silently incrementing version numbers. Such a silent version bump can cause problems e.g. when re-creating an app in a build service (e.g. Phonegap Build) using the same app id. If a previous version of the app was already published using a higher version, you have no chance to publish your new app to the stores. The only chance to prevent this is to manually bump versions in your config.xml.

Brand your Tabris.js app

April 2, 2015

Branding an app is essential! That’s why we wanted to make the branding of a Tabris.js app as easy as possible. As you might have read, since a few days we provide a free build service on tabrisjs.com that allows you to build your apps online. So, how do you add branding to your Tabris.js app?

Your own JavaScript mobile app with Tabris.js in 10 minutes

April 1, 2015

One of the things we live at EclipseSource is efficiency. This is true for IDE usage, code and development lifecycles. This is why we made the Tabris.js development lifecycle as fast as possible with the Tabris.js 0.9.3 release. The mission for this release was that we wanted to enable you to:

Apache Cordova vs. Tabris.js

March 2, 2015

Warning! This article is outdated and might not represent the current state of Tabris.js.

Tabris 1.4 is here!

June 26, 2014

On March 10th we released Tabris 1.3 and it was a huge success. After 3 months of hard work we are ready to ship Tabris 1.4 today. The 1.4 release marks our biggest release so far. We have plenty of new features and several improvements. With this post we want to show you the highlights.

Tabris 1.4 Preview: Text Replacement

June 16, 2014

Only 10 days left till we release Tabris 1.4. This week we want to give you a preview of a feature highly requested by some of our customers: Text Replacement.

OSGi JAX-RS Connector 4.0 released

May 26, 2014

Today we are proud to release the OSGi JAX-RS Connector 4.0. A lot has happened since the 3.3 release back in March 2014. This post will give you an overview of the new and noteworthy things included in the 4.0 release.

Tabris 1.4 Preview: Google Analytics

April 22, 2014

On June 26th we will release Tabris 1.4. Currently we are working on the new features for this release. One of the Killer-Features, a tracking API for the Tabris UI framework, was finished last week. The API comes with a ready-to-use Google Analytics integration. All you need to do is set your tracking ID and activate it. In your code this might look like this:

How to use SWT with Java 8

March 24, 2014

As you might have noticed, Java 8 was released last week ;). Most programers consider Java 8 the biggest change to the Java programming language ever made. This is mostly because of lambda expressions, default methods and streams. As an SWT/RAP/Tabris coder, the first thing that came to my mind was: “How can this make my SWT code better?”. This blog will show you how to use the new Java 8 features with SWT.

A simple Tabris/RAP Test Runner

February 24, 2014

Writing JUnit Tests for an application is always a good thing. Writing tests for a Tabris or RAP application for the first time seems more challenging: You might encounter an “java.lang.IllegalStateException: No context available outside of the request processing.” exception while running the tests. So, after a quick google you will find a blog post from my dear fellow Johannes that explains that you need to setup and teardown the test with the RAP Test Fixture. This looks like this:

Step by Step: How to bring JAX-RS and OSGi together

February 4, 2014

Most of the server-side Java systems I built over the last years had the following requirements: They should be modular to be highly extendable and of course they should have a REST API to lower the integration barrier for other systems.

OSGi JAX-RS Connector 3.2 released

January 7, 2014

Today we are proud to release the OSGi JAX-RS Connector 3.2. A lot has happened since the 3.1 release back in October 2013. This post will give you an overview of the new and noteworthy things included in the 3.2 release.

Tabris 1.2 is here!

December 6, 2013

We love doing mobile apps and we love excellent UIs. That’s the reason why, 1.5 years ago we created Tabris. Today we are proud to unleash Tabris 1.2. It’s the best and biggest release so far and in this post we want to show you the highlights.

iOS7 support with Tabris 1.2

November 29, 2013

Tabris 1.2 will be released on December 6. Santa is going to bring you the long awaited Tabris support for iOS 7. It does not only support the native navigation commands (swiping from the left for back), but renders a much leaner user interface.

OSGi JAX-RS Connector 3.1 released

October 1, 2013

Earlier this year in June we released the 3.0 version of the OSGi JAX-RS Connector together with JAX-RS 2.0. Since then a lot has happened in the project and we decided to do a 3.1 release. Below are the important features and changes that made it into 3.0 and 3.1. If you’re not familiar with the connector, these articles will get you started: Introduction, Consuming services.

Eclipse Preferences You Need to Know

August 13, 2013

Lately there have been many discussions regarding Eclipse preferences because of sites like ihateeclipse.com. The Number 1 complaint on this site is that Eclipse’s resources get out of sync with the file system and, as a result, the user has to press F5. I’ve also run into this more than once ;). Anyway, since I’m pretty much an Eclipse power user I have spent some time putting together my personal Eclipse default preferences. With this post I want to share them with you. They might help you with some small efficiencies or better, can maybe act as a kind of template for new Eclipse defaults. So, let’s get our hands wet…

Tabris 1.1 is here!

July 31, 2013

Today we are proud to release Tabris 1.1. Since the 1.0 release we have focused on making Tabris even more robust and made improvements such as a whole new TabFolder implementation for the Android client and a new Tree implementation for the iOS client. Of course, besides robustness and bug fixes we have added many new features. In this post I’d like to show you the new features in the 1.1 release.

when( true ).throwIllegalArgument( "something went wrong" );

July 1, 2013

As a framework developer I have to make sure that my framework works properly - and among other things, that means it has to be used in the way that I meant it to be used. One option to achieve this is to validate the input. With input I basically mean method parameters. For example, a parameter is not allowed to be null or a list must not be empty and so on. When trying to follow this rule, you end up with code that looks like this:

Tabris 1.0 is here!

April 16, 2013

Today we are proud to release Tabris 1.0. If you have not followed us so far you probably don’t know what Tabris is. Let me put it in one sentence: Tabris is the first Java-Toolkit for the cross-platform development of native mobile Apps. It enables you to write iOS and Android Apps completely in Java with a single code base. With this post, I want to sum up our journey till now and show you which features have made it into the 1.0 release.

Meet us at EclipseCon 2013 in Boston

March 11, 2013

Only two weeks left until EclipseCon! I’m sure everyone’s excited to see the new location, make new and meet old friends. This year we have plenty of talks ranging from runtime over mobile to modeling. Pick your choices!

Inside the Tabris UI

February 19, 2013

As you may have read in the Tabris 0.11.0 new and noteworthy post, we have created a small UI framework called the “Tabris UI”. In this post I will dive into the details of this framework. Grab a coffee and open your mind ;). Let’s get started…

Tabris 0.11.0 – New & Noteworthy

February 18, 2013

Today I’d like to present Tabris 0.11.0. This build marks the last public milestone before the 1.0 release. From my point of view this milestone is a breakthrough for cross-platform mobile development in Java. We have managed to abstract common mobile navigation patterns into a Java API. In addition to this we have added support for SWT Menus and facilities to gain device specific information and much more. Let’s dive into some details…

OSGi JAX-RS Connector 2.2.0 released (JAX-RS 2.0 update)

January 14, 2013

There’s good news for our OSGi JAX-RS Connector. We’ve added a consumer implementation that gives you the opportunity to reuse your @Path/@Provider interfaces to consume REST services in a generic way. Over the last few weeks I’d used this consumer a lot and decided that it should go into this release of the connector. So, today I’m proud to present the OSGi JAX-RS Connector 2.2.0. It contains the following changes:

Consuming REST services in OSGi the cool way

November 28, 2012

I recently introduced you to the JAX-RS Consumer. If you’ve read that post you might remember that I promised to write about the OSGi integration of the consumer. This is the topic of this short post.

Consuming REST services in Java the cool way

November 27, 2012

When creating a REST API with Java you probably go with JAX-RS . It’s a nice and well thought-out standard. Having the services encapsulated as plain Java objects with some annotations feels good to me. But this is all different when it comes to consuming REST services. During the last month I have searched for libraries that meet the following expectations:

A Software Craftsman's Toolbox: Lightweight Java libraries that make life easier.

November 7, 2012

As a software developer you will use plenty of frameworks during your career. There are the big beasts like Spring, ActiveMQ or OSGi that you have to master in order to build the foundations of your applications. And then, there are the small frameworks. Let’s call them lightweight tools. Like a carpenter, the lightweight tools are kept in a toolbox. The carpenter will use industrial machines to get his project started and shaped but he will always go back to his handy, personalized set of tools to finish up the details. In his toolbox he has many tools that each do just one job well. This post is about those tools!

OSGi-JAX-RS Connector 2.1.0 released

October 26, 2012

Two months ago the OSGi JAX-RS was released in Version 2.0. Today I’m proud to announce Version 2.1. In addition to minor improvements, a new feature was added based on the work of Dirk Lecluse. It’s now possible to register @Provider annotated objects as OSGi services. The @Provider annotation is used to register custom de/serialization. Now you can implement a custom MessageBodyWriter, MessageBodyReader, ContextResolver or ExceptionMapper, annotate it with @Provider and simply register it as OSGi service. All the connector does is wire together the resources with the provider.

Software Craftsmanship at EclipseCon Europe 2012

October 19, 2012

In some of my previous posts I’ve talked about well-crafted code. I’m really convinced that software development is a craft - but what does that mean? The “Manifesto for Software Craftsmanship” contains the following 4 points:

restfuse 1.1.1 released

September 10, 2012

Editor’s note: This project is no longer maintained and has been archived. However, you can still access the sources on GitHub.

OSGi JAX-RS Connector 2.0 released

August 27, 2012

Back in January 2012, I wrote about the release of the OSGi JAX-RS connector in version 1.0. The connector gives you the opportunity to publish resources by registering @Path annotated types as OSGi services. I’m glad to say that the connector is in production use in many projects. It is pretty stable and as a result there was not much need for maintenance. So, why release a version 2.0? A few weeks ago I wanted to provide a small REST API using Apache Karaf as runtime. For this I also wanted to use the JAX-RS connector. Unfortunately, I had to accept that the connector was not able to run on Karaf and Felix because of certain issues.

From Eclipse Tycho to Apache Karaf: the easy way!

August 22, 2012

We are currently working on a very interesting project together with basis06 which has Apache Karaf as a target runtime. Coming from the Eclipse space this is really a challenge for the following reason: when you develop OSGi applications within Eclipse you are used to the PDE Tooling (Plug-In Development Environment) together with its concepts like features. You are also used to Equinox with its provisioning platform p2. When you are getting familiar with Karaf you quickly notice that all of this Eclipse stuff is not so good on this platform.

Accessing multiple private GitHub repositories without a dedicated build user

July 30, 2012

We have been using GitHub at EclipseSource for roughly 2 years now. Using it as a company means that we are hosting all our internal projects, products and many customer projects on GitHub. GitHub was (and is) a great solution for us, except when it came to accessing multiple private GitHub repositories from our build server.

Having fun with Guava's String Helpers

July 26, 2012

During my life so far with Java I found myself often using separated Strings, such as a comma separated String. The reason is simple. Separated Strings are useful in many situations, like persistence prototyping, where you don’t want to add a full blown persistence solution but a small, lightweight file based store to save some values. Or, when you transmit data over the wire and don’t want to use a formal protocol but send just a comma separated String of values. I bet you’ve found yourself implementing a List<String> to comma separated String method at least once ;).

Google Guava Quickie: Clean toString methods

July 24, 2012

I’m not very good at debugging code. This is the result of a test infection :). When you do test driven development you don’t need to debug very often. But there are rare cases when I need to start the Debugger. For this task, I love to be able to see speakable representations of the objects in the current scope when it stops at a breakpoint. When I do Java development within Eclipse this can be easily achieved using a Detail Formatter which can be added in the Variables View.

Clean compareTo methods with Google Guava

July 17, 2012

A common task in object oriented programming is comparing two objects for the purpose of sorting. In Java the useful Comparable<T> Interface exists. I’ve found myself implementing the compareTo method from this Interface plenty of times. But there is something that bothers me everytime: the complexity of the code this implementation creates. Let me explain.

Building lightweight in memory caches with Google Guava - no more putIfAbsent

July 9, 2012

I can’t count the number of times I found myself implementing some sort of cache. In many situations caching is really useful e.g. when the computation of a value is expensive or when loading of resources is involved. I bet you found yourself implementing a cache many times too. Probably you have also used a Java Map for storing the values. One disadvantage of using Maps for caching is that you have to implement the eviction of entries yourself, e.g. to keep the size to a given limit. When you develop for a concurrent environment the task gets more complicated and a simple Map is not sufficient. You need to switch to a thread safe solution, e.g. a ConcurrentHashMap. ConcurrentHashMaps solve the concurrency problem, but the code gets ugly. You have to deal with the fact that keys can be added multiple times from different threads concurrently.

Cleaner Code with Guava Optionals and Preconditions

June 6, 2012

Working towards clean code is a priority for me when I develop software. For some time I’ve been using Google Guava for nearly all my projects. The reason is simple. Guava provides great facilities to beautify my code. Today I want to show you how I use Preconditions to avoid unnecessary if/throw statements and Optionals to improve my code semantics.

Server-Side Apps with access to device functionality aka. accessing the iOS Geolocation API with Java.

May 3, 2012

Whenever we talk about server-side apps and RAP mobile, one topic always comes up: how to access native functionality like Geolocation or the Camera. With this post I want to show you how we access this functionality on the server-side. At writing, we’ve implemented Geolocation Support, and more additions are planned for the near future.

Server-Side Apps with Tabris - the programming model

April 20, 2012

In my last post I gave you an overview of server-side apps and how they relate to Tabris (previously RAP Mobile). In this post I want to dive into some technical details. I’ll assume that you are a Java programmer and that you are familiar with servlets and tomcat. Not necessary but really helpful is some knowledge of OSGi.

Serving mobile devices with server-side apps

April 16, 2012

You may have read the title of this post and are asking yourself, “what the heck is a server-side app?”. Let me try to explain. When an app works with sensitive data there is always a security risk in storing the data on the device. If the device is lost or stolen the sensitive data is lost or worse, no longer confidential.  A server-side app can prevent this. Data is stored on the server and the client displays and manipulates it, but no data is stored locally. I think you’ve got it: server-side apps are nothing more than a thin client approach adopted to the mobile/app sector.

Simple JUnit4 templates for Eclipse

March 20, 2012

JUnit and Eclipse are a great combination, but one thing that I missed every time I worked with JUnit4 was the code templates. Currently, Eclipse ships with pre-defined templates for JUnit3 but not for JUnit4. So, I wrote three basic JUnit4 templates that can be imported from the “Templates” Preference Page. Take a look at the screenshot below to see how to get there. The templates are called test, setup and teardown. They all create method stubs with the right Annotation and the necessary static imports - pretty simple but I think its efficient. You can find the templates in this gist.

OSGi JAX-RS connector: Publishing REST services

January 23, 2012

In a recent blog post Peter Kriens commented that the OSGi service model is as important as object-orientation. I feel the same - I don’t want to write software without this concept anymore. But for me, the service model only makes sense when it’s used together with the modularity OSGi provides. I think the modularisation layer is the greatest advantage of the OSGi platform and the services are really only there to simplify the communication between modules.

Continuous Integration Tests for REST APIs with Maven, Jetty and restfuse

January 17, 2012

Editor’s note: The Restfuse project is no longer maintained and has been archived. However, you can still access the sources on GitHub.

Effective Mockito Part 5

November 16, 2011

With this effective Mockito Post I want to share a really simple pattern with you. We call this pattern “check answers” and we use it whenever we work with Mockito Answers. The code resulting from creating Mockito Answers generally looks ugly. But, as good programmers we care about test quality, right? :)

Effective Mockito Part 4

October 17, 2011

This Effective Mockito Post will be IDE specific again but related to the last post on Mockito’s spies. If you’ve read Part 3 you should now be familiar how to use them to “pseudo mock” statics. When writing code it often comes to a point where we want to debug using single step debugging. When using Mockito and especially when spies come into the game there is still something pretty annoying.

Effective Mockito Part 3

October 13, 2011

In the previous Effective Mockito post we saw how to use the @Mock Annotation to get a clean test. In this post I want to show you how to use Mockito’s spy mechanism to eliminate testing troubles with third party libraries.

Effective Mockito Part 2

September 29, 2011

As promised in the first part of the “Effective Mockito” blog series, I will concentrate on Mockito specifics in the followup posts. So, the main topic for Part 2 is Mockito’s @Mock Annotation.

Effective Mockito Part 1

September 19, 2011

Last week I talked to a fellow developer, Frank Appel, about Mockito. We’ve been using this mocking library for over a year. We both agreed that of all the innovations we’ve tried in the last year or so, Mockito has boosted our coding productivity the most. With this blog series we want to share our experiences with Mockito. You see that I used the word “effective” in the title, and, in this context I want to define “effective” as arriving at clean test and production code as fast as possible.

Single-Sourcing with declarative services

July 8, 2011

In my last blog post I introduced the idea of using OSGi services for single sourcing a RAP/RCP application. I think this approach is quite elegant, but it has one major drawback. When you use normal OSGi services in your application you will mix your application code with the OSGi Framework code everytime you reference or register a service. Not only does this look ugly, it’s also hard to test.

Using OSGi services to single-source an RCP and RAP Application

June 20, 2011

Probably one of RAP’s best known features is its single-sourcing capabilities. Some time ago we created a guide on Single-Sourcing RCP and RAP applications. The guide recommended a technique where a facade and fragments were used to invoke the RCP or RAP implementation during runtime. With this post I want to show you how to achieve the same the OSGi way.

You don't have to use git to access code on github

June 10, 2011

I guess a lot of people would agree that github is the current kick-ass platform for developing software. Many platforms showed up fast and with the same speed they disappeared. Github is different. It’s also genuinely innovative. For several months I use github to share small projects (widgets, tools, small plug-ins). When I write a blog about something new I always link the associated github repository.

jQuery timeago in Java with RAP

June 7, 2011

A few weeks ago I showed you how easy it is to integrate jQuery into RAP using the browser widget. I’d like to show you another example of what can be integrated. Last time I created a carousel widget; this time the demo is something smaller but still really cool.

Launch an OSGi app and automatically kill its running instance

May 4, 2011

If you use Eclipse to develop OSGi based applications you may use the OSGi Launcher provided by the PDE Tooling. It’s cool tooling because it gives you full control over the OSGi instance to be launched.  You can choose the OSGi framework (e.g. Equinox or Felix), select the bundles to install and much more.

How to blog using GitHub and Eclipse

April 5, 2011

If this is not the first post by me that you’re reading, you may know that I try to blog regularly. Previously, I had 2 or 3 private blogs which, you also might know, were not that successful ;). Since I started at EclipseSource, I publish on our company blog.

Eclipse Runtime out-of-the-box EclipseCon 2011 slides

March 25, 2011

Today I did a talk at the EclipseCon 2011 which was entitled “Eclipse Runtime out-of-the-box”. With this talk I introduced the EclipseRTP project. So, if you missed it here are the slides ;)

See you at EclipseCon 2011

March 16, 2011

Over the last few days I’ve read many blogs from folks who are speaking at EclipseCon next week in Santa Clara. Everytime I find it really interesting to hear about the ideas behind the talks. So, with this post I want to show you what you can expect from the EclipseSource folks at EclipseCon.

An open source visual editor for Rich Internet Applications - the Eclipse way

February 21, 2011

A few weeks ago Google announced their WindowBuilder contribution to the Eclipse Foundation. The WindowBuilder was originally created by Instantiations and moved to Google after they swallowed Instantiations back in 2010. Anyway, the WindowBuilder is a first class visual editor for creating UIs and will be maintained by Google. It contains an Editor for three UI toolkits: GWT, Swing and SWT. And the coolest thing about the WindowBuilder is that it’s completely open source because it’s an Eclipse project now.

How to build a Server-Side Equinox/RAP Application

February 7, 2011

When you face the task of building a Server-Side Equinox or a RAP application (which is just a Server-Side Equinox application) you need to choose a build system from a fairly diverse palette. This choice is never easy because every build system has its pros and cons. In the end it comes down to which one you and others, love or hate.

Equinox/RAP WAR Products has moved. Hello Eclipse Libra...

February 2, 2011

A while ago I introduced you to my Google Summer of Code 2010 project, the WAR Products. I really appreciate your participation with feedback and bugs. It showed me that there is a real need for this tooling, so I’m proud to announce that the WAR Products development will not continue in the RAP Project.

Amazon AWS Beanstalk and Eclipse Equinox

January 20, 2011

Yesterday Amazon launched a new service called AWS Elastic Beanstalk. It’s basically a Tomcat hosting service. You can upload your WAR files via a web interface, to an instance of a Linux cloud image pre-configured with Tomcat. This is from the official Amazon description:

How to build a RAP application with Tycho

January 17, 2011

Recently I played around a little with Tycho because we evaluated it for the use in the RTP project. As a test case, I decided to try to build a RAP application with Tycho. With building I mean compiling and packaging the artifacts into a WAR file in order to deploy them on a Tomcat or another Servlet Container.

SAP likes Eclipse Runtime Technologies

January 14, 2011

A few weeks ago I told you about the Eclipse RTP project. Since then some things happened that I want to share with you.

Indigo Sneak Preview: Merry Christmas from the RAP Team

December 21, 2010

Christmas is only a few days away and we at the RAP team wanted to show our appreciation to you, our community, for your active participation in setting directions for RAP and for RAP development.  As a small Christmas present, we’d like to give a preview of the next release so you don’t have to wait until June 2011 to see the Indigo features in action. Please lean back and enjoy our Indigo Sneak Preview screencast:

Eclipse November DemoCamps 2010 retrospective

December 14, 2010

November is over now and last week I attended the last DemoCamp for the year. In this year’s November DemoCamp series I spoke at three events and with this post I’d like to present you with some impressions.

Introducing the Eclipse RTP Project

December 8, 2010

Today’s a great day. The Eclipse Foundation accepted the proposal for the RTP Project. RTP stands for Runtime Packaging.  And here’s what it’s all about.

JQuery, Eclipse RAP and a carousel

December 8, 2010

A few weeks ago, my colleague Ralf Sternberg, announced that RAP supports a JQuery integration. What we still needed to do was to create an example that shows how to integrate some JQuery stuff into RAP. Yesterday I took a little time to work on it. I used the JQueryUI Carousel widget as a base. Two hours later the integration and a book store example were completed. You can see the result in the screencast below.

Eclipse November DemoCamps are nearly over, but...

November 26, 2010

One thing I like about November is the DemoCamps, and this year I spoke at two of them, Bonn and Munich. Both were great events where I had the chance to talk  about RAP. The DemoCamps are all about spreading the word about technology and both events did a great job. November is nearly over, but you will have a second chance on December 9th to see some great speakers like Ralph Müller, Marcel Bruch, Benjamin Muskalla, Karsten Thoms, Klaus Krogmann, Markus Tiede, Stefan Schuerle and David Burkhart. Of course you’ll also hear me speaking about RAP again. ;)

A women's way to clean code

November 22, 2010

A few weeks ago the news in Germany was that the average lifespan of German citizens has reached its highest level ever (Statistisches Bundesamt Deutschland).  This was good news but I was also surprised to hear that women still live longer than men. I can imagine a lot of contributing factors but maybe that’s a long discussion better done over beers. One thing that I’ve observed, that I think I can say without getting into trouble, is that some women I know, are simply smarter about their health. For example, if they develop symptoms, they’ll go more quickly to the doctor than I would (or other guys I know). Longevity led me to think about the lifetime of code, and how short that can be sometimes. And, how we often ignore symptoms of illness in code too.  This would be in the form of warnings during compile time, like in the following example, “death by internal API change”.

ESE 2010 is over. It's time for the November DemoCamps

November 5, 2010

I had a great Eclipse Summit this year - and I heard similar things from other people.  I had a chance to meet and talk with friends, colleagues and new acquaintances, and to see a lot of really good presentations.  Of the presentations I saw, these were my personal top three.

Eclipse and RCP Apps on Apple's Mac App Store

October 21, 2010

Yesterday Apple announced the App Store for the Mac OS X Lion operating system, which will be released mid-2011. You probably know the App Store from the iPhone, iPod or the iPad. It’s a really cool way to install Apps. From a developer point of view it’s also interesting because a huge amount of the marketing for an App is done by the App Store for you.

A Facelift for RAP 1.4

October 4, 2010

Since Friday, 1st October 2010 RAP 1.4 M2 is out. In this milestone we introduced some really great improvements. The first is that we gave RAP a facelift - that is, you’ll find a much cooler out-of-the-box look and feel.  Building on  the designs we created for RAP 1.3, RAP 1.4 comes with a more modern default look and feel.  You can still activate the old look optionally - you’ll find it in a separate bundle called the classic theme.  Compare the two looks here and see what you think.  (You can click on the images to zoom in.)

What do Scout, EGit, Xtext, p2 and RAP have in common?

September 8, 2010

First, they are all Eclipse projects. But I think you already knew this. The second thing they have in common is that they are all part of the Eclipse Stammtisch on September 15th in Karlsruhe (Germany). It’s an honor to announce that all these projects will be presented by top developers who play an important role in their projects.   I would believe that until the Eclipse Summit Europe this will be the last chance to hear this many first class talks. If you are in or around Karlsruhe on September 15th feel free to join us and take the opportunity to see all the mentioned technologies in action.

An Oscilloscope in the browser?

August 25, 2010

Last week Wim Jongman bloged about the Nebula Oscilloscope widget. It’s just an awesome widget for monitoring activity. See Wim’s post to form an opinion yourself.

RAP 1.4 M1 is out

August 20, 2010

After the Helios Release, we are one step closer to Indigo. RAP 1.4 M1 is now available. From the new features, here are my personal top three:

Equinox/RAP WAR deployment: an end to the pain

August 17, 2010

Please note: This post is outdated. Please read this post and do not follow the install instructions in this one.

How features found their way into Eclipse Helios

July 13, 2010

Did you ever wanted to know how features find their way into Eclipse and became a part of a huge release like Eclipse Helios? What role do committers play? What is the part of the community? How do different projects collaborate with each other?

RAP and Eclipse Helios in a minute

June 28, 2010

As part of the new Eclipse Helios, the Rich Ajax Platform project released version 1.3. If you’d like to know what is new in RAP 1.3, here’s a short screencast.

RAP in a minute

June 22, 2010

Did you ever want to know what the Rich Ajax Platform is without spending too much time on it? For all of those we did a screencast that shows what RAP is in about a minute.

Equinox/RAP war products sketches

May 21, 2010

As I described in a previous blog I’m going to create the tooling for creating equinox based war files within this year’s gsoc. For this purpose I created some UI sketches with the WireframeSketcher. You can see the first thoughts on the UI below. I would appreciate if you can give some feedback on the sketches to improve the tooling. You can find more information about the war products at the wiki page.

RAP protocol: JSON Schema

May 12, 2010

In my last blog I talked about the messaging format which will be used for the RAP protocol messages. I told you that we plan to use JSON as the message format. So, the thing is that the blog ended in a little discussion about what are the benefits of using JSON instead of XML. So, I decided to pick the biggest argument which speaks for XML and try to mitigate it ;)

RAP protocol: JSON messages

May 10, 2010

In a previous blog I talked about the functionality that a RAP protocol message should provide. I also introduced you to the requirements of a message. A message should take care about the following tasks: Construction, Destruction, Synchronization, Eventlistener, Events, Methods and Scripting (look at this blog for more details). Additional a message should provide request and display relevant information. So, I decided to search for a messaging format which is able to bring the described information into one message. The result of this search is JSON. JSON is a very lightweight messaging format defined by Douglas Crockford and eliminates the drawbacks of XML. The cool thing about JSON is that it’s really fast to parse a message and it’s very readable by humans. Another cool thing is that it fits all needs of the RAP protocol. So, now lets take a look at a sample protocol message:

RAP protocol: all about messages

May 3, 2010

Last week I introduced you to the idea of a RAP protocol (bug 311355). This week I want to provide you with further information about how such a protocol can work. First of all we need to take a closer look on the current situation. RAP is divided into two parts. On the server side runs OSGi, RWT-Server and the application bundles. On the client side runs the RWT-client (JavaScript) to render the UI in a browser. The cool thing about this is that we can provide the SWT API on the server side to make single sourcing possible. For this reason we need to keep both sides, server and client, in a consistent state.

RAP protocol: On the way to RAP 2.0

April 28, 2010

If you are using RAP [Remote Application Platform], we maybe share the same opinion about it. I think RAP is a damn cool technology. You can write your plain RCP code and just run it in a browser by switching your target and add some extensions. On the first look this is just like magic. But if you take a closer look at the underlying RAP technologies it’s not so much magic anymore. The truth is that RAP has to fight a war against the underlying browser technology. The technology I talk about is Javascript. RAP uses Javascript heavily for rendering widgets. This rendering is currently done by qooxdoo, a Javascript UI-Framework. The bad thing about this is the following: The Java code of a RAP application runs on a server. To use your UI in a browser the server has to send messages to the client for rendering the UI. The other way around the client also has to send messages to the server to keep both sides in sync.

RAP/Equinox WAR products

April 11, 2010

This year’s Summer of Code application deadline has passed. I want to take the chance and introduce you to my planned project. I think the results will be a great benefit for the community. So, what does RAP/Equinox WAR products mean?

Advanced RAP Theming

November 20, 2009

As you may read in previous blogs we have addressed the RAP styling. Therefore we presented you the “big blocks” in form of the new RAP designs. But there is still a difference between RAP and other cool RIA technologies i.e. like ExtJS, Flex or qooxdoo. When you take a look at the demos of these frameworks they all come along with cool styled widgets out of the box. Take a look at the screenshots below to see what I mean.

New Fancy RAP Theme

September 2, 2009

We are currently working on a new theme for the Rich Ajax Platform (RAP) 1.3 which will be released within the Helios release train. As you probably know we have released a RAP theme with the Galileo release. This theme was called “business” and portrayed a serious and refined look.

REST, the OSGi and ECF way

July 29, 2009

A few months ago I introduced you to REST. Since then my Google Summer of Code project, REST abstraction for ECF, has been accepted and a lot of work has been done. Scott Lewis and I wanted to make the use of any REST services as simple as possible and whats simpler for a bundle developer than an OSGi service?

Yes, it's a RAP application...

June 2, 2009

… and yes, this is a workbench. As part of the Galileo release train, we will publish RAP version 1.2 and it has some cool new features. One of the bigger changes is the new look and feel.

ECF kisses REST

April 8, 2009

Once upon a time a guy named Roy Fielding made his disertation about a design aproach called REST. From this point REST is getting very popular. Many service provider using REST to offer developers access to their services i.e. Twitter, Facebook and so on.

Extended Presentation API

December 18, 2008

If you want to make a custom look&feel for an RCP or RAP application you have no choice other than to write a new Presentation. But if you’ve already worked with the Presentation API, I would bet that you’re not too happy with it. The only option the API gives you is to make StackPresentations, but what about other components like the ToolBar or MenuBar? There is an internal Interface called IActionBarPresentationFactory. You can implement it and you’ll have the opportunity to change the look&feel of the ToolBar, the View ToolBar, the CoolBar and the ToolBar’s Contribution items. Great. This is a lot more but it’s an internal - use it at your own risk.