203 Lotus blogs updated hourly. Who will post next? Home | Blogs | Search | About 
 
Latest 7 Posts
Bleedyellow.com has a new home
Sat, Nov 11th 2017 11
Life sign / Major update for Domino JNA on Github
Fri, Nov 10th 2017 10
New APIs for Domino JNA project, now available for XPages development
Mon, Jan 16th 2017 3
New APIs for Domino JNA project, now available for XPages development
Mon, Jan 16th 2017 1
My latest wish list for the Domino Java API
Thu, Nov 3rd 2016 4
My latest wish list for the Domino Java API
Thu, Nov 3rd 2016 3
Big update for Domino JNA project on Github
Mon, Jul 11th 2016 2
Top 10
Bleedyellow.com has a new home
Sat, Nov 11th 2017 11
Life sign / Major update for Domino JNA on Github
Fri, Nov 10th 2017 10
Tools we use to build web apps
Sun, Sep 21st 2014 6
XSS security fix in Domino R9 HTTP server may break existing web applications
Mon, Jun 3rd 2013 6
Quick tip: Fixing Dojo drag and drop issues in a Windows 8 VMWare on the Mac
Thu, Mar 7th 2013 6
Fast Notes view reading via Java API:New ViewNavigator cache methods in 8.5.3
Thu, Jan 17th 2013 6
Download links for IBM Connect 2013 session slides
Thu, Jan 31st 2013 5
Notes 9.0.1 64 bit for Mac OS X 10.11 El Capitan now available - warning our customer NOT to update for 30+ days!
Tue, Sep 29th 2015 5
New on Github: Domino JNA - Cross-platform access to IBM Notes/Domino C API methods from Java
Fri, Apr 8th 2016 5
Big update for Domino JNA project on Github
Mon, Jul 11th 2016 5


Tools we use to build web apps
Twitter Google+ Facebook LinkedIn Addthis Email Gmail Flipboard Reddit Tumblr WhatsApp StumbleUpon Yammer Evernote Delicious
Karsten Lehmann    

In a recent comment in this blog, Andrew Magerman asked what frameworks I use to build web applications and whether we have looked into Angular. Since the answer got too long for a simple comment and might be interesting for others, I created this blog article.

Server side
I am using my own regexp based templating system, which simply fills some placeholders in static HTML and JS files and sends them to the browser, e.g. to compute URLs, to insert translated phrases and include content of other template files. I don't need much flexibility for this template system, because all dynamic stuff is created in the browser anyway.

Data is provided via custom REST services implemented in Java that offer CRUD operations. In many cases, the server side application code uses framework classes from OSGi plugins that build a common layer shared between multiple web applications.

Frontend stuff
For the frontend, I use Bootstrap to build responsive user interfaces that work on phones, tables and desktop browsers. I use jQuery, lots of helper projects like bootstrap datepicker and timepicker, select2 for flexible comboboxes, velocity.js for animations, Asynquence to work with callbacks and other libraries that I tweeted about in the past.

To wire them together I use require.js, which gives me a clean dependency resolution.

React based UI rendering
For more and more UI components, I use React for the rendering and their flux application architecture.
I especially like their approach to reduce DOM changes by comparing old and new in a virtual DOM tree in memory when data changes.

Another advantage of React.JS is that the initial UI code can be precomputed on the server side to improve SEO ranking (see this article).

Normally, this is done in code running in a Node.JS server.

