My Slides From Engage 2019 - De04. Java With Domino After XPages  

By Jesse Gallagher | 5/20/19 7:36 AM | - | Added by Oliver Busse

Engage 2019 has come and gone, and I had an excellent time. I also quite enjoyed presenting my "group therapy" session on some options that XPages developers have for the future. In a lot of ways, it was similar to my presentation at CollabSphere last year, mixed with the various new developments I've talked about on here since then

XPages to Java EE, Part 6: Dependencies  

By Jesse Gallagher | 2/1/19 1:45 AM | - | Added by Oliver Busse

This is going to be a quick post, but I think it's useful to treat the topic of third-party dependencies on its own because of how much nicer it is with a Maven-based app than an NSF or OSGi plugin. Historically, we've handled dependencies primarily by downloading a Jar and either plunking it in jvm/lib/ext on the server, stashing it in a Java agent or script library, or importing it into the NSF as a Jar design element for XPages. With OSGi plugins, that remained the simplest way to do it too: just drop the Jar into the plugin and add it to the bundle classpath.

XPages to Java EE, Part 5: Web Pages  

By Jesse Gallagher | 1/24/19 11:23 AM | - | Added by Oliver Busse

Once upon a time, web pages were easy: you'd write some HTML directly or, if you're fancy, use some Server Side Includes or PHP. Now, though, it's a rat's nest of decisions and stacks - fortunately for me, going into the pros and cons of each approach is beyond the scope of this series. Suffice it to say that Java EE can cover your needs whatever approach you take: it can do basic dynamic HTML generation, server-persisted frameworks like JSF, and work splendidly as a backend for a client JS app thanks to JAX-RS.

XPages to Java EE, Part 4: Application Servers  

By Jesse Gallagher | 1/23/19 5:15 PM | - | Added by Oliver Busse

I mentioned in the terminology post that one of the new things to get used to in Java EE is the concept of a "Servlet Container" or "Application Server", and I think that this concept is worth a bit of going in to. In a general sense, we've been working with this concept for a good while now: Domino is an application server in several senses, and (for the most part) the NSFs are the applications it houses. It blurs the lines in a couple ways by virtue of NSFs also being data stores, but an XPages application is a pretty direct match for a .war file deployed to an application server, code-wise.

XPages to Java EE, Part 3: Hello, World  

By Jesse Gallagher | 1/22/19 1:40 AM | - | Added by Oliver Busse

I expect that I'll have some more theory and explanation to get to in future posts, but I think it will be useful to run through a quick example project. Unlike with my XPages/OSGi examples, there won't be anything in this one that you wouldn't find in any old Java EE tutorial - indeed, I'll be piggybacking on some existing ones to speed things along.

XPages to Java EE, Part 2: Terminology  

By Jesse Gallagher | 1/18/19 12:36 PM | - | Added by Oliver Busse

Much like with my earlier series, I think it'll be useful to take a minute to go over some of the terms that we'll need to know for dealing with Java EE, beyond just the many names of the platform. Additionally, I think it'll be useful to go over some of the things we specifically need to not know when it comes to non-OSGi development.

XPages to Java EE, Part 1: Overview  

By Jesse Gallagher | 1/18/19 2:08 AM | - | Added by Oliver Busse

I've definitely come around to the idea that the future for Java with Domino involves Java/Jakarta EE. HCL apparently feels the same way, though what that "J2EE" bit on their slide means remains unspecified. Regardless, I think that it's important for the XPages community to at least dip our toes into JEE proper, and I plan to share some of my experiences with doing so.

Letting Madness Take Hold: XPages Outside Domino  

By Jesse Gallagher | 1/8/19 7:35 AM | - | Added by Oliver Busse

Since I've been on a real Open Liberty kick lately, over the weekend I decided to go another step further and test something I'd been wondering for a while: whether it'd be possible to run the current form XPages outside of the Domino HTTP stack.

New Project: Domino Open Liberty Runtime  

By Jesse Gallagher | 1/4/19 2:32 AM | - | Added by Oliver Busse

The end of the year is often a good time to catch up on some side projects, and this past couple weeks saw me back to focusing on what to do about our collective unfortunate situation. I started by expanding the org.openntf.xsp.jakartaee project to include several additional JEE standards, but then my efforts took a bit of a turn.

