SlideShare a Scribd company logo
Chris Bailey @Chris__Bailey
STSM, Runtime Technologies
Java, Node.js and Swift:
Which, When and Why
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and Swift
6 1/17/17
7 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Application Tier Database Tier
8 1/17/17
0	
10	
20	
30	
40	
50	
60	
01/02/12	
01/08/12	
01/02/13	
01/08/13	
01/02/14	
01/08/14	
01/02/15	
01/08/15	
01/02/16	
01/08/16	
Java	
JavaScript	
		
9 1/17/17
Redmonk Programming Languages Rankings
http://redmonk.com/sogrady/category/programming-languages/
0	
10	
20	
30	
40	
50	
60	
01/02/12	
01/08/12	
01/02/13	
01/08/13	
01/02/14	
01/08/14	
01/02/15	
01/08/15	
01/02/16	
01/08/16	
Java	
JavaScript	
		
10 1/17/17
Redmonk Programming Languages Rankings
http://redmonk.com/sogrady/category/programming-languages/
0	
10	
20	
30	
40	
50	
60	
01/02/12	
01/08/12	
01/02/13	
01/08/13	
01/02/14	
01/08/14	
01/02/15	
01/08/15	
01/02/16	
01/08/16	
Java	
JavaScript	
Swi5	
11 1/17/17
Redmonk Programming Languages Rankings
http://redmonk.com/sogrady/category/programming-languages/
12
13
Runtime Language
14
Scripting LanguageRuntime Language
15
Scripting Language Modern Native LanguageRuntime Language
16
Type Safe Type Safe, with InferenceDynamically Typed
Scripting Language Modern Native LanguageRuntime Language
17
Type Safe Type Safe, with InferenceDynamically Typed
Scripting Language Modern Native LanguageRuntime Language
Pre-Compiled and JIT Compiled JIT Compiled Pre-Compiled
18
Type Safe Type Safe, with InferenceDynamically Typed
Garbage Collected
Scripting Language Modern Native LanguageRuntime Language
Garbage Collected Reference Counted
JIT Compiled Pre-CompiledPre-Compiled and JIT Compiled
19
Type Safe Type Safe, with InferenceDynamically Typed
Threaded Multi-CPU
Garbage Collected
Scripting Language Modern Native LanguageRuntime Language
Garbage Collected Reference Counted
Async Single CPU Async Multi-CPU
JIT Compiled Pre-CompiledPre-Compiled and JIT Compiled
20
Type Safety
Swift @ IBM
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = 5;
var b = 3;
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = 5
let b = 3
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = 5;
var b = 3;
add(a, b);
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = 5
let b = 3
add(a, to: b)
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = 5;
var b = 3;
add(a, b);
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = 5
let b = 3
add(a, to: b)
> swiftc main.swift
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = 5;
var b = 3;
add(a, b);
> node app.js
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = 5
let b = 3
add(a, to: b)
> swiftc main.swift
> main
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = 5;
var b = 3;
add(a, b);
> node app.js
8
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = 5
let b = 3
add(a, to: b)
> swiftc main.swift
> main
8
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = '5';
var b = 3;
add(a, b);
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = ”5”
let b = 3
add(a, to: b)
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = '5';
var b = 3;
add(a, b);
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = ”5”
let b = 3
add(a, to: b)
> swiftc main.swift

Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = '5';
var b = 3;
add(a, b);
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = ”5”
let b = 3
add(a, to: b)
> swiftc main.swift

> Error line 6: Cannot convert value of
type ‘String’ into argument of type ‘Int’
Swift Node.js
Swift @ IBM
var add = function (a, b) {
console.log(a + b);
}
var a = '5';
var b = 3;
add(a, b);
> node app.js
> 53
func add(_ a: Int, to b: Int) -> Void {
print(a + b)
}
let a = ”5”
let b = 3
add(a, to: b)
> swiftc main.swift


> Error line 6: Cannot convert value of
type ‘String’ into argument of type ‘Int’
Swift Node.js
34
Performance
Runtime cost of dynamic typing
func add(_ a: Int, to b: Int) -> Int {
return(a + b)
}
Runtime cost of dynamic typing
func add(_ a: Int, to b: Int) -> Int {
return(a + b)
}
Runtime cost of dynamic typing
func add(_ a: Int, to b: Int) -> Int {
return(a + b)
}
addi
Runtime cost of dynamic typing
var add = function (a, b) {
return(a + b);
}
Check type of
A
var add = function (a, b) {
return(a + b);
}
Runtime cost of dynamic typing
Check type of
A
String
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringCheck type of
B
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate Check type of
B
String
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringNumber
Concatenate Check type of
B
String
Convert Number

to String
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringNumber
Concatenate Check type of
B
String
Convert Number

to String
Concatenate
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate Check type of
B
String NumberNumber
Convert Number

to String
Concatenate
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate Check type of
B
Check type of
B
String NumberNumber
Convert Number

to String
Concatenate
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate Check type of
B
Check type of
B
StringString NumberNumber
Convert Number

to String
Concatenate
Convert Number

to String
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate Check type of
B
Check type of
B
StringString NumberNumber
Convert Number

to String
Concatenate
Convert Number

to String
Concatenate
var add = function (a, b) {
return(a + b);
}
Convert Number

to String
Check type of
A
StringConcatenate Check type of
B
Check type of
B
StringString NumberNumber
Convert Number

to String
Concatenate
Concatenate
Number
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate
Floating

Point or

Normal
Check type of
B
Check type of
B
StringString NumberNumber
Convert Number

to String
Concatenate
Concatenate
Number
Convert Number

to String
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate
Floating

Point or

Normal
Float Calculation
Check type of
B
Check type of
B
StringString
Float
NumberNumber
Convert Number

to String
Concatenate
Concatenate
Number
Convert Number

to String
var add = function (a, b) {
return(a + b);
}
Check type of
A
StringConcatenate
Floating

Point or

Normal
Normal Add InstructionFloat Calculation
Check type of
B
Check type of
B
StringString
Float
NumberNumber
Convert Number

to String
Concatenate
Concatenate
Number
Convert Number

to String
var add = function (a, b) {
return(a + b);
}
0	
2	
4	
6	
8	
10	
12	
14	
16	
18	
				
Duration(s)
(lowerisbetter)
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Performance
4	
0	
2	
4	
6	
8	
10	
12	
14	
16	
18	
				
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Performance
Duration(s)
(lowerisbetter)
4	 4.3	
0	
2	
4	
6	
8	
10	
12	
14	
16	
18	
				
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Performance
Duration(s)
(lowerisbetter)
4	 4.3	
15.8	
0	
2	
4	
6	
8	
10	
12	
14	
16	
18	
				
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Performance
Duration(s)
(lowerisbetter)
0
20
40
60
80
100
120
JSON	Serialization Single	Query Data	Updates
TechEmpower	Performance
(%age	of	best	- higher	is	better)
Node.js
Java
Increasing levels of I/O
58
Developer

