Update: Let’s focus on Java development for Notes – not necessarily plug-ins but simply what would it take to get started with Java – the programming language as that is the first obstacle.
I’m running across quite a lot of people who would like to do sidebar plug-ins and general plug-in development for the Notes 8 platform but who are lacking the Java skills required. Many times they haven’t actually taken the time to learn Java at all since the IDE support in Domino Designer is so poor. Based on this I started thinking about how to get Notes developers started developing in Java. So…
What would it take for you to get started with Java in Notes?
- Up-to-date editor in Domino Designer – I wont use anything else!
- If it is made easy to develop, test and debug in Eclipse I can live with manually having to move the code to Notes for production use.
- It’s not the tool support which is the problem – it’s the lack of time, documentation, API’s, management support or this other thing (please state reason)
- I’m not at all interested in Java – I want to develop plug-ins using a scripting language.
- Other (please state reason)
Please post your response as a comment and a little explanation if you chose “Other”. If you chose option 2 I might just have a solution for you… 🙂
29 thoughts on “Quick survey: What would it take to get you started with Java in Notes?”
Very good way to get opportunity to make a plug-in, probably is when you get a task/project to do this plug-in…
To me… Option 1 or Option 2 has to happen. I could live with option 2, though it sounds like the improved editor is on it’s way.
I’d love to start writing agents in Java and maybe getting to some plugins. But most of my company is running 8 basic so even if I get to plug ins by "audience" will be limited
I vote 1 & 2. I think the lack of tool support (requiring the Expeditor toolkit or manual launch configurations) is a huge barrier to entry. With Designer now in Eclipse there is no reason it shouldn’t support Notes plug-in development. I would like to see something like:
File -> New -> Project… -> Notes Sidebar Project
Many months ago I started to mess around with extending PDE to do just this, by creating a new project nature based on the existing Plug-in project, with built-in templates within the project wizard to demonstrate the sidebar extension points, document context selection etc. Of course I soon abandoned my efforts, as it was a little too ambitious for me and there was such a small audience for this stuff anyway.
IMO options 1,2 and 3 occur at the same time – I don’t know of a quick, working tutorial of how to actually create a sidebar plugin for Notes. Besides of that, documentation in general is good – for the old Java stuff – for the new one my impression is: pretty much non existing. Well and the Editor thing is another one. it is not only the ancient java editor – that I really hope is about to change soon, but also the complete lack of a debug functionality. Coding should be fun to make a platform succeed, and coding with Domino can be fun – if you know how.
Option 1 would be ideal. For the time being (until 8.5.1) Option 2 could do.
I’m not just thinking about plug-in development though this might be the goal for many. Getting started with Java is number 1, doing plug-ins comes down the road…
I would follow a tutorial along the lines of "BlammoSplat" on developerworks which has a simple goal but touches on all of the stages need to get to completion.
I find that using Java requires a large time investment for learning the libraries. Also I find different programmers have different styles and sometimes its hard to understand why a piece of code is written in a seemingly complex manner.
On top of this you have to "see" the objects operating in the way the original designer saw/understood the objects to work. All of this coupled with the tendency to "see" the solution in Lotus script and urgency in existing projects makes it difficult to really get up to speed. (the lack of decent IDE/debug tools doesn’t help either)
Most practical would be option 2 for now. BUT there should be more tutorials on Java development in Domino (in background agents) using Eclipse and the Java foundations.
So option 1 can wait, just to get some basic understanding about Java in Domino.
Well I would go for option 4. The reason for this would be I am an admin. At the moment I know a lot about Formula language and Lotuscript. I can read it and I can write it also (not as good and as fast a real dev guy would do it) .
So as a admin learning a complete (in my eys quite diffucult language) new language it is a bridge to far for me i guess. But as a dmin I have worked with lots of scripting languages so I guess that would be mucg easier for me to get things going.
Java has been an option for many years, but for an oldtimer as me, it’s probably alternative 3 and maybe 4.
If I had to develop in Java it would be nice to have it in Domino Designer.
But on the other side, why not take the step over to Eclipse? And a world outside of Lotus.
1 and 2: I have found it allways quite easy to import code from the file system to Notes, with Edit Project in Notes Agent Designer. As we all know, Eclipse save the files of the project in the file system. I admit that there is no easy tutorial how to get that going.
4. Scripting language is
a) lots of work for IBM and there is no reason to believe that it will be good. Look for example how microsoft abandoned its own web2.0 js codegeneration. They use a jQuery based solution now. I think a lot of people are just to optimistic regarding the capabilities of big software companies like IBM or Microsoft can build something nicer on top of something which is allready there. Its hard and due to the current finance situation of our planet, I hope they won’t fund that.
5. People who do not much java coding are just confused by the variety of the platform. All those bonus-jars from jakarta-commons, unit-testing, reflection api, etc.
For me its OTHER.
I’ve read half a dozen books on Java (Headfirst Java was great), but am finally taking a 1 year college course to force me to get practical experience because right now my employer doesn’t encourage Java development.
Java works in many ways but if I have to code in Java (which hardly happens nowadays) I normally decide to completely do it outside of Lotus Notes and Domino. I also don’t have customers that have decided to fully go with Notes 8 Standard. There is at least a minority that runs Basic or they are not even at R8 yet. By the way. From my experience companies with extensive Know-How are often quite keen on moving things off Domino.
Mikkel, I vote for #5: A modern Java API (which may actually fall under #3). This would make all the other options better/easier. Per your question at Meet the Devs, it’s on the list but I didn’t get the impressions that it’s anywhere near the top.
Java has been availalable for Notes development almost as long as LotusScript. Look at how few people develop applications with Java even though it is clearly a superior language. I suspect building plugins etc will be the domain of a minority until a way is found to open them up to the Notes developer masses. I don’t see that being Java for any time soonh no matter how much better the Java editor becomes. So piut me down as a 4.
For me, at the moment, point #3 is the bottleneck. Plan starting developing some plug-ins soon, lacking free time, so trying to get management support.
Point #1 or #2 would be nice…
Just a Wysiwyg editor, like the one you blogged about in Domino Designer/Expeditor toolkit would be great.
Still struggling on where to start, but your Lotusphere ’09 presentation and samples will give me a good jumpstart.
#3 is the main reason for me. I would love #1&2 to make it easier but they’re not keeping me from doing more Java. I’d just have to DO it, but when working on customer projects time does matter and fortunately I’m pretty busy and currently in my spare time I’m doing XPages instead of Java 🙂
1/2. Designer 8.5 has a java editor built in. Window menu select "open perspective->other" and then select Java from the list. When you create a new project create a "Java project". It gets stored in notesdataworkspace folder.
I haven’t tried doing plugins with the 8.5 java designer but if it is possible to create a plugin then the debugging will be the same as XPD/Eclipse.
3. The wikis and developerworks should help a lot. But you are correct the learning curve to create a plugin is high for the first time (and a doddle after you get it).
Java knowledge is a requirement. Like any language you need to learn more then just the syntax.
4. Not sure about this. You can create Widgets and hook them into a composite application. Would be nice to have what you mention though. 🙂
Being a Java developer used to relational databases who started to develop for Notes my challenges are probably the other way around. It’s not the Java language or even the poor development tools in Notes. It is the getting used to thinking the "Notes way".
Anyway, I guess developing plugins and sidebar development may not be the easiest things to start with? Why not start with Agents, which is probably a lot more like the bulk of LotusScript/Formula development, at least functionally anyway?
My major problem is that so far I didn’t work in projects where Java is really required. And due to time pressure, I always have relied on LS so far…
BTW: I am looking for good tutorials to get a smooth start with Domino and Java. What I found so far is:
Anything else you know and can share with me/us?
I use Notes/Domino to develop for the web and I only use Java for my agents. I’m still on Notes 7 anyway.
If I develop for the Notes client I have an audience of one … myself. If I develop for the web I have a potential audience of millions. My customers seem to like the second option better.
I’d agree with one of the other comments – Option1 is ideal, but Option 2 is a good start. I’d really like to see some examples of how to do Java in Notes (varying things up to side bar plugins) – some easy and some more complex.
If it is just general java agents you plan to do then just knowledge of java is enough.
SUN have a nice online tutorial to get you started, after that I recommend reading "Head first design patterns" if you are new to Java. Explains why java is structured the way it is. Difference between writing maintainable apps and disasters no one wants to go near again. 🙂
Most of the lotuscript commands to interact with notes are similar.There is only the backend api for java and the designer help is very good in getting you started.
But the most important part is to fully understand how to use the recycle() command. The majority of crash/performance issues I see are related forgetting to use recycle() or using it at the wrong time.
When a call to request an object is made memory is allocated (like in c++) but has to be manually deallocated or that memory remains locked.
So if you don’t use recycle() at all you eventually crash with out of memory.
Also in loops you should recycle the objects in the loop or you end up trying to load a whole view of data into memory.
Large number of libraries? You don’t need anything else than the core JDK to write agents and maybe even only java.lang and java.util, java.io.
I applaud your decision and taking the plunge – it will pay off even if your current employer can’t see it. Good for you.
Simon you probably wont be able to develop plugins from DDE as Notes is already loaded and can’t be started again. It’s the same as trying to launch Notes from Eclipse when Notes is already running. Maybe some developer at Lotus has a trick up the sleeve but I haven’t heard about about (not even in the DP program).
For now I think the developers at Lotus (yourself included?!) is probably spending all the resources on getting the Java editor ready for DDE. Still much work there.
I generally develop Java code in Rational Application Developer (or Eclipse) because it is an excellent IDE and more powerful that Lotus Domino Designer, although it’s great that Designer 8.5 is now also based on Eclipse. I then export my Java project as a .jar then add that to my Notes agent.
I remember that when I first "took the plunge" to learn Java there was definitely a learning curve and it was a significant investment of time, but I would highly recommend it as allows you to take on a much wider variety of projects. Building sidebar plug-ins for the Notes client is one great example, but I also use Java agent in Notes for Ajax applications etc.
I know I’m a bit late to this party, and there is some question as to whether this will ever be a hypothetical question in my case, but I’d have to say 4 and/or 5.
I have zero interest in Java — less, really, than zero. And it’s got nothing to do with my ability as a programmer — I am just fundamentally opposed to pretty much everything Java represents. I have disliked Java since I started writing applets somewhere back in ’96 or ’97. Static typing? Non-functional? Who really needs that?
I will use Java when absolutely necessary, and have done so in order to implement cross-platform solutions, but there is nothing in the language that I wouldn’t rather do another way. JS or Python would be my preference. And whether you choose to believe it or not, I find LS to be much more expressive than Java in the context of Domino development — I use it because I prefer it, not because the IDE sucks or because I’m afraid of Java.
Hmmm interesting and I respect your point of view but LotusScript more expressive than Java!? Really??
Comments are closed.