InterConnect 2017 Programming languages in the enterprise: Which language should I use? Shereen Ghobrial Offering Management, IBM Compilers 1 3/17/2017
InterConnect2017
Programming languages inthe enterprise: Whichlanguage should I use?
Shereen Ghobrial
Offering Management,IBM Compilers
1 3/17/2017
2 3/17/2017
Please note
IBM’s statements regarding its plans, directions, and intentare subject to change or withdrawal without notice at IBM’ssole discretion.
Information regarding potential future products is intended tooutline our general product direction and it should not be reliedon in making a purchasing decision.
The information mentioned regarding potential future productsis not a commitment, promise, or legal obligation to deliverany material, code or functionality. Information about potentialfuture products may not be incorporated into any contract.
The development, release, and timing of any future featuresor functionality described for our products remains at our solediscretion.
Performance is based on measurements and projectionsusing standard IBM benchmarks in a controlled environment.The actual throughput or performance that any user willexperience will vary depending upon many factors, includingconsiderations such as the amount of multiprogramming inthe user’s job stream, the I/O configuration, the storageconfiguration, and the workload processed. Therefore, noassurance can be given that an individual user will achieveresults similar to those stated here.
• The Application Developers
• Modern Languages for EnterpriseServers
• Java
• Node.js
• Swift
• Demo – CICS & Swift
3 3/17/2017
Agenda
Assembler (early 1950s)
COBOL (1959)
PL/I (1964)
C/C++ (1972/1983)
5 3/17/2017
When were the followinglanguages introduced to zSystems?
42%
50%
19%
45%
Mobile Apps Desktop Apps Internet of Things Cloud & BackendServices
7 3/17/2017
What platforms do they target?
Source: Developer Economics – State of the Developer Nation Q1 2016 | Licensed under CC BY ND | Copyrights VisionMobile
Percent of professional developers targeting each sector(the same developer may target multiple sectors)
(incl. mobile web) (incl. web)
• Developers are typically multi-lingual, using the language thatmakes sense for the projects theyare working on
• Java maintains the top spot despiterumors of its decline
• JavaScript the most popularscripting language
• Swift is on the rise (the newestlanguage on the list)
8 3/17/2017
Which languages do they use?Top Programming Languages
All populations in millions
Language Population
Java 14.0
C++ 13.1
JavaScript 11.6
C 11.3
C# 11.2
PHP 9.4
Swift or Objective C 8.8
Python 7.9
Perl 7.4
Ruby 6.8
Other 13.2
Source: Global Developer Population and Demographics Survey: Volume I, © 2016 Evans Data Corp.
10 3/17/2017
Modern Application Design
Public Cloud Services
On-prem Services
User-facing Client Apps
Things / Sensors
End Users
11 3/17/2017
Modern Application Design
Public Cloud Services
On-prem Services
User-facing Client Apps
Things / Sensors
End Users
Developer Experience
12 3/17/2017
Modern Application Design
Public Cloud Services
On-prem Services
User-facing Client Apps
Things / Sensors
End Users
Developer Experience
JavaNode.js
Swift
JavaNode.js
Swift
JavaNode.js
Swift
13 3/17/2017
Modern Application Design
Public Cloud Services
On-prem Services
User-facing Client Apps
Things / Sensors
End Users
Developer Experience
JavaNode.js
Swift
JavaNode.js
Swift
JavaNode.js
Swift
14 3/17/2017
Why do we need modern languages on IBM z Systems / LinuxONE?
Skills: Millions of Available Developers
Public Cloud Services
On-prem Services
User-facing Client Apps
Things / Sensors
End Users
Developer Experience
1
JavaNode.js
Swift
JavaNode.js
Swift
JavaNode.js
Swift
15 3/17/2017
Why do we need modern languages on IBM z Systems / LinuxONE?
Modernization: Good fit for API Economy
CICS
REST (zOS Connect)
COBOLApp
DB2
JavaNode.js
Swift
2
JavaNode.js
Swift
JavaNode.js
Swift
JavaNode.js
Swift
JavaNode.js
Swift
IMS
JavaNode.js
Swift
JavaNode.js
Swift
mongoDB
mariaDB
Future Intention
z System
16 3/17/2017
Why do we need modern languages on IBM z Systems / LinuxONE?
Performance: Put Your Back-End Closer to Your Data
FrontEnd
3
FrontEnd
BackEnd
BackEnd
z System
mongoDB/mariaDB
DB2/IMS
BackEnd
SLOW
FASTFASTFAST
18
Why Java?
There are
14 millionJava developers
80%of the world’s corporate data
resides on or originates on the
mainframe
Two
pervasivetechnologies…
…combined for
powerfulperformance…
19 19
Classified Java projectsas >= successful
now have Java applicationsin production
>80% 85%
95 client responses
68% Java Project on z
85% within 3 years
145 surveys returned
In 1 week…
How Successful was your project?Enterprise ArchitectsSystem programmers
Application Developers
had the most influenceOn Java on z projects
Survey Results:
Clients are successfullyusing Java on mainframe
21 3/17/2017
Node.js
What is Node.js?
• Server-side JavaScript platform
• Built on Google's V8 JavaScript engine
• Goal: Efficiently build:
• fast,
• scalable,
• 'real-time' network applications
• Event-oriented, non-blocking,asynchronous I/O framework
23 3/17/2017
Why Node.js? Productivity
• Large repository of modules:
• NPM: Node Package Manager
• Repository of communitycontributed modules
• Developers love it!
• 400k modules and growing!
• 3x growth rate vs otherruntimes
• High productivity for applicationdevelopers (due to available modules)
Node.js
(Feb 16, 2017 – modulecounts.com)
• Event-driven, single-threadedmodel
• Eliminates concurrency andthread-safety worries
• Integration with JSON APIs
24 3/17/2017
Why Node.js? Simple to use
• Node.js leverages theunderlying async i/o support inthe OS
• Thousands of concurrentconnections with minimaloverhead
25 3/17/2017
Why Node.js? Scalable
26 3/17/2017
IBM SDK for Node.js
Combine modern web JavaScript + Node.js applications with thebenefits of z Systems hardware, monitoring, and security
Compatible to Node.js 0.12, 4.x, 6.x
High performance JavaScript for Linux on z Systems• Highly scalable, event-driven platform with non-blocking I/O
• Thousands of concurrent connections with minimal overhead
• Up to 2x better performance over Intel on AcmeAir*
z Systems connectivity• Co-locate Node.js apps for reduced latency accessing z/OS data/services
• Up to 2.5x better throughput, 60% faster response time to DB2 on z/OS*
Security and dependability• Leverages the trusted environments of z Systems to maximize security and
uptime of critical Node.js applications.
Unified diagnostics tooling with IBM SDKs for Java®
• Monitor your application with IBM Health Center
http://www.ibm.com/developerworks/web/nodesdk
27 3/17/2017
Unified Tooling
• Unified diagnostics tooling with IBM SDKs for Java®
• Monitor with Health Center
• Quick to deploy, small impact live monitoring tool
• Tracks Memory+ CPU usage, Garbage collection, application hot spots, and more!
• http://www.ibm.com/developerworks/java/jdk/tools/healthcenter
• Debug with Interactive Diagnostics Data Explorer (IDDE)
• FFDC with nodereport: https://github.com/nodejs/nodereport
• Post mortem dump analysis
• http://www.ibm.com/developerworks/java/jdk/tools/idde
• Node Application Metrics (appmetrics)
• npm module instruments the Node.js runtime for performance monitoring
• https://www.npmjs.com/package/appmetrics
28 3/17/2017
Benefits of Co-locating Node.js with Data
DB2
Linux
zOS
Accessing DB2data on z/OS
Node.js co-located on
Linux on z vsoff-platform
60% FasterResponse
Time
2.5x BetterThroughput
z/OS Connect
IMS
WebSphereApp Server
CICS
29 3/17/2017
IBM SDK for Node.js and Community Drivers (LinuxONE)
• IBM SDK for Node.js
• Matches and extends community version - shares 99% of code!
• Introduces additional RAS capabilities
• core debugging with IBM Diagnostic and Data Explorer (IDDE)
• Security Fixes, License + Code scans
IBM SDK for Node.js Community
V1.1.x 0.10.x
V1.2.x 0.12.x
V4.x V4.x LTS
V6.x V6.x LTS *community drivers available*
30 3/17/2017
IBM SDK for Node.js - z/OS
• Node.js on z/OS Tech Preview• https://developer.ibm.com/node/sdk/ztp
• Open Source Collaboration Model
• Contributions and feedback welcomed!• GitHub pull requests, IBM SDK for Node.js community• V8: github.com/ibmruntimes/v8z (Branch: 3.28-zos, 5.1-zos)• Node: github.com/ibmruntimes/node (Branch: v0.12-zos)• libuv: github.com/libuv/libuv (Version: v1.11 or newer)*
• Libuv upstreamed to official repository
32 3/17/2017
Swift Ecosystem
WWDC 2014Apple releases anew programminglanguage called
“Swift”
WWDC 2015Apple announcesto open source
Swift
“Swift is growingfaster than anything
else we track”
June 2014
June 2015
July 2015
Nov. 2015
Apple releases Swiftas Open Source.
Dec. 3, 2015
Jan. 2016Programming Language RankingsSwift “meteoric rise” continues. “Swiftmoves up one spot from #18 to #17Y/Y…and is within hailing distance ofout Tier 1 languages”.
Introducing the IBMSwift Sandbox
Feb 2016
IBMInterConnect
2016IBM to bring Swift tothe cloud to radically
simplifying end-to-enddevelopment of apps
Swift #2 “Most Loved”
Nov. 2016
Mar. 2016
Tokyo
Sep. 2016
NYC
IBM Bluemix Runtimefor Swift
Industry backing
Developers acceptance
Tools & packages
Conferences & meetups
34 3/17/2017
Why Swift? Performant
4 4.3
15.8
134.2
0
20
40
60
80
100
120
140
160
Swift Java JavaScript Ruby
Du
ratio
n(s
)(lo
we
ris
be
tte
r)
Performance: Fast
15
32.2
25.3
54.6
0
10
20
30
40
50
60
Swift Java JavaScript Ruby
Me
mo
ryU
sa
ge
(MB
)(lo
we
ris
be
tte
r)
Performance: Low Memory
Source: benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
• Type safe
• Helps developers refactor,extend, iterate on solutions.
• Error detection at compile time• Automatic initialization
• Variables are automaticallyinitialized
• Memory is automatically allocatedand managed.
36 3/17/2017
Why Swift? Safe
37 3/17/2017
We have already started the journey
• IBM has been working with the open source community to improveSwift for the server platform, with many changes already integrated intoSwift 3.0
• IBM has already enabled LinuxONE on IBM Swift Sandbox
• IBM has pushed all code for LinuxONE to github
• Swift 3.0 GA’ed in September 2016 with full LinuxONE support
• IBM is working to bring Swift to z/OS to modernize the whole zecosystem (contact us to join our beta program).
• Core tools to develop in Swift:
• Compiler (Swift 3)
• Swift Runtime
• Debugger (lldb)
• Web framework (Kitura)
• World class service & support
38 3/17/2017
Introducing a new offering:
IBM Toolkit for Swift – Linux on z Systems
Available: March 17th, 2017Available: March 17th, 2017
• We are looking for innovators andearly adopters
• For both Swift & Node.js
• Validate user scenarios and getearly access to the latest drivers.
• If interested, contact:
• Shereen Ghobrial:[email protected]
• Roland Koo:
39 3/17/2017
You can impact the future
41 3/17/2017
Notices and disclaimers
Copyright © 2017 by International Business Machines Corporation (IBM).No part of this document may be reproduced or transmitted in any formwithout written permission from IBM.
U.S. Government Users Restricted Rights — use, duplication ordisclosure restricted by GSA ADP Schedule Contract with IBM.
Information in these presentations (including information relating toproducts that have not yet been announced by IBM) has been reviewedfor accuracy as of the date of initial publication and could includeunintentional technical or typographical errors. IBM shall have noresponsibility to update this information. This document is distributed“as is” without any warranty, either express or implied. In no eventshall IBM be liable for any damage arising from the use of thisinformation, including but not limited to, loss of data, businessinterruption, loss of profit or loss of opportunity. IBM products andservices are warranted according to the terms and conditions of theagreements 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 previouslyinstalled. Regardless, our warranty terms apply.”
Any statements regarding IBM's future direction, intent or productplans are subject to change or withdrawal without notice.
Performance data contained herein was generally obtained in acontrolled, isolated environments. Customer examples are presentedas illustrations of how those customers have used IBM products and
the results they may have achieved. Actual performance, cost, savings orother results in other operating environments may vary.
References in this document to IBM products, programs, or servicesdoes not imply that IBM intends to make such products, programs orservices available in all countries in which IBM operates or doesbusiness.
Workshops, sessions and associated materials may have been preparedby independent session speakers, and do not necessarily reflect theviews of IBM. All materials and discussions are provided for informationalpurposes only, and are neither intended to, nor shall constitute legal orother guidance or advice to any individual participant or their specificsituation.
It is the customer’s responsibility to insure its own compliance with legalrequirements and to obtain advice of competent legal counsel as tothe identification and interpretation of any relevant laws and regulatoryrequirements that may affect the customer’s business and any actionsthe customer may need to take to comply with such laws. IBM does notprovide legal advice or represent or warrant that its services or productswill ensure that the customer is in compliance with any law.
42 3/17/2017
Notices and disclaimerscontinued
Information concerning non-IBM products was obtained from thesuppliers of those products, their published announcements or otherpublicly available sources. IBM has not tested those products inconnection with this publication and cannot confirm the accuracy ofperformance, compatibility or any other claims related to non-IBMproducts. Questions on the capabilities of non-IBM products should beaddressed to the suppliers of those products. IBM does not warrant thequality of any third-party products, or the ability of any such third-partyproducts to interoperate with IBM’s products. IBM expressly disclaimsall warranties, expressed or implied, including but not limited to, theimplied warranties of merchantability and fitness for a particular,purpose.
The provision of the information contained herein is not intended to, anddoes 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 DocumentManagement 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® andSystem z® Z/OS, are trademarks of International Business MachinesCorporation, registered in many jurisdictions worldwide. Other productand service names might be trademarks of IBM or other companies. Acurrent list of IBM trademarks is available on the Web at "Copyright andtrademark information" at: www.ibm.com/legal/copytrade.shtml.