Productivity
0	
100	
200	
300	
400	
500	
600	
700	
800	
900	
1000	
VolumeofCode
(lowerisbetter)
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Developer Productivity
601	
0	
100	
200	
300	
400	
500	
600	
700	
800	
900	
1000	
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Developer Productivity
VolumeofCode
(lowerisbetter)
VolumeofCode
(lowerisbetter)
601	
950	
0	
100	
200	
300	
400	
500	
600	
700	
800	
900	
1000	
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Developer Productivity
VolumeofCode
(lowerisbetter)
VolumeofCode
(lowerisbetter)
601	
950	
413	
0	
100	
200	
300	
400	
500	
600	
700	
800	
900	
1000	
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
Typed vs Untyped Developer Productivity
VolumeofCode
(lowerisbetter)
VolumeofCode
(lowerisbetter)
IBM Cloud University: Java, Node.js and Swift
64
Memory Management
Memory
Heap Size
Memory
Live in-use data
(Retained Set)
Heap Size
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
40 to 60%
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
40 to 60%
~2X additional memory for additional performance
0	
5	
10	
15	
20	
25	
30	
35	
			
ARC vs Garage Collection
MemoryUsage(MB)
(lowerisbetter)
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
15	
0	
5	
10	
15	
20	
25	
30	
35	
			
ARC vs Garage Collection
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
MemoryUsage(MB)
(lowerisbetter)
15	
32.2	
0	
5	
10	
15	
20	
25	
30	
35	
			
ARC vs Garage Collection
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
MemoryUsage(MB)
(lowerisbetter)
15	
32.2	
25.3	
0	
5	
10	
15	
20	
25	
30	
35	
			
ARC vs Garage Collection
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
MemoryUsage(MB)
(lowerisbetter)
Cloud Costs
Provider Type Memory CPUs Cost/month
Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68
Digital Ocean Standard 512MB 1 Core Processor US$5.00
Pivotal Cloud
Foundry
App Instance 512MB 4 vCPUs US$10.80
Heroku Standard 1x 512MB 1 Share US$25.00
IBM Bluemix Instant
Runtimes
512MB 4 vCPUs US$24.15
Containers 512MB 4 vCPUs US$10.22
Cloud Costs
Provider Type Memory CPUs Cost/month
Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68
Linux t2.micro 1GB 1 vCPU US$9.36
Digital Ocean Standard 512MB 1 Core Processor US$5.00
Standard 1GB 1 Core Processor US$10.00
Pivotal Cloud
Foundry
App Instance 512MB 4 vCPUs US$10.80
App Instance 1GB 4 vCPUs US$21.60
Heroku Standard 1x 512MB 1 Share US$25.00
Standard 2x 1GB 2 Shares US$50.00
IBM Bluemix Instant
Runtimes
512MB 4 vCPUs US$24.15
Instant
Runtimes
1GB 4 vCPUs US$49.35
Containers 512MB 4 vCPUs US$10.22
Containers 1GB 4 vCPUs US$20.59
Cloud Costs
Provider Type Memory CPUs Cost/month
Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68
Linux t2.micro 1GB 1 vCPU US$9.36
Linux t2.small 2GB 1 vCPU US$18.72
Digital Ocean Standard 512MB 1 Core Processor US$5.00
Standard 1GB 1 Core Processor US$10.00
Standard 2GB 2 Core
Processors
US$20.00
Pivotal Cloud
Foundry
App Instance 512MB 4 vCPUs US$10.80
App Instance 1GB 4 vCPUs US$21.60
App Instance 2GB 4 vCPUs US$43.20
Heroku Standard 1x 512MB 1 Share US$25.00
Standard 2x 1GB 2 Shares US$50.00
IBM Bluemix Instant
Runtimes
512MB 4 vCPUs US$24.15
Instant
Runtimes
1GB 4 vCPUs US$49.35
Containers 512MB 4 vCPUs US$10.22
Containers 1GB 4 vCPUs US$20.59
Cloud Costs
Provider Type Memory CPUs Cost/month
Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68
Linux t2.micro 1GB 1 vCPU US$9.36
Linux t2.small 2GB 1 vCPU US$18.72
Linux t2.medium 4GB 2 vCPUs US$37.44
Digital Ocean Standard 512MB 1 Core Processor US$5.00
Standard 1GB 1 Core Processor US$10.00
Standard 2GB 2 Core
Processors
US$20.00
Pivotal Cloud
Foundry
App Instance 512MB 4 vCPUs US$10.80
App Instance 1GB 4 vCPUs US$21.60
App Instance 2GB 4 vCPUs US$43.20
Heroku Standard 1x 512MB 1 Share US$25.00
Standard 2x 1GB 2 Shares US$50.00
IBM Bluemix Instant
Runtimes
512MB 4 vCPUs US$24.15
Instant
Runtimes
1GB 4 vCPUs US$49.35
Containers 512MB 4 vCPUs US$10.22
Containers 1GB 4 vCPUs US$20.59
80
Full Stack Development
81 1/17/17
82
Unless it is absolutely necessary to run Java in web browsers,
disable it as described below, even after updating to 7u11. This will
help mitigate other Java vulnerabilities that may be discovered in
the future.
This and previous Java vulnerabilities have been widely targeted
by attackers, and new Java vulnerabilities are likely to be
discovered. To defend against this and future Java
vulnerabilities, consider disabling Java in web browsers…
83
Unless it is absolutely necessary to run Java in web browsers,
disable it as described below, even after updating to 7u11. This will
help mitigate other Java vulnerabilities that may be discovered in
the future.
This and previous Java vulnerabilities have been widely targeted
by attackers, and new Java vulnerabilities are likely to be
discovered. To defend against this and future Java
vulnerabilities, consider disabling Java in web browsers…
84
•Reuse of code components
•Write One Run Anywhere
•Sharing of data models
•Less maintenance
•Server-side rendering
•Pre-Initialise UI on the server
•Improves first paint time
•Enables search indexing
85
+
86
+
87
+
88 1/17/17
89
90
91
+
92
+
93
Which, Where, When?
94
Node.js SwiftJava
95
High Processing Performance
Transaction Processing Frameworks
Node.js SwiftJava
Type Safety for Calculations
96
High Processing Performance
Transaction Processing Frameworks
Node.js SwiftJava
Type Safety for Calculations
Business Logic
Performance Critical
Batch Processing
97
High Processing Performance High IO Performance
Transaction Processing Frameworks
Node.js SwiftJava
Fullstack Web Development
Type Safety for Calculations Async Programming for Scale
Business Logic
Performance Critical
Batch Processing
98
High Processing Performance High IO Performance
Transaction Processing Frameworks
Node.js SwiftJava
Fullstack Web Development
Type Safety for Calculations Async Programming for Scale
Business Logic
Performance Critical
Batch Processing
Delivery Tier
REST APIs
Enterprise Modernisation
99
High Processing Performance High IO Performance
Transaction Processing Frameworks
Node.js SwiftJava
Fullstack Web Development
Type Safety for Calculations Async Programming for Scale
?
Business Logic
Performance Critical
Batch Processing
Delivery Tier
REST APIs
Enterprise Modernisation
100
Emerging Architectures
101 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Application Tier Database Tier
102 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Service Tier Database Tier
103 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Service Tier Database TierDelivery Tier
104 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Service Tier Hosted ServicesDelivery Tier
105 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
106 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
107 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
108 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
109 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
API Team
110 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
API Team
Web Team
Android Team
iOS Team
111
Server Side Rendering
First Paint Time
Search Engine Optimisation
112
Server Side Rendering
First Paint Time
Search Engine Optimisation
Network Payload Size
CPU Usage
Request Frequency
Battery Usage
Memory Usage
113
114 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
API Team
Web Team
Android Team
iOS Team
115 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
116 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
117 1/17/17
GATEWAY
PUBLIC NETWORK CLOUD NETWORK
Client Devices Hosted ServicesDelivery Tier
ROUTING PROXY
Micro-Services
118 1/17/17
GATEWAY
Client Devices Hosted Services
ROUTING PROXY
Micro-ServicesBackend For Frontend

