Subject: Why Java with Domino?
Here is my list:
Pros
-
The language itself is powerful, with many useful data structures already included in the base API.
-
There are a lot of useful (free) classes out there that you can re-use.
-
The security model of Java is sufficient.
Let’s say you use LotusScript to call a third party active x control function. Q: Who says the active x control is safe? A: the
developer. This could be a bad thing.
Okay, so you run this function in your mystery ActiveX control… What language was it written in? You won’t likely know. But if it is written in C or C++, there could be potential vulnerabilities you are exposing your application to.
Java is managed source, you should not have to worry about buffer overflow exploits, and the other evils known to unmanaged source languages.
For example, you hit a site that uses js/shell code to exploit a popular control that you happen to be using for your domino app. What could happen?
Ok, to be fair. When would you ever need to use a third party control or dll from LotusScript? One example is if you need to use LotusScript to do an http transaction, you might use the msxml object.
Whereas in Java, using the java.net package would handle your requirement. And I am not saying msxml is unsafe, I just making a point that making 3rd party COM objects available for you lotusscript to work, could expose you additional risk.
- Flexibility. As a developer working with Lotus Notes/Domino, it is probably a good thing to be able to use all of it’s capabilities.
For example, you may decide to using JFC/Swing interface (JFrame, JTables, etc) might be a good choice in a particular feature in a notes thick client app. If you decide accomplishing the same using the subforms, tables, and dialog boxes native to the Notes designer is more limited or challenging.
- Can use external IDEs to generate the code. Not that I am a fan of going outside of my dev environment for this, but the reality is there are other IDEs that are more mature and will evolve at a faster rate than Lotus Designer.
For example, with Eclipse, I can use pluggins to tie my code into a shared versioning repository, such as Subversion. Or I can make my own pluggins to enhance my experience.
Or even use DomiEclipse (whenever it works on R7, Exclipe 3.2x+)
Cons
- As of R7, the IDE for Java is insufficient. There is no real debugging capability in Lotus Designer.
This is a huge Con actually… without this limitation, I would always use Java. But as of now, it is often necessary for me to justify using Java in Notes.