![Page 1: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/1.jpg)
Rapid Development Tools for Java EE 8 & MicroProfile
Gaurav Gupta, Payara Developer
![Page 2: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/2.jpg)
About me
• Payara Principal Developer
• NetBeans Dream Team member
• Jeddict Creator ( jeddict.github.io )
• @ImJeddict
Gaurav Gupta@jGauravGupta
![Page 3: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/3.jpg)
Agenda
• What’s new in Java EE 8 & MicroProfile ? : Quick overview
• Application generation in microservice style w/ Jeddict
• Q&A
![Page 4: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/4.jpg)
What’s new with Java EE 8 ?
• JAX-RS 2.1
• CDI 2.0
• Security API 1.0 ne• JSON-B 1.0 ne• JPA 2.2
• Bean Validation 2.0
• Servlet 4.0
• JSF 2.3
Checkout https://github.com/javaee-samples/javaee8-samples for details on the examples
![Page 5: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/5.jpg)
JSON-B
• Standard solution like JAXB • Default mapping between classes and JSON• Customizable
– Compile time • Property naming @JsonbProperty• Property ignoring @JsonbTransient• Null handling @JsonbNillable• Property ordering @JsonbPropertyOrder• Date Format @JsonbDateFormat• Number Format @JsonbNumberFormat• Adapter @JsonbTypeAdapter
– Runtime configration• Configuration builder JsonbConfig
![Page 6: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/6.jpg)
class Employee {
private String name;
private String pin;
private String email;
}
{
"name": "Gaurav",
"pin": "J1-Secret",
"email": "[email protected]",
}
JSON-B - Default mapping
![Page 7: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/7.jpg)
@JsonbPropertyOrder({"email", "name"})class Employee {
@JsonbProperty("empName") private String name;
@JsonbTransient private String pin;
private String email;
}
{
"email": "[email protected]",
"empName": "Gaurav"
}
JSON-B - Custom mapping
![Page 8: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/8.jpg)
Bean Validation 2
● Java 8 Date and Time API Support
@Past(message = "must be a past date")private java.time.Year yearOfBirth;
● Type Annotations
private List<@NotNull @Email String> emails;
private String @NotNull @Email[] emails;
private Map<@Valid Employee, @Valid Address> addressMap = new HashMap<>();
![Page 9: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/9.jpg)
Bean Validation 2
● java.util.Optional Support
private Optional<@Past LocalDate> marriageAnniversary;
private Optional<@Size(max = 20) String> name;
● Repeating Annotations
@Max(value = 2000, groups = Default.class)
@Max(value = 5000, groups = GoldCustomer.class)
private long withdrawalAmount;
![Page 10: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/10.jpg)
Bean Validation 2
● Introduces new constraints ○ @Email
○ @NotBlank
○ @NotEmpty
○ @PastOrPresent
○ @FutureOrPresent
○ @Negative
○ @NegativeOrZero
○ @Positive
○ @PositiveOrZero
![Page 11: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/11.jpg)
JPA 2.2
• @Repeatable annotations
• Support Java 8 Date and Time API
• Ability to return stream of query result
• CDI Injection in AttributeConverters
![Page 12: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/12.jpg)
Container annotation required
@Entity@NamedQueries({
@NamedQuery(name = "Employee.findAll",query = "SELECT e FROM Employee e"),
@NamedQuery(name = "Employee.findByName",query = "SELECT e FROM Employee e WHERE e.name = :name")
})class Employee {
@Convert(converter=LocalDateConverter.class) private LocalDate dateOfBirth;
} AttributeConverter implementation
JPA 2.1
![Page 13: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/13.jpg)
Container annotation not required
@Entity@NamedQueries({
@NamedQuery(name = "Employee.findAll",query = "SELECT e FROM Employee e"),
@NamedQuery(name = "Employee.findByName",query = "SELECT e FROM Employee e WHERE e.name = :name")
})class Employee {
@Convert(converter=LocalDateConverter.class) private LocalDate dateOfBirth;
}
AttributeConverter not required
@jGauravGupta
JPA 2.2
![Page 14: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/14.jpg)
@Entity@NamedQuery(name = "Employee.findAll",
query = "SELECT e FROM Employee e")@NamedQuery(name = "Employee.findByName",
query = "SELECT e FROM Employee e WHERE e.name = :name")class Employee {
private LocalDate dateOfBirth;
}
@jGauravGupta
JPA 2.2
![Page 15: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/15.jpg)
JPA 2.2
● Stream query results
Stream<Employee> employees =em.createQuery(“SELECT e FROM Employee”, Employee.class) .getResultStream();
@jGauravGupta
![Page 16: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/16.jpg)
MicroProfile
![Page 17: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/17.jpg)
Java EE Profiles
MicroProfile
Java EE Web Profile
Java EE Full Profile
![Page 18: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/18.jpg)
MicroProfile 1.0
MicroProfile 1.0
JAX-RS 2.0JSON-P 1.0CDI 1.2
![Page 19: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/19.jpg)
MicroProfile 1.1
MicroProfile 1.1
= New= No change from last release
JAX-RS 2.0JSON-P 1.0CDI 1.2
Config 1.0
![Page 20: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/20.jpg)
MicroProfile 1.2
MicroProfile 1.2
= Updated= No change from last release
JAX-RS 2.0JSON-P 1.0CDI 1.2
Config 1.1Fault
Tolerance 1.0
JWTPropagation
1.0
HealthCheck 1.0 Metrics 1.0
= New
![Page 21: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/21.jpg)
MicroProfile 1.3
MicroProfile 1.3
JAX-RS 2.0JSON-P 1.0CDI 1.2 Config 1.2
FaultTolerance 1.0
JWTPropagation
1.0
HealthCheck 1.0Metrics 1.1
Open Tracing 1.0
Open API 1.0
= Updated= No change from last release
= New
Rest Client 1.0
![Page 22: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/22.jpg)
MicroProfile Config
• Default Config Sources
– System Properties
• System.getProperties()
– Environment Variables
• System.getenv()
– Application Configuration
• META-INF/microprofile-config.properties
• Custom Config Sources– e.g Shared Database table
![Page 23: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/23.jpg)
MicroProfile Config
• CDI Injection
@Inject @Config(name = "service.enabled", defaultValue = "false") private Boolean enabled;
@Inject @Config(name = "color", defaultValue = "white") private String color;
• Programmatic Lookup
ConfigProvider.getConfig() .getValue(String propertyName, Class<T> propertyType);
![Page 24: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/24.jpg)
MicroProfile Metrics
• Annotations– @Counted– @Timed– @Metered– @Gauge– @Metrics
• Scope– Base
– Application
– Vendor
• Format– Json
– Prometheus
![Page 25: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/25.jpg)
MicroProfile Metrics - Endpoint
# TYPE application:requests_total counterapplication:requests_total 29382# TYPE application:requests_rate_per_second gaugeapplication:requests_rate_per_second 12.223# TYPE application:requests_one_min_rate_per_second gaugeapplication:requests_one_min_rate_per_second 12.563# TYPE application:requests_five_min_rate_per_second gaugeapplication:requests_five_min_rate_per_second 12.364# TYPE application:requests_fifteen_min_rate_per_second gaugeapplication:requests_fifteen_min_rate_per_second 12.126
https://localhost:8080/metrics
![Page 26: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/26.jpg)
MicroProfile Health Check
@Health public class CheckDiskspace implements HealthCheck {
@Override public HealthCheckResponse call() { return HealthCheckResponse.named("disk-space") .withData("free", "105300") .withData("total", "10246000") .up() .build(); }}
![Page 27: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/27.jpg)
MicroProfile Health Check - Endpoint
{ "outcome":"UP", "checks":[ { "name":"disk-space", "state":"UP", "data":{ "free":"105300", "total":"10246000" } } ]}
https://localhost:8080/health
![Page 28: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/28.jpg)
MicroServices Architecture
MICROSERVICE ..n
db1
db2
db..n
GATEWAY
CLIENT
Service Discovery
/ Registry
1
Register
Query
Routing
Netflix Zuul
Proxy
MICROSERVICE 1
MICROSERVICE 2
JSAPP
4
2
3
![Page 29: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/29.jpg)
MicroServices Architecture
MICROSERVICE ..n
db1
db2
db..n
GATEWAY
CLIENT
ConsulService
Discovery& Registry
1
Register
Query
Routing
Netflix Zuul
Proxy
Employee Service
ProductService
Angular
4
2
3
![Page 30: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/30.jpg)
@Email@JsonbProperty ("fName")
@JsonbTransient
java.time.LocalDate
@NamedQuery(name = "findAll")@NamedQuery(name = "findByFirstName")@NamedQuery(name = "findByEmail")
@JsonbProperty ("number")
@NotEmpty
@JsonbProperty ("lName")
Java EE 8 & MicroProfile App generation w/ jeddict.github.io
![Page 31: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/31.jpg)
Demo
![Page 32: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/32.jpg)
Java EE to Jakarta EE
![Page 33: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/33.jpg)
![Page 34: Rapid Development Tools for Java EE 8 & MicroProfile Gaurav …€¦ · CDI 1.2 JSON-P 1.0 JAX-RS 2.0 Config 1.2 Fault Tolerance 1.0 JWT Propagation 1.0 Health Check 1.0 Metrics 1.1](https://reader033.vdocument.in/reader033/viewer/2022060300/5f081aa77e708231d4205b4a/html5/thumbnails/34.jpg)
Thank you