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.
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:
- Asir Vedamuthu Selvasingh | Programhanteraren för huvudnamn
- Häng Wang | Produktchef
- Xinyi Zhang | Huvudansvarig PM Manager
Om du vill se icke-offentliga LinkedIn-profiler loggar du in på LinkedIn.
Nästa steg
- Översikt över Azure Container Apps
- Azure Kubernetes Service
- Dokumentation om Azure Spring Apps
- Integrering av virtuellt Azure-nätverk
- Virtuella datorer i Azure