ekkes-corner: eclipse | osgi | mdsd | erp | mobile

July 18, 2011

back from outer space – mobile movements, redVoodo and Indigo highlights

A Letter From The Outer Space – reactions

I never have thought that there was so much movement after publishing my blogpost

a letter from the outer space: why developing apps for BlackBerry ?

I got many eMails, Comments and the post was re-published at sides like BerryReview.

Never had so many hits at my blog or at my Vimeo videos before ;-)

Most feedback was positive and it will be curious to see what will happen next months and if my expectations become true.

My letter was a feedback of the anonymous letters published at BGR.com. In the meantime BGR published more anonymous letters. At BGR.com the only negative experience happened for me: I wanted to comment at the anonymous article and only wrote that I have another view on this based on my experiences as an independent developer and pointed to the URL of my blog post. …nothing appears, so I tried it a 2nd time and now I got a feedback:

wow: I was blocked from a site – this happens the very first time for me. Don’t understand why BGR isn’t interested into a fair discussion. For me this site is no serious site anymore: publishing anonymous letters, but blocking discussions ?. Not the way to gain confidence.

My letter contained positive and negative points about RIM and BlackBerry and I was impressed to get much positive feedback from RIM employees about my open words. Hopefully it will have also a positive influence inside RIM to lower bureaucracy and to ‘open’ their company ;-)

…back to work… Last week I finished a customer project where 100+ truck drivers got a (BlackBerry) application to easy dispatching orders and getting auto-magically feedback if truck stands still for some minutes or is near to the depot and ready to get next orders.

I’ll blog in an extra series about GPS, Geodata, Location Based Services, Maps, Tracks, Routes and more: not only valid for BlackBerry but for all mobile platforms if you#re developing location based applications.

An article partly covering these themes will be in the next issue (9.2011) of (german) MobileDeveloper Magazin:

The cover story of current issue (04.2011)  of (german) Mobile Technology Magazin is my article “Why BlackBerry rocks“:

Mobile And Enterprise Business Application Development

As you maybe know, mobile development for BlackBerry is not the only domain I’m developing for. My mobile applications are business applications and always need a server part.

This is where Eclipse Equinox, Eclipse Link, Riena and more comes into play.

Probably you know about redView (Riena EMF Dynamic Views) where Riena technology was combined with EMF based Metamodels of SWT, dynamically rendered at Runtime to ease development of business applications. I’m using redView where I need applications based on RCP / RAP.

In the meantime there are two new Open Source projects (EPL) developed by Florian Pirchner and me:

  • redVoodo:
    • based on Vaadin
      • OSGified Webapplications (see Kai’s demo)
      • Equinox OSGi, Jetty
      • Declarative Services (DS)
    • Business Applications structured similar to Eclipse Riena: SubApplications, ModuleGroups, Modules, Views, Navigation…
    • Push-to-Web-Clients: no polling, always up-to-date
    • Drag’n'Drop (per ex. Order to Truck)
  • enMOcs: Enterprise Mobile Communication Server based on Equinox OSGi, Jetty, EclipseLink and more to provide a robust server for:
    • TCP Socket Communications between mobile (or other) Clients and Server
    • HTTP Server
    • KML Services to provide KML dynamically on-the-fly for mobile devices
    • Push Services ro support Push Service SDK’s from different Vendors/Platforms: Android, iOS, WP7, BlackBerry
    • Admin UI using redVoodo

Both new projects will be developed ‘parallel’ to customer projects – first prototypes are running and you can expect first public sources for redVoodo next 10 days and for enMOcs one week later.

enMOcs is also using redVoodo as admin UI to have a simple to use and good looking UI to configure and monitor Push Services and more. This will also make development for BlackBerry Push Services SDK easier and provides a complete inside Eclipse running solution to test Push Services between server and mobile clients. Server is using SLF4J / LogBack as logging framework and (BlackBerry) mobile client also uses LogEvents in Logback format, so both can be tested side-by-side using Lilith as Logging Monitor.

Curious to see how a redVoodo Business Application could look like ? here are some screenshot directly from the labs:

