►
From YouTube: Jakarta EE & MicroProfile Key Features Demo | Jakarta Tech Talks | Edwin Derks & Josh Juneau
Description
From Feb 17, 2021
Josh Juneau and Edwin Derks present an evolution of the session provided at EclipseCon 2020, exploring Jakarta EE 8 and MicroProfile 3.3, looking forward to Jakarta EE 9 and MicroProfile 4.0.
Get Social!
Website: jakarta.ee
Subscribe: https://www.youtube.com/user/EclipseFdn
Follow us on Twitter: https://twitter.com/JakartaEE
Like us on Facebook: https://www.facebook.com/JakartaEE/
Join us on LinkedIn: https://www.linkedin.com/groups/13597
Tag us: #JakartaEE
Want more great Eclipse Community webinars? Become a member of our Jakarta Tech Talks Meetup: https://www.meetup.com/jakartatechtalks
A
Hello,
everybody
welcome
to
today's
jakarta
tech
talk.
We
have
joining
us
edwin,
dirks
and
josh
juno,
presenting
jakarta
ee
and
micro
profile
key
features.
Demo
josh
is
an
application
developer
system
analyst
and
database
administrator,
as
well
as
an
author
and
java
champion,
he's
also
a
regular
voice
on
the
java
pub
house
off
edward
heap,
podcast
software,
architect,
microprofile
and
jakarta
ee
contributor
and
a
regular
conference
speaker.
I'm
sure
many
of
you
know
very
well
at
this
point:
I'm
not
going
to
take
any
more
of
their
time.
B
B
Yes,
okay,
perfect!
So,
as
mentioned
by
hudson,
this
is
the
jacardi
and
microprofile
talk
here
and
we're
going
to
give
you
some
key
feature
demos
here
in
this
talk.
It's
me
of
course,
josh
juno
and
edmund
dirks,
and
you
can
see
our
twitter
handles
there.
If
you
need
to
contact
us.
B
And
so
here's
a
little
bit
more
about
us
I'll
go
ahead
and
start.
I
am
a
member
of
the
chicago
java
users
group,
I'm
on
the
executive
board,
I'm
application
developer,
mostly
I'm
targeting
jakarta
ee
and
java
ee.
I
do
database
administration
primarily
oracle
database
and
of
course
I
do
some
writing
and
podcasting
as
well,
and
I
work
lots
with
the
apache
netbeans
project,
java
champions
and
jacardi
ambassadors.
I
should
have
updated
that
sorry
about
that.
Edmond.
C
B
Excellent,
so
for
today's
agenda,
we're
basically
going
to
just
demonstrate
some
cool
features
of
jakarta,
e8
and
microprofile
and
of
course,
during
the
session.
If
there's
any
questions,
please
feel
free
to
ask
them
and
we
will
try
and
get
back
to
you
as
soon
as
we
can
within
the
you
know,
context
of
this
conversation
and
hopefully
we'll
just
see
those
comments
as
they
come
in,
but
please
do
feel
free.
B
So
we'll
start
off
this
presentation
with
a
little
bit
about
jakarta,
ee9
and
just
wanted
to
make
mention
that
this
particular
presentation
will
make
use
of
jakarta,
e8
and
microprofile
3.3
and
the
reason
being
is
we're
using
power,
server
and
or
pyro
micro
in
this
case,
and
we
want
to
be
able
to
run
both
jakarta,
ee8
and
microprofile.
So
this
makes
it
quite
possible
to
do
so
and
in
order
to
do
so,
you
can
get
started
by
going
to
the
github
site
and
downloading.
B
The
demo
that
we
have
published-
and
all
you
have
to
do-
is
incorporate
the
dependencies
into
your
project
and
then
the
of
course.
The
examples
use
jakarta
e8
now
just
to
mention
about
jakarta
e9.
It
is
not
going
to
be
backward
compatible,
it
is
not
backward
compatible.
B
I
should
mentioned
it
is
already
released,
was
released
late
last
year,
but
jakarta
e9
does
have
a
namespace
change,
and
so
that's
one
of
the
biggest
changes
with
jakarta
e9
is
that
now,
instead
of
pulling
apis
into
your
code
using
the
java
x
name,
space
you're
going
to
need
to
use
the
jakarta
namespace,
and
so
that's
that's
a
little
bit
of
a
different,
but
primarily
most
of
the
features
in
jakarta.
E9
are
very
much
the
same
as
they
are
in
jakarta
ee8.
B
So
everything
you
see
in
this
talk
is
current
and
will
work
with
jakarta
e9,
with
respect
to
the
the
way
that
the
the
code
functions.
However,
the
name
space
will
be
different
if
you
opt
to
use
jakarta
e9.
B
One
more
thing
to
mention
is
that
java
se
11
support
is
available
as
of
jakarta
ee
9.1,
so
it's
not
available
at
jakarta,
e9
out
of
the
gate.
B
So
first
I
would
like
to
start
off
by
talking
a
little
bit
about
jakarta,
cdi
context
and
dependency
injection.
There
have
been
some
additions
in
jakarta,
ee8,
actually
most
of
the
editions,
if
you'll,
think
of
them
as
that
are
new.
As
of
java,
ee-8,
okay,
so
java
ee-8
was
released
by
oracle
and
then
that
was
then
open
sourced
to
the
eclipse
foundation
under
jakarta
evening
and
so
jakarta.
B
Ee
really
brings
all
this
under
the
open
source
umbrella
and
most
of
the
new
features
that
are
in
these
releases
are
from
java
eda.
So
many
of
the
features
you'll
see
me
listing
they
were.
They
have
been
available
since
java
e8,
but
there
are
a
couple
of
differences,
so
the
latest
additions
here
for
cdi
is
modularization
and
support
of
java
essie
observer
ordering
asynchronous
events
configurators
for
major
spi
elements,
configure
or
veto
observer
methods
and
apply
interceptors
on
producers.
B
So
I
wanted
to
talk
just
a
little
bit
about
some
of
the
key
features,
as
mentioned
at
the
top
of
the
discussion
here.
So
one
of
the
things
is
the
async
process
here
in
cdi,
so
in
order
to
mark
an
event
as
asynchronous,
you
go
ahead
and
just
call
upon
the
beam,
manager's
fire,
async
method,
passing
the
event
class,
and
so
I'm
going
to
go
ahead
and
show
you
how
that's
done
so
with
our
demo
application.
B
What
you
didn't
see
is
that
behind
the
scenes
there
is
an
asynchronous
cdi
event
occurring,
and
so
let's
go
ahead
and
let's
look
at
this
code
a
little
bit.
B
So
if
I
look
at
the
form
here,
give
me
one
second,
you
can
see
that
I'm
creating
this
employee
and
when
I
click
the
button,
it
is
going
to
call
upon
this
create
method
which
is
part
of
the
acme
employee
controller.
B
And
basically,
what
this
is
doing
is
just
taking
the
form
contents
and
submitting
it
using
rest,
but
in
the
process
here
it
creates
this
employee
event
which
it
has
a
payload,
and
this
will
go
ahead
and
fire
asynchronously
because,
as
you
saw,
we
call
upon
the
fire
async
and
then
what
I
can
do
here
is.
I
can
say
you
know
when
this
is
completed.
B
It's
going
on
behind
the
scenes.
Nobody
knows
about
it,
it's
a
process,
that's
running
when
it's
done,
you
can
do
something
with
it.
If
it
encounters
an
issue,
then
you
can
go
ahead
and
process
it
a
different
way.
If
you
can
look
down
here
in
the
terminal,
you
can
see
that
the
new
employee
was
created,
so
this
event
was
fired
and
it
worked
worked
without
an
issue.
B
If
I
scroll
to
the
top
of
this
class
you'll
see
that
I
did
do
the
injection
of
this
event
right
here,
so
you
inject
the
event
into
your
your
class
and
then
you
can
call
upon
it
using
the
fire
async.
B
So
this
is
giving
you
the
ability
to
basically
pass
json
to
java
and
it
will
automatically
convert
it
into
a
java
object
and
you
can
also
do
the
opposite
direction
as
well.
So
this
code
that
you're
seeing
here
on
screen
shows
you
how
to
create
a
customer
object
from
json
here.
B
So
basically,
what
you
would
do
is
get
this
json
b
builder
object
and
it
would
create
you
a
json
b
object
once
you
call
upon
the
create
method
and
then
from
there
you
take
this
json
b
object
and
invoke
the
from
json,
and
we
would
pass
this
customer
json
text,
which
is
just
a
string
and
it
would
convert
it
into
this
customer
class.
You
can
see
that
it's
just
as
easy
as
that,
and
let
me
show
you
how
that's
done
here.
B
So
if
I
go
back
to
this
code
in
this
example,
application
I've
got
this
button
at
the
top
of
my
form
here.
If
I
click
create
json,
you
see
a
bunch
of
json
that
is
emitted
to
the
screen
here
now,
what
happens
here
in
the
code?
If
we
want
to
look
at
this
page
again,
I'm
going
to
go
down
to
the
second
tab,
where
it
says
json
examples,
and
then
you
see
my
button
here,
the
command
button.
B
If
I
click
you
can
see
in
the
code,
what
I'm
doing
is
I'm
getting
this
json
b
builder
and
calling
upon
create
and
then
what
I'm
passing
is
actually
the
items.
The
items
that
are
in
that
table
above
see
these
these
employee
items,
that's
exactly
what
it
is
and
then
it's
going
to
set
the
return
message
to
the
screen.
B
B
So
let
me
show
you
that
real
quick
in
this
case
I'm
going
to
just
copy
and
paste
one
of
these
json
objects
here
and
I'm
going
to
paste
it
into
this
text
box.
I've
got
and
when
I
click
this
button,
you're
going
to
see
a
very
minimal
message
here
show
up
it's
just
that
the
name
of
the
person
that
I've
added
and
if
we
look
at
the
code.
B
We're
going
to
see
that
the
action
behind
this
button
here
does
exactly,
as
I
had
mentioned
before,
I'm
going
to
create
this
new
employee
object
and
then
I'm
going
to
go
ahead
and
take
this
string,
which
was
entered
into
the
text
box
and
converted
from
from
json
to
this
employee,
object
and
populate
this.
This
employee
object,
and
basically
I'm
just
setting
the
first
name
and
last
name
to
the
message
to
be
displayed.
B
So
that's
a
little
bit
about
json,
binding,
so
json
processing
is
the
ability
to
parse,
transform
and
query
json
data
using
the
object
model
or
streaming
model.
So
this
is
done
by
using
a
json
object
builder,
and
this
will
allow
you
to
build
a
json
object.
You
call
upon
the
create
object,
builder
method,
to
create
a
json
object
builder,
or
you
can
call
upon
the
create
array,
builder
method,
to
create
a
json
array.
B
So
one
of
the
most
interesting
portions
of
json
processing
is
the
json
pointer
and
json
patch.
So
what
json
pointer
allows
one
to
do
is
to
point
to
a
particular
element
within
a
json
structure,
so
you
can
basically
indicate
which
element
you
would
like
to
point
to
and
then
this
code
will
bring
back
that
exact
element
and
allow
you
to
do
what's
called
a
patch.
B
So
we
can
replace
a
specified
value
in
that
json
document
with
some
other
value
or
we
can
transform
it
or
edit
it,
and
this
will
define
only
two
data
structures,
objects
and
arrays,
but
it
does
define
several
different
value
types
which
are
mentioned
there
on
the
bottom.
So,
let's
show
you
how
this
is
done,
so
if
I
take
a
look
back
here
on
this
form,
you
can
see
that
I
I
want
to
insert
a
search
employee
by
address
is
this
is
a
little
bit
misleading.
Doesn't
really
do
that?
B
Basically,
all
of
this
json
here
that
you
see
at
the
top.
I
can
take
one
of
those
elements,
and
I
can
I
can
basically
replace
it
here
using
this
patch.
So
let's
say
I
want
to
replace
element
one,
and
I
want
to
replace
it
with
test
here-
is
all
of
our
objects
returned,
and
you
can
see
that
the
first
element
is
actually
been
replaced
with
text
test.
Excuse
me.
B
If
I
want
to
replace
the
first
one,
then
it's
actually
a
zero
right,
because
we're
talking
about
an
array,
so
the
first
null
element
has
been
replaced
with
test
and
actually
in
real
life.
We
probably
want
to
replace
this
json
with
other
json,
so
you
could
do
that
quite
easily
as
well.
Let
me
show
you
how
this
is
done
here
in
the
code.
B
So
we
take
this
json
pointer
form
and
I
basically
add
the
replacement
string
and
the
text
into
text
boxes
and
then
what
I
can
do
here
is
call
upon
this
find
employee
by
last
method.
What
I'm
doing
here
is
you
can
see
that
I
use
the
json
object
to
create
a
json
object
builder
and
then
what
I
do
here
is
I'm
calling
upon
this
build
employees,
json
and
really
what
this
is
doing
is
just
getting
me
a
json
array
of
all
the
employees
in
the
database.
B
Okay,
and
then
I
create
this
json
pointer
by
calling
upon
the
create
pointer
method
and
passing
the
text
that
was
passed
in
so
my
zero
or
one.
This
will
grade
me
in
a
pointer
and
then
what
I
can
do
is.
I
can
call
upon
the
replace
method
of
that
pointer
and
I
can
pass
in
the
array
that
I
want
to
replace.
You
know
the
element
of,
and
then
I
pass
in
the
replacement
string.
B
B
Okay,
so
jakarta
server
faces
one
of
my
favorites.
I've
always
enjoyed
using
jsf
for
front
ends
for
applications,
and
you
know
lots
of
people
now
days
are
using
frameworks
that
they
think
are
better
suitable
for
microservices
and
whatnot,
but
I
want
to
argue
that
jsf
is
very
suitable
for
microservice
based
applications,
and
so
I
can
show
you
a
little
bit
about
how
I'm
doing
that
here.
Basically,
the
application
that
we
have
here
for
this
demo
was
microservices
based
and
so
I'll
show
you
how
I've
set
this
up
with
the
jsf
front
end.
B
But
let's
look
at
a
little
bit
about
another
key
feature.
First,
it's
local
date,
time
conversion.
So
if
you
remember
way
back
in
jsf,
2.2
and
whatnot,
we
had
to
transform
dates
in
order
to
make
them
work
with
jsf
and
they
didn't
work
then,
with
the
local
date
time
edition,
which
was
new
to
java
8..
So
in
jsf
the
newer
versions
2.3,
we
are
enabling
the
ability
to
utilize
local
date.
Time-
and
let
me
see
here
if
I
can
find
right
there.
B
If
you
look
at
this
column
here,
you
can
see
what
I'm
doing
is.
I'm
converting
the
date
time
by
passing
in
as
a
parameter
here,
that's
to
convert
date
time.
I
call
upon
the
local
date
type
and
I
pass
it
a
pattern.
That's
all
I've
got
to
do
to
convert
it
and
I
can
now
use
safely
local
date
time.
So
I
can
show
you
that
the
type
of
this
date
is
a
local
date.
Okay
and
basically,
that's
what's
being
displayed
on
this
screen
here.
These
are
using
the
local
date
time
conversion.
B
So
let's
talk
a
little
bit
about.
How
am
I
getting
this
jsf
front
end
to
work
with
microservices?
Basically,
the
way
you
do
it
is
to
use
the
view
scoped
controllers.
So
if
I
look
at
my
form,
it's
just
a
basic
jsf
form
and
the
beauty
of
this
is
that
I
can
utilize.
The
many
great
libraries
that
are
out
there,
prime
face
is
one
of
my
favorites
and
I
can
construct
my
my
forms
and
my
application
using
these
great
libraries.
B
I've
been
around
for
years,
but
this
acne
employee
controller
is
in
the
background
here
right.
This
has
got
a
business
logic
in
it
and
basically,
I
just
make
it
view
scoped.
So,
every
time
the
view
is
changed
every
time
you
change
screens
this
is
recreated
and
then
what
I
use
is
restful
web
services
to
populate
the
data
and
I'll
show
you
a
little
bit
more
about
how
I'm
doing
this
here
in
a
few
minutes.
But
basically
you
just
call
upon
your
your
methods
and
your
data
from
this
view.
B
So,
let's
show
you
that
jax
rs
client,
now
one
of
the
newer
features
of
jax
rs,
is
the
jax
rs
client
and,
like
I
said,
this
enables
jsf
view
scope
views
to
be
used
for
interacting
with
remote
web
services
to
update
the
database.
So
what
you
see
in
the
application
here-
excuse
me
when
you
look
here-
is
that
this
this
is
not
pulling
from
it
directly
from
a
database
per
se.
B
What
it's
doing
is
using
some
restful
web
services
to
obtain
that
data,
and
then
it's
displaying
that
result,
and
so,
if
I
look
at
this
employee
controller,
the
initial
thing
I
do
is
I
construct
this.
B
This
data
set,
and
so
the
way
I
construct
this
data
set,
you
can
see
what
I'm
going
to
do
is
populate
this
list
of
acme
employee
items,
and
what
I
do
is
I
call
this
url,
which
is
basically
taking
me
to
a
restful
web
service.
Okay-
and
we
use
micro
profile
config
to
get
these
these
different
parameters
here
to
to
construct
this
path,
and
edwin
will
tell
you
a
little
bit
more
about
that
later.
B
But
the
important
thing
to
mention
here
is
that
I'm
using
this
json
excuse
me
jax,
rs,
client,
and
what
you
do
is
you
call
upon
this
client
builder
and
new
clients
to
obtain
a
client
and
then
I
can
pass
it
this
path
and
then
what
it's
going
to
do
is
go
ahead
and
return
all
of
the
items
here
in
the
employee
database.
So
let
me
show
you
this
service.
B
So
if
you
look
here,
I
know
it's
kind
of
hard
to
see
and
my
left-hand
side
over
here,
but
if
I'm
looking
in
netbeans,
I've
got
this
employee
service
and
basically
what
this
is
is
just
a
restful
web
service.
B
And
then
I've
got
this
jax
rs
service
set
up.
So
when
I
call
upon
the
acme
employee
service,
I
can
find
by
last
and
get
the
last
name
or
I
can
get
all
the
employees
by
calling
find
all,
and
this
will
query
the
database
and
return
the
results
and
that's
exactly
what
I'm
doing
in
order
to
populate
the
table
on
this
page.
B
So
restful
web
services
have
something
called
server
sending
vents.
This
is
a
new
feature
as
well.
It
allows
one-way
communication
channel
and
it
allows
the
server
to
send
multiple
messages
over
a
single
connection.
The
ssc
event,
sync,
is
used
to
stream
messages
and
ssc
event
is
the
base
class,
outbound,
ssc
event,
packages
and
event.
B
So
let
me
show
you
real
quickly.
In
our
example,
here
we've
got
server
sent
events
on
this
form.
I've
just
got
a
quick
button
here
you
can
press
it.
You
don't
see
anything
happen
here
on
screen,
but
if
we
look
back
in
the
netbeans
console
here,
you
can
see
that
I've
got
a
bunch
of
events
being
sent.
So,
let's
see
what's
going
on
here.
B
So
if
I
go
back
to
my
index
page-
and
I
just
want
to
mention
when
you
download
this
code
from
github,
if
you
go
to
the
index
page
of
the
employee
client,
that's
where
everything
really
kicks
off.
So
you
can
see
by
reading
that
code,
and
just
as
I'm
doing
here
in
this
demo
clicking
on
the
different
methods
you
can,
it
will
help
you
navigate
around
so
what's
happening
here
when
I
click
this
button.
Is
I'm
calling
upon
this
controller
class,
which
is
a
request?
B
Scoped
employee
excuse
me,
sse,
client
class
and
basically
I'm
creating
this
jax
rs
client
and
I'm
calling
component
service
again
and
this
service
is
called
ssc
employees,
and
so
what
this
is
doing
here
is
it's
calling
upon
this
employee
service,
which
is
right
here.
B
It's
in
the
employee
event
project,
so
this
service
here
is
then
going
to
create
and
initialize
all
the
employees
in
the
list
again
and
when
I
call
upon
this
employee's
service
here,
what
it
does
is
it
passes
in
this
sse
event,
sync
context
and
the
sse
context,
as
I
had
mentioned
in
the
slide,
and
what
this
allows
me
to
do
is
I
can
run
this
asynchronous
process
which
will
send
an
event
and
then
it
will
receive
call.
B
When
I
call
upon
the
ssc
new
event
builder,
I
can
build
an
outbound
ssc
event
and
send
it
using
the
event.
Sync,
so
it's
not
receiving
anything.
Excuse
me
for
misspeaking
a
second
ago,
but
this
will
send.
It
allows
me
to
send
this
out
on
event
and
then
that's
what
you
can
see
happening
here
in
the
background,
so
I
could
send
as
many
events
as
I
wanted
to
do
from
the
server
doing
this
technique.
B
So
let's
talk
a
little
bit
about
security.
This
is
a
feature
that
was
added
in
java.
Eea
was
much
needed
and
allows
you
the
ability
to
apply
across
identity
stores
such
as
database
ldap
embedded
uses
annotations
for
ease
of
development.
This
remembers
callers
using
cookies
or
the
identity
store.
It
allows
group
to
roll
mapping,
so
you
can
secure
portions
of
your
application
using
roles
and
also
enable
standard
expression,
language
accessors
and
use
the
simplified
http
authentication
mechanism
interface.
B
So
let
me
quickly
show
you
here
what's
happening
with
this
code,
so
I've
got
a
login
page
and
it
allows
me
to
accept
a
username
and
password,
of
course,
and
when
I
click
the
authenticate
button,
what
this
is
going
to
do
is
it's
going
to
pass
a
string
based,
username
or
password
to
this
controller
class,
which
again
is
request
scoped
and
at
the
beginning.
The
important
thing
to
see
here
is
that
I'm
passing
in
the
security
context
object
I'm
injecting
that
into
the
class,
and
then
I
can
utilize
that
to
perform
my
authentication.
B
So
what
happens
when
I
click
submit?
Is
it
goes
ahead
and
runs
this
switch
statement
which
is
going
to
call
upon
this
continue
authentication
to
obtain?
One
of
these
case
results
so
continue.
Authentication
calls
upon
the
security
context
to
authenticate
my
request.
B
All
this
is
doing
is
telling
it
to
get
this
external
request,
and
what
it's
going
to
do
is
obtain
this
request
and
return
the
response
and
I'm
setting
up
this
authentication
parameters,
object
with
the
parameters,
and
I
call
upon
this
credential
and
what
I
do
is
I
am
creating
this
username
password
credential
with
my
username
and
password
that
were
passed
in
all
this
is
doing,
in
short,
is
passing
this
to
the
server
authenticating
it
and
then
returning
a
result.
B
So
the
server
handles
all
this,
and
then
it
will
tell
me
if
it's
been
a
successful
authentication
or
not
very
easy,
and
I
would
recommend
looking
more
into
this
and
to
see
in
the
pyra
console
here
to
get
these
security
events
set
up
correctly.
You
have
to
use
realms,
and
so
it
could
be
happening
in
any
type
of
compatible
java
application,
server,
jakarta,
e8
application
server,
but
in
pyra
here
this
is
probably
needs
to
be
re-authenticated.
B
And
jakarta
bean
validation-
this
is
a
name,
a
weight
which
enables
us
to
validate
our
fields,
and
so
we
can
use
annotations
to
easily
validate
the
fields
instead
of
going
in
and
writing
a
bunch
of,
if
else
and
conditionals
to
determine.
If
a
field
is
going
to
contain
data
that
qualifies
to
be
entered
into
the
database
or
not.
You
know
we
can
just
use
annotations
some
new
annotations,
which
are
newer
as
of
java
ee8
would
be
email,
not
empty,
not
blank
positive,
positive
or
zero
negative,
negative
or
zero
past
or
present
future
presence.
B
So
I
can
easily
annotate
an
email
field
and
indicate
if
it's
correctly
going
to
contain
that
email
or
if
it's
got
some
just
gibberish
in
that
field,
and
then
this
allows
me
to
better
assume
that
my
data
is
correct.
B
B
Also
jpa
works
with
the
date
time
functionality.
It
was
new
as
of
java
8,
and
it
allows
you
to
do
cti
injection
in
attribute
converters.
Oh,
I
guess
I
have
one
more
websockets.
Excuse
me.
So
web
sockets
are
a
way
to
do
full
duplex
communication
between
peers.
You
can
create
a
websocket
endpoint
by
annotating,
a
regular
pojo
with
server
endpoint,
and
then
you
can
create
this
message.
B
Receiver
method,
which
annotates
with
on
message-
and
this
supports
opening
messages
or
error
messages
or
whatever
may
occur,
and
this
makes
it
easy
to
create
something
like
a
chat
client
where
you
have
a
two-way
communication,
whereas
a
websocket
is
a
one-way
push
right
from
the
server
so
web
sockets
allow
for
that
full
duplex,
two-way
communication.
B
C
Yes,
thank
you
josh.
I
was
just
answering
a
question
regarding
the
next
features
for
jakarta
microprofile.
I
have
a
slide
on
the
end.
That
kind
of
covers
that.
So
briefly,
but
maybe
in
the
meantime,
you
can
sure
tell
something
about
it.
If
you
already
like
sure,
I'm.
C
Now
so
all
right,
so
I'm
going
to
cover
a
few
key
features
of
microprofile,
as
you
have
seen
until
now,
josh
has
been
sharing,
jakarta
examples
and
key
features
and
micro
profile.
Compliments
on
that
by
providing
the
real
cloud
native
capabilities.
C
So
george
has
also
been
demonstrating
with
running
bayara
on
his
local
machine
integrated
in
this
ide,
but
I
will
more
focus
on
how
the
key
features
of
microprofile
can
help.
You
get
your
app
ready,
integrated
into
a
cloud
in
containers
in
kubernetes,
if
you
like
the
exact
package
that
you
need
and
why
it
is
set
up
like
that
in
your
project,
to
really
get
your
app
out
as
a
code
native
app.
So
that's
kind
of
the
context
I
wanted
to
to
share
today.
C
So
I
will
start
with
one
of
the
most
important
ones
that
is
microprofile
health.
Microprofile
health
has
been
aligned
with
kubernetes
for
a
few
versions
now,
and
it
provides
the
means,
like
healthness
probes,
that
kubernetes
needs
to
determine
if
a
specific
app
can
be
accessed
for
handling
loads.
So
we
have
two
versions
there.
We
have
the
liveness
probes
and
the
readiness
probes
and
the
license
probes
tells
kubernetes
hey.
This
app
is
ready
to
put
into
the
load
balancer
and
the
readiness
probe
tells
it
hey.
C
So
this
is
my
locally
running
service,
just
the
ones
that
josh
has
shown.
I'm
just
now
accessing
the
health.
Endpoints
live
at
my
local
port
and
it
says
that
the
service
is
up,
so
I
can
reload
this
and
it's
still
up,
but
I'm
exiting
the
live.
Endpoint
now-
and
this
is
the
default-
there's
nothing
really
going
on
here-
it
just
says
default,
my
app
is
up,
but
they
can
also
access
the
readiness
endpoint-
and
this
has
a
little
bit
more
because
I
have
made
my
own
version
of
the
readiness
health
endpoint
in
the
code.
C
C
C
C
This
is
not
necessarily
the
best
thing
to
to
put
into
production,
but
what
I
really
want
to
emphasize
here
is
that
you
can
really
put
anything
you
need
to
determine
if
your
app
is
ready.
So
this
you
have
full
control
over
this,
which
is
really
neat.
C
C
Like
just
already
mentioned,
we
have
this:
we
have
this
acme
employee,
config
class,
and
we
have
four
properties
here,
and
these
three
are
being
injected
from
a
properties
file.
This
properties
files
is
being
shaped
with
the
app
nothing
special,
but
it's
just
one
of
the
locations.
Microprofile
config
looks
for
properties
to
inject
in
your
code,
like
here
also
just
injection
cdi
based
very
straightforward
use
of
this
specification,
but
this
one
is
not
in
the
properties
file.
So
where
does
it
come
from
then?
Well,
this
goes
a
little
bit
into
the
setup.
C
So
this
gives
you
really
the
power
to
inject
your
app
in
a
specific
environment
like
kubernetes,
for
example,
with
the
conflict
maps
that
can
contain
your
config
properties
to
make
it
more
cloud
native
out
of
the
box.
So
you
don't
necessarily
have
to
locally
install
kubernetes
for
that
you
can
just
use
compose
and
mimic
running
in
cytocloud.
C
I'm
going
to
shut
down
this
for
four
seconds
for
purposes
later,
so
this
is
what
you
can
do
with
microprofile
config
and
microprofile.
4.0
adds
a
ton
of
new
features
to
this
specification
that
you
can
use
to
even
better
integrate
your
coffee
in
certain
environments
that
you
want
to
put
your
app
into
using
profiles
and
environments
that
can
distinguish
itself
from
each
other.
C
Then
there's
also
the
microprofile
rest
client
and
just
choices
already
shown
the
jakarta,
rs
client.
Sorry,
the
rest
client
that
there
is
already
available.
You
can
use
java
code
to
build
up
a
htp
call
to
another
service,
but
the
microprofile
rest
client.
You
can
do
it
as
well,
but
here
you
can
use
a
more
annotation
based
way
of
doing
that
which
more
lies
or
relies
on
convention
and
configuration
than
explicit
code.
C
C
I
can
tie
it
to
the
bean
cdio
agb
beam,
that
is,
it
is
going
to
be
injected
to
it
consumes
json,
and
this
is
actually
the
get
method
that's
being
executed
when
I
call
this
find
all
method
in
the
code,
but
this
path
is
part
of
the
url,
but
this
url
is
not
complete.
I
cannot
just
call
this
path
and
it
will
end
nowhere.
So
again
we
are
relying
here
on
microprofile
config
under
the
hood,
to
provide
you
the
url
for
this,
for
this
calls.
C
So
this
here
is
the
convention
on
how
you
can
define
the
the
the
base
url
for
the
specific
class
acme
employee
service
client.
I
have
just
showed
you
there,
the
interface,
so
it
means
this
is
injected,
alongside
with
the
pulse
as
a
suffix.
That
makes
up
the
whole
url,
and
then
I
can
inject
this
interface
here
in
the
code
of
the
controller
that
josh
has
already
shown.
C
So
in
the
meantime,
this
gives
me
a
little
bit
of
an
opportunity
to
talk
about
how
the
docker
compose
is
set
up
for
this,
because
my
service
can
run
and
it
can
try
to
communicate
with
other
services
in
the
database.
But
it
is
yeah
easy
if
my
service
also
has
the
dependencies
available
that
it
depends
on.
In
the
same
environment,
because
then
I
don't
have
to
mock
anything,
I
can
just
act
that
it's
everything
is
live
and
yeah,
it's
a
real
world
example,
but
then
local
on
my
machine.
C
Going
to
to
build
can
be
tested
locally,
functionally
like
it
would
be
be
doing
in
a
environment,
fully
fledged
kubernetes
cloud.
You
name
it
and
by
using
double
compose
here.
That
has
a
few
advantages
and
that's
where
the
cloud
native
comes
in.
What
you
really
want
to
do
is
test
if
your
app
works
functionally,
but
also
in
a
containerized
environment
and
ideally
with
kubernetes,
so
having
this
setup,
my
app
is
being
put
into
a
docker
container,
as
I
can
show
here
the
docker
file.
C
You
can
come
back
to
this
later,
but
we
are
using
a
pajaro
docker
file
and
we
are
copying
the
app
onto
that.
So
that
really
makes
it
easy
to
to
put
your
app
in
a
container
and
start
it
up.
This
is
it's
not
easier
harder
than
that,
and
then
we
talk
compose
everything
we'll
start
up
so
also.
This
provides
the
ability
to
to
test
everything
locally,
but
not
necessarily
the
scalability,
because
installing
docker
locally
can
be
a
bit
of
pain.
C
And
what
do
I
really
want
to
test
here?
That
is,
if
my
app
works
functionally
and
not
the
scalability.
I
can
do
that
on
other
environments
or
in
the
real
cloud,
but
I'm
not
trying
to
mimic
my
local
machine
as
being
a
complete
cloud
provider.
That's
that's
hard
to
do
so.
Docker
compose
really
provides
a
mid
way
to
act,
but,
like
you're
running
your
app
in
a
cloud
but
not
actually
doing
so
so
I
see
my
app
is
back
up.
A
C
So
your
app
is
kind
of
a
black
box
for
clients,
so
yeah
working
with
microprofile
and
jakarta
e
compared
to
spring
is
a
whole
different
world
in
building
and
deploying
and
operating
the
actual
apps.
Of
course,
there
is
a
difference
between
the
features
spring
provider
that
chica
e
provides
a
microprofile,
but
still.
C
You
cannot
really
compare
them
because
they
on
the
youtube
they
are.
The
vision
is
different.
I
actually
will
come
back
on
that
in
one
of
the
later
slides
I
will.
I
will
more
going
to
detail
with
the
visual
or
why
that
is
so.
If
you
don't
mind,
I
will
continue
with
my
talk
and
then,
if
the
question
isn't
answered
at
the
end,
then
we
can
revisit
it.
C
So
when
you
are
building
your
services,
when
you
are
doing
sb
calls
it's
often
good
to
at
least
think
about
how
many
times
should
I
retry
this
call
when
something
happens,
how
long
should
it
take
and
what
should
happen
with
the
fallback
if
failure
occurs,
because
this
will
overwrite
the
default
behavior
that
you
might
get
from
payara?
That
might
differ
from
all
implementations
and
will
be
more
predictable
for
you
to
act
on
if
failure
occurs,
and
your
service
will
also
be
more
robust
to
maybe
handle
the
failure
itself.
C
C
C
The
the
the
part
where
we
download
the
database
connector
and
there's
a
reason
for
that,
because
when
we
look
at
spring,
you
usually
put
these
components
in
your
your
pond.xml
with
maven,
and
then
it
kind
of
downloads,
the
internet,
sometimes
people
jokingly,
say,
but
it
tries
to
to
download
all
the
dependencies
and
even
transitive
dependencies
that
are
inside
the
pins
that
you
declared
and
that
compiles
your
app
and
that
might
run
that's
not
a
problem,
but
you
might
also
get
in
some
depends
that
you
don't
expect
of
those
ones
it
might
provide
or
contain
some
security
issues.
C
For
example,
that
is
not
completely
solvable
with
jakarta.
That's
not
what
I'm
trying
to
say,
but
using
docker
files
like
this.
What
they're
now
going
to
explain,
gives
you
a
more
predictable
way
of
handling
your
dependencies,
because
the
vision
behind
jakarta,
er
microprofile,
is
that
you
have
these
specifications
to
compile
against
your
features.
C
Your
business
loads
will
be
built
with
these
specifications,
but
how
it
actually
runs
is
completely
separated
from
what
you
actually
have
built,
because
the
app
that
you
built
ideally
is
very
small,
very
thin
and
doesn't
contain
any
dependencies
that
should
make
it
run.
This
can
should
be
put
in
the
environment
and
that's
where
the
stocker
file
comes
in.
C
C
C
But
this
this
released
me
from
having
to
think
about
what
I
downloaded
from
the
internet
when
I
compile
my
app
so
from
a
security
and
maintainabilities
perspective,
this
is
more
predictable
and
more
reproducible,
and
arguably
even
more
maintainable
than
just
combining
your
code
like
spring,
does
and
grabbing
everything
from
the
internet,
which
may
seem
fine,
but
under
the
hood
it
may
not
necessarily
be
fine,
and
that's.
That
is
the
the
key
point.
What
I
want
to
make
here,
the
card
e
is
more
than
just
the
code.
C
C
C
There
are
a
lot
of
application
servers
like
vr
that
already
support
java
11..
You
can
build
your
app
with
java
11
and
run
it
there,
but
platform-wide.
There
are
some
things
to
to
fix
to
make
it
java
11
work
everywhere
and
also
microprofile.
4.0
has
been
released
at
the
end
of
last
year
and
we
are
now
seeing
the
implementations
coming
like
priyara
is
coming
with
the
implementation
of
microprofile
photo,
which
has
a
lot
of
new
features
compared
to
303,
which
almost
took
a
year
to
to
to
really
get
out
the
door.
C
C
C
A
Awesome
well,
thank
you,
josh
and
thank
you
edwin
for
that
presentation.
That
was,
that
was
great.
We
do
have
a
few
more
minutes
here.
If
anyone
has
any
last
minute,
questions
feel
free
to
ask
them
in
the
chat
or
in
the
ask
a
question
tab
and
we
can
ask
them,
but
just
a
few
housekeeping
matters
here
before
we
wrap
up
our
next
jakarta
tech.
Talk
is
going
to
be
happening
on
march,
8th
that
will
be
presented
by
carina
varela
and
otavio
santana,
and
the
topic
will
be
architecting
and
delivering
java
applications
in
the
cloud
era.
A
A
So
if
you
wouldn't
mind
completing
the
survey
post
event,
you
by
clicking
the
green
button
below
the
video
window
to
let
us
know
how
you
enjoyed
the
session
and
anything
we
can
do
better.
We
would
be
thrilled
to
receive
that.
So,
thank
you.
Everybody
at
this
point,
I'm
not
seeing
any
more
questions,
so
we
will
wrap
it
up.
Any
final
words
from
either
of
you
before
we
go.
B
Upstate
stay
tuned
for
jakarta,
ee
9.1,
which
will
be
released
in
the
next
couple
of
months.
I
imagine
and
yeah,
go
to
the
github
site
to
download
this
project
and
get
started.
Yes,.
C
And
get
involved
if
you
like,
it's
a
open
source
project
and
the
welcome
involvement
very
much.