(BFF)
PUBLIC NETWORK CLOUD NETWORK
119 1/17/17
GATEWAY
Client Devices Hosted Services
ROUTING PROXY
Micro-ServicesBackend For Frontend

(BFF)
UI Engineering
120
How?
$ idt create
Create:
$ idt create
? Select a pattern:
1. Web App
2. Mobile App
3. Backend for Frontend
4. Microservice
Enter a number> 3
? Select a starter:
1. Basic Backend
Enter a number> 1
? Select a language:
1. Java - MicroProfile / Java EE
2. Node
3. Java - Spring Framework
4. Swift
Enter a number> 2
? Enter a name for your project> MyNodeProject
? Enter a hostname for your project> NodeProject22
? Do you want to add services to your project? [y/n]> n
The project, mynodeproject, has been successfully saved into the
current directory.
OK
Create:
$ idt deploy -t container
Deploy:
MICROSERVICE

BUILDER
JENKINS
BLUEMIX DEVOPS
$ idt deploy -t container
The container deployment image name for the deployment of this
project will be:
(The image will be tagged by Docker with this base name and
appended with a version)
registry.ng.bluemix.net/namespace/myswiftproject
? Press [Return] to accept this, or enter a new value now>
The IBM cluster name for the deployment of this project will
be:
mycluster
? Press [Return] to accept this, or enter a new value now>
Log in to the IBM Container Registry
OK
Configure for a Bluemix deployment with cluster ‘mycluster'
Deploying to Cloud
OK
Deploy:
MICROSERVICE

BUILDER
JENKINS
BLUEMIX DEVOPS
$ idt deploy -t container
The container deployment image name for the deployment of this
project will be:
(The image will be tagged by Docker with this base name and
appended with a version)
registry.ng.bluemix.net/namespace/myswiftproject
? Press [Return] to accept this, or enter a new value now>
The IBM cluster name for the deployment of this project will
be:
mycluster
? Press [Return] to accept this, or enter a new value now>
Log in to the IBM Container Registry
OK
Configure for a Bluemix deployment with cluster ‘mycluster'
Deploying to Cloud
OK
Deploy:
Monitor:
metrics-dash
127
IBM Foundation
Support for Runtimes
generator-nodeserver
appmetrics monitoring
generator-swiftserver
swiftmetrics monitoringjavametrics monitoring
Support: Language Runtimes
IBM Support for Runtimes
128
LoopBack
IBM Foundation
Support for Runtimes
generator-nodeserver
appmetrics monitoring
generator-swiftserver
swiftmetrics monitoringjavametrics monitoring
IBM Support for Runtimes
IBM Advanced
Support for Runtime
Frameworks
Support: Web Frameworks
129
LoopBack
IBM Foundation
Support for Runtimes
IBM Advanced
Support for Runtime
Frameworks
generator-nodeserver
appmetrics monitoring
generator-swiftserver
swiftmetrics monitoringjavametrics monitoring
IBM Support for Runtimes
Support: Module Ecosystem
130
Questions?
IBM Cloud University 2017 | October
Please Note
IBM’s statements regarding its plans, directions, and intent 

are subject to change or withdrawal without notice at IBM’s 

sole discretion.
Information regarding potential future products is intended to
outline our general product direction and it should not be relied
on in making a purchasing decision.
The information mentioned regarding potential future products
is not a commitment, promise, or legal obligation to deliver 

any material, code or functionality. Information about potential
future products may not be incorporated into any contract.
The development, release, and timing of any future features 

or functionality described for our products remains at our sole
discretion.


Performance is based on measurements and projections 

using standard IBM benchmarks in a controlled environment.
The actual throughput or performance that any user will
experience will vary depending upon many factors, including
considerations such as the amount of multiprogramming in

the user’s job stream, the I/O configuration, the storage
configuration, and the workload processed. Therefore, no
assurance can be given that an individual user will achieve
results similar to those stated here.
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University 2017 | October
Notices and disclaimers
Copyright © 2017 by International Business Machines Corporation (IBM).
No part of this document may be reproduced or transmitted in any form
without written permission from IBM.
U.S. Government Users Restricted Rights — use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating to
products that have not yet been announced by IBM) has been reviewed
for accuracy as of the date of initial publication and could include
unintentional technical or typographical errors. IBM shall have no
responsibility to update this information. This document is distributed
“as is” without any warranty, either express or implied. In no event
shall IBM be liable for any damage arising from the use of this
information, including but not limited to, loss of data, business
interruption, loss of profit or loss of opportunity. IBM products and
services are warranted according to the terms and conditions of the
agreements under which they are provided.
IBM products are manufactured from new parts or new and used parts. 

In some cases, a product may not be new and may have been previously
installed. Regardless, our warranty terms apply.”
Any statements regarding IBM's future direction, intent or product
plans are subject to change or withdrawal without notice.

Performance data contained herein was generally obtained in a
controlled, isolated environments. Customer examples are presented 

as illustrations of how those customers have used IBM products and 

the results they may have achieved. Actual performance, cost, savings or
other results in other operating environments may vary.
References in this document to IBM products, programs, or services does
not imply that IBM intends to make such products, programs or services
available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared
by independent session speakers, and do not necessarily reflect the 

views of IBM. All materials and discussions are provided for informational
purposes only, and are neither intended to, nor shall constitute legal or
other guidance or advice to any individual participant or their specific
situation.
It is the customer’s responsibility to insure its own compliance with legal
requirements and to obtain advice of competent legal counsel as to
the identification and interpretation of any relevant laws and regulatory
requirements that may affect the customer’s business and any actions