For Java based server environments like IBM Domino, we have code to do this using the JavaScript engine of the JVM and as an alternative (with better performance thanks to Node's V8 JavaScript engine) by leveraging an external Node.JS process on the same or a different machine.

Angular
We haven't used Angular in real-life projects yet. Looking at the documentation, it feels as if they over-standardized web application development a bit, making it more difficult than necessary to get started.

What concerns me is that their templating system does not seem to optimize DOM operations as good as React does. In the browser, it's all about responsiveness and performance.

What I don't use
Personally I prefer not to use JSF components or similar concepts for the web UI. I don't like to depend on a server state and don't like to have too much communication between frontend and backend.

Instead I like to have most of the UI code in the browser so that the app is responsive even with bad network coverage. In addition, I can optimize DOM rendering and have more ways to play with animations and transitions.

Communication with the server side is done through REST APIs that can also be reused to test functionality, automate tasks or for automatic data imports/updates.

Domino?
You may have noticed that not much of my way to develop web applications requires a Domino server.
Having Domino on the server is a great thing, as it includes many services in one consistent platform, like the document database, fulltext search, directory services, replication and a close integration of application code and the mail server.

But there's more than one way to skin a cat. We have prototypes in the lab that don't have any Domino dependencies.

Since we like document databases combined with replication, we have been playing with the CouchDB eco system for some time:
the Apache CouchDB project that is currently merged with the Cloudant database and the rcouch project as well as its mobile version Couchbase Lite and PouchDB in the browser.

Combined with an OSGi based server platform, that looks like a powerful and extensible app dev environment.


---------------------
http://www.mindoo.com/web/blog.nsf/dx/21.09.2014215044KLERAA.htm
Sep 21, 2014
7 hits



Recent Blog Posts
11
Bleedyellow.com has a new home
Sat, Nov 11th 2017 11:16a   Karsten Lehmann
It took some time and the domain transfer is not 100% complete, but bleedyellow.com is on it's way from René Winkelmeyer to Mindoo. Our blog is currently configured to be the default website on www.bleedyellow.com We do not have any plans yet for the domain, but did not want to let it expire. If you have any suggestions, feel free to comment.
10
Life sign / Major update for Domino JNA on Github
Fri, Nov 10th 2017 4:25p   Karsten Lehmann
Wow - I haven't written a blog post in the last 9 months! It's just so much easier to write a Tweet than to produce long articles, when I split the week between three customers and my family with two children. Just wanted to let you know that we are alive and kicking and still doing very much Domino related work! :-) Technologies have as always shifted a bit. Most of the time we create pure JavaEE projects now for our customer web apps, developed in Eclipse and not Domino Designer (ok, u
3
New APIs for Domino JNA project, now available for XPages development
Mon, Jan 16th 2017 8:21a   Karsten Lehmann
It took some time (mainly because I was very busy and my main use case for the project is not XPages), but now the Domino JNA project is available for XPages development. That means that there is an XPages Extensibility API plugin available in the project's release section on Github that can be installed both in Domino Designer and on the Domino R9 server to use the API in your own applications. After installation, the API classes are available in SSJS and Java code including API source c
1
New APIs for Domino JNA project, now available for XPages development
Mon, Jan 16th 2017 6:21a   Karsten Lehmann
It took some time (mainly because I was very busy and my main use case for the project is not XPages), but now the Domino JNA project is available for XPages development. That means that there is an XPages Extensibility API plugin available in the project's release section on Github that can be installed both in Domino Designer and on the Domino R9 server to use the API in your own applications. After installation, the API classes are available in SSJS and Java code including API source c
3
My latest wish list for the Domino Java API
Thu, Nov 3rd 2016 9:10a   Karsten Lehmann
Last week I sent an email with enhancement ideas for the Domino Java API to IBM development. Most of the stuff listed here (except new @-functions) can be implemented by wrapping existing C API functions or simple copy&paste of already existing code. We already did this using our Domino JNA project, but I thought it would be a good idea to add this functionality to the standard API and provide full platform support. I don't really have unrealistic expectations whether this will ever be
2
Big update for Domino JNA project on Github
Mon, Jul 11th 2016 9:33p   Karsten Lehmann
Last weekend, I committed a big update for the Domino JNA project on Github. Here is what's new: Note (Document) APIs The last weeks since creating the project, I added basic APIs to work with database notes (documents). The main focus was to be able to read the classic note item value types, e.g. String, Number and Date/Time with single or multiple values per item, handle a few rarely known edge cases (e.g. multiline text values that Domino stores with delimiter between the lines
0
New on Github: Domino JNA - Cross-platform access to IBM Notes/Domino C API methods from Java
Fri, Apr 8th 2016 5:11p   Karsten Lehmann
I would like to introduce you to a pet project that I have been working on for the last months: Domino JNA - Cross-platform access to IBM Notes/Domino C API methods from Java As you might have already read in this blog in the past, we have been playing with the Domino C API for some time now and found out that you can speed up view reading dramatically when you talk directly to the C API instead of using IBM's Java classes. The C API also provides lots of other functionality for whic
1
Updated on OpenNTF: Release 1.1 of Open Eclipse Update Site with Mac 64 Bit Client support and other cool stuff
Thu, Mar 3rd 2016 11:23p   Karsten Lehmann
I have updated the OpenNTF project "Open Eclipse Update Site" with release version 1.1 and added the following useful features: added support for the Mac Notes Client with 64 bit new view action to extract selected features as an update site to disk (also available in headless mode via Java agents “(API)” and “(Java-API)“) new view actions to install/uninstall selected features via rcplauncher based deployment, which is used by software distribution systems and should
2
Notes 9.0.1 64 bit for Mac OS X 10.11 El Capitan now available - warning our customers NOT to update for 30+ days!
Tue, Sep 29th 2015 8:30a   Karsten Lehmann
One day before the general availability of Mac OS X 10.11 (El Capitan), IBM released an update for their IBM Notes Client 9.0.1 with 64 bit support: http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?subtype=ca&infotype=an&appname=iSource&supplier=877&letternum=ENUSZP15-0483 Previous versions were using Java 1.6 32 Bit under the hood, which was maintained by Apple for the last 7 years. Since Apple dropped support for Java 1.6 in OS X 10.11, IBM had to update their IBM Mac No
1
New C API method NIFFindByKeyExtended2 in Domino 9.0 improves view lookups
Fri, Mar 6th 2015 12:48p   Karsten Lehmann
Once again I am digging into the Notes/Domino C API to implement fast and powerful view lookups. What caused it this time was a customer requirement for "Notes Client style keyboard navigation" in web views, meaning that you type a character, press enter and the cursor position should be moved to the relevant area of the view (e.g. where the content in the first sorted view column is greater or equal letter "L"). Using standard Java APIs for this purpose (ViewNavigator.getNextSibling(), unt




Created and Maintained by Yancy Lent - About - Planet Lotus Blog - Advertising - Mobile Edition