SlideShare a Scribd company logo
Tips for Building Your First XPages Java Application 
Tweet about this event 
And mention us: @Teamstudio @TLCCLTD 
@mmcgarel @gacres99 
Dec. 2, 2014
@Teamstudio 
teamstudio.com 
@TLCCLTD 
tlcc.com 
Courtney Carter 
Inbound Marketing Specialist 
Teamstudio
Who We Are 
• Teamstudio’s background is in creating tools for 
collaborative computing in mid-size and large 
enterprises, primarily for IBM Notes 
• Easy-to-use tools for developers and administrators 
• 2300+ active customers, 47 countries 
• Offices in US, UK, and Japan 
• Entered mobile space in 2010 with Unplugged: easy 
mobilization of Notes apps to Blackberry, Android 
and iOS
Teamstudio Unplugged 
• Your mobile Domino server: take your IBM Notes 
apps with you! 
• End-users access Notes applications from mobile 
devices whether online or offline 
• Leverages the powerful technology of XPages 
• Unplugged v3.1
Unplugged Templates 
• Continuity – Mobile offline access to 
BCM programs 
• OneView Approvals – Expense 
approvals; anywhere, anytime 
• CustomerView – lightweight CRM 
framework for field sales and field 
service teams 
• Contacts – customer information database 
• Activities – customer activity log 
• Media – mobile offline file storage and access
XControls 
• Set of Controls for IBM Domino XPage developers 
working on new XPages apps and on app 
modernization projects 
• Re-write of the Teamstudio Unplugged Controls 
project, but adds full support for PC browser-based 
user interfaces as well as mobile interfaces 
• Enables XPage developers to create controls that 
are responsive 
• Learn more: http://xcontrols.org
Teamstudio Services 
• Professional services for project management, 
development, administration, and modernization 
o Modernization Services 
o Unplugged Developer Assistance Program 
o Application Upgrade Analysis 
o Application Complexity Analysis 
o Application Usage Auditing 
• http://www.teamstudio.com/solutions/services/
• Modernization Services promotion: 
o Now through December 15, sign up to learn about our Modernization Services, and 
be automatically entered to win an iPhone 6.
1 
#XPages 
Tips for your First Java 
XPages Application 
Your Hosts Today: 
Howard Greenberg 
TLCC 
@TLCCLtd 
Paul Della-Nebbia 
TLCC 
@PaulDN
How can TLCC Help YOU! 
2 
• Private classes at 
your location or 
virtual 
•XPages Development 
•Support Existing Apps 
•Administration 
• Let us help you 
become an expert 
XPages developer! 
• Delivered via Notes 
• XPages 
• Development 
• Admin 
• User 
Self- 
Paced 
Courses 
Mentoring 
Instructor- 
Led 
Classes 
Application 
Development 
and 
Consulting 
Free 
Demo 
Courses!
TLCC Java Courses and Package for XPages Developers 
Java 1 for XPages Development (9.0) 
• Covers the Java Language 
Java 2 for XPages Development 
• Debugging 
• Expression Language 
• JavaBeans and Managed Beans 
• Third Party Java Libraries 
• Exporting to PDF and Excel files 
• On Sale for $599, save $300 
Java for XPages Package 
• Has both Java courses 
• On Sale for only $999, save $500 
3 
Sale prices good through 12/31/2014 
Click here for more information on the Java courses
Upcoming and Recorded Webinars 
4 
• Future webinars for 2015 to be announced later this month 
www.tlcc.com/xpages-webinar 
View Previous Webinars 
(use url above)
Asking Questions – Q and A at the end 
5 
Use the Orange Arrow button to 
expand the GoToWebinar panel 
Then ask your questions in the 
Questions pane! 
We will answer your questions 
verbally at the end of the 
webinar
Your Presenters Today: 
6 
Graham Acres 
Brytek Systems 
@gacres99 
#XPages 
Mike McGarel 
Czarnowski 
@mmcgarel
AD107: Don’t Put the Cart . . . 
Graham Acres 
 IBM Lotus Notes Developer/Designer 
since v2.1 
 Brytek is an IBM Business Partner based 
in Vancouver, Canada 
 Currently focus on application 
development (Social Business, XPages, 
Mobile) 
 OpenNTF Contributor 
 Away from work 
Cyclist, Ride to Conquer Cancer
AD107: Don’t Put the Cart . . . 
Mike McGarel 
 Collaborative Solutions Developer at 
Czarnowski Display Service, Inc. 
Working with Notes/Domino since version 4.6 
Working on the Web for over 14 years 
 OpenNTF Contributor 
 Maintain MWLUG site
AD107: Don’t Put the Cart . . . 
Disclaimer 
We are 
Professionals, but 
NOT Experts (in 
this case anyway) 
 This advice is 
likely not Best 
Practices, but it is 
our experience in 
learning Java
AD107: Don’t Put the Cart . . . 
Midwest Biking Inc.
AD107: Don’t Put the Cart . . . 
Agenda 
Where to Begin 
 Planning Your Application 
 Shopping Cart Demo 
 Let’s Look at the Code 
 Lessons Learned and Cool Tips 
 Resources 
 Questions
AD107: Don’t Put the Cart . . . 
You Where to Begin? Are Here
AD107: Don’t Put the Cart . . . 
Why Java? 
 XPages is built on Java 
 SSJS is converted to Java 
 Futureproofs YOUR skill set 
 Syntax is not that different from LotusScript 
