Developing plugins for IBM Notes on Mac

I’ve been developing plugins for IBM Notes on Mac for years now but never really got around to sharing the steps on the blog. The below steps – in very crude form – works with Java 8 on Mac OS El Capitan (v. 10.11) using IBM Notes 9.0.1. The below sections are additions to the regular steps on creating a target platform documented otherwise on this blog

Main-tab

Run a product: com.ibm.notes.branding.notes

Execution Envionment: JavaSE-1.6

Arguments-tab

Program arguments:

-personality com.ibm.rcp.platform.personality
-debug
-console
-ws cocoa

VM Arguments:

-Declipse.registry.nulltoken=true
-Djava.util.logging.config.class=com.ibm.rcp.core.internal.logger.boot.LoggerConfig
-Dcom.ibm.pvc.webcontainer.port=8080
-Declipse.pluginCustomization="/Applications/IBM Notes.app/Contents/MacOS/rcp/plugin_customization.ini"
-Djava.protocol.handler.pkgs=com.ibm.net.ssl.www.protocol
-Dosgi.hook.configurators.exclude=org.eclipse.core.runtime.internal.adaptor.EclipseLogHook
-Dosgi.framework.extensions=com.ibm.rcp.core.logger.frameworkhook
-Xbootclasspath/a:"/Applications/IBM Notes.app/Contents/MacOS/rcp/eclipse/plugins/com.ibm.rcp.base_${rcp.base_version}/rcpbootcp.jar"
-XstartOnFirstThread

Environment-tab

  • DYLD_LIBRARY_PATH=/Applications/IBM Notes.app/Contents/MacOS
  • NOTESBIN=/Applications/IBM Notes.app/Contents/MacOS

Developing code using IBM Notes in Eclipse on Mac OS

I’m cleaning out my drafts folder and stumbled unto this one I never posted. The steps has changed slightly after IBM Notes 9.0.1 for Mac was released as that release works fine with the never JVM’s for the Mac. Actually there are very few steps you need to do to make the code work. To complete a standard console app that prints the username from the current session to stdout do the following:

  1. Write the code – could be something like this:
    import lotus.domino.NotesFactory;
    import lotus.domino.Session;
    import lotus.notes.NotesThread;
    
    public class Main {
       public static void main(String[] args) throws Exception {
          NotesThread.sinitThread();
          Session session = NotesFactory.createSession();
          System.out.println(session.getUserName());
          NotesThread.stermThread();
       }
    }
    
  2. Run the code as a Java Application. This will fail as the JVM cannot load the required libraries.
  3. Edit the Run Configuration (click the dropdown next to the green run button and choose “Run Configurations…”)
  4. Switch to the “Environment”-tab
  5. Add an environment variable called DYLD_LIBRARY_PATH with a value of “/Applications/IBM Notes.app/Contents/MacOS” (without the quotes)
  6. Click Apply and Run

This was done in Eclipse neon on Mac OS El Capitan (10.11) using Java 8.

WebSphere Application Server Liberty Profile webcast replay

In case you haven’t heard about WebSphere Application Server Liberty Profile and you are doing any work with J(2)EE servers you really should do your self the favour and read up on it. In essence it’s the best thing since sliced bread for application developers that target WebSphere Application Server and here’s why:

  • It downloads and installs in less that 5 minutes
  • It’s binary compatible with the full WebSphere Application Server so you can be certain that code that runs on Liberty Profile will also run on “full fledged” installs
  • Only starts the components required for your app so it starts in 5-10 seconds
  • Has great platform support including the Mac
  • Has great support from IDE’s such as Eclipse WTP

Right now there’s a webcast available from websphereusergroup.org called A Technical Introduction to the IBM WebSphere Liberty Profile which could be a great starting point for you. I’ve used Libery Profile extensively already to develop TAI’s, servlets and test federated repository setup without needing a full WebSphere Application Server install which also doesn’t run locally on my Mac.

Liberty Profile is a great win for developers.

Trying a move to the Mac

This week I’ll be trying a move to the Mac as Per Henrik Lausten (@perlausten) was kind enough to lend me his Macbook Pro until Thursday. I’ve had it for a couple of hours now and it’s already becoming easier. One of my pet pives is keyboard navigation which is something I really want and need. I’m a keyboard kind of guy so being able to navigate applications using the keyboard is going to one of the deciding factors. Finding links like this sure makes it easier but the judge is still out.

I’ll post more as I progress through the week.