Screenshots redVoodo:

  1. Structure of a business application (configurable using EMF model)
  2. Master-Detail (auto-magically displayed if selecting a row and edit mode is allowed, Details can be maximized)
  3. Generic Filter Formular (Fields with AND and each field itself can have some OR conditions, RegEx and easy Entry for Dates, Time and Timestamp)
  4. short Video Toolbar, Table, Master-Detail, hide/show Filter Area

How your redVoodo Business Application will be layouted is persisted as an EMF model and can easy be changed to fit your needs.

Together with the dynamic structure of an OSGi Application (Declarative Services used), CSS for styling and EMF you’ll be able to create your own redVoodo (Vaadin-) based web application with less work.

If talking about Business Applications and Eclipse, Riena won’t be far away ;-) We have re-used some of the great concepts from Riena, not only because they’re good – but also to be able to put a (Xtext) DSL on top of redView and redVoodo. Nature of Business Applications is similar – doesn’t matter if using Desktop Apps (RCP), WebApps (RAP, Vaadin) or even mobile Apps. BTW: you’ll also find Riena concepts like Riena’s handling of Look-and-Feel in my mobile BlackBerry Java solutions, but that’s another story to tell later.

To design the UI of business applications and generate code for redView or redVoodo – based Apps from one model, we’ll provide (sooner or later) a Xtext DSL at red-Open. Extending APPlause DSL there will also be templates to generate mobile Apps for BlackBerry additional to the other platforms supported by APPlause out of the box.

To support cross platform development for business apps is important where you don’t have control about platforms of users / customers: enMOcs is cross-platform and even will support different workflows for Push Services from different platforms to mobile clients, RCP is cross-platform by use of SWT and RAP or Vaadin support different Browsers. APPlause supports cross-platform development of native mobile apps. …. all together a solid base build on top of approved Open Source technology.

If you want to get always the newest info from redVoodo you should follow Flo’s blog posts and I’ll blog about enMOcs and red-Open.

Overview enMOcs, redView, redVoodo, …

Eclipse Indigo Highlights

I wrote some articles for JAXenter about my highlights of Eclipse Indigo in german and english:

  1. Overview: Projects, Release Train, Marketplace, Democamps, … (german / english)
  2. EclipseRT (RCP/RAP): Eclipse Riena, RCP, RAP, … (german / english)
  3. EclipseRT (OSGi, Server): Equinox, Jetty, EclipseLink, Gyrex, … (german / english)
  4. Tooling (DVCS): Egit/JGit and MercurialEclipse (german / english)
  5. Tooling (UI): WindowBuilder (german / english)
  6. coming soon: Modeling (X): Xtext2, Xbase, Xtend2, … (german / english)
  7. coming soon: Modeling (EMF): CDO, EMFStore, … (german / english)

There will also soon be a new release of redView covering Eclipse Indigo, Riena 3.0 and first release of  EMFStore at new home: eclipse.org.

Conferences / Events: EclipseCON Europe and more…

Meet me at next conferences / Events:

EclipseCon Europe is nearer as you may think: now it’s time to submit your Sessions here.

Couldn’t believe: 10 years of Eclipse – and I’m using Eclipse since 9 years daily.

I have submitted sessions about:

BlackBerry Conference Application for EclipseCON Europe and more

…also I’ll develop two versions of my BlackBerry Java – Conference App for BlackBerry OS 6 and OS 7 to demonstrate what’s possible with BlackBerry Java. This application will also communicate with enMOcs and support Push Services.

stay tuned…
—————————————————————————————————————————

if you like my work, you can Flattr this

(c) 2011 Creative Commons License 3.0 (BY-NC-SA) by  ekkescorner 

September 21, 2010

Enterprise and Mobile Development

Filed under: Blackberry,Eclipse,Equinox,RAP,Riena — ekkescorner @ 10:47 pm

Enterprise and Mobile

if you’re following my blogs from last years, you know that I’m developing in the domain of Enterprise Applications – in reality I’m designing and developing Enterprise Business Applications much longer then blogging about: will be around 30 years ;-)

