Is the lack of Java skills in the Notes/Domino developer community the Achilles’ heel of IBM?

For years IBM has been preaching Java as the next language for development across the IBM suite of products. Still even with the immense focus very few Notes/Domino developers has seemed to lash on to the language. With the introduction of the Hannover client built on top of the Eclipse based Workplace client this will become a real issue in my eyes.

I think that the fenced-in comforts of the Notes/Domino platform have become a sedative for the Notes /Domino developer at large. Too long has the developer community been allowed to seek inwards and focus solely on the proprietary world of LotusScript, @Formula and simple actions to solve the issues at hand. I acknowledge that the @Formula language and simple actions definitely has their place in the Notes product and that these languages really shouldn’t be part of this discussion. My grievances are with the lack of new language adoption and if you live in the IBM World this new language is Java.

(As an aside it now appears JavaScript should also be considered an IBM World language with its introduction as a core language in the Workplace suite of products.)

I guess very few Notes/Domino developers who doesn’t program in Java (regularly or at all) wake up in the mornings and think they are missing out on something and that the consequences of missing out are going to be that big. I’m afraid they really are missing out and that it is going to be a big thing. The problem is however, from the standpoint of IBM, that the developers are not the only ones who are really going to suffer from this lack of Java adoption. IBM is going to suffer as well.

Instead of having a Notes/Domino developer community with a basic understanding of the Java language IBM is left with a community where probably as large portion cannot even write a simple “Hello World” application without the help of a book. In my eyes this is going to be significant since the move to the Hannover client framework will be real big thing for these people due to lack of Java knowledge.

I find this very sad since IBM had the possibility to prevent this from happening. No one could predict the future back in 1999/2000 and knew the direction that the Notes product was taking beyond the 5.x release which was a big thing. No one could predict that IBM would create the Eclipse framework and that most IBM client products would be based upon it.

But here we are, it’s now 2006 and I guess IBM has known for a few years that the Notes client would be built on top of Eclipse at some point in time. I therefore find it sad that IBM hasn’t been more active in driving the adoption of the Java language among Notes/Domino developers during the 6.x releases.

Because IBM is committed to the Notes/Domino product and due to the large population of custom applications out there LotusScript will probably be supported from now to the demise of the platform. Though supported it will be very difficult, if not impossible, to build the kinds of composite, networked applications that will be possible with Hannover using LotusScript. You’ll need Java for these kinds of applications. This brings us back to IBM since this fact will be a real Achilles’ heel when it comes to the adoption and getting the real benefit from the new Hannover client. The success of the Hannover client and the applications possible will rest on getting the customers to use and new features and begin to develop composite applications.

From my point of view I think there are a number of reasons for the lack of adoption. Probably the biggest culprit of the discussion is the perceived simple nature of LotusScript. Leaving Java on version 1.1.8 in the Notes/Domino products throughout the entire Notes 5.x codestream, the lack of proper UI support for Java and the complex and oftentimes impossible to comprehend and poorly documented security managers installed by the Notes/Domino JVM certainly didn’t help matters.

I make a point of saying the perceived simplicity of LotusScript since it isn’t in my mind an easier language to learn. I would even say that due to the lack of documentation and quality education material available for LotusScript, Java would probably be easier to learn than LotusScript for a new Notes/Developer starting of.

I am of the understanding that the difference between Java and LotusScript is just a matter of syntax. Nothing else. There is no need to completely understand the finer points of object oriented design to be proficient in Java. You can write as much procedural code in Java as you can in LotusScript. Of cause you can do considerably more stuff with LotusScript than Java in Notes/Domino but it need not be LotusScript or Java which is often the case in my experience. It has however become the reality that new developers learn LotusScript and not Java.

There is no need to begin to point fingers but I think it is sad that the state of Java development within the Notes/Domino developer community is what it is. The community at large needs to skill-up and get to grips with Java. Now is a good a time as any to get started – rather sooner than later. The reward will be apparent once Hannover is released.

Request for comments

For those of you who get this far – thank you for reading… 🙂 I would really appreciate your view on this. I’ll be happy to hear that I’m wrong but I am afraid that I am not.

