Redigera

Dela via


Jämför värdalternativ för Java-program i Azure

Azure Spring Apps
Azure App Service
Azure Kubernetes Service (AKS)
Azure Virtual Machines

Azure erbjuder många alternativ för team att skapa och distribuera Java-program. Den här artikeln beskriver vanliga scenarier för Java i Azure och innehåller planeringsförslag och överväganden på hög nivå.

Apache®, Apache Kafka, Apache Struts, Apache Tomcat och flamlogotypen är antingen registrerade varumärken eller varumärken som tillhör Apache Software Foundation i USA och/eller andra länder. Inget godkännande från Apache Software Foundation underförstås av användningen av dessa märken.

Plattform

Innan du väljer ett molnscenario för ditt Java-program ska du identifiera dess plattform. De flesta Java-program använder någon av följande plattformar:

Spring Boot JAR-program

Spring Boot JAR-program anropas vanligtvis direkt från kommandoraden. De hanterar webbbegäranden. I stället för att förlita sig på en programserver för att hantera HTTP-begäranden införlivar dessa program HTTP-kommunikation och andra beroenden direkt i programpaketet. Sådana program skapas ofta med ramverk som Spring Boot, Dropwizard, Micronaut, MicroProfile och Vert.x.

Dessa program paketeras i arkiv som har .jar-tillägget , så kallade JAR-filer.

Spring Cloud-program

Arkitekturstilen för mikrotjänster är en metod för att utveckla ett enda program som en uppsättning små tjänster. Varje tjänst körs i sin egen process och kommunicerar med hjälp av enkla mekanismer, ofta ett HTTP-resurs-API. Dessa tjänster bygger på affärsfunktioner.

Automatiserade distributionsmaskiner distribuerar oberoende dessa mikrotjänster. Det finns ett minimum av centraliserad hantering, som kan skrivas på olika programmeringsspråk och använda olika datalagringstekniker. Sådana tjänster skapas ofta med ramverk som Spring Cloud.

Dessa tjänster paketeras i flera program som JAR-filer.

Webbprogram

Webbprogram körs i en servlet-container. Vissa använder servlet-API:er direkt, medan andra använder andra ramverk som kapslar in servlet-API:er, till exempel Apache Struts, Spring MVC och JavaServer Faces.

Webbprogram paketeras i arkiv som har .war-tillägget , så kallade WAR-filer.

Jakarta EE-program

Jakarta Enterprise Edition-program (Jakarta EE) kan innehålla vissa, alla eller inga av elementen i webbprogram. De kan också innehålla och använda många fler komponenter, enligt definitionen i Jakarta EE-specifikationen. Jakarta EE-program kallades tidigare Java EE-program eller J2EE-program.

Jakarta EE-program kan paketeras som WAR-filer eller som arkiv som har .ear-tillägget , så kallade EAR-filer.

Jakarta EE-program måste distribueras till programservrar som är Jakarta EE-kompatibla. Exempel är WebLogic, WebSphere, WildFly, GlassFish och Payara.

Program som endast förlitar sig på funktioner som tillhandahålls av Jakarta EE-specifikationen kan migreras från en kompatibel programserver till en annan. Om ditt program är beroende av en specifik programserver kan du behöva välja ett Azure-tjänstmål som gör att du kan vara värd för den programservern.

Plattformsalternativ

Använd följande tabell för att identifiera potentiella plattformar för din programtyp.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Spring Boot-/JAR-program
Spring Cloud-program
Webbprogram
Jakarta EE-program
Tillgänglighet för Azure-region Detaljer Detaljer Detaljer Detaljer Detaljer Detaljer Detaljer

Azure Kubernetes Service (AKS) och Virtual Machines stöder alla programtyper, men de kräver att ditt team tar mer ansvar, enligt beskrivningen i nästa avsnitt.

Supportmöjlighet

Förutom plattformsalternativen kan moderna Java-program ha andra supportbehov, till exempel:

Batch- eller schemalagda jobb

I stället för att vänta på begäranden eller användarindata körs vissa program kort, kör en viss arbetsbelastning och avslutar sedan. Ibland måste sådana jobb köras en gång eller med regelbundna, schemalagda intervall. Lokalt anropas sådana jobb ofta från en servers cron-tabell.

Dessa program paketeras som JAR-filer.

Kommentar

Om ditt program använder en schemaläggare, till exempel Spring Batch eller Quartz, för att köra schemalagda aktiviteter rekommenderar vi starkt att du kör dessa uppgifter utanför programmet. Om ditt program skalar till flera instanser i molnet kan samma jobb köras mer än en gång. Om din schemaläggningsmekanism använder värdens lokala tidszon kan det finnas oönskade beteenden när du skalar ett program mellan regioner.

Virtual Network-integration