the customer may need to take to comply with such laws. IBM does not
provide legal advice or represent or warrant that its services or products
will ensure that the customer is in compliance with any law.
IBM Cloud University 2017 | October
Notices and disclaimers continued
Information concerning non-IBM products was obtained from the
suppliers of those products, their published announcements or other
publicly available sources. IBM has not tested those products in
connection with this publication and cannot confirm the accuracy of
performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be
addressed to the suppliers of those products. IBM does not warrant the
quality of any third-party products, or the ability of any such third-party
products to interoperate with IBM’s products. IBM expressly disclaims
all warranties, expressed or implied, including but not limited to, the
implied warranties of merchantability and fitness for a particular,
purpose.
The provision of the information contained herein is not intended to, and
does not, grant any right or license under any IBM patents, copyrights,
trademarks or other intellectual property right.
IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS,
Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document
Management System™, FASP®, FileNet®, Global Business Services®,

Global Technology Services®, IBM ExperienceOne™, IBM SmartCloud®,
IBM Social Business®, Information on Demand, ILOG, Maximo®,
MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower,
PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®,
PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®,
PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®,
SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli® Trusteer®,
Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and
System z® Z/OS, are trademarks of International Business Machines
Corporation, registered in many jurisdictions worldwide. Other product
and service names might be trademarks of IBM or other companies. A
current list of IBM trademarks is available on the Web at "Copyright and
trademark information" at: www.ibm.com/legal/copytrade.shtml.
IBM Cloud University: Java, Node.js and Swift

More Related Content

What's hot (20)

Object Oriented Programming Using C++ Practical File
Object Oriented Programming Using C++ Practical FileObject Oriented Programming Using C++ Practical File
Object Oriented Programming Using C++ Practical File
Harjinder Singh
 
Introduction to c++
Introduction to c++Introduction to c++
Introduction to c++
Himanshu Kaushik
 
OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)
Kai-Feng Chou
 
Rcpp
RcppRcpp
Rcpp
Ajay Ohri
 
The present and the future of functional programming in c++
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++
Alexander Granin
 
Introduction to C++
Introduction to C++Introduction to C++
Introduction to C++
Sikder Tahsin Al-Amin
 
Monadic parsers in C++
Monadic parsers in C++Monadic parsers in C++
Monadic parsers in C++
Alexander Granin
 
C++ Training
C++ TrainingC++ Training
C++ Training
SubhendraBasu5
 
CBSE Class XI Programming in C++
CBSE Class XI Programming in C++CBSE Class XI Programming in C++
CBSE Class XI Programming in C++
Pranav Ghildiyal
 
Application of Stacks
Application of StacksApplication of Stacks
Application of Stacks
Ain-ul-Moiz Khawaja
 
Making our Future better
Making our Future betterMaking our Future better
Making our Future better
legendofklang
 
C++ 11 Features
C++ 11 FeaturesC++ 11 Features
C++ 11 Features
Jan Rüegg
 
Solid C++ by Example
Solid C++ by ExampleSolid C++ by Example
Solid C++ by Example
Olve Maudal
 
OOP in C - Inherit (Chinese Version)
OOP in C - Inherit (Chinese Version)OOP in C - Inherit (Chinese Version)
OOP in C - Inherit (Chinese Version)
Kai-Feng Chou
 
Infix prefix postfix
Infix prefix postfixInfix prefix postfix
Infix prefix postfix
Self-Employed
 
Working with Bytecode
Working with BytecodeWorking with Bytecode
Working with Bytecode
Marcus Denker
 
overloading in C++
overloading in C++overloading in C++
overloading in C++
Prof Ansari
 
Things about Functional JavaScript
Things about Functional JavaScriptThings about Functional JavaScript
Things about Functional JavaScript
ChengHui Weng
 
C++ programming
C++ programmingC++ programming
C++ programming
viancagerone
 
The Ring programming language version 1.5 book - Part 14 of 31
The Ring programming language version 1.5 book - Part 14 of 31The Ring programming language version 1.5 book - Part 14 of 31
The Ring programming language version 1.5 book - Part 14 of 31
Mahmoud Samir Fayed
 
Object Oriented Programming Using C++ Practical File
Object Oriented Programming Using C++ Practical FileObject Oriented Programming Using C++ Practical File
Object Oriented Programming Using C++ Practical File
Harjinder Singh
 
OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)OOP in C - Before GObject (Chinese Version)
OOP in C - Before GObject (Chinese Version)
Kai-Feng Chou
 
The present and the future of functional programming in c++
The present and the future of functional programming in c++The present and the future of functional programming in c++
The present and the future of functional programming in c++
Alexander Granin
 
CBSE Class XI Programming in C++
CBSE Class XI Programming in C++CBSE Class XI Programming in C++
CBSE Class XI Programming in C++
Pranav Ghildiyal
 
Making our Future better
Making our Future betterMaking our Future better
Making our Future better
legendofklang
 
C++ 11 Features
C++ 11 FeaturesC++ 11 Features
C++ 11 Features
Jan Rüegg
 
Solid C++ by Example
Solid C++ by ExampleSolid C++ by Example
Solid C++ by Example
Olve Maudal
 
OOP in C - Inherit (Chinese Version)
OOP in C - Inherit (Chinese Version)OOP in C - Inherit (Chinese Version)
OOP in C - Inherit (Chinese Version)
Kai-Feng Chou
 
Infix prefix postfix
Infix prefix postfixInfix prefix postfix
Infix prefix postfix
Self-Employed
 
Working with Bytecode
Working with BytecodeWorking with Bytecode
Working with Bytecode
Marcus Denker
 
overloading in C++
overloading in C++overloading in C++
overloading in C++
Prof Ansari
 
Things about Functional JavaScript
Things about Functional JavaScriptThings about Functional JavaScript
Things about Functional JavaScript
ChengHui Weng
 
The Ring programming language version 1.5 book - Part 14 of 31
The Ring programming language version 1.5 book - Part 14 of 31The Ring programming language version 1.5 book - Part 14 of 31
The Ring programming language version 1.5 book - Part 14 of 31
Mahmoud Samir Fayed
 

Similar to IBM Cloud University: Java, Node.js and Swift (20)

JavaOne 2016 -Emerging Web App Architectures using Java and node.js
JavaOne 2016 -Emerging Web App Architectures using Java and node.jsJavaOne 2016 -Emerging Web App Architectures using Java and node.js
JavaOne 2016 -Emerging Web App Architectures using Java and node.js
Steve Wallin
 
Cocoa heads 09112017
Cocoa heads 09112017Cocoa heads 09112017
Cocoa heads 09112017
Vincent Pradeilles
 
Java 8: the good parts!
Java 8: the good parts!Java 8: the good parts!
Java 8: the good parts!
Andrzej Grzesik
 
JavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good PartsJavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good Parts
Konrad Malawski
 
Linq intro
Linq introLinq intro
Linq intro
Bình Trọng Án
 
C++
C++C++
C++
VishalMishra313
 
