SlideShare a Scribd company logo
1© 2018 Rogue Wave Software, Inc. All Rights Reserved.
2© 2018 Rogue Wave Software, Inc. All Rights Reserved.
3© 2018 Rogue Wave Software, Inc. All Rights Reserved.
Justin Reock
Chief Architect
Rogue Wave Software
Justin has over 20 years’ experience
working in various software roles and
is an outspoken free software
evangelist, delivering enterprise
solutions and community education
on databases, integration work,
architecture, and technical
leadership.
He is currently the Chief Architect at
Rogue Wave Software.
4© 2018 Rogue Wave Software, Inc. All Rights Reserved.
5© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• React is a JavaScript library that focuses on
declarative syntax and virtualization of the DOM
• It allows developers to write highly efficient
JavaScript for the purpose of rendering a UI in a
web browser
• Whereas traditional JavaScript will re-render the
entire DOM during a state change, React will only
render the parts of the DOM that have changed
6© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Created by Jordan Walke at Facebook
• First deployed on Facebook’s newsfeed in 2011,
Instagram in 2012
• Released under the MIT License as an open source
project in May of 2013
• Additional projects such as React Native for mobile and
React Fiber would follow in 2015 and 2017 respectively
7© 2018 Rogue Wave Software, Inc. All Rights Reserved.
8© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• It’s really these two keywords that sets React apart from
traditional JavaScript UI development
• React doesn’t iteratively draw UI components on the screen
• The developer defines what the final UI should look like, and
React ensures that the DOM is rendered accordingly
• This is a very significant difference from typical HTML
rendering in JavaScript, which typically centers around injecting
HTML using the innerHTML directive
Declarative and Virtualized
9© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• React also virtualizes the entire DOM and uses
JavaScript to render actual HTML in the form of React
Components
• Although you may never directly use it for reasons that
will soon become clear, React generates HTML elements
using the React.createElement() method
• Every UI element rendered in the browser will be
created by a JavaScript call to this method
Declarative and Virtualized
10© 2018 Rogue Wave Software, Inc. All Rights Reserved.
11© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Right now you may be thinking: ”Why would you ever do that
when its simple enough to just write HTML with in-line
JavaScript?
• Before you storm out of the session room, never to touch React
again, let’s look at why this is actually quite powerful
• React virtualizes the entire DOM – that really means that it
keeps a dynamic model of the UI in-memory, and can
manipulate it on the fly
• Let’s look at a demo…
12© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• We’ll render a bit of HTML using the traditional
innerHTML call, as well as through React
• Then we’ll create a second timer on the page that will
tick up using the JavaScript setInterval() function
• We’ll then demonstrate exactly why this approach is
so interesting
Just the updates, please!
13© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• This is a much different paradigm, but with JavaScript free
to own the entire DOM, we can do interesting things
• Since React just declares the UI composition and updates
itself accordingly, you don’t have to worry about redrawing
parts or all of the UI when something changes
• You can trust React to, well, react to those changes and re-
render itself only when necessary
Subtle but powerful…
14© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Another important aspect to understand is that React is
not a framework
• It’s a JavaScript library focused just on UI composition
• You’ll use it in concert with other JavaScript libraries,
such as Node.js
• This allows you the freedom to build the other parts of
your app any way you’d like, without having to commit to
an entire framework
Not a Framework
15© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• As you saw in the demo, the React library contains
a method for drawing HTML elements inside of the
DOM
• But, you may never actually need to invoke it
• JSX gives you the ability to just write your elements
in a pseudo-HTML syntax
React.createElement()
16© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• React will assemble these multiple React.createElement()
calls into a tree of components
• Then, upon every state change, React performs a “tree
reconciliation” where it examines the state of every
component and sees if anything has changed
• If something has changed, react updates that part of
the virtual DOM and re-renders the element
ReactDOM.render()
17© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• The special function render() will expect to receive as
input the design elements of your UI
• An anchor element in HTML where it should draw the
object is its second parameter
• Only one element (or a parent element with children)
can be passed, because Babel will convert these
elements into functions
ReactDOM.render()
18© 2018 Rogue Wave Software, Inc. All Rights Reserved.
ReactDOM.render(
<Button1 /><Button2 />,
document.getElementById(‘root’),
);
ReactDOM.render()
19© 2018 Rogue Wave Software, Inc. All Rights Reserved.
ReactDOM.render()
ReactDOM.render(
<div>
<Button1 /><Button2 />
</div>,
document.getElementById(‘root’),
);
20© 2018 Rogue Wave Software, Inc. All Rights Reserved.
21© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• If you promise not to get too upset, I’ll show you how
you’ll generally create elements in React
Ok now I’m really leaving…
function Title() {
return ( <div>
<h1>WTF How Is This Possible?</h1>
</div> );
}
ReactDOM.render(<Title />, document.getElementById(’root’);
22© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• So, yeah, you will write in-line ersatz HTML (really, JSX) and
pass it around as if it was native JavaScript
• It takes a little getting used to, but, it ends up being a lot
cleaner than dozens of createElement() calls
• In fact, when React compiles, it uses a library called Babel to
generate createElement() statements from the JSX
• So the JSX is really never rendered directly, it is interpreted by
Babel and converted to createElement() calls at compile time
23© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Open up the Babel test portal at https://babeljs.io
• Add some JSX to the test pane after selecting “react”
under the Presets tab
• Watch as Babel displays the equivalent React code
• Hopefully end up a little less nauseated at what JSX is
doing!
24© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Components are atomic UI elements which will combine
layout with a state and set of properties that React will
maintain
• You will create these components as either JavaScript classes
or functions, and React will use them to render UI elements
• These components are autonomous, and maintain their own
private state and properties
• They can be arranged into parent/child hierarchies, and can
flow data between them
25© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• A function component starts with a function,
obviously
• We’ve actually already seen one:
function Title() {
return ( <div>
<h1>WTF How Is This Possible?</h1>
</div> );
}
ReactDOM.render(<Title />, document.getElementById(’root’);
26© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• These can also be defined using the newer JavaScript
function arrow syntax:
const Title = (props) => {
return ( <div>
<h1>WTF How Is This Possible?</h1>
</div> );
}
ReactDOM.render(<Title />, document.getElementById(’root’);
27© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• For more complex components, you may want to take
advantage of JavaScript classes
• Those who are more comfortable with OOP as opposed
to Functional programming may prefer creating classes
• I do encourage you to get comfortable with Functional
programming, though
• It is a discipline getting more and more important as
we move to distributed and concurrent application
architectures
28© 2018 Rogue Wave Software, Inc. All Rights Reserved.
class App extends React.Component {
render() {
const profile = this.props;
return <div>
<h1>profile.title</h1>
</div>;
}
…
<App title=“Class Component” prop1=“somethingelse” />
29© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Components will automatically contain a properties
object that can be interacted with and changed
• These properties are passed in by default as function
parameters in a function component
• Or, they will be their own object, referenced with
‘this.props’ inside of a class component
• Properties are immutable, but can be set with initial
values when a component is rendered
30© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• State inside of a React component consists of two parts
• The first is the state, which is really just a primitive or
set of primitives that can be manipulated
• The second is a setter function which allows you to
update the state of a component
• Both of these entities are exposed by deconstructing a
special hook called useState() which is provided by
React
31© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• We just covered a lot of ground, but when we look at
the code this is actually very straightforward
• Let’s create a function component, and give that
component a set of properties and a state
• And let’s alter that state and watch the result in the
browser
Lets tie it all together
32© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• This is a large topic, but we’ll gently introduce it here
• Recall in the demo that we broke our UI into two
components, a Display and a Button
• The Display object had to react to state changes caused
by the Button’s onClick event handler
• We did this by passing properties into the Display
function
One-way Data Flow
33© 2018 Rogue Wave Software, Inc. All Rights Reserved.
One-Way Data Flow
function Display(props) {
return (
<div>{props.message}</div>
);
}
<Display message={counter.counterValue} />
Here, The App parent (below)
Flows property data to the
Child Display component (above)
34© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• The parent App element has the Display element as its child, so it
is able to flow data down to it
• While this isn’t the only technique for flowing data in React, this is a
pattern you will see often
• You can even pass entire functions to child components, which
the children can then execute to relay data back to the parent
• Don’t worry if this is a little confusing at this point, it is one of
React’s more advanced concepts and just takes some practice
One-Way Data Flow
35© 2018 Rogue Wave Software, Inc. All Rights Reserved.
36© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Like many things in life, there’s an easy way and a hard way to get
going with React
• The easy way is great, but it obfuscates the setup and so you
can’t really learn from it
• Let’s step through the hard way first (just listing the steps) and then
I’ll introduce the easy way
• I recommend that everyone go through the hard way at least
once so you can become familiar
• It’s a pain, but, it’s worth it to increase your knowledge of React
Let’s start playing!
37© 2018 Rogue Wave Software, Inc. All Rights Reserved.
1) Install Node.js
2) Create root directory
3) npm init
4) Install express with
npm
5) Install react and react-
dom with npm
Just to give you an idea…
6) Install webpack with npm
7) Install BabelJS with npm
8) Install nodemon
9) Install eslint
10)Create webpack app
structure….
38© 2018 Rogue Wave Software, Inc. All Rights Reserved.
Ok ok I’ll stop….
39© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Thankfully, a special Node.js module called “create-react-
app” exists for you and is kept up to date
• This module is maintained by Facebook and is an
officially supported way to create a React app
• Note that this is only suitable for single-page React
apps, but, that covers most apps since your dynamic
content will all be rendered in the DOM
Huzzah!
40© 2018 Rogue Wave Software, Inc. All Rights Reserved.
1) npx create-react-app my-cool-app
2) cd my-cool-app
3) npm start
41© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• Let’s create a Dev environment using the create-
react-app module through npx
• We’ll then make a couple modifications and watch as
nodemon automatically restarts our process
Small mercies…
42© 2018 Rogue Wave Software, Inc. All Rights Reserved.
• We’ve just scraped the surface, but hopefully you have enough to get
started
• We learned that React is a Declarative library that Virtualizes the DOM
• And we looked at React’s building blocks, components, and demonstrated
their states and properties
• Finally, we walked through setting up a Dev environment
• From here, go check out React’s official tutorial, hosted by the React
community: https://reactjs.org/tutorial/tutorial.html
• Happy hacking, and finally…
Still so much to learn!
43© 2018 Rogue Wave Software, Inc. All Rights Reserved.
LinkedIn – Only Justin Reock in the world apparently!
Twitter – @jreock - But I do get a little political on
there….
Blog - http://blog.klocwork.com/author/justin-reock/
Email – justin.reock@roguewave.com
Feel Free to Reach Out – I Get Lonely…
44© 2018 Rogue Wave Software, Inc. All Rights Reserved.
45© 2018 Rogue Wave Software, Inc. All Rights Reserved.