‘LotusScript 
Dim strName As String 
strName = “Schwinn” 
//Java 
String strName = “Schwinn”;
AD107: Don’t Put the Cart . . . 
“I Don’t Know What I Don’t Know”
AD107: Don’t Put the Cart . . . 
“Checking the Roadmap” 
Websites galore! 
 Blog posts 
 Notes in 9 videos 
 Books 
 Colleagues 
 Java APIs 
 Conference sessions
AD107: Don’t Put the Cart . . . 
Java “Rules of the Road” 
 Case sensitive 
 Mandatory semicolon; 
 XPages version is Java 6 
 Data types: Primitive vs. Class (double <> Double) 
Primitive (lower case), e.g., double, int, char 
Class (proper case), e.g., Double, Integer, String
AD107: Don’t Put the Cart . . . 
Don’t “Reinvent the Bicycle Wheel” 
 Example: String class has 72 methods!
AD107: Don’t Put the Cart . . . 
Collections 
 You will almost always use collections whenever you 
interact with a database 
 LotusScript has them, e.g., NotesDocumentCollection, 
ViewEntryCollection 
 Java has many more, e.g., ArrayList, Vector, HashMap, 
TreeMap, LinkedHashSet, TreeSet 
 List – stores index position 
 Map – has a key-value pairing 
 Set – no duplicates
AD107: Don’t Put the Cart . . . 
“Planning your route”
AD107: Don’t Put the Cart . . . 
Application Design 
 Front end UI 
 Functionality 
 Back end structure 
 Client-side code 
 Server-side code
AD107: Don’t Put the Cart . . . 
Java Class Design 
 Java classes needed 
 Order 
 Shopping cart 
 Cart item 
 Optional 
 Utility 
 Catalog 
Order 
ShoppingCart 
CCaartrIttIetemm CCaartrIttIetemm CartItem
AD107: Don’t Put the Cart . . . 
Class Elements 
 Properties 
 Often tied to form or document fields, e.g., 
 unit price for a cart item 
 if the cart contains items 
 Methods 
 Standard getters / setters 
 Custom, e.g., calculate cost (quantity x price)
AD107: Don’t Put the Cart . . . 
Java Beans (a canned explanation) 
A Java object defined by specific standards 
 Public Java class 
 Serializable 
 Private properties (optional) 
 Public constructor with no arguments 
 Public methods
AD107: Don’t Put the Cart . . . 
Sample Bean (outside) 
package com.mbi.shopping; 
import java.io.Serializable; 
/* other possible libraries */ 
public class Sample implements Serializable { 
private static final long serialVersionUID = 1L; 
private String myText; 
public Sample() { 
} 
public String getMyText() { 
return myText; 
} 
public void setMyText (String txt) { 
this.myText = txt; 
} 
}
AD107: Don’t Put the Cart . . . 
Sample Bean (inside) 
package com.mbi.shopping; 
import java.io.Serializable; 
/* other possible libraries */ 
public class Sample implements Serializable { 
private static final long serialVersionUID = 1L; 
private String myText; 
public Sample() { 
} 
public String getMyText() { 
return myText; 
} 
public void setMyText (String txt) { 
this.myText = txt; 
} 
}
AD107: Don’t Put the Cart . . . 
Shopping Cart Demo
AD107: Don’t Put the Cart . . . 
ShoppingCart Class 
 Properties: 
private LinkedHashMap<String,CartItem> cart; 
private BigDecimal totalCost; 
Why a LinkedHashMap ? 
 Keeps the insertion order 
 Uses a key,value structure 
 The key can be used on other parts of the page, 
e.g., "Add to Cart" button rendering
AD107: Don’t Put the Cart . . . 
LinkedHashMap Class Methods 
 .containsKey() 
 .get() 
 .isEmpty() 
 .put(K key, V value) 
 .size() 
 .values()
AD107: Don’t Put the Cart . . . 
XPage Code for “Add to Cart” Button 
<xp:button value="Add to Cart" id="btnAddToCart"> 
<xp:this.rendered> 
<![CDATA[#{javascript:var productId = productEntry.getColumnValues()[0]; 
!Order.containsKey(productId)}]]> 
</xp:this.rendered> 
<xp:eventHandler event="onclick" submit="true” refreshMode="partial" 
refreshId="content"> 
<xp:this.action> 
<![CDATA[#{javascript:var id = productEntry.getColumnValues()[0]; 
var name = productEntry.getColumnValues()[1]; 
var price = 
new java.math.BigDecimal(productEntry.getColumnValues()[4].toString()); 
var qty = new java.lang.Double(1); 
Order.addCartItem(name,id,price,qty)}]]> 
</xp:this.action> 
</xp:eventHandler> 
</xp:button>
AD107: Don’t Put the Cart . . . 
ShoppingCart Class Code for addCartItem 
public ShoppingCart() { 
this.cart = new LinkedHashMap<String,CartItem>(); 
totalCost = new BigDecimal(0); 
} 
public void addCartItem (String name, String id, 
BigDecimal price, Double quantity) { 
try { 
CartItem cartItem = new CartItem(); 
cartItem.load(name,id,price,quantity); 
cart.put(id,cartItem); 
calcTotalCost(); 
} catch (Exception ex) { 
ex.printStackTrace(); 
} 
}
AD107: Don’t Put the Cart . . . 
CartItem Class Properties 
Contains only what’s needed for processing, e.g., 
Name, ID, price, quantity, cost: 
private String itemName; 
private String itemId; 
private BigDecimal itemPrice; 
private Double itemQuantity; 
private BigDecimal itemCost;
AD107: Don’t Put the Cart . . . 
CartItem Class Methods 
Mostly getters / setters, e.g., 
public Double getItemQuantity() { 
return itemQuantity; 
} 
public void setItemQuantity (Double qty) { 
this.itemQuantity = qty; 
}
AD107: Don’t Put the Cart . . . 
CartItem Loading Method 
In ShoppingCart Class: 
CartItem cartItem = new CartItem(); 
cartItem.load(name,id,price,quantity); 
cart.put(id,cartItem); 
In CartItem Class: 
public void load (String name, String id, 
BigDecimal price, Double quantity) { 
setItemName(name); 
setItemId(id); 
setItemPrice(price); 
setItemQuantity(quantity); 
setItemCost(calcItemCost(quantity)); 
}
AD107: Don’t Put the Cart . . . 
Order Class 
 Managed bean 
 Instantly available 
 Loaded in faces-config.xml file 