many years I was no friend of mobile phones until the iPhone comes out – now I don’t want to miss it any day – its more like a 2nd computer then a mobile phone to me. Using all these nice Apps I thought that time will come to develop some Apps for the iPhone and already bought some books ;-) …but never find the time besides my work as Software Architect and all my work on Open Source around Eclipse and managing own Open Source projects redView and red-open.

but in April this year one of my ERP customers needs to integrate mobile devices and from beginning it was clear that he’ll use BlackBerry.

Why BlackBerry ?

Why not my beloved iPhone ? …and if not iPhone why not the Open Source Android ? …its because BlackBerry fits best into the business requirements of my customer:

  • data transported between server and mobile devices should be use a secure encrypted way. BlackBerry platform together with BES – BlackBerry Enterprise Server will provide this
  • all devices should be controlled from a central Server, because there are many restrictions what the users (Truck Drivers in the domain of waste & recycling per ex.) are allowed to do with their mobile devices. BES again solves this.
  • it must be possible to control Pushing of Data to devices so you exactly know at what time a specific device per ex. received a new order. BlackBerry PushServices – weather using BES or BIS – BlackBerry Internet Services – allow exactly this.
  • the device must be robust to survive in waste & recycling environments: there are jackets available for BlackBerry Bold where you can drop the device from 3 m without any damage
  • devices should be available from more then one provider, because then its easier to deal for best conditions ;-)

… so the decision was to use BlackBerry as mobile devices and this was the starting point for me to join the new world of  mobile development. And because I can only make good decisions as Software Architect if I know how it works I decided to write the first applications by myself and develop the framework to be used from the team.

What does it mean to develop BlackBerry mobile solutions ?

BlackBerry uses Java

- thats great, but wait: no Collections, only Vector, Array and HashTable, no Annotations and so on. BlackBerry uses Java ME, but RIM added own Libraries you have to use if you want to write great applications. This means you’re not compatible to other platforms using ME or to Android Apps. So as an Architect you have to design your applications carefully to be able to switch to other platforms later with less work. Rethink your API, compare with Android and iPhone Applications – many concepts are identical.

If you follow my blogs you know that I’m a fan of Logging using LogBack / SLF4J. There’s no Logging Framework available out-of-the-box for BlackBerry Java Development. Logging from a BlackBerry Device means sysout println where the messages are only visible if running the Debugger. So I developed a small Library sending LogEvents through TCP Socket Connection to Lilith LogMontior in LogBack format. (will blog about this later)

BlackBerry uses Eclipse

… as IDE and provides a PlugIn – but attention ! At the moment you’re bound to Eclipse Galileo (3.5) and also to Windows, because the Simulators are only running on Windows. And you have to use 32-bit Java SDK even on Windows 7-64 bit. I blogged about HowTo setup Windows 7-64 bit in Parallel VM on top of OSX for BlackBerry Development.

BlackBerry == Smartphones with GB of RAM

…yes – but be aware: there are some limits not really understandable today. The max size of a BlackBerry Application is:

8 MB Application Code + 8 MB Resources !

Yes MB – not GB ;-) … and in real its something around 7.5 MB max app / res size. These limits have a huge impact of the application design: You want to integrate a Video or some great looking Background Images ? On Android no problem, but on BlackBerry you cannot distribute them – you have to implement an extra step after installing to download resources from servers.

The good thing: BlackBerry not only has Applications – you can also write Libraries. Your Applications can have dependencies to other Libraries or Applications, so you finally will end with a modular structure. Per ex. the product suite I’ve written for my customer has 8 Libraries and 6 Applications – some Libraries are Resource-only-Libraries.

You have to carefully watch the Versions you’re using to be able to install the Apps successfully on the device.