More Related Content

What's hot

reactJS
reactJSreactJS
reactJS
Syam Santhosh
 
Lets make a better react form
Lets make a better react formLets make a better react form
Lets make a better react form
Yao Nien Chung
 
Reactjs
Reactjs Reactjs
Reactjs
Neha Sharma
 
ReactJs
ReactJsReactJs
Introduction to React JS for beginners | Namespace IT
Introduction to React JS for beginners | Namespace ITIntroduction to React JS for beginners | Namespace IT
Introduction to React JS for beginners | Namespace IT
namespaceit
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux Introduction
Nikolaus Graf
 
An introduction to React.js
An introduction to React.jsAn introduction to React.js
An introduction to React.js
Emanuele DelBono
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation洪 鹏发
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
DivyanshGupta922023
 
React hooks
React hooksReact hooks
React hooks
Sadhna Rana
 
React JS - A quick introduction tutorial
React JS - A quick introduction tutorialReact JS - A quick introduction tutorial
React JS - A quick introduction tutorial
Mohammed Fazuluddin
 
React js for beginners
React js for beginnersReact js for beginners
React js for beginners
Alessandro Valenti
 
ReactJS presentation
ReactJS presentationReactJS presentation
ReactJS presentation
Thanh Tuong
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
GDSC UofT Mississauga
 
