vrijdag 25 juni 2010

Eclipse Demo Camp Nieuwegein

On June 23 there was an Eclipse Democamp at Industrial TSI in Nieuwegein to celebrate the launch of Helios.As usual Yuri Kok, owner of the Dutch Eclipse User Group on LinkedIn managed to organize all the necessary ingredients like advanced networking facilities, an expectant audience of about 40 people and a number of speakers.

KEYNOTE: Wim Jongman, Helios & OSGi Remote Services

Wim Jongman introduced the new Helios release, which includes 39 projects! After that he quickly went to a demonstration of Eclipse Remote Services, and the Zookeeper discovery mechanism implementation that Remain BV (co-host of the event) has contributed to the ECF. This was a very nice demonstration that included a new widget: the "osgiloscope".

Olivier Wolf, "SOA at Eclipse -- the Eclipse SOA Initiative"

Oliver Wolf of SOPERA next introduced us the SOA Intiative at Eclipse,describing the role of community and industry working group, the split between modelling and runtime, what projects are part of the SOA Initiative and more. Revelaing was his slide that showed what areas still need to be filled in.

Drinks and slices

Always an important part of an evening gathering, this was organised splendidly: a choice of pizzas and drinks!

Ief Cuynen and Tom Bauwens, SmartApps - Single-sourcing demo Eclipse RCP / RAP

RAP and RCP are both part of the Helios release and have reached maturity. Tom showed a real life application where the shared code base and the very rich display on both the web and RCP were amply demonstrated. He also offered tips on organising your code using plugins for the shared stuff and fragments for the RCP or RAP specific stuff.

Jelle Herold, Stream BV - Statebox & Typewriter

After telling us about statebox, a process modelling and runtime engine, last time, this time Jelle described the typewriter library.Because statebox needs to work with data and types from all sorts of systems, many of them non-java, using java.lang.reflect was not an option.
Jelle's solution is an interface only reflection API, with implementations for Java (obviously), Swing, Wicket, Drupal, Solr and JFace.
He invited us to look at and use his code http://bitbucket.org/wires/typewriter.He can be contacted at jelle AT defekt DOT nl

Olivier Wolf, "Eclipse Swordfish -- Service-oriented software development made easy"

Oliver had brought a second presentation about Swordfish, a SOA engine part of the Eclipse SOA Initiative. To show us some examples he demonstrated their use of the new Discovery UI API part of Helios, that is also used by Eclipse Marketplace and Mylyn Connector discovery. We see the already(!) familiar Discovery UI, followed by the Installation part. Then he had the audience stunned by the popup of a compulsory registration dialog! See below:He then went on to explain that this was all rather simple, just using p2 requirements to download the registration code from the server and p2 touch points to invoke this code before proceeding!He promised to explain all in a blog post soon!

Doru Gardan, ST-Ericsson - "Hardware debugging on a Digital Signal Processor"

To remind us that not everyone is on the latest and shiniest new release of Eclipse. He demonstrated their customised C-compiler and debugger stuff running in Ganymede. He compiled a demo program and ran it on the hardware with chip attached to his laptop.

Conclusion

Eclipse is doing well in the Netherlands, but we still need to go a long way for all users to interact and be aware of the community aspects. So all in all an informative evening that was very well hosted by Industrial TSI. Thank you, Yuri and all your colleagues!

maandag 7 juni 2010

Getting started with Hudson & Eclipse

Why automated build?

After reading these two blog posts by Andrew Niefer here and here I understand that there is simply no way to build a custom updatable RCP application manually from Eclipse. The export options are too limited so I opened bug 316059 to make this exporting easier.

Why Hudson?

As the Eclipse building infrastructure itself is employing Hudson I expect that automating the build of RCP applications will be possible with Hudson. The first step is to download Hudson from hudson-ci.org. I installed it on my Mac in /usr/local/hudson/.

LaunchAgent

I don't like starting up Terminal to manually start it everytime so I created a LaunchAgent for it. Place the following plist xml in file /Library/LaunchAgents/org.hudson-ci.agent.plist and Hudson will start automagically every time on login.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.hudson-ci.agent</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-jar</string>
<string>/usr/local/hudson/hudson.war</string>
<string>--httpPort=9090</string>
</array>
<key>StandardErrorPath</key>
<string>/Library/Logs/hudson-err.log</string>
<key>StandardOutPath</key>
<string>/Library/Logs/hudson-out.log</string>
</dict>
</plist>

I employ one POJO jar in my RCP app and I managed to set this up in a few hours to extract from CVS, run checkstyle, findbugs, junit tests, emma tests code coverage and do final build. Next time I'll cover building a an Eclipse feature and update site.

Moving HUDSON_HOME (Added on 2010 06 11)

After some time I noticed that my home directory was increasing in size, leading to rapid and longer TmeMachine backups. I like the backups of my development tools to be different and under my direct (script) control so I needed to move the Hudson home directory. Luckily this can be done easily!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- Moving HUDSON_HOME to /_some_other_volume_/Hudson/ -->
<key>EnvironmentVariables</key>
<dict>
<key>HUDSON_HOME</key>
<string>/_some_other_volume_/Hudson/</string>
</dict>
<key>Label</key>
<string>org.hudson-ci.agent</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-jar</string>
<string>/usr/local/hudson/hudson.war</string>
<string>--httpPort=9090</string>
</array>
<key>StandardErrorPath</key>
<string>/Library/Logs/hudson-err.log</string>
<key>StandardOutPath</key>
<string>/Library/Logs/hudson-out.log</string>
</dict>
</plist>

Now copy everything using terminal:

$ cp -pR .hudson/ /_some_other_volume_/Hudson/
and restart Hudson.

$ ps -lA | grep hudson
501 _XXXX_ 565 4004 0 47 0 2972192 212840 - ↵
→ S a9a87e0 ?? 0:40.14 ↵
→ /usr/bin/java -jar /usr/local/hudson/hudson.war --httpPort=9090
$ kill _XXXX_
$ sudo launchctl list


Then try in your browser: And now everything appears to be located in the new location!