Oh – did I mention I miss OSGI ? ;-) Its really a big step backward to manage all dependencies by yourself, not working with target platforms or plug-ins :(

BlackBerry UI and Navigation

looking at the documentation about UI elements and Navigation I noticed a lack compared with UI elements you expect from an iPhone per ex. So I developed an UI Library to provide complex lists with colored lines, tabbed folders etc. I also developed Controllers and Views to create good looking Wizards. I’ll blog later in detail.

BlackBerry UI Elements (Fields, Managers) can be extended and overwriting Graphics context, paint methods and using Listeners you’re open to do what you want. The result looks nice, but the learning curve is high.

You also have to solve the problem of Devices with TrackWheels, TrackPad, Touch… to react for all events correct – also automatically resizing the layout if User changes orientation on BlackBerry Touch (Storm) isn’t easy to solve.

The new BlackBerry OS 6 provides many new UI elements to create really good looking Applications, but at the moment there’s no Provider (in germany) selling BlackBerry Devices with OS6, so this will be an option for 2011 – it makes no sense for me at the moment to develop nice Apps only running from Simulator ;-)

Cross-Platform, Web Widgets or native

There’s not THE answer what’s best: develop native Java Applications as I’m doing or using WebWidgets or trying to cross-compile applications. I want a deep integration into native Apps, so from my POV the best way is to develop native Java. But if you’re familiar with Web Widgets, then perhaps you should go this way. Using Cross-Compiling – from what I’ve seen till today – you’re only using the 70% common use-cases and UI elements of each platform. If you can live with the feature set those solutions provide, then its an easy way to create Apps for different Platforms.

At Eclipse Summit Europe 2010 there’s a Mobile Development Symposium where we can discuss this. (see below)

BlackBerry, Open Source, Community

After working nearly 100% with Open Source Software last years it was something like a shock now only have JavaDoc instead of the sources. I also miss the open discussions with committers, but must say that RIM is doing a good job. There are Forums where you find other developers to discuss and helping with problems.

What I’m missing are Open Source projects around BlackBerry Java Development – there are source code fragments at the forum, example code inside the Knowledge Base Articles and some Blogs providing some code. But at the moment I didn’t found ‘real’ projects extending BlackBerry Development with Open Source Projects. But I’ll provide my Logging Framework and UI Library as EPL and then will see what happens ;-)

Curious to attend the BlackBerry DevCon next week in SFO. Some things work different compared with Eclipse conferences ;-) per ex. you have to select the sessions in advance you want to visit – otherwise no seat is guaranteed. This conference is the first one since a long time where I’m not as a Speaker – perhaps this will change next year ;-)

BlackBerry and MDSD (my goal)

So you know: I’m missing Open Source Projects, Logging, OSGI – but I also miss the spirit of model-driven development. The best to change this is to provide something ;-)

Next months I’ll extend red-open to also generate code and other artifacts for BlackBerry Applications.

Also – from my POV – it would be the best to have a mobile DSL (Xtext) from where you can generate native applications for Android, BlackBerry, iPhone.

Perhaps APPlauseDSL is a good starting point, Peter and Heiko have done a great work what I’ve seen at some Democamps. … have to try it out next weeks. Would be great if I can provide something to use APPlause for BlackBerry Applications.

Enterprise and Mobile: Riena, RAP, Equinox, BlackBerry and more

at the end all should fit together:

  • Modeling
    • one development process model-driven
    • UI Designer Riena RCP/RAP using redView
    • UI and Navigation defined by Xtext DSL for mobile Apps
  • Runtime
    • Equinox – OSGI –  Riena – Server providing Services to push to devices and listen for incoming requests
    • Riena RCP Desktop Clients
    • Riena – RAP Web Clients
    • BlackBerry Java Clients
    • other mobile platform Clients

…think next months again won’t be boring ;-)

Meet me:

From September-27… 30 I’ll attend the BlackBerry DevCon in San Francisco and…

… at Eclipse Summit there’s a Mobile Development Symposium where I’ll talk about BlackBerry Eclipse Development – come and discuss about mobile development.

if you like my work, you can Flattr this

June 3, 2010

[Helios] Target Platform – how to deal with optional RAP dependencies

Filed under: Eclipse,Helios,PDE,RAP,Riena — ekkescorner @ 11:39 pm

If you read about my problems about RAP in the IDE from last months, please cool down: this time I’m talking about RAP in the Target Platform as a first Helios review.