C++ Overview PPT
C++ Overview PPTC++ Overview PPT
C++ Overview PPT
Thooyavan Venkatachalam
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
KAI CHU CHUNG
 
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjjcppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
supriyaharlapur1
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy code
ShriKant Vashishtha
 
InterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsInterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.js
Chris Bailey
 
Chapter i(introduction to java)
Chapter i(introduction to java)Chapter i(introduction to java)
Chapter i(introduction to java)
Chhom Karath
 
Visual studio 2008
Visual studio 2008Visual studio 2008
Visual studio 2008
Luis Enrique
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
Giovanni Bassi
 
Lecture 3 c++
Lecture 3 c++Lecture 3 c++
Lecture 3 c++
emailharmeet
 
Lab Manual IV (1).pdf on C++ Programming practice
Lab Manual IV (1).pdf on C++ Programming practiceLab Manual IV (1).pdf on C++ Programming practice
Lab Manual IV (1).pdf on C++ Programming practice
ranaibrahim453
 
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesSwift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift Microservices
Chris Bailey
 
Pipeline oriented programming
Pipeline oriented programmingPipeline oriented programming
Pipeline oriented programming
Scott Wlaschin
 
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
AvitoTech
 
CPP-overviews notes variable data types notes
CPP-overviews notes variable data types notesCPP-overviews notes variable data types notes
CPP-overviews notes variable data types notes
SukhpreetSingh519414
 
JavaOne 2016 -Emerging Web App Architectures using Java and node.js
JavaOne 2016 -Emerging Web App Architectures using Java and node.jsJavaOne 2016 -Emerging Web App Architectures using Java and node.js
JavaOne 2016 -Emerging Web App Architectures using Java and node.js
Steve Wallin
 
JavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good PartsJavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good Parts
Konrad Malawski
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
KAI CHU CHUNG
 
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjjcppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
cppt-170218053903.pptxhjkjhjjjjjjjjjjjjjjj
supriyaharlapur1
 
Working effectively with legacy code
Working effectively with legacy codeWorking effectively with legacy code
Working effectively with legacy code
ShriKant Vashishtha
 
InterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsInterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.js
Chris Bailey
 
Chapter i(introduction to java)
Chapter i(introduction to java)Chapter i(introduction to java)
Chapter i(introduction to java)
Chhom Karath
 
Visual studio 2008
Visual studio 2008Visual studio 2008
Visual studio 2008
Luis Enrique
 
C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8C#7, 7.1, 7.2, 7.3 e C# 8
C#7, 7.1, 7.2, 7.3 e C# 8
Giovanni Bassi
 
Lab Manual IV (1).pdf on C++ Programming practice
Lab Manual IV (1).pdf on C++ Programming practiceLab Manual IV (1).pdf on C++ Programming practice
Lab Manual IV (1).pdf on C++ Programming practice
ranaibrahim453
 
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesSwift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift Microservices
Chris Bailey
 
Pipeline oriented programming
Pipeline oriented programmingPipeline oriented programming
Pipeline oriented programming
Scott Wlaschin
 
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
"О некоторых особенностях Objective-C++" Влад Михайленко (Maps.Me)
AvitoTech
 
CPP-overviews notes variable data types notes
CPP-overviews notes variable data types notesCPP-overviews notes variable data types notes
CPP-overviews notes variable data types notes
SukhpreetSingh519414
 
Ad

More from Chris Bailey (20)

NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets Frameworks
Chris Bailey
 
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSVoxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Chris Bailey
 
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldSilicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Chris Bailey
 
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedFaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
Chris Bailey
 
AltConf 2019: Server-Side Swift State of the Union
AltConf 2019:  Server-Side Swift State of the UnionAltConf 2019:  Server-Side Swift State of the Union
AltConf 2019: Server-Side Swift State of the Union
Chris Bailey
 
Server-side Swift with Swagger
Server-side Swift with SwaggerServer-side Swift with Swagger
Server-side Swift with Swagger
Chris Bailey
 
Node Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsNode Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.js
Chris Bailey
 
Index - BFFs vs GraphQL
Index - BFFs vs GraphQLIndex - BFFs vs GraphQL
Index - BFFs vs GraphQL
Chris Bailey
 
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftSwift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Chris Bailey
 
Try!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftTry!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is Swift
Chris Bailey
 
Swift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionSwift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the Union
Chris Bailey
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
Chris Bailey
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Chris Bailey
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) Swift
Chris Bailey
 
AltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesAltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 Minutes
Chris Bailey
 
Playgrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFPlaygrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFF
Chris Bailey
 
Swift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the ServerSwift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the Server
Chris Bailey
 
O'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsO'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud Economics
Chris Bailey
 
FrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with SwiftFrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with Swift
Chris Bailey
 
Node Summit 2016: Web App Architectures
Node Summit 2016:  Web App ArchitecturesNode Summit 2016:  Web App Architectures
Node Summit 2016: Web App Architectures
Chris Bailey
 
NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets Frameworks
Chris Bailey
 
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSVoxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Chris Bailey
 
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldSilicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Chris Bailey
 
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedFaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
Chris Bailey
 
AltConf 2019: Server-Side Swift State of the Union
AltConf 2019:  Server-Side Swift State of the UnionAltConf 2019:  Server-Side Swift State of the Union
AltConf 2019: Server-Side Swift State of the Union
Chris Bailey
 
Server-side Swift with Swagger
Server-side Swift with SwaggerServer-side Swift with Swagger
Server-side Swift with Swagger
Chris Bailey
 
Node Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsNode Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.js
Chris Bailey
 
Index - BFFs vs GraphQL
Index - BFFs vs GraphQLIndex - BFFs vs GraphQL
Index - BFFs vs GraphQL
Chris Bailey
 
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftSwift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Chris Bailey
 
Try!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftTry!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is Swift
Chris Bailey
 
Swift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionSwift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the Union
Chris Bailey
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
Chris Bailey
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Chris Bailey
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) Swift
Chris Bailey
 
AltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesAltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 Minutes
Chris Bailey
 
Playgrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFPlaygrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFF
Chris Bailey
 
Swift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the ServerSwift Summit: Pushing the boundaries of Swift to the Server
Swift Summit: Pushing the boundaries of Swift to the Server
Chris Bailey
 
O'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud EconomicsO'Reilly Software Architecture Conf: Cloud Economics
O'Reilly Software Architecture Conf: Cloud Economics
Chris Bailey
 
FrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with SwiftFrenchKit: End to End Application Development with Swift
FrenchKit: End to End Application Development with Swift
Chris Bailey
 
Node Summit 2016: Web App Architectures
Node Summit 2016:  Web App ArchitecturesNode Summit 2016:  Web App Architectures
Node Summit 2016: Web App Architectures
Chris Bailey
 
Ad

Recently uploaded (20)

Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
WSO2
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-OffMicro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Tier1 app
 
Design by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First DevelopmentDesign by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First Development
Par-Tec S.p.A.
 
