SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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 usabilityJohnny Oldenburger
 
Everything XControls
Everything XControlsEverything XControls
Everything XControlsTeamstudio
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPagesUlrich Krause
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web IntegrationKazuchika 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 2016Marco Breveglieri
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014Ryan 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 WebinarHoward Greenberg
 
Html5 with SharePoint 2010
Html5 with SharePoint 2010Html5 with SharePoint 2010
Html5 with SharePoint 2010Hemant 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 2010Chris O'Connor
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPagesTeamstudio
 
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 ApplicationMichael 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 Applicationsbeglee
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinarMark 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 2010Atlassian
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIXPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIMichael McGarel
 
HTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery TrainingHTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery Trainingubshreenath
 
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 CSS3Karambir 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 DeveloperEdureka!
 

La actualidad más candente (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
 
Everything XControls
Everything XControlsEverything XControls
Everything XControls
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPages
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration
 
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
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
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
 
Html5 with SharePoint 2010
Html5 with SharePoint 2010Html5 with SharePoint 2010
Html5 with SharePoint 2010
 
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
 
Building Responsive Applications Using XPages
Building Responsive Applications Using XPagesBuilding Responsive Applications Using XPages
Building Responsive Applications Using XPages
 
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...
 
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
 
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
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
 
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
 
XPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUIXPages Workshop: Customizing OneUI
XPages Workshop: Customizing OneUI
 
Getting started with angular js
Getting started with angular jsGetting started with angular js
Getting started with angular js
 
HTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery TrainingHTML CSS JavaScript jQuery Training
HTML CSS JavaScript jQuery Training
 
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
 
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
 

Similar a Tips for Building your First XPages Java Application

MWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App TipsMWLUG2014 AD107 First Java App Tips
MWLUG2014 AD107 First Java App TipsMichael 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 JavaScriptKevin 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-V8Kevin 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 coffeescriptAmir 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 CrowdTwistMark 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 DeploymentAtlassian
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchMats Bryntse
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsErik 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 DataKellyn 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 DennisSakthivel 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 2014Gil 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 FrameworkBob German
 
Java Programming
Java ProgrammingJava Programming
Java ProgrammingTracy 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 TitaniumTechday7
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teamsJamie Thomas
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsMark 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 teamBrian Benz
 

Similar a 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
 
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
 
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
 
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
 
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
 
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
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
 
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
 
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
 
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
 
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)
 
TypeScript and SharePoint Framework
TypeScript and SharePoint FrameworkTypeScript and SharePoint Framework
TypeScript and SharePoint Framework
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
SushantResume
SushantResumeSushantResume
SushantResume
 
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)
 
Getting started with Appcelerator Titanium
Getting started with Appcelerator TitaniumGetting started with Appcelerator Titanium
Getting started with Appcelerator Titanium
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
 
SharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentialsSharePoint Cincy 2012 - jQuery essentials
SharePoint Cincy 2012 - jQuery essentials
 
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
 

Más de 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 MigratingTeamstudio
 
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 ServerTeamstudio
 
Understand Usage with Detailed Access Information
Understand Usage with Detailed Access InformationUnderstand Usage with Detailed Access Information
Understand Usage with Detailed Access InformationTeamstudio
 
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 8Teamstudio
 
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 DimensionallyTeamstudio
 
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 RoadmapTeamstudio
 
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 UsabilityTeamstudio
 
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 DiveTeamstudio
 
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 AuditorTeamstudio
 
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 PracticesTeamstudio
 
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 LaneTeamstudio
 
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 PatternTeamstudio
 
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 DevelopmentTeamstudio
 
Transformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPagesTransformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPagesTeamstudio
 
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 ControlTeamstudio
 

Más de 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
 
SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!SmartNSF - 100% Smart - and in Color!
SmartNSF - 100% Smart - and in Color!
 
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
 
Understand Usage with Detailed Access Information
Understand Usage with Detailed Access InformationUnderstand Usage with Detailed Access Information
Understand Usage with Detailed Access Information
 
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
 
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
 
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
 
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...
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
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...
 
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?
 
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
 
Transformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPagesTransformations: Smart Application Migration to XPages
Transformations: Smart Application Migration to XPages
 
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
 

Último

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Último (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

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 - graham.acres@brytek.ca Mike McGarel Blog - http://www.bleedyellow.com/blogs/McGarelGramming/ Twitter - @mmcgarel Email - mcgarelgramming@gmail.com
  • 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? 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