React js - The Core Concepts
React js - The Core ConceptsReact js - The Core Concepts
React js - The Core Concepts
Divyang Bhambhani
 
React hooks
React hooksReact hooks
React hooks
Assaf Gannon
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
Bethmi Gunasekara
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
Rob Quick
 
Redux workshop
Redux workshopRedux workshop
Redux workshop
Imran Sayed
 

What's hot (20)

reactJS
reactJSreactJS
reactJS
 
Lets make a better react form
Lets make a better react formLets make a better react form
Lets make a better react form
 
React JS - Introduction
React JS - IntroductionReact JS - Introduction
React JS - Introduction
 
Reactjs
Reactjs Reactjs
Reactjs
 
ReactJs
ReactJsReactJs
ReactJs
 
Introduction to React JS for beginners | Namespace IT
Introduction to React JS for beginners | Namespace ITIntroduction to React JS for beginners | Namespace IT
Introduction to React JS for beginners | Namespace IT
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux Introduction
 
An introduction to React.js
An introduction to React.jsAn introduction to React.js
An introduction to React.js
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
React hooks
React hooksReact hooks
React hooks
 
React JS - A quick introduction tutorial
React JS - A quick introduction tutorialReact JS - A quick introduction tutorial
React JS - A quick introduction tutorial
 