please remember:

  • the Eclipse IDE is the tool you’re working with to create powerful software (Plug-ins, products, …). the Eclipse IDE is based on SWT and you’re in trouble if RAP comes into the IDE. I’ll blog about solutions soon…
  • Target Platforms contain all bundles (Plug-ins) you need to compile against while developing your products. Target Platforms are also the base from where you get your Plug-ins used in Launch Configurations to run and test your products.
  • Target Platforms can be very different and if you’re looking at the Eclipse Runtime projects you’ll notice that this is a fast growing area. Two prominent examples of different Platforms are RCP(SWT) for desktop apps and RAP(RWT) for web apps –  and that’s what I’m talking about in this blog.

Hint: if you’re from germany, there was an article-series about “Eclipse Target Platforms” I’ve written for  ”Eclipse Magazin” 2.2010 – 4.2010.

The last year while Helios was developed, RAP supports more and more projects, per ex. EMF and Riena. If you have dependencies on these projects, then you have to be aware that RAP can become part of your Target Platform by magic – even if you only develop RCP solutions.

Perhaps you ask why does this happen ? Projects supporting RCP and RAP are using ‘optional dependencies‘ to make this possible.

example: use Riena Target Components

Here’s an easy to reproduce example what can happen if you install Riena as Target Platform:

  • please download latest Helios SDK (this is RC3 as of today 2010-06-03)
  • create a project and in this project create a new Target Platform Definition file
  • add from Helios Software Site ‘Riena Core Target Components

perhaps you don’t know, but Riena needs also Plug-ins from Eclipse RCP SDK and Equinox Target Components which are not part of the SDK.

Save the Target Platform file and “set as Target Platform

Thanks to P2 and PDE: if you check  ”include required software” you get all dependencies automatically :)

But: “include required software” also includes all optional dependencies and this means you also get RAP. Take a look at the plug-ins view:

Perhaps you’re thinking you can ignore the Plug-ins because you have no dependencies to RAP, but it isnt’ so easy. Take a look at plugins from RAP and RCP, per ex. …jface.databinding: …

…uuups – both are exporting exactly the same packages – so you never know which will be picked. (Exporting the same packages is one of the tricks to be able to single-source your RCP / RAP applications)

Fortunately there are some solutions how to deal with this:

Remove unwanted content from your Target Platform

Go back to your Target Platform Definition file, switch to tab “Content” and deselect what you don’t need:

Now there are no more RAP Plug-ins in your Target Platform and you can work as before using Galileo.

You can also define two different Target Platform definitions; one without RAP and the other one without RCP/SWT. Then you can easy switch and test your product for both platforms.

Exclude unwanted Plug-ins from your Launch Config

If you let all inside your Target Platform, then you have to be carefully while defining your Launch Configurations where you can select which Plug-ins should be used to run a product / application. Don’t mix RAP and RCP in one launch config or product !

If you have RCP and RAP plug-ins in your Target Platform and you want to be sure that a specific Plug-in project should compile against one specific platform, you can add these (classpath)dependencies to your Plug-in project without making your MANIFEST.MF dirty:

Open your MANIFEST.MF, goto Tab “Dependencies” and add those dependencies under “Automated Management of Dependencies“:

Now PDE will compile against org.eclipse.jface.databinding without the need to add this as a required bundle.

Curious where this is stored ? Take a look at the build.properties:

Don’t use “include required software”

There’s another option how to get rid of RAP Plug-ins while defining your Target Platform: don’t use the “include required software” checkbox:

Now you explicitely can configure what should be part of your Target Platform – but the drawback is: you’re loosing P2 comfort getting all dependencies automatically for you.

Adding all dependencies manually can be easy….

…or painful if you’re dealing with complex Target Platforms.

Hint: if you uncheck “Include required software” this will be for all locations defined for your Target Platform – not only for one site.

from my POV it would be great to have a second checkbox to fine-tune the dependencies: “Include optional dependencies” – see comment #8 on Bugzilla 315385.

Summary

Defining Helios Target Platforms you maybe have to live with RAP dependencies and carefully decide what’s the best solution for your projects. I hope I could give you some hints what’s possible and what you have to watch. There will follow more blog posts about Helios and Target Platforms and P2 …..

Theme: Customized Rubric. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.