Is Java fo-adamhach sársonach é Quarkus. Forbhreathnú gairid ar an gcreat

Is Java fo-adamhach sársonach é Quarkus. Forbhreathnú gairid ar an gcreat

Réamhrá

Ar XNUMX Márta, RedHat (IBM go luath) curtha i láthair creat nua - Cuarcus. De réir na bhforbróirí, tá an creat seo bunaithe ar GraalVM agus OpenJDK HotSpot agus tá sé deartha do Kubernetes. Áirítear sa chruach Quarkus: JPA/Hibernate, JAX-RS/RESTEasy, Eclipse Vert.x, Netty, Apache Camel, Kafka, Prometheus agus eile.

Is é an sprioc ná Java a dhéanamh ar an ardán tosaigh d’imscaradh Kubernetes agus d’fhorbairt feidhmchláir gan fhreastalaí, ag soláthar cur chuige aontaithe d’fhorbróirí maidir le forbairt i stíleanna imoibríocha agus riachtanacha araon.

Má fhéachann tú ar seo creataí a rangú, ansin tá Quarkus áit éigin idir “Comhbhailitheoirí/Gineadóirí Cóid” agus “Creatanna lánstaca ardleibhéil”. Is mó ná comhbhailitheoir é seo cheana féin, ach ní shroicheann sé stoc iomlán fiú, mar... in oiriúint d'fhorbairt backend.

Tá luas an-ard seoladh iarratais agus tomhaltas cuimhne íseal geallta. Seo iad na sonraí ó shuíomh Gréasáin an fhorbróra:

Am ón tús go dtí an chéad fhreagra:

Cumraíocht
REST
REST+JPA

Quarkus+GraalVM
0.014
0.055

Quarkus+OpenJDK
0.75
2.5

Stac Dúchais Scamall Traidisiúnta*
4.3
9.5

Tomhaltas cuimhne (Mb):

Cumraíocht
REST
REST+JPA

Quarkus+GraalVM
13
35

Quarkus+OpenJDK
74
130

Stac Dúchais Scamall Traidisiúnta*
140
218

Go hiontach, nach bhfuil?

*Ní bhfuair mé aon eolas faoin gcruach teicneolaíochta seo, is féidir linn glacadh leis gur cineál éigin Tosaithe Earraigh é seo le trealamh coirp breise.

Dia duit Domhanda!

Is mar seo a bheadh ​​an feidhmchlár is simplí scríofa in Quarkus:

@Path("/hello")
public class GreetingResource {

   @GET
   @Produces(MediaType.TEXT_PLAIN)
   public String hello() {
       return "hello";
   }
}

Tá sé literally rang a haon agus sin go leor! Is féidir leat an feidhmchlár a rith ag úsáid Maven i mód forbartha:

mvn compile quarkus:dev
…
$ curl http://localhost:8080/hello
hello

Is é an difríocht ó iarratas rialta ná nach bhfuil aon rang Feidhmchláir ann! Tacaíonn Quarkus le hathlódáil te, ionas gur féidir leat d'iarratas a athrú gan é a atosú, rud a fhágann go mbeidh an fhorbairt níos tapúla fós.

Cad atá romhainn? Is féidir leat seirbhís a chur le rialtóir trí anótáil a úsáid Instealladh. Cód seirbhíse:

@ApplicationScoped
public class GreetingService {

   public String greeting(String name) {
       return "Hello " + name + "!";
   }
}

Rialaitheoir:

@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!

Tabhair faoi deara go n-úsáideann Quarkus nótaí caighdeánacha ó chreataí coitianta - CDI agus JAX-RS. Ní gá aon rud nua a fhoghlaim má d'oibrigh tú le CDI agus JAX-RS roimhe seo, ar ndóigh.

Ag obair leis an mbunachar sonraí

Úsáidtear nótaí geimhridh agus gnáthnótaí JPA d’eintitis. Cosúil le rialtóirí REST, ní mór duit cód ar a laghad a scríobh. Is leor na spleáchais sa chomhad tionóil a chur in iúl, cuir nótaí leis @Entity agus foinse sonraí a chumrú in application.properties.

Gach. Uimh sessionFactory, persistence.xml nó comhaid seirbhíse eile. Scríobhaimid ach an cód atá ag teastáil. Mar sin féin, más gá, is féidir leat comhad persistence.xml a chruthú agus an ciseal ORM a chumrú níos míne.