React js for beginners
React js for beginnersReact js for beginners
React js for beginners
 
ReactJS presentation
ReactJS presentationReactJS presentation
ReactJS presentation
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 
React js - The Core Concepts
React js - The Core ConceptsReact js - The Core Concepts
React js - The Core Concepts
 
React hooks
React hooksReact hooks
React hooks
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Redux workshop
Redux workshopRedux workshop
Redux workshop
 

Similar to Intro to React

Reactjs notes.pptx for web development- tutorial and theory
Reactjs  notes.pptx for web development- tutorial and theoryReactjs  notes.pptx for web development- tutorial and theory
Reactjs notes.pptx for web development- tutorial and theory
jobinThomas54
 
Introduction to React JS.pptx
Introduction to React JS.pptxIntroduction to React JS.pptx
Introduction to React JS.pptx
SHAIKIRFAN715544
 
Introduction to ReactJS UI Web Dev .pptx
Introduction to ReactJS UI Web Dev .pptxIntroduction to ReactJS UI Web Dev .pptx
Introduction to ReactJS UI Web Dev .pptx
SHAIKIRFAN715544
 
What are the components in React?
What are the components in React?What are the components in React?
What are the components in React?
BOSC Tech Labs
 
Welcome to React & Flux !
Welcome to React & Flux !Welcome to React & Flux !
Welcome to React & Flux !Ritesh Kumar
 
Getting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular DeveloperGetting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular Developer
Fabrit Global
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
Marco Breveglieri
 
React Interview Questions and Answers | React Tutorial | React Redux Online T...
React Interview Questions and Answers | React Tutorial | React Redux Online T...React Interview Questions and Answers | React Tutorial | React Redux Online T...
React Interview Questions and Answers | React Tutorial | React Redux Online T...
Edureka!
 
Techpaathshala ReactJS .pdf
Techpaathshala ReactJS .pdfTechpaathshala ReactJS .pdf
Techpaathshala ReactJS .pdf
Techpaathshala
 
React a11y-csun
React a11y-csunReact a11y-csun
React a11y-csun
Poonam Tathavadkar
 
FRONTEND DEVELOPMENT WITH REACT.JS
FRONTEND DEVELOPMENT WITH REACT.JSFRONTEND DEVELOPMENT WITH REACT.JS
FRONTEND DEVELOPMENT WITH REACT.JS
IRJET Journal
 
How to react: Chapter 1, The Beginning
How to react: Chapter 1, The Beginning How to react: Chapter 1, The Beginning
How to react: Chapter 1, The Beginning
Om Prakash
 
How To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptxHow To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptx
BOSC Tech Labs
 
How Can the Hermes Engine Help React Native Apps.
How Can the Hermes Engine Help React Native Apps.How Can the Hermes Engine Help React Native Apps.
How Can the Hermes Engine Help React Native Apps.
Techugo
 
React Js Simplified
React Js SimplifiedReact Js Simplified
React Js Simplified
Sunil Yadav
 
React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIMarcin Grzywaczewski
 
An Overview of the React Ecosystem
An Overview of the React EcosystemAn Overview of the React Ecosystem
An Overview of the React Ecosystem
FITC
 