Java Hiccups  

By Jesse Gallagher | 11/8/18 4:30 AM | - | Added by Oliver Busse

To take a break from the doom-and-gloom of my last post, I figured it'd be good to dust off a post idea I've had in my drafts for a while: common hiccups that Java developers - particularly those coming from a Domino background - run into. This is sort of a grab bag of non-obvious concepts that are easy to assume incorrectly about, whether because of the way other languages work or the behavior of the lotus.domino API specifically.

How Do You Solve a Problem Like XPages?  

By Jesse Gallagher | 11/2/18 12:57 PM | - | Added by Oliver Busse

Fair warning: this is a meandering one and I'm basically a wet blanket the whole way through) Last week, HCL held the third of their Twitter-based developer Q&As, with this one focusing on XPages and Designer. The majority of the questions (including, admittedly, all of mine) were along the lines of either "can we get some improvements in the Java/XPages stack?" or "is XPages still supported?". The answer to the latter from HCL, as it would have to be, is that XPages is still alive and "fully supported".

AbstractCompiledPage, Missing Plugins, and MANIFEST.MF in FP10 and V10  

By Jesse Gallagher | 10/19/18 7:36 PM | - | Added by Oliver Busse

Since 9.0.1 FP 10, and including V10 because it's largely identical for this purpose, I've encountered and seen others encountering a couple strange problems with compiling XPages projects. This is a perfect opporunity for me to spin a tale about the undergirding frameworks, but I'll start out with the immediate symptoms and their fixes.

App Dev After CollabSphere 2018  

By Jesse Gallagher | 7/30/18 6:30 AM | - | Added by Kenio Carvalho

n recent years, MWLUG/CollabSphere has tended to be a good time to get a lay of the land for what IBM - and now HCL - intends for their app dev strategy. Recent Connects weren’t too heavy on announcements of major import for Domino developers, and any news to come out tends to do so in the months leading up to summer.

The State of Domino App Dev Post-Connect-2017  

By Jesse Gallagher | 2/24/17 10:07 PM | - | Added by Oliver Busse

I'm en route back from this year's IBM Connect in San Francisco, and this plane ride is giving me a good chance to chew over the implications for Domino developers. First off, I'll put my bias in this matter right up front: Darwino, which I've been working on and discussing quite a bit, is one of the three "chosen" vendors for app enhancement/modernization/what-have-you.

Quick XPages Utility: Keep Alive and Alert  

By Jesse Gallagher | 8/30/16 3:53 PM | - | Added by John Oldenburger

For one of my projects recently, I put together a small custom control that I sure wish I had thought to do years ago: a "keep alive and alert" control. For a long time now, the Extension Library has had a "keepAlive" control, which keeps a page session (and, usually, authentication) alive while the user has the browser window open.

Release Weekend: ODA and Darwino  

By Jesse Gallagher | 8/2/16 7:25 AM | - | Added by Oliver Busse

This past weekend was a nice one for releases to a couple of the projects I work on: the OpenNTF Domino API and Darwino.

Provisions for the Journey  

By Jesse Gallagher | 6/19/16 9:29 AM | - | Added by Oliver Busse

In my last post, I ended up recommending that Domino developers and administrators take some time, if at all possible, to dive into new tools. In some cases, that may be in order to stay indefinitely, but, even otherwise, learning a new environment would have tremendous benefit to your existing Domino work.

Darwino for Domino: Conceptual Overlap and Distinctions  

By Jesse Gallagher | 6/1/16 2:20 PM | - | Added by Oliver Busse

I've talked a bit so far about how Darwino related to Domino from a development perspective, but I think it'd also be useful to delve into specifically which concerns thw two platforms address, to see where they overlap and where they don't. There are two main categories to cover, since Darwino inherits Domino's unusual trait of pouring over from "database" to "app-dev platform".

Quick, Short-Notice Announcement: Delaware Valley Soc-Biz UG Meetup  

By Jesse Gallagher | 5/17/16 6:46 PM | - | Added by Oliver Busse

I'll be there, giving a presentation about OpenNTF and some of the ways that I've used the projects we work on there on my customer projects.

That Java Thing, Part 16: Maven Fallout  