17 thoughts on “Is the lack of Java skills in the Notes/Domino developer community the Achilles’ heel of IBM?”

  1. You make some excellent points, and I agree with you. The reason Notes / Domino developers haven’t really gone for Java is because they haven’t had to: Java on Notes doesn’t offer much.

    Theoretically you can do cool network-related stuff, you can integrate with other systems more easily, blah blah. But no-one really does that. Or not very often. Why? (a) the security model precludes such unrestricted agent activity precludes for the typical corporate developer; (b) the JVM is Windows-only; (c) the Java IDE sucks; (d) performance isn’t great, and (e) until recently the JVM used in Domino has really lagged behind the rest of the world.

    Oh, and then there was Garnet. That really hosed things :o) — the agent model isn’t really powerful enough for a lot of the things one might want to do with Java.

    Like

  2. While I don’t think that your concern is misplaced, I must disagree with your premise that Java is as easy to learn as LotusScript for a Notes Developer. I am one of those developers who cut their teeth in Notes and have grown up with the product. I learned to program in Basic, Fortran, and Pascal, but never got to the point were I tied them to a back end database. I’ve never done real world programming in VB/.Net, Perl, PHP, Java, C, C++, or Ruby. All of my real world experience concerns building and supporting Notes/Domino infrastructures and the systems they interact with.

    That being said, it was much easier for me to progress from @Formulas to LotusScript to Javascript than it would have been for me to take on Java. And, as you have already stated, there is nothing that I have ever needed to do in my applications that I haven’t been able to do with @Formulas and LS. And LS has really allowed me to grow at my own pace. I have seen my style of coding change and develop over the years and I think I am finally at the point where tackling some Java sounds like a good idea. It’s going to be necessary to allow me to develop the servlets I want to tackle. But it’s taken getting comfortable with developing my own classes to get me to this point.

    I think that the other thing that makes Notes environments different, at least for me, is that I am not only concerned about developing Notes apps. I have also been an administrator for long periods of time, so I have had to learn a lot about database management, security, networking, DNS, firewalls, mail routing, ODBC, anti-spam and anti-virus solutions, windows server software and hardware, and iSeries system software. I think that makes me a more well rounded IT professional, but it has definitely slowed the progress of my development skills. I know a number of non-Notes developers that couldn’t tell you anything about networking or databases or mail routing, but their coding skills are more advanced than my own.

    For my 2 cents, I would love to see either PHP, .Net or Ruby better supported on Domino. I think that there inherent problems in Java that might cause it to lose momentum and favor in the programming community. I can see that Ruby on Rails is already starting to make serious in roads. But what do I know, I’m just a Notes Developer.

    Sean—

    Like

  3. Sean,

    I understand where you are coming from and it is the same feeling many of the customers I come in contact with have. Heck even some of my own developers feel like you do. I must however contest the fact that Java is harder to learn than LotusScript if you look at the language.

    API’s come and go – the language stays the same.

    The core Java API may be bigger (now at least but not so much in the Java 1.1.8 timeframe where the hype was at the highest) than the LotusScript API, but the core language isn’t that much different. Even now most people turning to Java would not need to look outside a couple of packages to get started – no need to look at the entire API at once. For Notes/Domino developers we really need to look only at the language constructs and the Notes/Domino related API (classes and operations that work on databases, documents etc.).

    Have you ever tried to compile a complete list of all LotusScript classes, subs and functions? Try it and see if that list doesn’t stump most developers. Have you ever looked at the face of a developer being shown the LotusScript API poster and the developer help file and told to get going? Not a pretty sight.

    For the Notes/Domino developer the difference is mainly the boilerplate code that surrounds the actual code you write. Whether that boilerplate code is Sub Initialize or some type of class definition doesn’t seem that big a deal to me. It’s just boilerplate and it needs to be there. For the majority of cases you could probably write a program to translate a LotusScript agent into Java since the Notes/Domino Java API is basically the same as the LotusScript API.

    Maybe the real problem lies in the fact that once Notes/Domino developers turn to Java there is so much stuff they want to do. Servlets, network calls, integration with third-party system and so on. If they fail – is that due to the language being diffecult or because they try to do too much new stuff. The ideal route into any new language is redoing stuff you already know how to do in the new language – not boldly going where no man has gone before…

    Like

  4. So maybe it’s just the fact that the LotusScript boiler plate/structure is always there. It’s very daunting to come into the Java IDE and see a blank screen. Just that sight alone gives me shivers. I will try to overcome my reservations in the near future and start to delve into Java.

    I agree that starting out in LotusScript right now would be very daunting, but since I started working with it in R4, I was able to grow with the language as it matured. Every so often I venture out from the classes I am comfortable with and try one of the new classes. Switching to a whole new language is something a little more venturesome and it’s not something that I would be comfortable doing on a client’s dime. For me to want to rework something that I have working in LS is going to take more than mere curiosity when I have a pile of work sitting on top of my desk.

    When I think about Java, I think about all the issues I have heard about, especially around performance and memory leaks. Still, the ability to use some of the classes that have been developed by others to do cool things like work with images is something that is very tempting.

    Sean—

    Like

  5. I recently had to write some code that integrated a Notes database in the client with a mysql/php application via https/SSL.

    I was very excited about this because Java seemed to be a perfect fit.

    Unfortunatly I quickly realized that the lack of support for new versions of Java, the really bad IDE(it REALLY sucks), and performace forced me to find another solution…..

    I think these points really need to addressed before you see the N/D community embrace Java more fully.

    Like

  6. I think missing in all this is the fact that Hannover will finally open the doors to the Linux and Mac world.

    Once in that environment, every OLE/COM hook will go out the window and LotusScript will be dramatically trimmed of it’s usefulness.

    If you want OpenOffice integration under Linux or Mac, then Java/CORBA is the only game in town. It would be nice to see PHP, python, Perl/Ruby in the mix, but I think that native PHP support won’t do much good until there’s a total redesign of the HTTP service, or until IBM finally does the smart thing and allows people to use Apache in place of the HTTP service FOR Notes data (as opposed to just passing page content to an Apache server).

    Once that happens, you could probably do some fun stuff with LAMP-style apps composited into Domino apps using Hannover.

    And hopefully such a fantasy scenario would also push IBM to start taking the use of CSS in the client seriously.

    Anyway, back to the point, I think the preference of LotusScript really must be viewed in the wider computing landscape. Windows is on the way out. Better get ready. 😛

    My $.02

    Like

  7. We had a staff of three that were doing all of the Domino development (using formulas, simple functions, LotusScript & Java). We have a staff of about 20 Java programmers that are developing applications in Java for WebSphere. This past year we got a new manager and were told that there would be NO MORE new Domino projects and that within the next couple of years we would be moving the current Domino applications so that they could be maintained by the Java programming staff and be access using a web browser with WebSphere applications. They don’t want to take new Java programmers and train them in LotusScript & formula language and they want us (the Domino developers) to become full-time Java and WebSphere programmers.

    My biggest gripe is with IBM in that they have not done a good enough job explaining to Senior Managers that IBM WorkPlace is actually the next Notes/Domino and that you need Java programmers for WorkPlace (especially ones that already have a Domino background). I have been trying to get WorkPlace into our shop for the past 2 years, but I cannot convince top management that we need it if we have Domino and WebSphere. I also cannot make them understand how WebSphere Portal would fit into our shop (since the server portion of WorkPlace is based on WebSphere Portal).

    Like

  8. I agree with you.

    The standard argument is why do I need Java when I can do it in LotusScript?

    The question is how much have we explored about where Java can be more useful than LotusScript? For a parallel, how many would know what all great things can be done in Domino web applications if there were no Jake/Mike Golding?

    Personally, I think it’s important to get to the habit of using Java with notes, atleast for the sake of learning/knowing it. It will help me to take advantage of the new products/features/capabilities that would come out of IBM in future.

    I cannot demand for more openness in the product or crib about its lack thereof and maintain that I am fine with Formula/LotusScript!

    Like

  9. “I am of the understanding that the difference between Java and LotusScript is just a matter of syntax. Nothing else. There is no need to completely understand the finer points of object oriented design to be proficient in Java. You can write as much procedural code in Java as you can in LotusScript.”

    I don’t think I agree with this fully:

    It’s fine for simple programs/learning the language. I think the real power comes with it’s OO features. If you look at design patterns book – the firt thing they tell you will be program to an interface and not to an implementaion (class). Ofcource even many J2EE developers won’t understand OO design or design patterns and in that context , yes, I agree with you, but then it’s not the best approach to follow.

    Like

  10. It should generally be avoided to write procedural code in an object oriented language such as Java. The reason that I write that it’s “just a matter of syntax” is to point out that for the majority of Notes/Domino tasks you can do without the OO approach. Does an OO approach help and would I recommend people using it? From my perspective certainly, but it isn’t necessary to get the job done.

    Like

  11. Yes, majority of the Notes/Domino tasks can be done without OO – perhaps OO is an overkill.

    What you are suggesting then, basically comes down to using Java purely to learn, find the issues related to stability or others in production usage, get into the regular habit of coding in Java?

    Significant portion of the developers won’t prefer to take that route today, but with Hannover it might change.

    Like

  12. I don’t believe much in this oo-light approach.
    1. With Hannover it might get usefull to write Eclipse plug-ins. You need to really master oo-theory. Else you are getting lost. Its too big the whole eclipse model.
    2. An important reason to write Java is the – I think – better development process with Unit-Tests, regression tests, better documentation, less individualistic development style, etc. You need to understand OO to leverage that.

    Like

  13. A task like Eclipse plug-ins will not only require good OO principles, it will also require deep Java programming knowledge and prior experience with plug-in development. To me it’s a diffrent game that not many application developers would get involved with.

    For opensource community/hard code Java developers familiar with plugins adding value to Eclipse code base in Hannover would become possible.

    Like

  14. In the last three years, not one piece of functionality that I need in Lotus Notes has been implemented.
    (https://www-10.lotus.com/ldd/nd6forum.nsf/ShowMyTopicsAllThreadedweb/cbb23f01eff55e9485256d6c007b38ad?OpenDocument)

    IBM could have done so much more by integrating the eclipse IDE with Notes and including a Java UI object model. Tons of market/mind share will be lost because of that.

    In the mean time, I’ve studied like crazy for Workplace and Java. And while I cannot use Java in Notes (both in practice and by decree) I have definitely become proficient at OO design by using the OO capabilities in LotusScript. My code quality has improved so much because of it. But there’s nothing worse than feeling like you could do better if you had the right tools.

    For those looking to make the transition to Java or just get some OO skills for use in Notes, here’s a good book list.
    http://www.amazon.com/gp/richpub/listmania/fullview/39V7LZNQJSM9G/104-2663605-2087118

    Like

  15. Richard, I understood over a period oif time that Learning OO is fundamental to any successful programming experience with languages like Java, C# etc.

    This was confirmed by the discussions that were happening at Ed’s site (I should say I was also party to being guilty to have taken it off-topic)

    This particulr book {link} that you quote has been a recommended read by a few people, so I guess I must take a serious look at it.

    For those who can’t wait for the book to ship, I have posted something here:
    {link} that may be useful. Atleast I found it very useful.

    With J2EE, the real complexity starts after you have understood the language , OO etc. There are so many frameworks and stuff to keep up with. It is both exciting and scary in the Hannover. Exciting because it’s nice to learn new things, but scary because, it could just become so over complex and confusing – Lotus, Hannover, Workplace, Portal – too many stuff in too short a time – and certainly I don’t want to be left behind sticking to just LotusScript though Ed/Allan might tell me that you are just ok with LS skills.

    Like

  16. May I also recommend Head First’s books on Java and design patterns. The Head First series from O’Reilly is really easy to absorb and a lot of fun to run through. It sometimes appears unserious and childish, but it is quite deep in content, and all the lessons and content is relevant and well presented.

    Like

Comments are closed.