āĻā§āĻŽāĻŋāĻāĻž
ā§āĻ āĻŽāĻžāĻ°ā§āĻ, āĻ°ā§āĻĄāĻšā§āĻ¯āĻžāĻ (āĻļā§āĻā§āĻ°āĻ āĻāĻāĻŦāĻŋāĻāĻŽ)
āĻ˛āĻā§āĻˇā§āĻ¯ āĻšāĻ˛ āĻāĻžāĻāĻžāĻā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻŦāĻŋāĻšā§āĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨ā§āĻ¤ā§āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻāĻ°āĻž, āĻ¯āĻž āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻļā§āĻ˛ āĻāĻŦāĻ āĻ āĻĒāĻ°āĻŋāĻšāĻžāĻ°ā§āĻ¯ āĻāĻāĻ¯āĻŧ āĻļā§āĻ˛ā§āĻ¤ā§ āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻā§āĻā§āĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻĻāĻŋāĻā§ āĻ¤āĻžāĻāĻžāĻ
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ˛āĻā§āĻā§āĻ° āĻā§āĻŦ āĻāĻā§āĻ āĻāĻ¤āĻŋ āĻāĻŦāĻ āĻāĻŽ āĻŽā§āĻŽāĻ°āĻŋ āĻāĻ°āĻ āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ. āĻāĻāĻžāĻ¨ā§ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ° āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻ°āĻ¯āĻŧā§āĻā§:
āĻļā§āĻ°ā§ āĻĨā§āĻā§ āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž (āĻā§āĻ˛āĻŋ) āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻŽāĻ¯āĻŧ:
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻŦāĻŋāĻļā§āĻ°āĻžāĻŽ
REST+JPA
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸+āĻā§āĻ°āĻžāĻ˛āĻāĻŋāĻāĻŽ
0.014
0.055
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸+āĻāĻĒā§āĻ¨āĻā§āĻĄāĻŋāĻā§
0.75
2.5
āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ āĻā§āĻ˛āĻžāĻāĻĄ āĻ¨ā§āĻāĻŋāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ*
4.3
9.5
āĻŽā§āĻŽāĻ°āĻŋ āĻāĻ°āĻ (Mb):
āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨
āĻŦāĻŋāĻļā§āĻ°āĻžāĻŽ
REST+JPA
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸+āĻā§āĻ°āĻžāĻ˛āĻāĻŋāĻāĻŽ
13
35
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸+āĻāĻĒā§āĻ¨āĻā§āĻĄāĻŋāĻā§
74
130
āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ āĻā§āĻ˛āĻžāĻāĻĄ āĻ¨ā§āĻāĻŋāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ*
140
218
āĻāĻŋāĻ¤ā§āĻ¤āĻžāĻāĻ°ā§āĻˇāĻ, āĻ¤āĻžāĻ āĻ¨āĻž?
*āĻāĻŽāĻŋ āĻāĻ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻā§āĻ¨ āĻ¤āĻĨā§āĻ¯ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¨āĻŋ, āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻŦāĻĄāĻŋ āĻāĻŋāĻ āĻ¸āĻš āĻāĻ āĻ§āĻ°āĻŖā§āĻ° āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻŦā§āĻ.
āĻāĻšā§ āĻŦāĻŋāĻļā§āĻŦ!
Quarkus āĻ āĻ˛ā§āĻāĻž āĻ¸āĻšāĻāĻ¤āĻŽ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻ°āĻāĻŽ āĻšāĻŦā§:
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "hello";
}
}
āĻāĻāĻž āĻāĻā§āĻˇāĻ°āĻŋāĻ āĻāĻ āĻŦāĻ°ā§āĻ āĻāĻŦāĻ āĻ¯ā§ āĻ¯āĻĨā§āĻˇā§āĻ! āĻāĻĒāĻ¨āĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻŽā§āĻĄā§ Maven āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
mvn compile quarkus:dev
âĻ
$ curl http://localhost:8080/hello
hello
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĨā§āĻā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻšāĻ˛ āĻā§āĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻ˛āĻžāĻ¸ āĻ¨ā§āĻ! āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻšāĻ āĻ°āĻŋāĻ˛ā§āĻĄ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§, āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋāĻā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻ¨āĻž āĻāĻ°ā§āĻ āĻāĻĒāĻ¨āĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻŦāĻŋāĻāĻžāĻļāĻā§ āĻāĻ°āĻ āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻ° āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤
āĻāĻ°āĻĒāĻ° āĻāĻŋ? āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻā§āĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
@ApplicationScoped
public class GreetingService {
public String greeting(String name) {
return "Hello " + name + "!";
}
}
āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻ:
@Path("/hello")
public class GreetingResource {
@Inject
GreetingService service;
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
public String greeting(@PathParam("name") String name) {
return service.greeting(name);
}
}
$ curl http://localhost:8080/hello/developer
Hello developer!
āĻāĻ˛ā§āĻ˛ā§āĻā§āĻ¯ āĻ¯ā§ āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ - CDI āĻāĻŦāĻ JAX-RS āĻĨā§āĻā§ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻā§āĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻā§ CDI āĻāĻŦāĻ JAX-RS āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§ āĻĨāĻžāĻā§āĻ¨ āĻ¤āĻŦā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¨āĻ¤ā§āĻ¨ āĻāĻŋāĻā§ āĻļā§āĻāĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻāĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°āĻž
āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻšāĻžāĻāĻŦāĻžāĻ°āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ JPA āĻā§āĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ REST āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ°ā§āĻ° āĻŽāĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻā§āĻĄ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻ¸āĻŽāĻžāĻŦā§āĻļ āĻĢāĻžāĻāĻ˛ā§ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻ, āĻā§āĻāĻž āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ @Entity
āĻāĻŦāĻ application.properties-āĻ āĻĄā§āĻāĻžāĻ¸ā§āĻ°ā§āĻ¸ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻŦ āĻā§āĻ¨ā§ sessionFactory, persistence.xml āĻŦāĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĢāĻžāĻāĻ˛ āĻ¨ā§āĻā§ˇ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻĄ āĻ˛āĻŋāĻāĻŋāĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ persistence.xml āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ ORM āĻ¸ā§āĻ¤āĻ°āĻāĻŋāĻā§ āĻāĻ°āĻ āĻ¸ā§āĻā§āĻˇā§āĻŽāĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻ¸āĻ¤ā§āĻ¤āĻžāĻ° āĻā§āĻ¯āĻžāĻļāĻŋāĻ, āĻāĻ-āĻĨā§āĻā§-āĻ āĻ¨ā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻā§āĻ°āĻš āĻāĻŦāĻ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻāĻ°ā§ āĻāĻāĻž āĻŽāĻšāĻžāĻ¨ āĻĻā§āĻāĻžāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ āĻā§āĻ¯āĻžāĻļāĻŋāĻ, āĻāĻāĻāĻŋ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¨ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤ āĻ¸ā§āĻā§āĻ˛ā§. āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¨ā§āĻĄā§āĻ° āĻā§āĻ¯āĻžāĻļā§ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻŽāĻŋ āĻāĻļāĻž āĻāĻ°āĻŋ āĻāĻāĻŋ āĻ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§āĨ¤
āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻā§āĻĄ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨
āĻāĻĒāĻ°ā§ āĻāĻ˛ā§āĻ˛āĻŋāĻāĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻļā§āĻ˛ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻļā§āĻ˛ā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻā§āĻ° āĻāĻŦā§āĻĻāĻ¨ā§āĻ° āĻā§āĻĄ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻāĻžāĻ°ā§ āĻ˛ā§āĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
@Path("/hello")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("/{name}")
public CompletionStage<String> greeting(@PathParam("name") String name) {
return CompletableFuture.supplyAsync(() -> {
return "Hello " + name + "!";
});
}
}
āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻā§āĻĄāĻ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻāĻ āĻšāĻŦā§āĨ¤
āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ JUnit4 āĻŦāĻž JUnit5 āĻ āĻ˛ā§āĻāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¨ā§āĻā§ āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻĄāĻĒāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĒāĻ°ā§āĻā§āĻˇāĻž, āĻāĻāĻŋ RestAssured āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¤āĻŦā§ āĻ āĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
@QuarkusTest
public class GreetingResourceTest {
@Test
public void testGreetingEndpoint() {
String uuid = UUID.randomUUID().toString();
given()
.pathParam("name", uuid)
.when().get("/hello/{name}")
.then()
.statusCode(200)
.body(is("Hello " + uuid + "!"));
}
}
@QuarkusTest āĻā§āĻāĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻĻā§āĻ¯āĻŧāĨ¤ āĻŦāĻžāĻāĻŋ āĻ¸āĻŦ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻĻā§āĻ° āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻā§āĻĄ.
āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ-āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻ¯ā§āĻšā§āĻ¤ā§ GraalVM āĻāĻ° āĻ¸āĻžāĻĨā§ āĻļāĻā§āĻ¤āĻāĻžāĻŦā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤, āĻ¤āĻžāĻ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ-āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ GraalVM āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ GRAALVM_HOME āĻāĻ¨āĻāĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§āĻ¨ā§āĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ°āĻ
mvn package -Pnative
āĻŽāĻāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻšāĻ˛, āĻā§āĻ¨āĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻāĻžāĻ°āĻŖ āĻ¨ā§āĻāĻŋāĻ āĻā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž JVM-āĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ @SubstrateTest āĻā§āĻāĻžāĻāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ-āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻĄ āĻāĻžāĻ˛āĻžāĻ¯āĻŧāĨ¤ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻā§āĻĄ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§; āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ-āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻāĻ°āĻāĻŽ āĻšāĻŦā§:
@SubstrateTest
public class GreetingResourceIT extends GreetingResourceTest {
}
āĻāĻ¤ā§āĻĒāĻ¨ā§āĻ¨ āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻĄāĻāĻžāĻ°ā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻŦāĻž āĻāĻĒā§āĻ¨āĻļāĻŋāĻĢāĻā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯āĻž āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§
āĻ¸āĻ°āĻā§āĻāĻžāĻŽ
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŽā§āĻ¯āĻžāĻā§āĻ¨ āĻāĻŦāĻ āĻā§āĻ°ā§āĻĄāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ Maven āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤, Gradle āĻĨā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¨āĨ¤ āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ Gradle āĻāĻāĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻ¨āĻž; āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¤āĻĨā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§
āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŖ
āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻāĻāĻāĻŋ āĻāĻā§āĻ¸āĻā§āĻ¨āĻ¸āĻŋāĻŦāĻ˛ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĨ¤ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻāĻĻā§āĻļ āĻāĻā§
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻŽāĻžāĻ° āĻŽāĻ¤ā§, āĻā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ¸ āĻ¸ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻā§āĻ°ā§āĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦā§āĻļ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖāĨ¤ āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄ āĻā§āĻĄ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻ āĻ¸āĻšāĻ āĻĨā§āĻā§ āĻ¸āĻšāĻāĻ¤āĻ° āĻšāĻā§āĻā§ āĻāĻŦāĻ āĻāĻ āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻĄāĻāĻžāĻ° āĻāĻŦāĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨ā§āĻāĻŋāĻ āĻ¸āĻžāĻĒā§āĻ°ā§āĻ āĻ¯ā§āĻ āĻāĻ°ā§ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻĄā§āĻā§āĻ˛āĻĒāĻŽā§āĻ¨ā§āĻāĻā§ āĻāĻ°āĻ āĻ¸āĻ°āĻ˛ āĻ āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļāĻžāĻ˛ āĻĒā§āĻ˛āĻžāĻ¸ āĻšāĻ˛ GraalVM āĻāĻŦāĻ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ-āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻŽā§āĻ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨, āĻ¯āĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻĻā§āĻ°ā§āĻ¤ āĻļā§āĻ°ā§ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻŽā§āĻŽāĻ°āĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨āĻŋāĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻŦāĻ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ā§āĻ¸ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻšā§āĻ¨ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻ¯āĻžāĻĒāĻ āĻāĻŦā§āĻā§āĻ° āĻ¸āĻŽāĻ¯āĻŧā§ āĻāĻāĻŋ āĻā§āĻŦāĻ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤
āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¸āĻžāĻāĻ -
āĻāĻ¤ā§āĻ¸: www.habr.com