By Jesse Gallagher | 2/23/16 1:36 PM | - | Added by Oliver Busse

So, after the last post's large task of converting to Maven, this step is mostly about picking up the pieces and expanding on some of the concepts. We'll start with M2Eclipse, usually rendered as just "m2e".

That Java Thing, Part 15: Converting the Projects  

By Jesse Gallagher | 2/22/16 9:46 AM | - | Added by John Oldenburger

The time has come to do the dirty work of converting our existing plugin projects to Maven. There will be some filesystem-side reorganizing and not every project will make it (looking at you, source project), but overall it's mostly a job of pasting a bunch of XML into new files.

That Java Thing, Part 14: Maven Environment Setup  

By Jesse Gallagher | 2/21/16 10:30 PM | - | Added by John Oldenburger

Before diving into the task of converting our plugin projects to Maven, there's a bit of setup we need to do. In a basic case, Maven doesn't require much setup beyond the project file itself - it's a "convention over configuration" type of thing that tries to make doing things the default way smooth.

That Java Thing, Part 13: Introduction to Maven  

By Jesse Gallagher | 2/20/16 11:25 AM | - | Added by John Oldenburger

I've been laying warnings that this would be coming and you've seen me grouse about it for over a year, but now the time has come to really dive into Maven for Domino developers. To lead into it, there are two main topics to cover: what Maven is and why you should bother.

That Java Thing, Part 12: Expanding the Plugin - JAX-RS  

By Jesse Gallagher | 12/3/15 3:31 PM | - | Added by Oliver Busse

A couple of months back, Toby Samples wrote a series on using Wink in Domino. I'm not going to cover all of that ground here, but it's still worth dipping into the topic a bink, as writing REST services in an OSGi plugin is a great way to not only add capabilities to your XPages apps, but to also start making your data (and programming skills) more accessible from other platforms.

That Java Thing, Part 11: Diagnostics  

By Jesse Gallagher | 12/1/15 7:54 AM | - | Added by John Oldenburger

Though my surprisingly-packed schedule the last few weeks caused a hiatus, it's time to retun to this series with a quick description of some of the diagnostic tools available to you when doing plugin development (outside of connecting the debugger, which I may do eventually).

That Java Thing, Part 10: Expanding the Plugin - Serving Resources  

By Jesse Gallagher | 11/12/15 11:34 AM | - | Added by John Oldenburger

After sharing code, one of the handiest uses of a plugin is sharing web resources - stylesheets, JavaScript files, and so forth. This process is similar to the last couple steps in that, though it is not very complicated on the whole, it's pretty non-obvious how to get around to doing it.

That Java Thing, Part 9: Expanding the Plugin - Jars  

By Jesse Gallagher | 11/11/15 10:09 AM | - | Added by Oliver Busse

So it appears that I once again forgot to commit my changes. Well, consider this a cautionary tale, but we can still salvage the situation a bit by committing the previous changes before embarking on an unrelated modification - it's that mixing of different changes that can cause trouble in a source control repository.

That Java Thing, Part 8: Source Bundles  

By Jesse Gallagher | 11/10/15 10:06 AM | - | Added by Oliver Busse

Before anything else today, Eric McCormick reminding that yesterday's post missed the final step: committing the changes. So, let's take care of that right now. On my side, since my Windows VM is also being accessed from the Mac side, it's worthwhile to add a .gitignore file to the root of the repo to keep out all the .DS_Store nonsense.

That Java Thing, Part 7: Adding a Managed Bean to the Plugin  

By Jesse Gallagher | 11/9/15 3:48 PM | - | Added by John Oldenburger

For today's step, we'll deal more with the meat of the task: putting your own code in the plugin. There are a lot of options for what a plugin can provide, ranging from just storing classes to be accessed from elsewhere to being full-on OSGi web applications.

That Java Thing, Part 6: Creating the Feature and Update Site  

By Jesse Gallagher | 11/8/15 11:34 AM | - | Added by John Oldenburger

The last post covered turning our nascent plugin into a proper XPages library, so now it's time to fill in the remaining pieces to get it installed. To do that, we'll need a feature and an update site. The feature will point to our plugin - in a more-complicated setup, this could point to several related plugins, but we'll just need the one.