Topic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptxTopic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptx
marutnand8
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
Agile Software Engineering Methodologies
Agile Software Engineering MethodologiesAgile Software Engineering Methodologies
Agile Software Engineering Methodologies
Gaurav Sharma
 
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
Insurance Tech Services
 
14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework
Angelo Theodorou
 
Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!
PhilMeredith3
 
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdfTop 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Trackobit
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Prachi Desai
 
Automating Map Production With FME and Python
Automating Map Production With FME and PythonAutomating Map Production With FME and Python
Automating Map Production With FME and Python
Safe Software
 
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
Nacho Cougil
 
Leveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer IntentsLeveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer Intents
Keheliya Gallaba
 
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
WSO2
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-OffMicro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Micro-Metrics Every Performance Engineer Should Validate Before Sign-Off
Tier1 app
 
Design by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First DevelopmentDesign by Contract - Building Robust Software with Contract-First Development
Design by Contract - Building Robust Software with Contract-First Development
Par-Tec S.p.A.
 
Topic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptxTopic 26 Security Testing Considerations.pptx
Topic 26 Security Testing Considerations.pptx
marutnand8
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
Agile Software Engineering Methodologies
Agile Software Engineering MethodologiesAgile Software Engineering Methodologies
Agile Software Engineering Methodologies
Gaurav Sharma
 
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
Insurance Tech Services
 
14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework
Angelo Theodorou
 
Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!
PhilMeredith3
 
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdfTop 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Trackobit
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Prachi Desai
 