Tip: available in 9.0.1 through Domino 
Designer without Package Explorer. 
Preferences > Domino Designer > 
Application Navigator > Application 
Configuration > Faces-config
AD107: Don’t Put the Cart . . . 
Faces-config.xml Sample 
<?xml version="1.0" encoding="UTF-8"?> 
<faces-config> 
<managed-bean> 
<managed-bean-name>Order</managed-bean-name> 
<managed-bean-class>com.mbi.shopping.Order 
</managed-bean-class> 
<managed-bean-scope>session</managed-bean-scope> 
</managed-bean> 
<!--AUTOGEN-START-BUILDER: Automatically generated 
by IBM Domino Designer. Do not modify.--> 
<!--AUTOGEN-END-BUILDER: End of automatically 
generated section--> 
</faces-config>
AD107: Don’t Put the Cart . . . 
Order Class Properties and Methods 
 Contains ShoppingCart property 
Wrapped methods for easier access, e.g., 
private ShoppingCart cart; 
public Order() { 
this.cart = new ShoppingCart(); 
} 
public void addCartItem (String name, String id, BigDecimal price, 
Double quantity) { 
this.cart.addCartItem(name,id,price,quantity); 
} 
public void removeCartItem (String key) { 
this.cart.removeCartItem(key); 
}
AD107: Don’t Put the Cart . . . 
Lessons Learned and Cool Tips
AD107: Don’t Put the Cart . . . 
Lesson Learned #1 – Number Field 
 Number value becomes JavaScript number 
(thanks to JSF number converter) 
 Equivalent to Java Double (the class not the primitive) 
 Originally used Integer class for the item quantity 
Integer or int reference results in type mismatch error 
Error not showing up using System.out.println 
Error display control worked, because problem was 
on the XPage itself
AD107: Don’t Put the Cart . . . 
Lesson Learned #2 – Date Fields 
 Java Calendar object
AD107: Don’t Put the Cart . . . 
Lesson Learned #2 – Date Fields
AD107: Don’t Put the Cart . . . 
Lesson Learned #2 – Date Fields
AD107: Don’t Put the Cart . . . 
Lesson Learned #3 – Try / Catch Blocks 
 Error management 
 Different from LotusScript 
 Not just errors
AD107: Don’t Put the Cart . . . 
Lesson Learned #4 – Managed Beans 
 Not every Java object need to be a managed bean 
 Where a bean is managed is also important 
 ApplicationScope 
 SessionScope 
 ViewScope 
 RequestScope 
 Depending on need, may copy from one scope to another 
 Be careful!
AD107: Don’t Put the Cart . . . 
Cool Tip #1 – To Do Reminder 
 Add to your Java code for a handy reminder 
Written as: TODO in any comment line
AD107: Don’t Put the Cart . . . 
Cool Tip #2 – Comparing Strings 
 Here is where your LotusScript background can bite you 
‘LotusScript 
Dim strName As String 
If (strName = “Schwinn”) Then 
‘ do some processing 
End If 
//Java 
String strName = "Schwinn"; 
if (strName == "Trek") { 
// do some processing 
// will always be FALSE! 
} 
Use this! 
if (strName.equals("Trek")) { 
// do some processing 
}
AD107: Don’t Put the Cart . . . 
Resources: Tutorials and Books 
 Tutorial on Collections 
http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html 
 Head First Java
AD107: Don’t Put the Cart . . . 
Resources: Websites 
 Java 6 API 
http://docs.oracle.com/javase/6/docs/api/ 
 Notes in 9 
http://www.notesin9.com 
 OpenNTF 
http://www.opentf.org 
 OpenNTF Domino API 
 Collaboration Today 
http://collaborationtoday.info 
 StackOverflow 
http://stackoverflow.com 
 How to Program With Java 
http://www.howtoprogramwithjava.com
AD107: Don’t Put the Cart . . . 
Resources: Community Blogs 
 Jesse Gallagher 
https://frostillic.us 
 Nathan Freeman 
http://nathanfreeman.wordpress.com 
 Paul Withers 
http://www.intec.co.uk/author/paulwithers/ 
 Declan Lynch 
http://www.qtzar.com 
 Tim Tripcony 
http://www.timtripcony.com/blog.nsf 
 Niklas Heidloff 