När du distribuerar ett Java-program i det virtuella nätverket har det utgående beroenden på tjänster utanför det virtuella nätverket. För hantering och åtgärder måste projektet ha åtkomst till vissa portar och fullständigt kvalificerade domännamn. Med Azure Virtual Networks kan du placera många av dina Azure-resurser i ett routbart nätverk som inte kan dirigeras via Internet. Med integreringsfunktionen för virtuella nätverk kan dina program komma åt resurser i eller via ett virtuellt nätverk. Integrering av virtuella nätverk gör inte att dina program kan nås privat.

Serverlös utvecklingsmodell

Serverlös är en molnbaserad utvecklingsmodell som gör att utvecklare kan skapa och köra program utan att behöva hantera servrar. Med serverlösa program kan molntjänstleverantören automatiskt etablera, skala och hantera den infrastruktur som krävs för att köra koden. Servrar finns fortfarande i den serverlösa modellen. De är abstrakta från programutveckling.

Skapande av behållare

Containerisering är en paketering av programvarukod med alla nödvändiga komponenter, till exempel bibliotek, ramverk och andra beroenden. Programmet är isolerat i en egen container.

CI/CD

Kontinuerlig integrering och kontinuerlig leverans (CI/CD) är en metod för att ofta leverera program till kunder genom att införa automatisering i faserna i programutvecklingen. Huvudbegreppen inom CI/CD är kontinuerlig integrering, kontinuerlig leverans och kontinuerlig distribution. Alla Azure-val stöder de flesta CI/CD-verktyg. Du kan till exempel använda lösningar som Azure Pipelines eller Jenkins.

Sökmotor med öppen källkod

Sökningar är en integrerad del av alla program. Om hastighet, prestanda och hög tillgänglighet är avgörande kan det vara svårt att söka på terabyte och petabyte med data. När du är värd för Java-program i Azure planerar du att vara värd för dina relaterade Solr- och Elasticsearch-instanser. Du kan också överväga att migrera till Azure Cognitive Search.

Stordataverktyg

Stordataverktyg möjliggör automatisering av dataflödet mellan programvarusystemen. De stöder skalbara, robusta och strömlinjeformade dataroutningsdiagram tillsammans med systemmedlingslogik. De används för att skapa pipelines för livedataflöden och strömma program. Lär dig hur Nifi och Apache Kafka i Azure kan vara lämpliga för dina behov.

Alternativ för support

Använd följande tabell för att identifiera potentiella alternativ för din programtyp. AKS och virtuella datorer har stöd för alla programtyper, men de kräver att ditt team tar mer ansvar.

Azure Spring Apps App Service Java SE App Service Tomcat App Service JBoss EAP Azure Container Apps AKS Virtual Machines
Batch- eller schemalagda jobb
Integrering med virtuellt nätverk
Utan server
Skapande av behållare
Tillgänglighet för Azure-region Detaljer Detaljer Detaljer Detaljer Detaljer Detaljer Detaljer

Se även det här beslutsträdet.

Diagram visar ett beslutsträd för Java på Azure-tjänster.

Ladda ned en Visio-fil med det här diagrammet.

Skapa eller migrera Java-program

Om du vill skapa eller migrera Java-programmen identifierar du Java-plattformen för dina program. Några populära plattformar är Java SE, Jakarta EE och MicroProfile.

Java SE

Java Platform, Standard Edition (Java SE) är en databehandlingsplattform för utveckling och distribution av bärbar kod för skrivbords- och servermiljöer. Populära projekt som bygger på Java SE inkluderar Spring Boot, Spring Cloud, Spring Framework och Apache Tomcat.

Jakarta EE

Jakarta EE är framtiden för molnbaserat företag i Java med öppen källkod. Det är en uppsättning specifikationer som utökar Java SE med företagsfunktioner som distribuerad databehandling och webbtjänster. Jakarta EE-program kör referenskörningar. Dessa körningar kan vara mikrotjänster eller programservrar. De hanterar transaktioner, säkerhet, skalbarhet, samtidighet och hantering av de komponenter som programmet distribuerar.

MicroProfile

MicroProfile-projektet innehåller en samling specifikationer som är utformade för att hjälpa utvecklare att skapa molnbaserade mikrotjänster i Enterprise Java. Quarkus och Open Liberty är populära implementeringar av MicroProfile.

Skapa eller migrera sammanfattning

Följande tabell innehåller bygg- eller migreringsinformation efter programtyp och Azure-tjänst.

Typ Java SE MicroProfile JarkartaSE
Virtuell dator IaaS
VMware Tanzu IaaS
Azure Kubernetes Service Container
Red Hat OpenShift Container
Azure Container App PaaS
JBoss EAP PaaS App Service
Apache Tomcat PaaS App Service
Java SE PaaS App Service
Azure Spring Apps PaaS

Deltagare

Den här artikeln underhålls av Microsoft. Det har ursprungligen skrivits av följande medarbetare.

Huvudsakliga författare:

Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.

Nästa steg