Tacaíonn Quarkus le taisceadh aonán, bailiúcháin le haghaidh caidreamh duine le go leor, agus ceisteanna. Ar an gcéad amharc tá sé iontach, ach tá sé áitiúil caching, le haghaidh nód amháin Kubernetes. Iad siúd. Ní dhéantar caches nóid éagsúla a shioncronú lena chéile. Tá súil agam go bhfuil sé seo sealadach.

Forghníomhú cód asincrónach

Mar a luadh thuas, tacaíonn Quarkus freisin leis an stíl ríomhchláraithe imoibríoch. Is féidir cód an iarratais roimhe seo a scríobh i bhfoirm eile.

@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 + "!";
       });
   }
}

Is féidir cód asincrónach a aistriú chuig an tseirbhís freisin, beidh an toradh mar an gcéanna.

Tástáil

Is féidir tástálacha le haghaidh iarratas Quarkus a scríobh i JUnit4 nó JUnit5. Seo thíos sampla de thástáil le haghaidh críochphointe, scríobhtar é ag baint úsáide as RestAssured, ach is féidir creat eile a úsáid:

@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 + "!"));
   }
}

Tugann an nóta @QuarkusTest treoir duit an feidhmchlár a rith sula ndéanann tú tástálacha. Tá an chuid eile cód eolach do gach forbróir.

Feidhmchlár a bhaineann go sonrach le hardán

Ós rud é go bhfuil Quarkus comhtháite go docht le GraalVM, is féidir ar ndóigh cód ardáin-shonrach a ghiniúint. Chun seo a dhéanamh, ní mór duit GraalVM a shuiteáil agus an athróg timpeallachta GRALVM_HOME a shonrú. Tuilleadh próifíl a chlárú le haghaidh tionóil agus sonraigh é agus an feidhmchlár á thógáil:

mvn package -Pnative

Suimiúil go leor, is féidir an t-iarratas a ghintear a thástáil. Agus tá sé seo tábhachtach toisc go bhféadfadh feidhmiú an chóid dhúchais a bheith difriúil ó fhorghníomhú an JVM. Ritheann an nóta @SubstrateTest cód feidhmchláir a bhaineann go sonrach le hardáin. Is féidir cód tástála atá ann cheana a athúsáid trí úsáid a bhaint as oidhreacht; mar thoradh air sin, beidh cuma mar seo ar an gcód chun feidhmchlár atá ag brath ar ardán a thástáil:

@SubstrateTest
public class GreetingResourceIT extends GreetingResourceTest {

}

Is féidir an íomhá a ghintear a phacáistiú i Docker agus a reáchtáil i Kubernetes nó OpenShift, a bhfuil cur síos mionsonraithe air i treoracha.

Foireann Uirlisí

Is féidir creat Quarkus a úsáid le Maven agus Gradle. Tá tacaíocht iomlán ag Maven, murab ionann agus Gradle. Ar an drochuair, faoi láthair ní thacaíonn Gradle le tionscadal folamh a ghiniúint; tá mioneolas ar an suíomh Gréasáin téacsleabhar.

Eisínteachtaí

Is creat síneadh é Quarkus. Faoi láthair tá ordú 40 síneadh, a chuireann feidhmiúlacht éagsúla - ó thacaíocht Coimeádán DI an Earraigh и Apache Camel roimh logáil agus foilsiú méadracht le haghaidh seirbhísí a rith. Agus tá síneadh ann cheana féin chun tacú le hiarratais scríbhneoireachta i Kotlin, chomh maith le Java.

Conclúid

Is é mo thuairim go bhfuil Quarkus ag teacht go leor le treochtaí an ama. Tá forbairt an chóid backend ag éirí níos éasca agus níos éasca, agus déanann an creat seo forbairt seirbhíse a shimpliú agus a bhrostú tuilleadh trí thacaíocht dhúchasach a chur leis do Docker agus Kubernetes. Is buntáiste mór é an tacaíocht ionsuite do GraalVM agus giniúint na n-íomhánna atá ag brath ar ardáin, a ligeann do sheirbhísí tosú i ndáiríre go tapa agus gan mórán spáis chuimhne a ghlacadh. Agus tá sé seo an-tábhachtach i ár gcuid ama paisean mais le haghaidh microservices agus ailtireacht serverless.

suíomh oifigiúil - cuarc.io. Tá samplaí de thionscadail le haghaidh tús tapa ar fáil cheana féin ar GitHub.

Foinse: will.com

Add a comment