In March of 2006 I wrote a lengthy post (see below for links) on how I considered the lack of Java adoption by Notes/Domino developers the Achilles’ heel of IBM. The post was picked up by Ed Brill and made quite a stir in the blogosphere.
Sitting here developing a Notes 8 plug-in in SWT (the Java widget toolkit of Eclipse/Expeditor/Notes 8) I got to thinking if the state of affairs has changed and if yes, how it has changed. As a strong Java proponent I’m afraid I don’t like the answer… My perception is that the percentage of Notes/Domino developers having adopted Java hasn’t changed since then. We’re exactly in the same place we were in March of 2006.
Why haven’t IBM done anything? Why wasn’t Java everywhere at Lotusphere 2007? Will it be a major focus area at Lotusphere 2008?
Not to sound too sour and/or disappointed but I fear there is somewhat of a connection between none of the 4 sessions on Java development I submitted for Lotusphere 2008 was accepted and the state of affairs. It could of cause also be that the sessions just wasn’t interesting enough.
Very few of the Lotusphere attendees will be looking for sessions on Java I’m afraid. A stark contrast to what the platform demands.
I understand that there is a learning curve to the language but we need to seriously address this lack of adoption. If we don’t we, as business partners, will not be able to fulfill customer demand for development resources. The platform as a whole will be the one that suffers. Of cause Java is *the* standard enterprise language so there’s an abundance of Java developers out there, but developers need a solid understanding of Notes/Domino as well as Java to be productive and bring value to customers.
My understanding of the current state of affairs is this:
- Most of the Notes/Domino developers are older – very few straight out of school jump onboard. It’s all about learning an old dog new tricks…
- Very few get into Notes/Domino development unless they work for a company running Notes. Could it be that the platform still have a monolithic feel to it even though it is anything but?
- Very few existing Notes/Domino developers have started adopting Java due to lack of pressure from IBM. Certainly the Java API and IDE not evolving haven’t helped.
- Many who have adopted Java in Notes/Domino use it as a procedural language as a LotusScript language substitute with threading or network connectivity. While this is a start there is a major leap in the level of abstraction needed for composite application development. If we had gotten started earlier we might be further ahead now.
- Very few, if not none, of the guys and girls leaving school know that the Notes client of today is built on the same platform they have been using to learn the Java language (yes – that would be Eclipse).
- Very few, if not none, of the guys and girls leaving school know that Lotus is all about the social and building software to support collaboration.
Please tell me I’m wrong!
28 thoughts on “Is the lack of Java adoption *still* the Achilles’ heel of IBM?”
"due to lack of pressure from IBM"…. I think the problem is "not enough carrot" more than "not enough stick" but the horse won’t move without one or the other.
Things IBM could have done:
Improved and promoted Lotusscript OO. The community has been very clear on this for years and has even produced some very clever workarounds.
Improved Lotusscript integration with java. Nice start…any plans to impove?
Improved the Domino IDE, OO support in particular. Designer.next will be great…too bad designer.now had to become an IDE counterexample.
Required that all examples, templates and published articles use OO rather than procedural design.
Had these been consistently implemented, learning java would be a syntax problem for most developers, not an OO+syntax+class libraries+Eclipse IDE problem.
The Eclipse decision put these things on the roadmap but until the Java Notes UI classes show up, there’s not enough carrot for most folks. There will be plenty of sessions showing how you can do composite apps without using java but I’d love to see examples (killer examples) of what can only be done with java constantly put IN EVERYONE’S FACE in January. Those would be some fine carrots.
Mikkel, too bad your carrots won’t "on display" be at Lotusphere. I don’t expect to see any sticks either.
My personal main reason not to use Java in Notes development – although I started Java programming with version 1.0 – is the lack of the NotesUI classes in Java.
We (in our company) develop Notes applications using a OO framework in LotusScript, which implements the MVC pattern (form as view and two classes for controller and model). Since the only way to access the current document is LotusScript, not Java, we implemented the framework using this language despite its limitations as OO language.
Despite the power of Java, it remains unwieldy. When I recently purchased an 800-page book on building "commercial-quality" Eclipse plugins, the book next to it on the shelf was called "Java in a Nutshell", and it was four inches thick.
Speed of development is what prompted many organizations to adopt Notes and what continues to prevent many from abandoning it. In fact, I’ve often seen applications built in Notes for no other reason than that it would be quicker (and easier) to implement in Notes than in any other platform. In organizations where there is poor communication between disparate development groups, I’ve even occasionally seen a whole team of Java developers spend several months creating an application that is functionally equivalent to something one Notes guy "threw together" in about two weeks. So I can understand why many developers continue to steer clear of the language entirely: they’re continually constrained by tight deadlines, shifting requirements, etc., so they stick with what they can churn out rapidly.
However, another of the strengths of Notes has long been its willingness to allow the developer to choose – literally line by line – which language is best suited for the task at hand. If we’re creating a 50 line LotusScript function to duplicate what could be accomplished by just calling Formula via Evaluate, we’re not taking advantage of that flexibility. Similarly, if the desired functionality really can only be achieved via Java, but the developer keeps attempting unsuccessfully to implement it via other means, that wastes time, energy, and money. Developers that truly give their employer their money’s worth can not only identify where it makes sense to employ each language but are equipped to do so without significant deceleration.
If/when IBM releases Domino Designer in Eclipse, I think more Notes/Domino developers will decide to learn new tricks.
The Java editor in it’s current state is horrible at best.
I agree that speed of development is an important factor but do not confuse Java EE (J2EE) development where you invent everything (from business logic to UI) with using Java as a programming language in Notes. I’m simply advocating the latter.
I agree with most of your point but I – sadly – should also mention a few other things
– the Garnett drop has done much damage in this area cause it would have brought "classic" J2EE construct in Domino. Though I understand SOME reasons they drop it (if only they had decided to embed a was and not a tomcat container…), I think globally it was a mistake.
– The Workplace project. As the future of Domino was unclear, this has made the frontier even wider between "the domino world" and "the java world". The same thing happened earlier with Domino vs Websphere. Part of this is due to the lack of IBM communication / bad communication around the strategy (or the strategy beeing refined little by little)
– The poor implementation of DIIOP in the R5 days. This has made many people affraid of "crashing" the whole server with just a few remote calls… Performance is also – still – in some areas – a pb.
– Some efforts IBM has done have not been promoted as they should : Ths Domino JSP Tag Lib, The Domino SDO stuff…
I also think that we clearly miss more people like you, who brought a different approach from Domino development. If I had some things to say to the domino community of developers that would be : "Java is a new weapon on your arsenal for developing in Domino, not an enemy, far from it". The second thing I also bed my customers for is : mix your Domino & J2EE teams, they both have a lot to learn from each other.
Let’s hope DDE (Domino Designer in Eclipse) and the effort IBM is doing around Java and Domino Next would inverse that tendancy…it’s kinda vital.
PS : I also agree with you : Java is not J2EE. You can do "simple" things in Java without the penalty of complex J2EE stuff. Though, learning J2EE is also a good thing and not that hard when you view it via the pragmatic prism of a domino developer.
Java compared to Lotusscript is not an easy language.
Java is a language you have to work with continously to get good at, and once you become an expert, you probably do not want to do notes developement any more. so you move on, (All java developers probably move on to websphere)
It’s the same thing as you don’t see many C++ developers do any notes development. because if you know C++ , the challenge you want is not to use your knowledge with Lotus Notes. you probably step up.
Now that the session list for Lotusphere is posted, you should take a look and see if you still feel the same way.
As for your sessions being rejected, I think you are making too personal a connection to the agenda. There are many reasons why sessions are rejected, and one of them is that we get hundreds of submissions to fill dozens of slots. I also personally don’t consider it great form to be blogging about the rejection in public, and have said so before in the lead up to prior Lotuspheres. But to each their own.
Michael B — I hope you will see current and future actions as making up ground for mistakes of the past. I still believe I/we made the right decision around "Garnet", but we’ll never know for sure 🙂
I think it might be as simple as accessibility within Designer. If you write client apps, the lack of Java UI classes and Java UI events means there’s too many limitations. If you write web apps, then Java is only relevant as a servlet (too big and unwieldy) or for agents. I know plenty of web apps that use Java instead of Lotuscript for agents — I don’t think there’s much of a lag there.
But if you’ve already learned LS for the sake of Notes client development, why jump languages when you work on agents for web apps? If you can do it in LS, what’s the necessity for change?
Notes 8 Standard is the START of having a Java UI class model. I think we’ll see a shift in language preference with that. And it will move DRAMATICALLY with DDE.
Well as I said I could very well be taking it way too personally but hey that’s my problem to deal with. As to the session list for Lotusphere I still think the emphasis on Java is on the light side – at least in the BP track. I just perused the AppDev track and from a Java perspective it’s better than last year but I would really like more BP sessions on Java. The beauty of the BP sessions is that they are by non-IBM’ers and hence carry more weight. At least this is how I see it.
However – and I really mean that – I also realize that Lotusphere isn’t Sun JavaOne and nor should it be. I guess I’m just disappointed but hey that’s life. There’s always next year.
Well I agree that is might very well be an accessibility issue. The lack of UI classes has been touted as the reason for a long time but what I can’t see is why Java hasn’t been an event language for years. Many of the events could just as well be written in Java. At least the backend events.
As for DDE I agree and it will be very interesting though I think we seriously need to address the Java API as well. There is a big discontinuity between the current state of the API and where the Java language is today.
U r all very nice people.
When a zip has to be processed or some client webservice stuff has to be embedded in Notes, its my task.
I think about proper oo design, write junit tests, throw some openSource jars on lib/ext on some some servers.
Its great risk management by skill diversification. A big company here hired me for 30 PDs Swing/Spring/iBatis-Sqlmaps. On Weblogic. I never used that server, but doesn’t matter.
I think to have a different pov about some issues in this thread.
– Java would be a syntax problem for most developers
ME: syntax can be learnt in 4 days. The hard point is understanding design patterns and architecture.
– I’ve even occasionally seen a whole team of Java developers spend several months creating an application that is functionally equivalent to something one Notes guy "threw together" in about two weeks.
ME: are you sure? Java projects may have a very broad focus. Would you manage germans freight train system with Lotus Domino?
– but do not confuse Java EE (J2EE) development where you invent everything (from business logic to UI) with using Java as a programming language in Notes
ME: Using JSF you have to invent anything? Using Spring you have to invent anything? Using Hibernate you have to invent anything? Using ibatis-SQLMaps you have to invent anything. Using EJB3 you have to invent anything? Using axis2 you have to invent anything? Using Eclipse RCP you have to invent anything.
I don’t see it this way.
Alex, not to be rude with you but if some people are too on the "Domino and nothing else" side, I tend to think you are too on the other side : "Domino is for dummies, java is serious development".
Not to start a debate around J2EE but I find "surprising" that people are delighted with Hibernate or other persistence frameworks…Isn’t persistence a thing we should no longer have to deal with more than 10 years after the J2EE platform birth ?
Same goes with Spring (and IOC containers) : basically this meta framework simplifies the integration of other frameworks and the app configuration/testing etc…well, should we need this if J2EE was mature and "well thought" enough ? . Btw, what do you think are the true objectives of Interface 21, creators of Spring ? (maybe look at there day of consulting price, you’ll understand…)
With each new J2EE framework you have the "you’ll be able to concentrate on business logic only" or "you’ll be able to be more productive without taking care of plumbing"…those simple sentences prove that J2EE is still far from a mature platform. Every J2EE actor tries to reinvent the world, prenteding they have made the ultimately smart framework…But Struts is dying, JSF never took off, EJB were the ultimate stuff…till EJB2…till EJB3 which completely dismantled the EJB2 principes…I though IT needed stability and not a revolution every other day…
But of course, geeks find it cool to control every bit of there apps, IT companies can sell much more consulting days, customers can say "we do J2EE, that’s cool isn’t it ?"…
According to me, a more pragmatic approach is needed and the question is not either this / or that technology but should be "how should I combine those stuff to make the better app from all the point of view : user, admin, developer, maintenance, evolution, cost etc…
PS : and yes in many situation I would much more bet on using Domino for high risk projects that some pseudo revolutionary J2EE frameworks or portal of some sort that could be dead the year after living you wih all the maintenance and support problem…
J2EE had its flaws.
Actually a lot of things planed by human beings have flaws. Development to the better is a process of discovery. J2EE was a good starting point. Gavin King like Rod Johnson offered ideas to make J2EE even better. Those ideas are now adopted by the application server vendors (Weblogic uses spring/Websphere is Spring-certified, EJB3 feels a lot like Hibernate, G. King works for JBoss).
There are people who believe that one guy has a brilliant idea on which everything can be built (like Revolución Bolivara of Hugo Chávez,).
I believe that progress in technologies and elsewhere is gradual and of constant improvement (like the Toyota car I proudly own).
Struts is dying, JSF never took off, EJB1/EJB2/EJB3 -> have you ever looked at job postings (the empirical evidence)? All those J2EE/EE5 projects are real. They provide value. Part of my job is without Lotus Notes. You may think, that the popularity of J2EE/EE5 is just one huge market faillure, as the customers for this users are tricked by J2EE marketing. I appear to own more faith in an eficient result of competition between platforms on markets than you do.
Spring-Framework is 100% openSource, it is very well documented and there are a lot of very good books. Spring is used by a lot of companies and individuals. The overwhelming mayority do so without booking interface21 guy. The consulting price of interface21 employees reflects the fact that these people permanently enhance the framework on an openSource basis and are very true experts.
But of course, geeks find it cool to control every bit of there apps, IT companies can sell much more consulting days, customers can say "we do J2EE, that’s cool isn’t it ?"…
A lot of companies are using Domino. A lot of companies are using J2EE/EE5. Do you really believe in a market faillure so big that all those companies are doing so because its fancy and not because it helps them to archieve their business goals. You are smarter than all those companies which are using J2EE/EE5 for their IT-systems for years?
I learnt a lot from working in J2EE/EE5 projects for my Domino projects. I am actually combining the two in some projects (client side webservices, zip handling, http-stuff) though not in all projects. Some are better pure J2EE/EE5. I was involved in Tomcat/Domino hybrids which ended in total mess. This needs not to be the case. But this may be happen. In case this is about to happen, I advice against.
A personal note: My admitedly a bit burning J2EE/EE5 fervor as a Domino AND Java/J2EE/EE5 has a lot to do from what I think to have learnt from the evolution of economic theory. I believe in constant improvement, learning from different sources, that there is a probability of black swans (Spring is one), we have a choice and that different conditions do heavily affect the effectiveness of choices (Stiglitz has some important points).
And as I interpret your posting you do base on arguing, not on empirical evidence. We can build neat arguments without end, but its pointless. Even Chavistas can do that.
Depends on the project and in J2EE/EE5 there is a lot to discover, even to make me more eficient as the Lotus Notes coder I am.
and ee5 has its flaws.
Flawlessness does not exist.
Struts is dying, JSF never took off, EJB1/EJB2/EJB3 -> have you ever looked at job postings
I’m not speaking about job numbers, I’m simply trying to take a step back and say that most of the thing considered as bleeding edge technologies in the J2EE world (hibernate, spring etc…) are just there because of the complexity of the J2EE platform. Those problems should not be the one most of the developers deal with ; that’s all I’m saying, not saying I’m smarter than anyone 😉
Of course, we should learn new stuff, aquire new competencies etc and my day job is also around Portal, J2EE, Spring and so on (plus Domino of course) but that does not prevent one from having a non partial opinion on the technology you are using. Domino has flaws. J2EE has flaws, none is perfect, none is better than the other in the "absolute" and both should benefit from each other instead of being presented as opposite.
My opinion is as non partial as possible for me. Like you I am in Domino and J2EE project. Am not saying that J2EE is allways better. So I guess that we do agree more a less.
I would put this one point in a bit more positive:
Flaws or unneeded complexities are omnipresent. Hibernate/Spring/JSF do exist as improvements of J2EE for a lot of projects. They are signs of rapid improvement.
I find it interesting how questioning the level of Java adoption in our community can turn into a "what side are you on" debate. Whether that be Java or LotusScript, Domino or J2EE, Spring or whatever…
One of the reasons for the lack of adoption, IMHO, has always been that Java has such a bad reputation in the Notes/Domino community. I think we have a very long way to go. How can be overcome this?
Well for one we need to narrow our focus. Let’s start by focusing on the core language – as one said it’s all about syntax. Then let’s start with the core language and how it translates to the lotus.domino package. Let’s start by keeping all the other stuff out. No Corba, no servlets, no EJB’s to start with. Let’s focus.
We need one the of Expeditor posters with all the bells and whistles and remove anything than the word Java and Notes/Domino. We need to let people know they can start off easy. The real truth is that Java developement for Notes has never been easier. Heck it’s the langauge of the platform. One developers are on to the basic stuff they should move on to more advanced stuff. We might need a set of utility classes – I’m thinking the same as JFace is to SWT – just for Notes 8 development. An extra level of abstraction.
But as Nathan said – probably nothing substantial is going to happen until DDE comes out. I’m afraid that is true. The problem is that from there it will take developers 1 year to 2 to become proficient in the Java language.
the whole process of starting with Java is cumbersome in Lotus Notes.
You just can’t create a button and write some Java code. You have to use LS2J bridge. Or create an agent. Make it a java agent and type in some stuff in an IDE which is no IDE.
There is a Eclipse plug-ins, which automates, but this is not maintained and does not work with Eclipse 3.3 afaik. You can use Eclipse and import the code in an agent. This works admitedly fairly well, but people have to know Eclipse, set up the project properly, etc.
For my own purposes I started to write some mock classes. They build up kind of an implementation of the more important Lotus Domino classes, which can purely be used inside Eclipse without even starting Lotus Notes. I use it for writing unit tests for code which depends on the notes api. Might be used for educational purposes too. Sounds terribly theoretic and over-complicated. But its actually easy. Am going to open source it on google code, when its ready. With a little flash movie, it might be possible to show the point and how to use it in a brain friendly way.
With all due respect, but I am now reading for 6 years that java-is-so-easy. First from 2-short-guys team, now from you Mikkel. Maybe its time to start to think in a disruptive way.
In the meantime for Java-literate the language has become a whole lot more usefull with Domino7, because of new JAXP-compatible XML parser and Java1.4 support, as lots of integrateble openSource libraries like JDom or newest jakarta-HttpClient version (I used this combo a lot) depend on xmlParser, java1.4.
Actually I know from local forum that people are sent to Java trainings, but they seem to not know how to use it in their day-to-day work.
In the local forum people who also visited an university at the time learned Java very well. Maybe its better for learning purposes to first start with Java without Domino. Java5 certification is a worthwhile goal, as it actually brings the most important points across (I think).
With this knowledge using Java in Domino is a snap. It has real business value as you can easily integrate SAP, all kinds of Webservices, HTTP stuff and generally easier xml processing. This has proven to be usefull in real projects.
I have never stated that Java is an easy language. Nor is LotusScript for that matter. I have said that with all languages it’s mainly a matter of syntax. Once you learn how to program you should be able to pick up nearly any language. But herein lies the problem – Notes developers are not programmers by trade.
I agree that it’s better to learn the tool(s) first and then focus on specific issues that need solving. But that doesn’t get us out f the bind we’re in. And this is why I’m so frustrated with the current state of affairs since existing developers wont learn the language and new developers coming out of school doesn’t know that Notes is built using Java so effectively no new Java skills are coming into the platform.
Well, I’ve met yet a few students who were pretty good at Eclipse-plugIns/RCP. There is interest from customers for Expeditor/Notes8. The demand for presentations some people here at my employer are offering seems to indicate that. I admit that from both sides Notes Developer-> Expeditor/Eclipse expert AND Expeditor/Eclipse expert -> Notes Developer is quite a steep learning curve.
Its good that IBM has started to publish more sample applications. Support from Mother Blue is necesary to kickstart the business.
We were discussing yesterday in office: Technologically Composite Apps are neat, but is there a killer app? Is wiring in BIRT enough to convince decision makers? What business problems can really be solved with Expeditor? The group of persons tackling those issues needs not to be big. Even with people who claim to have the skills, there is a problem. They can’t tackle the issues whole-day as they have to make money. And there is a lot of technologies a java programmer can be sent to to make some bucks for himself and co-workers. That’s why IBM should really think how to assist best-willing partners in an eficient way.
About the evangelizing Java thing, I have tried that and its dificult. I perceive it as a personal comparative advantage, but I try to help anybody who ask question on atnotes.de, no matter from which side he comes. But I am not the guy anymore to animate fellow notes programmers to start dabbling with Java.
May sound sad, but as a simple Lotus Notes & Java coder I am all for realism.
I like Java, and my background is Notes and Domino first (and before that, the earliest days of HTML). However, coding Java in Domino Designer is extraordinarily painful, especially if you are used to something like Eclipse for your other work.
That is why most people don’t bother… that and the lack of a UI framework to easily hook into…
You are correct – nothing significant has changed since 2006. Will Designer.next change anything? I don’t think so. Existing "average" Domino developers will continue to work as they always have and a few new Eclipse developers may get on board. This approach has already failed once with Workplace. We’ll have to wait and see what happens, but it looks like the painful transition to a Java based development platform is going to continue for a few more years.
I’ve been trying to learn/use Java in Notes for a while now and a couple of thoughts have been getting clearer.
I develop for the Notes client and so far I have not seen any advantage to using Java over Lotus script.
All examples I’ve seen regarding Java and web applications leave me wondering how much time is spent in environment preparation before any coding is done, and then it seems to take an age for deployment. I don’t have that kind of time nor the man power.
Java on the client is too slow, it can work but it always gets poor reviews from end users.
I don’t mean this to be sarcastic, but could some one explain WHY Java is such a great addition to Notes & Domino other than "A lot of developers use it".
Well the is a generic part and a part specific to Notes and one to Domino. The generic part is that Java is a language which is used beyond Notes/Domino which means that there is an abundance of training options, books and developers. Also since the language is used across many products and industries it is easy to get additional libraries to accomplish specific tasks (brings down development time) and many vendors will supply a Java API to their application or service.
Many of the reasons why Java is great for Domino is a repeat of many of the generic reasons. Java is mainly for agents or web services at the moment and I don’t expect that to change significantly.
On the Notes front things are MUCH better with Notes 8 as the JVM is running all the time and hence there is no startup delay. Also Java is now the native language so it is like writing extensions to Notes 7 and earlier in C/C++ but with a modern and flexible language with great IDE support (in Eclipse. Here the abundance of third party libraries will also help you.
Nobody asked the question, "What about .NET?" Half of our department is "replatforming" applications into asp.net applications.
Every good Notes developer I have ever personally known tried developing Java/Notes apps then quickly switched to .NET.
Will Lotus Notes 8 be able to pull those developers back? I don’t know.
As one of the older Notes developers, here’s one of the problems I have seen all along with Lotus and Java. All the emphasis has been on Websphere and now Eclipse and portal stuff. The new so called "Lotus" stuff based around portal is still websphere, you can’t fool me. I don’t want to hear it – I have Domino and Designer. Sure I’ve got Eclipse, but it’s a whole separate toolset, pretty far removed from Domino.
I tend to learn by stealing and modifying/refactoring code. This is one kind of reuse. Most of the Java examples you find in the Lotus venues (LDD, Notes help, Sandbox, magazines etc) are not object oriented – not even structured. You can actually find more Lotuscript object oriented samples than Java ones. And at least in LS, the use of Subroutines is common practice in the Lotus templates. That’s good stuff to steal.
That lack of Domino Java source examples is a sore point. One OO thing I worked with was I mapped the Headfirst design patterns Ducks classes (Strategy pattern example) into a Notes Library and agent. Not quite coding, but educational.
So what we need is some nice Domino application classes to steal, basically.
For those of you who like Eclipse and want to code your agents in that I recommend DomiClipse. I agree that the UI for java in Designer needs work. I am not a big fan of it. Most of the Java based coding in Domino I do is not an agent. For agents I fall back to LS or formula (except for Webservices).
The new R8 framework also allows you to also create java composite applications and plug them into your database (oops, application :)).
Along with that you have web services which are a doddle to set up and run. Designer practically writes the code for you from a WSDL file.
As for Java itself. There is a misconception that it is an easy language. It is easy to do simple things, but it is a serious language and requires a lot of learning to be at any level to code correctly vs just coding. the SCJP5 gives you a real appreciation to how much you probably don’t know about the language.
Comments are closed.