http://heidloff.net/
AD107: Don’t Put the Cart . . . 
“You’re On Your Way”
AD107: Don’t Put the Cart . . .
AD107: Don’t Put the Cart . . . 
Thank You! 
Graham Acres 
Blog - http://grahamacres.wordpress.com/ 
Twitter - @gacres99 
Email - graham.acres@brytek.ca 
Mike McGarel 
Blog - http://www.bleedyellow.com/blogs/McGarelGramming/ 
Twitter - @mmcgarel 
Email - mcgarelgramming@gmail.com
Questions???? 
7 
Use the Orange Arrow button to 
expand the GoToWebinar panel 
Then ask your questions in the 
Questions panel! 
Remember, we will answer your 
questions verbally
Question and Answer Time! 
Mike McGarel Graham Acres 
Upcoming Events: 
Paul Della-Nebbia Courtney Carter 
ConnectED, Orlando in January 
Engage, March 30/31 in Ghent, Belgium 
8 
Teamstudio Questions? 
contactus@teamstudio.com 
877-228-6178 
TLCC Questions? 
howardg@tlcc.com paul@tlcc.com 
888-241-8522 or 561-953-0095 
Howard Greenberg 
#XPages 
@mmcgarel 
@gacres99 
@TLCCLtd 
@Teamstudio 
@PaulDN 
To learn more about Java in XPages: 
Special offer for webinar attendees on TLCC’s Java Package
Ad

More Related Content

What's hot (20)

Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usabilityEngage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Johnny Oldenburger
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
Teamstudio
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPages
Ulrich Krause
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration
Kazuchika Sekiya
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
Marco Breveglieri
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
Ryan Cuprak
 
XPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 WebinarXPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 Webinar
Howard Greenberg
 
Html5 with SharePoint 2010
Html5 with SharePoint 2010Html5 with SharePoint 2010
Html5 with SharePoint 2010
Hemant Joshi
 
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 20102012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
Chris O'Connor
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
Teamstudio
 
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
Paul Withers
 
How To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages ApplicationHow To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages Application
Michael McGarel
 
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
IBM Connect 2016 - AD1548 - Building Responsive XPages ApplicationsIBM Connect 2016 - AD1548 - Building Responsive XPages Applications
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
beglee
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
Mark Leusink
 
Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010
Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010
Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010
Atlassian
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIXPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUI
Michael McGarel
 
Getting started with angular js
Getting started with angular jsGetting started with angular js
Getting started with angular js
Maurice De Beijer [MVP]
 
HTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery TrainingHTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery Training
ubshreenath
 
Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3
Karambir Singh Nain
 
A Work Day Of A Web Developer
A Work Day Of A Web DeveloperA Work Day Of A Web Developer
A Work Day Of A Web Developer
Edureka!
 
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usabilityEngage - Expanding XPages with Bootstrap Plugins for ultimate usability
Engage - Expanding XPages with Bootstrap Plugins for ultimate usability
Johnny Oldenburger
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
Teamstudio
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPages
Ulrich Krause
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration
Kazuchika Sekiya
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
Marco Breveglieri
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
Ryan Cuprak
 
XPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 WebinarXPages Application Layout Control - TLCC March, 2014 Webinar
XPages Application Layout Control - TLCC March, 2014 Webinar
Howard Greenberg
 
Html5 with SharePoint 2010
Html5 with SharePoint 2010Html5 with SharePoint 2010
Html5 with SharePoint 2010
Hemant Joshi
 
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 20102012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
Chris O'Connor
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
Teamstudio
 
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
Paul Withers
 
How To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages ApplicationHow To Build a Multi-Field Search Page For Your XPages Application
How To Build a Multi-Field Search Page For Your XPages Application
Michael McGarel
 
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
IBM Connect 2016 - AD1548 - Building Responsive XPages ApplicationsIBM Connect 2016 - AD1548 - Building Responsive XPages Applications
IBM Connect 2016 - AD1548 - Building Responsive XPages Applications
beglee
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
Mark Leusink
 
Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010
Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010
Go, Go, Gadgets: Building Gadgets for Atlassian Products - Atlassian Summit 2010
Atlassian
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIXPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUI
Michael McGarel
 
HTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery TrainingHTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery Training
ubshreenath
 
Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3Building a Better Web with HTML5 and CSS3
Building a Better Web with HTML5 and CSS3
Karambir Singh Nain
 
A Work Day Of A Web Developer
A Work Day Of A Web DeveloperA Work Day Of A Web Developer
A Work Day Of A Web Developer
Edureka!
 

Similar to Tips for Building your First XPages Java Application (20)

MWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App TipsMWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App Tips
Michael McGarel
 
How I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptHow I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScript
Kevin Read
 
Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8
Kevin Read
 
Awesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescriptAwesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescript
Amir Barylko
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
Mark Fayngersh
 
The Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your DeploymentThe Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your Deployment
Atlassian
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
Mats Bryntse
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
Erik Osterman
 
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys  How to Build a Successful Microsoft DevOps Including the DataDevOps and Decoys  How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
Kellyn Pot'Vin-Gorman
 
Designing salesforce solutions for reuse - Josh Dennis
Designing salesforce solutions for reuse - Josh DennisDesigning salesforce solutions for reuse - Josh Dennis
Designing salesforce solutions for reuse - Josh Dennis
Sakthivel Madesh
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Gil Irizarry
 
Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)
Julien SIMON
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
Bob German
 
Java Programming
Java ProgrammingJava Programming
Java Programming
Tracy Clark
 