React js
React jsReact js
React js
Nikhil Karkra
 
React-JS.pptx
React-JS.pptxReact-JS.pptx
React-JS.pptx
AnmolPandita7
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
Karmanjay Verma
 

Similar to Intro to React (20)

Reactjs notes.pptx for web development- tutorial and theory
Reactjs  notes.pptx for web development- tutorial and theoryReactjs  notes.pptx for web development- tutorial and theory
Reactjs notes.pptx for web development- tutorial and theory
 
Introduction to React JS.pptx
Introduction to React JS.pptxIntroduction to React JS.pptx
Introduction to React JS.pptx
 
Introduction to ReactJS UI Web Dev .pptx
Introduction to ReactJS UI Web Dev .pptxIntroduction to ReactJS UI Web Dev .pptx
Introduction to ReactJS UI Web Dev .pptx
 
What are the components in React?
What are the components in React?What are the components in React?
What are the components in React?
 
Welcome to React & Flux !
Welcome to React & Flux !Welcome to React & Flux !
Welcome to React & Flux !
 
Getting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular DeveloperGetting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular Developer
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 
React Interview Questions and Answers | React Tutorial | React Redux Online T...
React Interview Questions and Answers | React Tutorial | React Redux Online T...React Interview Questions and Answers | React Tutorial | React Redux Online T...
React Interview Questions and Answers | React Tutorial | React Redux Online T...
 
Techpaathshala ReactJS .pdf
Techpaathshala ReactJS .pdfTechpaathshala ReactJS .pdf
Techpaathshala ReactJS .pdf
 
React a11y-csun
React a11y-csunReact a11y-csun
React a11y-csun
 
FRONTEND DEVELOPMENT WITH REACT.JS
FRONTEND DEVELOPMENT WITH REACT.JSFRONTEND DEVELOPMENT WITH REACT.JS
FRONTEND DEVELOPMENT WITH REACT.JS
 
How to react: Chapter 1, The Beginning
How to react: Chapter 1, The Beginning How to react: Chapter 1, The Beginning
How to react: Chapter 1, The Beginning
 
How To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptxHow To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptx
 
How Can the Hermes Engine Help React Native Apps.
How Can the Hermes Engine Help React Native Apps.How Can the Hermes Engine Help React Native Apps.
How Can the Hermes Engine Help React Native Apps.
 
React Js Simplified
React Js SimplifiedReact Js Simplified
React Js Simplified
 
React.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UIReact.js - and how it changed our thinking about UI
React.js - and how it changed our thinking about UI
 
An Overview of the React Ecosystem
An Overview of the React EcosystemAn Overview of the React Ecosystem
An Overview of the React Ecosystem
 
React js
React jsReact js
React js
 
React-JS.pptx
React-JS.pptxReact-JS.pptx
React-JS.pptx
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 

More from Justin Reock

Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?
Justin Reock
 
Community vs. Commercial Open Source
Community vs. Commercial Open SourceCommunity vs. Commercial Open Source
Community vs. Commercial Open Source
Justin Reock
 
Getting Started with Node.js
Getting Started with Node.jsGetting Started with Node.js
Getting Started with Node.js
Justin Reock
 
Monitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaMonitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and Grafana
Justin Reock
 
Integrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelIntegrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and Camel
Justin Reock
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
Justin Reock
 
Linux 101
Linux 101Linux 101
Linux 101
Justin Reock
 
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
ZendCon - Integration and Asynchronous Processing with ActiveMQ and CamelZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
Justin Reock
 
ZendCon - Linux 101
ZendCon - Linux 101ZendCon - Linux 101
ZendCon - Linux 101
Justin Reock
 

More from Justin Reock (9)

Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?Open Source AI and ML, Whats Possible Today?
Open Source AI and ML, Whats Possible Today?
 
Community vs. Commercial Open Source
Community vs. Commercial Open SourceCommunity vs. Commercial Open Source
Community vs. Commercial Open Source
 
Getting Started with Node.js
Getting Started with Node.jsGetting Started with Node.js
Getting Started with Node.js
 
Monitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and GrafanaMonitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and Grafana
 
Integrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and CamelIntegrating Postgres with ActiveMQ and Camel
Integrating Postgres with ActiveMQ and Camel
 
Node.js Deeper Dive
Node.js Deeper DiveNode.js Deeper Dive
Node.js Deeper Dive
 
Linux 101
Linux 101Linux 101
Linux 101
 
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
ZendCon - Integration and Asynchronous Processing with ActiveMQ and CamelZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
 
ZendCon - Linux 101
ZendCon - Linux 101ZendCon - Linux 101
ZendCon - Linux 101
 

Recently uploaded

Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
ayushiqss
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 

Recently uploaded (20)

Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 

Intro to React

  • 1. 1© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 2. 2© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 3. 3© 2018 Rogue Wave Software, Inc. All Rights Reserved. Justin Reock Chief Architect Rogue Wave Software Justin has over 20 years’ experience working in various software roles and is an outspoken free software evangelist, delivering enterprise solutions and community education on databases, integration work, architecture, and technical leadership. He is currently the Chief Architect at Rogue Wave Software.
  • 4. 4© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 5. 5© 2018 Rogue Wave Software, Inc. All Rights Reserved. • React is a JavaScript library that focuses on declarative syntax and virtualization of the DOM • It allows developers to write highly efficient JavaScript for the purpose of rendering a UI in a web browser • Whereas traditional JavaScript will re-render the entire DOM during a state change, React will only render the parts of the DOM that have changed
  • 6. 6© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Created by Jordan Walke at Facebook • First deployed on Facebook’s newsfeed in 2011, Instagram in 2012 • Released under the MIT License as an open source project in May of 2013 • Additional projects such as React Native for mobile and React Fiber would follow in 2015 and 2017 respectively
  • 7. 7© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 8. 8© 2018 Rogue Wave Software, Inc. All Rights Reserved. • It’s really these two keywords that sets React apart from traditional JavaScript UI development • React doesn’t iteratively draw UI components on the screen • The developer defines what the final UI should look like, and React ensures that the DOM is rendered accordingly • This is a very significant difference from typical HTML rendering in JavaScript, which typically centers around injecting HTML using the innerHTML directive Declarative and Virtualized
  • 9. 9© 2018 Rogue Wave Software, Inc. All Rights Reserved. • React also virtualizes the entire DOM and uses JavaScript to render actual HTML in the form of React Components • Although you may never directly use it for reasons that will soon become clear, React generates HTML elements using the React.createElement() method • Every UI element rendered in the browser will be created by a JavaScript call to this method Declarative and Virtualized
  • 10. 10© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 11. 11© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Right now you may be thinking: ”Why would you ever do that when its simple enough to just write HTML with in-line JavaScript? • Before you storm out of the session room, never to touch React again, let’s look at why this is actually quite powerful • React virtualizes the entire DOM – that really means that it keeps a dynamic model of the UI in-memory, and can manipulate it on the fly • Let’s look at a demo…
  • 12. 12© 2018 Rogue Wave Software, Inc. All Rights Reserved. • We’ll render a bit of HTML using the traditional innerHTML call, as well as through React • Then we’ll create a second timer on the page that will tick up using the JavaScript setInterval() function • We’ll then demonstrate exactly why this approach is so interesting Just the updates, please!
  • 13. 13© 2018 Rogue Wave Software, Inc. All Rights Reserved. • This is a much different paradigm, but with JavaScript free to own the entire DOM, we can do interesting things • Since React just declares the UI composition and updates itself accordingly, you don’t have to worry about redrawing parts or all of the UI when something changes • You can trust React to, well, react to those changes and re- render itself only when necessary Subtle but powerful…
  • 14. 14© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Another important aspect to understand is that React is not a framework • It’s a JavaScript library focused just on UI composition • You’ll use it in concert with other JavaScript libraries, such as Node.js • This allows you the freedom to build the other parts of your app any way you’d like, without having to commit to an entire framework Not a Framework
  • 15. 15© 2018 Rogue Wave Software, Inc. All Rights Reserved. • As you saw in the demo, the React library contains a method for drawing HTML elements inside of the DOM • But, you may never actually need to invoke it • JSX gives you the ability to just write your elements in a pseudo-HTML syntax React.createElement()
  • 16. 16© 2018 Rogue Wave Software, Inc. All Rights Reserved. • React will assemble these multiple React.createElement() calls into a tree of components • Then, upon every state change, React performs a “tree reconciliation” where it examines the state of every component and sees if anything has changed • If something has changed, react updates that part of the virtual DOM and re-renders the element ReactDOM.render()
  • 17. 17© 2018 Rogue Wave Software, Inc. All Rights Reserved. • The special function render() will expect to receive as input the design elements of your UI • An anchor element in HTML where it should draw the object is its second parameter • Only one element (or a parent element with children) can be passed, because Babel will convert these elements into functions ReactDOM.render()
  • 18. 18© 2018 Rogue Wave Software, Inc. All Rights Reserved. ReactDOM.render( <Button1 /><Button2 />, document.getElementById(‘root’), ); ReactDOM.render()
  • 19. 19© 2018 Rogue Wave Software, Inc. All Rights Reserved. ReactDOM.render() ReactDOM.render( <div> <Button1 /><Button2 /> </div>, document.getElementById(‘root’), );
  • 20. 20© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 21. 21© 2018 Rogue Wave Software, Inc. All Rights Reserved. • If you promise not to get too upset, I’ll show you how you’ll generally create elements in React Ok now I’m really leaving… function Title() { return ( <div> <h1>WTF How Is This Possible?</h1> </div> ); } ReactDOM.render(<Title />, document.getElementById(’root’);
  • 22. 22© 2018 Rogue Wave Software, Inc. All Rights Reserved. • So, yeah, you will write in-line ersatz HTML (really, JSX) and pass it around as if it was native JavaScript • It takes a little getting used to, but, it ends up being a lot cleaner than dozens of createElement() calls • In fact, when React compiles, it uses a library called Babel to generate createElement() statements from the JSX • So the JSX is really never rendered directly, it is interpreted by Babel and converted to createElement() calls at compile time
  • 23. 23© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Open up the Babel test portal at https://babeljs.io • Add some JSX to the test pane after selecting “react” under the Presets tab • Watch as Babel displays the equivalent React code • Hopefully end up a little less nauseated at what JSX is doing!
  • 24. 24© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Components are atomic UI elements which will combine layout with a state and set of properties that React will maintain • You will create these components as either JavaScript classes or functions, and React will use them to render UI elements • These components are autonomous, and maintain their own private state and properties • They can be arranged into parent/child hierarchies, and can flow data between them
  • 25. 25© 2018 Rogue Wave Software, Inc. All Rights Reserved. • A function component starts with a function, obviously • We’ve actually already seen one: function Title() { return ( <div> <h1>WTF How Is This Possible?</h1> </div> ); } ReactDOM.render(<Title />, document.getElementById(’root’);
  • 26. 26© 2018 Rogue Wave Software, Inc. All Rights Reserved. • These can also be defined using the newer JavaScript function arrow syntax: const Title = (props) => { return ( <div> <h1>WTF How Is This Possible?</h1> </div> ); } ReactDOM.render(<Title />, document.getElementById(’root’);
  • 27. 27© 2018 Rogue Wave Software, Inc. All Rights Reserved. • For more complex components, you may want to take advantage of JavaScript classes • Those who are more comfortable with OOP as opposed to Functional programming may prefer creating classes • I do encourage you to get comfortable with Functional programming, though • It is a discipline getting more and more important as we move to distributed and concurrent application architectures
  • 28. 28© 2018 Rogue Wave Software, Inc. All Rights Reserved. class App extends React.Component { render() { const profile = this.props; return <div> <h1>profile.title</h1> </div>; } … <App title=“Class Component” prop1=“somethingelse” />
  • 29. 29© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Components will automatically contain a properties object that can be interacted with and changed • These properties are passed in by default as function parameters in a function component • Or, they will be their own object, referenced with ‘this.props’ inside of a class component • Properties are immutable, but can be set with initial values when a component is rendered
  • 30. 30© 2018 Rogue Wave Software, Inc. All Rights Reserved. • State inside of a React component consists of two parts • The first is the state, which is really just a primitive or set of primitives that can be manipulated • The second is a setter function which allows you to update the state of a component • Both of these entities are exposed by deconstructing a special hook called useState() which is provided by React
  • 31. 31© 2018 Rogue Wave Software, Inc. All Rights Reserved. • We just covered a lot of ground, but when we look at the code this is actually very straightforward • Let’s create a function component, and give that component a set of properties and a state • And let’s alter that state and watch the result in the browser Lets tie it all together
  • 32. 32© 2018 Rogue Wave Software, Inc. All Rights Reserved. • This is a large topic, but we’ll gently introduce it here • Recall in the demo that we broke our UI into two components, a Display and a Button • The Display object had to react to state changes caused by the Button’s onClick event handler • We did this by passing properties into the Display function One-way Data Flow
  • 33. 33© 2018 Rogue Wave Software, Inc. All Rights Reserved. One-Way Data Flow function Display(props) { return ( <div>{props.message}</div> ); } <Display message={counter.counterValue} /> Here, The App parent (below) Flows property data to the Child Display component (above)
  • 34. 34© 2018 Rogue Wave Software, Inc. All Rights Reserved. • The parent App element has the Display element as its child, so it is able to flow data down to it • While this isn’t the only technique for flowing data in React, this is a pattern you will see often • You can even pass entire functions to child components, which the children can then execute to relay data back to the parent • Don’t worry if this is a little confusing at this point, it is one of React’s more advanced concepts and just takes some practice One-Way Data Flow
  • 35. 35© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 36. 36© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Like many things in life, there’s an easy way and a hard way to get going with React • The easy way is great, but it obfuscates the setup and so you can’t really learn from it • Let’s step through the hard way first (just listing the steps) and then I’ll introduce the easy way • I recommend that everyone go through the hard way at least once so you can become familiar • It’s a pain, but, it’s worth it to increase your knowledge of React Let’s start playing!
  • 37. 37© 2018 Rogue Wave Software, Inc. All Rights Reserved. 1) Install Node.js 2) Create root directory 3) npm init 4) Install express with npm 5) Install react and react- dom with npm Just to give you an idea… 6) Install webpack with npm 7) Install BabelJS with npm 8) Install nodemon 9) Install eslint 10)Create webpack app structure….
  • 38. 38© 2018 Rogue Wave Software, Inc. All Rights Reserved. Ok ok I’ll stop….
  • 39. 39© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Thankfully, a special Node.js module called “create-react- app” exists for you and is kept up to date • This module is maintained by Facebook and is an officially supported way to create a React app • Note that this is only suitable for single-page React apps, but, that covers most apps since your dynamic content will all be rendered in the DOM Huzzah!
  • 40. 40© 2018 Rogue Wave Software, Inc. All Rights Reserved. 1) npx create-react-app my-cool-app 2) cd my-cool-app 3) npm start
  • 41. 41© 2018 Rogue Wave Software, Inc. All Rights Reserved. • Let’s create a Dev environment using the create- react-app module through npx • We’ll then make a couple modifications and watch as nodemon automatically restarts our process Small mercies…
  • 42. 42© 2018 Rogue Wave Software, Inc. All Rights Reserved. • We’ve just scraped the surface, but hopefully you have enough to get started • We learned that React is a Declarative library that Virtualizes the DOM • And we looked at React’s building blocks, components, and demonstrated their states and properties • Finally, we walked through setting up a Dev environment • From here, go check out React’s official tutorial, hosted by the React community: https://reactjs.org/tutorial/tutorial.html • Happy hacking, and finally… Still so much to learn!
  • 43. 43© 2018 Rogue Wave Software, Inc. All Rights Reserved. LinkedIn – Only Justin Reock in the world apparently! Twitter – @jreock - But I do get a little political on there…. Blog - http://blog.klocwork.com/author/justin-reock/ Email – justin.reock@roguewave.com Feel Free to Reach Out – I Get Lonely…
  • 44. 44© 2018 Rogue Wave Software, Inc. All Rights Reserved.
  • 45. 45© 2018 Rogue Wave Software, Inc. All Rights Reserved.

Editor's Notes

  1. Establish right to play here by explaining background
  2. COCOMO = Constructive Cost Model Software cost estimation model Uses a regression formula to calculate effort as time