Automating Map Production With FME and Python
Automating Map Production With FME and PythonAutomating Map Production With FME and Python
Automating Map Production With FME and Python
Safe Software
 
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
How John started to like TDD (instead of hating it) (ViennaJUG, June'25)
Nacho Cougil
 
Leveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer IntentsLeveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer Intents
Keheliya Gallaba
 

IBM Cloud University: Java, Node.js and Swift

  • 1. Chris Bailey @Chris__Bailey STSM, Runtime Technologies Java, Node.js and Swift: Which, When and Why
  • 7. 7 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Application Tier Database Tier
  • 9. 0 10 20 30 40 50 60 01/02/12 01/08/12 01/02/13 01/08/13 01/02/14 01/08/14 01/02/15 01/08/15 01/02/16 01/08/16 Java JavaScript 9 1/17/17 Redmonk Programming Languages Rankings http://redmonk.com/sogrady/category/programming-languages/
  • 10. 0 10 20 30 40 50 60 01/02/12 01/08/12 01/02/13 01/08/13 01/02/14 01/08/14 01/02/15 01/08/15 01/02/16 01/08/16 Java JavaScript 10 1/17/17 Redmonk Programming Languages Rankings http://redmonk.com/sogrady/category/programming-languages/
  • 11. 0 10 20 30 40 50 60 01/02/12 01/08/12 01/02/13 01/08/13 01/02/14 01/08/14 01/02/15 01/08/15 01/02/16 01/08/16 Java JavaScript Swi5 11 1/17/17 Redmonk Programming Languages Rankings http://redmonk.com/sogrady/category/programming-languages/
  • 12. 12
  • 15. 15 Scripting Language Modern Native LanguageRuntime Language
  • 16. 16 Type Safe Type Safe, with InferenceDynamically Typed Scripting Language Modern Native LanguageRuntime Language
  • 17. 17 Type Safe Type Safe, with InferenceDynamically Typed Scripting Language Modern Native LanguageRuntime Language Pre-Compiled and JIT Compiled JIT Compiled Pre-Compiled
  • 18. 18 Type Safe Type Safe, with InferenceDynamically Typed Garbage Collected Scripting Language Modern Native LanguageRuntime Language Garbage Collected Reference Counted JIT Compiled Pre-CompiledPre-Compiled and JIT Compiled
  • 19. 19 Type Safe Type Safe, with InferenceDynamically Typed Threaded Multi-CPU Garbage Collected Scripting Language Modern Native LanguageRuntime Language Garbage Collected Reference Counted Async Single CPU Async Multi-CPU JIT Compiled Pre-CompiledPre-Compiled and JIT Compiled
  • 21. Swift @ IBM func add(_ a: Int, to b: Int) -> Void { print(a + b) } Swift Node.js
  • 22. Swift @ IBM var add = function (a, b) { console.log(a + b); } func add(_ a: Int, to b: Int) -> Void { print(a + b) } Swift Node.js
  • 23. Swift @ IBM var add = function (a, b) { console.log(a + b); } func add(_ a: Int, to b: Int) -> Void { print(a + b) } Swift Node.js
  • 24. Swift @ IBM var add = function (a, b) { console.log(a + b); } func add(_ a: Int, to b: Int) -> Void { print(a + b) } Swift Node.js
  • 25. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = 5; var b = 3; func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = 5 let b = 3 Swift Node.js
  • 26. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = 5; var b = 3; add(a, b); func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = 5 let b = 3 add(a, to: b) Swift Node.js
  • 27. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = 5; var b = 3; add(a, b); func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = 5 let b = 3 add(a, to: b) > swiftc main.swift Swift Node.js
  • 28. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = 5; var b = 3; add(a, b); > node app.js func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = 5 let b = 3 add(a, to: b) > swiftc main.swift > main Swift Node.js
  • 29. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = 5; var b = 3; add(a, b); > node app.js 8 func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = 5 let b = 3 add(a, to: b) > swiftc main.swift > main 8 Swift Node.js
  • 30. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = '5'; var b = 3; add(a, b); func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 add(a, to: b) Swift Node.js
  • 31. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = '5'; var b = 3; add(a, b); func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 add(a, to: b) > swiftc main.swift
 Swift Node.js
  • 32. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = '5'; var b = 3; add(a, b); func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 add(a, to: b) > swiftc main.swift
 > Error line 6: Cannot convert value of type ‘String’ into argument of type ‘Int’ Swift Node.js
  • 33. Swift @ IBM var add = function (a, b) { console.log(a + b); } var a = '5'; var b = 3; add(a, b); > node app.js > 53 func add(_ a: Int, to b: Int) -> Void { print(a + b) } let a = ”5” let b = 3 add(a, to: b) > swiftc main.swift 
 > Error line 6: Cannot convert value of type ‘String’ into argument of type ‘Int’ Swift Node.js
  • 35. Runtime cost of dynamic typing func add(_ a: Int, to b: Int) -> Int { return(a + b) }
  • 36. Runtime cost of dynamic typing func add(_ a: Int, to b: Int) -> Int { return(a + b) }
  • 37. Runtime cost of dynamic typing func add(_ a: Int, to b: Int) -> Int { return(a + b) } addi
  • 38. Runtime cost of dynamic typing var add = function (a, b) { return(a + b); }
  • 39. Check type of A var add = function (a, b) { return(a + b); }
  • 40. Runtime cost of dynamic typing Check type of A String var add = function (a, b) { return(a + b); }
  • 41. Check type of A StringCheck type of B var add = function (a, b) { return(a + b); }
  • 42. Check type of A StringConcatenate Check type of B String var add = function (a, b) { return(a + b); }
  • 43. Check type of A StringNumber Concatenate Check type of B String Convert Number
 to String var add = function (a, b) { return(a + b); }
  • 44. Check type of A StringNumber Concatenate Check type of B String Convert Number
 to String Concatenate var add = function (a, b) { return(a + b); }
  • 45. Check type of A StringConcatenate Check type of B String NumberNumber Convert Number
 to String Concatenate var add = function (a, b) { return(a + b); }
  • 46. Check type of A StringConcatenate Check type of B Check type of B String NumberNumber Convert Number
 to String Concatenate var add = function (a, b) { return(a + b); }
  • 47. Check type of A StringConcatenate Check type of B Check type of B StringString NumberNumber Convert Number
 to String Concatenate Convert Number
 to String var add = function (a, b) { return(a + b); }
  • 48. Check type of A StringConcatenate Check type of B Check type of B StringString NumberNumber Convert Number
 to String Concatenate Convert Number
 to String Concatenate var add = function (a, b) { return(a + b); }
  • 49. Convert Number
 to String Check type of A StringConcatenate Check type of B Check type of B StringString NumberNumber Convert Number
 to String Concatenate Concatenate Number var add = function (a, b) { return(a + b); }
  • 50. Check type of A StringConcatenate Floating
 Point or
 Normal Check type of B Check type of B StringString NumberNumber Convert Number
 to String Concatenate Concatenate Number Convert Number
 to String var add = function (a, b) { return(a + b); }
  • 51. Check type of A StringConcatenate Floating
 Point or
 Normal Float Calculation Check type of B Check type of B StringString Float NumberNumber Convert Number
 to String Concatenate Concatenate Number Convert Number
 to String var add = function (a, b) { return(a + b); }
  • 52. Check type of A StringConcatenate Floating
 Point or
 Normal Normal Add InstructionFloat Calculation Check type of B Check type of B StringString Float NumberNumber Convert Number
 to String Concatenate Concatenate Number Convert Number
 to String var add = function (a, b) { return(a + b); }
  • 67. Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage)
  • 68. Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage)
  • 69. Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage)
  • 70. Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage) 40 to 60%
  • 71. Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage) 40 to 60% ~2X additional memory for additional performance
  • 72. 0 5 10 15 20 25 30 35 ARC vs Garage Collection MemoryUsage(MB) (lowerisbetter) http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
  • 73. 15 0 5 10 15 20 25 30 35 ARC vs Garage Collection http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm MemoryUsage(MB) (lowerisbetter)
  • 74. 15 32.2 0 5 10 15 20 25 30 35 ARC vs Garage Collection http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm MemoryUsage(MB) (lowerisbetter)
  • 75. 15 32.2 25.3 0 5 10 15 20 25 30 35 ARC vs Garage Collection http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm MemoryUsage(MB) (lowerisbetter)
  • 76. Cloud Costs Provider Type Memory CPUs Cost/month Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68 Digital Ocean Standard 512MB 1 Core Processor US$5.00 Pivotal Cloud Foundry App Instance 512MB 4 vCPUs US$10.80 Heroku Standard 1x 512MB 1 Share US$25.00 IBM Bluemix Instant Runtimes 512MB 4 vCPUs US$24.15 Containers 512MB 4 vCPUs US$10.22
  • 77. Cloud Costs Provider Type Memory CPUs Cost/month Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68 Linux t2.micro 1GB 1 vCPU US$9.36 Digital Ocean Standard 512MB 1 Core Processor US$5.00 Standard 1GB 1 Core Processor US$10.00 Pivotal Cloud Foundry App Instance 512MB 4 vCPUs US$10.80 App Instance 1GB 4 vCPUs US$21.60 Heroku Standard 1x 512MB 1 Share US$25.00 Standard 2x 1GB 2 Shares US$50.00 IBM Bluemix Instant Runtimes 512MB 4 vCPUs US$24.15 Instant Runtimes 1GB 4 vCPUs US$49.35 Containers 512MB 4 vCPUs US$10.22 Containers 1GB 4 vCPUs US$20.59
  • 78. Cloud Costs Provider Type Memory CPUs Cost/month Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68 Linux t2.micro 1GB 1 vCPU US$9.36 Linux t2.small 2GB 1 vCPU US$18.72 Digital Ocean Standard 512MB 1 Core Processor US$5.00 Standard 1GB 1 Core Processor US$10.00 Standard 2GB 2 Core Processors US$20.00 Pivotal Cloud Foundry App Instance 512MB 4 vCPUs US$10.80 App Instance 1GB 4 vCPUs US$21.60 App Instance 2GB 4 vCPUs US$43.20 Heroku Standard 1x 512MB 1 Share US$25.00 Standard 2x 1GB 2 Shares US$50.00 IBM Bluemix Instant Runtimes 512MB 4 vCPUs US$24.15 Instant Runtimes 1GB 4 vCPUs US$49.35 Containers 512MB 4 vCPUs US$10.22 Containers 1GB 4 vCPUs US$20.59
  • 79. Cloud Costs Provider Type Memory CPUs Cost/month Amazon EC2 Linux t2.nano 512MB 1 vCPU US$4.68 Linux t2.micro 1GB 1 vCPU US$9.36 Linux t2.small 2GB 1 vCPU US$18.72 Linux t2.medium 4GB 2 vCPUs US$37.44 Digital Ocean Standard 512MB 1 Core Processor US$5.00 Standard 1GB 1 Core Processor US$10.00 Standard 2GB 2 Core Processors US$20.00 Pivotal Cloud Foundry App Instance 512MB 4 vCPUs US$10.80 App Instance 1GB 4 vCPUs US$21.60 App Instance 2GB 4 vCPUs US$43.20 Heroku Standard 1x 512MB 1 Share US$25.00 Standard 2x 1GB 2 Shares US$50.00 IBM Bluemix Instant Runtimes 512MB 4 vCPUs US$24.15 Instant Runtimes 1GB 4 vCPUs US$49.35 Containers 512MB 4 vCPUs US$10.22 Containers 1GB 4 vCPUs US$20.59
  • 82. 82 Unless it is absolutely necessary to run Java in web browsers, disable it as described below, even after updating to 7u11. This will help mitigate other Java vulnerabilities that may be discovered in the future. This and previous Java vulnerabilities have been widely targeted by attackers, and new Java vulnerabilities are likely to be discovered. To defend against this and future Java vulnerabilities, consider disabling Java in web browsers…
  • 83. 83 Unless it is absolutely necessary to run Java in web browsers, disable it as described below, even after updating to 7u11. This will help mitigate other Java vulnerabilities that may be discovered in the future. This and previous Java vulnerabilities have been widely targeted by attackers, and new Java vulnerabilities are likely to be discovered. To defend against this and future Java vulnerabilities, consider disabling Java in web browsers…
  • 84. 84 •Reuse of code components •Write One Run Anywhere •Sharing of data models •Less maintenance •Server-side rendering •Pre-Initialise UI on the server •Improves first paint time •Enables search indexing
  • 85. 85 +
  • 86. 86 +
  • 87. 87 +
  • 89. 89
  • 90. 90
  • 91. 91 +
  • 92. 92 +
  • 95. 95 High Processing Performance Transaction Processing Frameworks Node.js SwiftJava Type Safety for Calculations
  • 96. 96 High Processing Performance Transaction Processing Frameworks Node.js SwiftJava Type Safety for Calculations Business Logic Performance Critical Batch Processing
  • 97. 97 High Processing Performance High IO Performance Transaction Processing Frameworks Node.js SwiftJava Fullstack Web Development Type Safety for Calculations Async Programming for Scale Business Logic Performance Critical Batch Processing
  • 98. 98 High Processing Performance High IO Performance Transaction Processing Frameworks Node.js SwiftJava Fullstack Web Development Type Safety for Calculations Async Programming for Scale Business Logic Performance Critical Batch Processing Delivery Tier REST APIs Enterprise Modernisation
  • 99. 99 High Processing Performance High IO Performance Transaction Processing Frameworks Node.js SwiftJava Fullstack Web Development Type Safety for Calculations Async Programming for Scale ? Business Logic Performance Critical Batch Processing Delivery Tier REST APIs Enterprise Modernisation
  • 101. 101 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Application Tier Database Tier
  • 102. 102 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Service Tier Database Tier
  • 103. 103 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Service Tier Database TierDelivery Tier
  • 104. 104 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Service Tier Hosted ServicesDelivery Tier
  • 105. 105 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services
  • 106. 106 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services
  • 107. 107 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services
  • 108. 108 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services
  • 109. 109 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services API Team
  • 110. 110 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services API Team Web Team Android Team iOS Team
  • 111. 111 Server Side Rendering First Paint Time Search Engine Optimisation
  • 112. 112 Server Side Rendering First Paint Time Search Engine Optimisation Network Payload Size CPU Usage Request Frequency Battery Usage Memory Usage
  • 113. 113
  • 114. 114 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services API Team Web Team Android Team iOS Team
  • 115. 115 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services
  • 116. 116 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services
  • 117. 117 1/17/17 GATEWAY PUBLIC NETWORK CLOUD NETWORK Client Devices Hosted ServicesDelivery Tier ROUTING PROXY Micro-Services
  • 118. 118 1/17/17 GATEWAY Client Devices Hosted Services ROUTING PROXY Micro-ServicesBackend For Frontend
 (BFF) PUBLIC NETWORK CLOUD NETWORK
  • 119. 119 1/17/17 GATEWAY Client Devices Hosted Services ROUTING PROXY Micro-ServicesBackend For Frontend
 (BFF) UI Engineering
  • 122. $ idt create ? Select a pattern: 1. Web App 2. Mobile App 3. Backend for Frontend 4. Microservice Enter a number> 3 ? Select a starter: 1. Basic Backend Enter a number> 1 ? Select a language: 1. Java - MicroProfile / Java EE 2. Node 3. Java - Spring Framework 4. Swift Enter a number> 2 ? Enter a name for your project> MyNodeProject ? Enter a hostname for your project> NodeProject22 ? Do you want to add services to your project? [y/n]> n The project, mynodeproject, has been successfully saved into the current directory. OK Create:
  • 123. $ idt deploy -t container Deploy: MICROSERVICE
 BUILDER JENKINS BLUEMIX DEVOPS
  • 124. $ idt deploy -t container The container deployment image name for the deployment of this project will be: (The image will be tagged by Docker with this base name and appended with a version) registry.ng.bluemix.net/namespace/myswiftproject ? Press [Return] to accept this, or enter a new value now> The IBM cluster name for the deployment of this project will be: mycluster ? Press [Return] to accept this, or enter a new value now> Log in to the IBM Container Registry OK Configure for a Bluemix deployment with cluster ‘mycluster' Deploying to Cloud OK Deploy: MICROSERVICE
 BUILDER JENKINS BLUEMIX DEVOPS
  • 125. $ idt deploy -t container The container deployment image name for the deployment of this project will be: (The image will be tagged by Docker with this base name and appended with a version) registry.ng.bluemix.net/namespace/myswiftproject ? Press [Return] to accept this, or enter a new value now> The IBM cluster name for the deployment of this project will be: mycluster ? Press [Return] to accept this, or enter a new value now> Log in to the IBM Container Registry OK Configure for a Bluemix deployment with cluster ‘mycluster' Deploying to Cloud OK Deploy:
  • 127. 127 IBM Foundation Support for Runtimes generator-nodeserver appmetrics monitoring generator-swiftserver swiftmetrics monitoringjavametrics monitoring Support: Language Runtimes IBM Support for Runtimes
  • 128. 128 LoopBack IBM Foundation Support for Runtimes generator-nodeserver appmetrics monitoring generator-swiftserver swiftmetrics monitoringjavametrics monitoring IBM Support for Runtimes IBM Advanced Support for Runtime Frameworks Support: Web Frameworks
  • 129. 129 LoopBack IBM Foundation Support for Runtimes IBM Advanced Support for Runtime Frameworks generator-nodeserver appmetrics monitoring generator-swiftserver swiftmetrics monitoringjavametrics monitoring IBM Support for Runtimes Support: Module Ecosystem
  • 131. IBM Cloud University 2017 | October Please Note IBM’s statements regarding its plans, directions, and intent 
 are subject to change or withdrawal without notice at IBM’s 
 sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver 
 any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features 
 or functionality described for our products remains at our sole discretion. 
 Performance is based on measurements and projections 
 using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in
 the user’s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here.
  • 133. IBM Cloud University 2017 | October Notices and disclaimers Copyright © 2017 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights — use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. This document is distributed “as is” without any warranty, either express or implied. In no event shall IBM be liable for any damage arising from the use of this information, including but not limited to, loss of data, business interruption, loss of profit or loss of opportunity. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. IBM products are manufactured from new parts or new and used parts. 
 In some cases, a product may not be new and may have been previously installed. Regardless, our warranty terms apply.” Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice.
 Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented 
 as illustrations of how those customers have used IBM products and 
 the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the 
 views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions
 the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law.
  • 134. IBM Cloud University 2017 | October Notices and disclaimers continued Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products in connection with this publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to interoperate with IBM’s products. IBM expressly disclaims all warranties, expressed or implied, including but not limited to, the implied warranties of merchantability and fitness for a particular, purpose. The provision of the information contained herein is not intended to, and does not, grant any right or license under any IBM patents, copyrights, trademarks or other intellectual property right. IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS, Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document Management System™, FASP®, FileNet®, Global Business Services®,
 Global Technology Services®, IBM ExperienceOne™, IBM SmartCloud®, IBM Social Business®, Information on Demand, ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®, SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli® Trusteer®, Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.