SushantResume
SushantResumeSushantResume
SushantResume
Sushant Gavas
 
Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)
Julien SIMON
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
Techday7
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
Jamie Thomas
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
Mark Rackley
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
Brian Benz
 
MWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App TipsMWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App Tips
Michael McGarel
 
How I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScriptHow I learned to stop worrying and love embedding JavaScript
How I learned to stop worrying and love embedding JavaScript
Kevin Read
 
Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8Embedding V8 in Android apps with Ejecta-V8
Embedding V8 in Android apps with Ejecta-V8
Kevin Read
 
Awesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescriptAwesome html with ujs, jQuery and coffeescript
Awesome html with ujs, jQuery and coffeescript
Amir Barylko
 
The State of Front-end At CrowdTwist
The State of Front-end At CrowdTwistThe State of Front-end At CrowdTwist
The State of Front-end At CrowdTwist
Mark Fayngersh
 
The Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your DeploymentThe Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your Deployment
Atlassian
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
Mats Bryntse
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
Erik Osterman
 
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys  How to Build a Successful Microsoft DevOps Including the DataDevOps and Decoys  How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
Kellyn Pot'Vin-Gorman
 
Designing salesforce solutions for reuse - Josh Dennis
Designing salesforce solutions for reuse - Josh DennisDesigning salesforce solutions for reuse - Josh Dennis
Designing salesforce solutions for reuse - Josh Dennis
Sakthivel Madesh
 
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Make Cross-platform Mobile Apps Quickly - SIGGRAPH 2014
Gil Irizarry
 
Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)
Julien SIMON
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
Bob German
 
Java Programming
Java ProgrammingJava Programming
Java Programming
Tracy Clark
 
Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)Scaling Machine Learning from zero to millions of users (May 2019)
Scaling Machine Learning from zero to millions of users (May 2019)
Julien SIMON
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
Techday7
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
Jamie Thomas
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
Mark Rackley
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
Brian Benz
 
Ad

More from Teamstudio (20)

Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or MigratingSearch Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Teamstudio
 
SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!
Teamstudio
 
Back from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good ServerBack from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good Server
Teamstudio
 
Understand Usage with Detailed Access Information
Understand Usage with Detailed Access InformationUnderstand Usage with Detailed Access Information
Understand Usage with Detailed Access Information
Teamstudio
 
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
Teamstudio
 
Marty, You're Just Not Thinking Fourth Dimensionally
Marty, You're Just Not Thinking Fourth DimensionallyMarty, You're Just Not Thinking Fourth Dimensionally
Marty, You're Just Not Thinking Fourth Dimensionally
Teamstudio
 
IBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino RoadmapIBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino Roadmap
Teamstudio
 
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
Teamstudio
 
Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections
Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections
Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections
Teamstudio
 
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityExpanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Teamstudio
 
Optimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep DiveOptimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep Dive
Teamstudio
 
Understand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage AuditorUnderstand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage Auditor
Teamstudio
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
Teamstudio
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast Lane
Teamstudio
 
An Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller PatternAn Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller Pattern
Teamstudio
 
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Teamstudio
 
Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?
Teamstudio
 
App.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application DevelopmentApp.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application Development
Teamstudio
 
Transformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPagesTransformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPages
Teamstudio
 
Presenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View ControlPresenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View Control
Teamstudio
 
Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or MigratingSearch Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Search Terms and Design Complexity: A Tutorial Before Modernizing or Migrating
Teamstudio
 
SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!
Teamstudio
 
Back from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good ServerBack from the Dead: When Bad Code Kills a Good Server
Back from the Dead: When Bad Code Kills a Good Server
Teamstudio
 
Understand Usage with Detailed Access Information
Understand Usage with Detailed Access InformationUnderstand Usage with Detailed Access Information
Understand Usage with Detailed Access Information
Teamstudio
 
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
IBM Presents the Notes Domino Roadmap and a Deep Dive into Feature Pack 8
Teamstudio
 
Marty, You're Just Not Thinking Fourth Dimensionally
Marty, You're Just Not Thinking Fourth DimensionallyMarty, You're Just Not Thinking Fourth Dimensionally
Marty, You're Just Not Thinking Fourth Dimensionally
Teamstudio
 
IBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino RoadmapIBM Presents the IBM Notes and Domino Roadmap
IBM Presents the IBM Notes and Domino Roadmap
Teamstudio
 
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
XPages and jQuery DataTables: Simplifying View Creation while Maximizing Func...
Teamstudio
 
Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections
Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections
Take a Trip Into the Forest: A Java Primer on Maps, Trees, and Collections
Teamstudio
 
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityExpanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Teamstudio
 
Optimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep DiveOptimus XPages Part 2: The Deep Dive
Optimus XPages Part 2: The Deep Dive
Teamstudio
 
Understand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage AuditorUnderstand the True Business Usage of Notes Applications with Usage Auditor
Understand the True Business Usage of Notes Applications with Usage Auditor
Teamstudio
 
Optimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best PracticesOptimus XPages: An Explosion of Techniques and Best Practices
Optimus XPages: An Explosion of Techniques and Best Practices
Teamstudio
 
Move Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast LaneMove Your XPages Applications to the Fast Lane
Move Your XPages Applications to the Fast Lane
Teamstudio
 
An Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller PatternAn Introduction to the Model-View-Controller Pattern
An Introduction to the Model-View-Controller Pattern
Teamstudio
 
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Mobilisez vos Applications IBM Notes avec Teamstudio Unplugged ! (French Lang...
Teamstudio
 
Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?Domino, Notes, and Verse - Where are We and Whats the Future?
Domino, Notes, and Verse - Where are We and Whats the Future?
Teamstudio
 
App.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application DevelopmentApp.Next - The Future of Domino Application Development
App.Next - The Future of Domino Application Development
Teamstudio
 
Transformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPagesTransformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPages
Teamstudio
 
Presenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View ControlPresenting Data – An Alternative to the View Control
Presenting Data – An Alternative to the View Control
Teamstudio
 
Ad

Recently uploaded (20)

Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 

Tips for Building your First XPages Java Application

  • 1. Tips for Building Your First XPages Java Application Tweet about this event And mention us: @Teamstudio @TLCCLTD @mmcgarel @gacres99 Dec. 2, 2014
  • 2. @Teamstudio teamstudio.com @TLCCLTD tlcc.com Courtney Carter Inbound Marketing Specialist Teamstudio
  • 3. Who We Are • Teamstudio’s background is in creating tools for collaborative computing in mid-size and large enterprises, primarily for IBM Notes • Easy-to-use tools for developers and administrators • 2300+ active customers, 47 countries • Offices in US, UK, and Japan • Entered mobile space in 2010 with Unplugged: easy mobilization of Notes apps to Blackberry, Android and iOS
  • 4. Teamstudio Unplugged • Your mobile Domino server: take your IBM Notes apps with you! • End-users access Notes applications from mobile devices whether online or offline • Leverages the powerful technology of XPages • Unplugged v3.1
  • 5. Unplugged Templates • Continuity – Mobile offline access to BCM programs • OneView Approvals – Expense approvals; anywhere, anytime • CustomerView – lightweight CRM framework for field sales and field service teams • Contacts – customer information database • Activities – customer activity log • Media – mobile offline file storage and access
  • 6. XControls • Set of Controls for IBM Domino XPage developers working on new XPages apps and on app modernization projects • Re-write of the Teamstudio Unplugged Controls project, but adds full support for PC browser-based user interfaces as well as mobile interfaces • Enables XPage developers to create controls that are responsive • Learn more: http://xcontrols.org
  • 7. Teamstudio Services • Professional services for project management, development, administration, and modernization o Modernization Services o Unplugged Developer Assistance Program o Application Upgrade Analysis o Application Complexity Analysis o Application Usage Auditing • http://www.teamstudio.com/solutions/services/
  • 8. • Modernization Services promotion: o Now through December 15, sign up to learn about our Modernization Services, and be automatically entered to win an iPhone 6.
  • 9. 1 #XPages Tips for your First Java XPages Application Your Hosts Today: Howard Greenberg TLCC @TLCCLtd Paul Della-Nebbia TLCC @PaulDN
  • 10. How can TLCC Help YOU! 2 • Private classes at your location or virtual •XPages Development •Support Existing Apps •Administration • Let us help you become an expert XPages developer! • Delivered via Notes • XPages • Development • Admin • User Self- Paced Courses Mentoring Instructor- Led Classes Application Development and Consulting Free Demo Courses!
  • 11. TLCC Java Courses and Package for XPages Developers Java 1 for XPages Development (9.0) • Covers the Java Language Java 2 for XPages Development • Debugging • Expression Language • JavaBeans and Managed Beans • Third Party Java Libraries • Exporting to PDF and Excel files • On Sale for $599, save $300 Java for XPages Package • Has both Java courses • On Sale for only $999, save $500 3 Sale prices good through 12/31/2014 Click here for more information on the Java courses
  • 12. Upcoming and Recorded Webinars 4 • Future webinars for 2015 to be announced later this month www.tlcc.com/xpages-webinar View Previous Webinars (use url above)
  • 13. Asking Questions – Q and A at the end 5 Use the Orange Arrow button to expand the GoToWebinar panel Then ask your questions in the Questions pane! We will answer your questions verbally at the end of the webinar
  • 14. Your Presenters Today: 6 Graham Acres Brytek Systems @gacres99 #XPages Mike McGarel Czarnowski @mmcgarel
  • 15. AD107: Don’t Put the Cart . . . Graham Acres  IBM Lotus Notes Developer/Designer since v2.1  Brytek is an IBM Business Partner based in Vancouver, Canada  Currently focus on application development (Social Business, XPages, Mobile)  OpenNTF Contributor  Away from work Cyclist, Ride to Conquer Cancer
  • 16. AD107: Don’t Put the Cart . . . Mike McGarel  Collaborative Solutions Developer at Czarnowski Display Service, Inc. Working with Notes/Domino since version 4.6 Working on the Web for over 14 years  OpenNTF Contributor  Maintain MWLUG site
  • 17. AD107: Don’t Put the Cart . . . Disclaimer We are Professionals, but NOT Experts (in this case anyway)  This advice is likely not Best Practices, but it is our experience in learning Java
  • 18. AD107: Don’t Put the Cart . . . Midwest Biking Inc.
  • 19. AD107: Don’t Put the Cart . . . Agenda Where to Begin  Planning Your Application  Shopping Cart Demo  Let’s Look at the Code  Lessons Learned and Cool Tips  Resources  Questions
  • 20. AD107: Don’t Put the Cart . . . You Where to Begin? Are Here
  • 21. AD107: Don’t Put the Cart . . . Why Java?  XPages is built on Java  SSJS is converted to Java  Futureproofs YOUR skill set  Syntax is not that different from LotusScript ‘LotusScript Dim strName As String strName = “Schwinn” //Java String strName = “Schwinn”;
  • 22. AD107: Don’t Put the Cart . . . “I Don’t Know What I Don’t Know”
  • 23. AD107: Don’t Put the Cart . . . “Checking the Roadmap” Websites galore!  Blog posts  Notes in 9 videos  Books  Colleagues  Java APIs  Conference sessions
  • 24. AD107: Don’t Put the Cart . . . Java “Rules of the Road”  Case sensitive  Mandatory semicolon;  XPages version is Java 6  Data types: Primitive vs. Class (double <> Double) Primitive (lower case), e.g., double, int, char Class (proper case), e.g., Double, Integer, String
  • 25. AD107: Don’t Put the Cart . . . Don’t “Reinvent the Bicycle Wheel”  Example: String class has 72 methods!
  • 26. AD107: Don’t Put the Cart . . . Collections  You will almost always use collections whenever you interact with a database  LotusScript has them, e.g., NotesDocumentCollection, ViewEntryCollection  Java has many more, e.g., ArrayList, Vector, HashMap, TreeMap, LinkedHashSet, TreeSet  List – stores index position  Map – has a key-value pairing  Set – no duplicates
  • 27. AD107: Don’t Put the Cart . . . “Planning your route”
  • 28. AD107: Don’t Put the Cart . . . Application Design  Front end UI  Functionality  Back end structure  Client-side code  Server-side code
  • 29. AD107: Don’t Put the Cart . . . Java Class Design  Java classes needed  Order  Shopping cart  Cart item  Optional  Utility  Catalog Order ShoppingCart CCaartrIttIetemm CCaartrIttIetemm CartItem
  • 30. AD107: Don’t Put the Cart . . . Class Elements  Properties  Often tied to form or document fields, e.g.,  unit price for a cart item  if the cart contains items  Methods  Standard getters / setters  Custom, e.g., calculate cost (quantity x price)
  • 31. AD107: Don’t Put the Cart . . . Java Beans (a canned explanation) A Java object defined by specific standards  Public Java class  Serializable  Private properties (optional)  Public constructor with no arguments  Public methods
  • 32. AD107: Don’t Put the Cart . . . Sample Bean (outside) package com.mbi.shopping; import java.io.Serializable; /* other possible libraries */ public class Sample implements Serializable { private static final long serialVersionUID = 1L; private String myText; public Sample() { } public String getMyText() { return myText; } public void setMyText (String txt) { this.myText = txt; } }
  • 33. AD107: Don’t Put the Cart . . . Sample Bean (inside) package com.mbi.shopping; import java.io.Serializable; /* other possible libraries */ public class Sample implements Serializable { private static final long serialVersionUID = 1L; private String myText; public Sample() { } public String getMyText() { return myText; } public void setMyText (String txt) { this.myText = txt; } }
  • 34. AD107: Don’t Put the Cart . . . Shopping Cart Demo
  • 35. AD107: Don’t Put the Cart . . . ShoppingCart Class  Properties: private LinkedHashMap<String,CartItem> cart; private BigDecimal totalCost; Why a LinkedHashMap ?  Keeps the insertion order  Uses a key,value structure  The key can be used on other parts of the page, e.g., "Add to Cart" button rendering
  • 36. AD107: Don’t Put the Cart . . . LinkedHashMap Class Methods  .containsKey()  .get()  .isEmpty()  .put(K key, V value)  .size()  .values()
  • 37. AD107: Don’t Put the Cart . . . XPage Code for “Add to Cart” Button <xp:button value="Add to Cart" id="btnAddToCart"> <xp:this.rendered> <![CDATA[#{javascript:var productId = productEntry.getColumnValues()[0]; !Order.containsKey(productId)}]]> </xp:this.rendered> <xp:eventHandler event="onclick" submit="true” refreshMode="partial" refreshId="content"> <xp:this.action> <![CDATA[#{javascript:var id = productEntry.getColumnValues()[0]; var name = productEntry.getColumnValues()[1]; var price = new java.math.BigDecimal(productEntry.getColumnValues()[4].toString()); var qty = new java.lang.Double(1); Order.addCartItem(name,id,price,qty)}]]> </xp:this.action> </xp:eventHandler> </xp:button>
  • 38. AD107: Don’t Put the Cart . . . ShoppingCart Class Code for addCartItem public ShoppingCart() { this.cart = new LinkedHashMap<String,CartItem>(); totalCost = new BigDecimal(0); } public void addCartItem (String name, String id, BigDecimal price, Double quantity) { try { CartItem cartItem = new CartItem(); cartItem.load(name,id,price,quantity); cart.put(id,cartItem); calcTotalCost(); } catch (Exception ex) { ex.printStackTrace(); } }
  • 39. AD107: Don’t Put the Cart . . . CartItem Class Properties Contains only what’s needed for processing, e.g., Name, ID, price, quantity, cost: private String itemName; private String itemId; private BigDecimal itemPrice; private Double itemQuantity; private BigDecimal itemCost;
  • 40. AD107: Don’t Put the Cart . . . CartItem Class Methods Mostly getters / setters, e.g., public Double getItemQuantity() { return itemQuantity; } public void setItemQuantity (Double qty) { this.itemQuantity = qty; }
  • 41. AD107: Don’t Put the Cart . . . CartItem Loading Method In ShoppingCart Class: CartItem cartItem = new CartItem(); cartItem.load(name,id,price,quantity); cart.put(id,cartItem); In CartItem Class: public void load (String name, String id, BigDecimal price, Double quantity) { setItemName(name); setItemId(id); setItemPrice(price); setItemQuantity(quantity); setItemCost(calcItemCost(quantity)); }
  • 42. AD107: Don’t Put the Cart . . . Order Class  Managed bean  Instantly available  Loaded in faces-config.xml file Tip: available in 9.0.1 through Domino Designer without Package Explorer. Preferences > Domino Designer > Application Navigator > Application Configuration > Faces-config
  • 43. AD107: Don’t Put the Cart . . . Faces-config.xml Sample <?xml version="1.0" encoding="UTF-8"?> <faces-config> <managed-bean> <managed-bean-name>Order</managed-bean-name> <managed-bean-class>com.mbi.shopping.Order </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <!--AUTOGEN-START-BUILDER: Automatically generated by IBM Domino Designer. Do not modify.--> <!--AUTOGEN-END-BUILDER: End of automatically generated section--> </faces-config>
  • 44. AD107: Don’t Put the Cart . . . Order Class Properties and Methods  Contains ShoppingCart property Wrapped methods for easier access, e.g., private ShoppingCart cart; public Order() { this.cart = new ShoppingCart(); } public void addCartItem (String name, String id, BigDecimal price, Double quantity) { this.cart.addCartItem(name,id,price,quantity); } public void removeCartItem (String key) { this.cart.removeCartItem(key); }
  • 45. AD107: Don’t Put the Cart . . . Lessons Learned and Cool Tips
  • 46. AD107: Don’t Put the Cart . . . Lesson Learned #1 – Number Field  Number value becomes JavaScript number (thanks to JSF number converter)  Equivalent to Java Double (the class not the primitive)  Originally used Integer class for the item quantity Integer or int reference results in type mismatch error Error not showing up using System.out.println Error display control worked, because problem was on the XPage itself
  • 47. AD107: Don’t Put the Cart . . . Lesson Learned #2 – Date Fields  Java Calendar object
  • 48. AD107: Don’t Put the Cart . . . Lesson Learned #2 – Date Fields
  • 49. AD107: Don’t Put the Cart . . . Lesson Learned #2 – Date Fields
  • 50. AD107: Don’t Put the Cart . . . Lesson Learned #3 – Try / Catch Blocks  Error management  Different from LotusScript  Not just errors
  • 51. AD107: Don’t Put the Cart . . . Lesson Learned #4 – Managed Beans  Not every Java object need to be a managed bean  Where a bean is managed is also important  ApplicationScope  SessionScope  ViewScope  RequestScope  Depending on need, may copy from one scope to another  Be careful!
  • 52. AD107: Don’t Put the Cart . . . Cool Tip #1 – To Do Reminder  Add to your Java code for a handy reminder Written as: TODO in any comment line
  • 53. AD107: Don’t Put the Cart . . . Cool Tip #2 – Comparing Strings  Here is where your LotusScript background can bite you ‘LotusScript Dim strName As String If (strName = “Schwinn”) Then ‘ do some processing End If //Java String strName = "Schwinn"; if (strName == "Trek") { // do some processing // will always be FALSE! } Use this! if (strName.equals("Trek")) { // do some processing }
  • 54. AD107: Don’t Put the Cart . . . Resources: Tutorials and Books  Tutorial on Collections http://docs.oracle.com/javase/tutorial/collections/interfaces/index.html  Head First Java
  • 55. AD107: Don’t Put the Cart . . . Resources: Websites  Java 6 API http://docs.oracle.com/javase/6/docs/api/  Notes in 9 http://www.notesin9.com  OpenNTF http://www.opentf.org  OpenNTF Domino API  Collaboration Today http://collaborationtoday.info  StackOverflow http://stackoverflow.com  How to Program With Java http://www.howtoprogramwithjava.com
  • 56. AD107: Don’t Put the Cart . . . Resources: Community Blogs  Jesse Gallagher https://frostillic.us  Nathan Freeman http://nathanfreeman.wordpress.com  Paul Withers http://www.intec.co.uk/author/paulwithers/  Declan Lynch http://www.qtzar.com  Tim Tripcony http://www.timtripcony.com/blog.nsf  Niklas Heidloff http://heidloff.net/
  • 57. AD107: Don’t Put the Cart . . . “You’re On Your Way”
  • 58. AD107: Don’t Put the Cart . . .
  • 59. AD107: Don’t Put the Cart . . . Thank You! Graham Acres Blog - http://grahamacres.wordpress.com/ Twitter - @gacres99 Email - [email protected] Mike McGarel Blog - http://www.bleedyellow.com/blogs/McGarelGramming/ Twitter - @mmcgarel Email - [email protected]
  • 60. Questions???? 7 Use the Orange Arrow button to expand the GoToWebinar panel Then ask your questions in the Questions panel! Remember, we will answer your questions verbally
  • 61. Question and Answer Time! Mike McGarel Graham Acres Upcoming Events: Paul Della-Nebbia Courtney Carter ConnectED, Orlando in January Engage, March 30/31 in Ghent, Belgium 8 Teamstudio Questions? [email protected] 877-228-6178 TLCC Questions? [email protected] [email protected] 888-241-8522 or 561-953-0095 Howard Greenberg #XPages @mmcgarel @gacres99 @TLCCLtd @Teamstudio @PaulDN To learn more about Java in XPages: Special offer for webinar attendees on TLCC’s Java Package