Migrere til moduler
Automatiske og navnløse moduler
Migrere til moduler er en gratis leksjon i Java Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Java Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Java Academy inneholder totalt 4 leksjoner.
Modularisering av eksisterende kode
Få prosjekter tar i bruk moduler fra første dag. JPMS er utformet for trinnvis migrering, slik at classpath og modulbanen kan eksistere side om side.
Nøkkelbegrepene er automatiske moduler og modulen uten navn.
Modulen uten navn
Alt som lastes fra classpath, ligger i den ene modulen uten navn. Den leser alle andre moduler og eksporterer alle pakkene sine.
Dette er broen som holder eldre classpath-kode fungerende.
Navngitte kan ikke lese modulen uten navn
En avgjørende regel er at en eksplisitt navngitt modul ikke kan være avhengig av modulen uten navn. Det er ikke mulig å skrive requires for classpath-kode.
Derfor migreres systemet nedenfra og opp: Konverter først representasjonen av avhengighetene.
Automatiske moduler
Plasser en vanlig JAR-fil (uten moduler) på modulbanen, så blir den en automatisk modul. Den får et automatisk avledet navn, leser alle andre moduler og eksporterer alle pakkene sine.
Dermed kan navngitte moduler bruke requires på en JAR-fil som ennå ikke har module-info.
Hvor navnet kommer fra
Navnet på en automatisk modul avledes i følgende prioritetsrekkefølge:
- Oppføringen
Automatic-Module-Namei JAR-manifestet, hvis den finnes - Ellers fra JAR-filnavnet (versjonen fjernes, og bindestreker erstattes med punktum)
Stabile navn er viktige
Bibliotekforfattere bør legge til Automatic-Module-Name i manifestet før biblioteket blir fullt modularisert. Det lover et stabilt modulnavn, slik at etterfølgende requires-setninger fortsatt fungerer når den endelige module-info tas i bruk.
Automatic-Module-Name: com.example.jsonStrategi ovenfra og ned
Den anbefalte fremgangsmåten for Deres egen applikasjon:
- Behold avhengighetene som automatiske moduler på modulbanen
- Legg først til en
module-info.javai toppmodulen Deres - Deklarer
requiresfor navnene på disse automatiske modulene
Eksempel på et migreringstrinn
Anta at guava-32.jar ligger på modulbanen som den automatiske modulen com.google.common. Applikasjonsmodulen kan allerede kreve den.
module com.example.app {
requires com.google.common;
exports com.example.app.api;
}Problemet med delte pakker
Modulsystemet forbyr at to moduler inneholder den samme pakken. Eldre biblioteker som deler en pakke på tvers av JAR-filer, fører til feil.
Problemet kan løses ved å slå sammen JAR-filene, bruke --patch-module eller oppgradere til versjoner som løser delingen.
Problemer med tilgang via refleksjon
Rammeverk som utfører dyp refleksjon, kan mislykkes med InaccessibleObjectException når De modulariserer. Legg til opens-direktiver eller bruk midlertidig oppstartsflagget --add-opens.
Det nyttige verktøyet jdeps
Verktøyet jdeps analyserer JAR-filene Deres, rapporterer avhengigheter, finner bruk av interne JDK-API-er og kan til og med generere et forslag til module-info.java med jdeps --generate-module-info.
Kjør det først for å planlegge migreringen.
Hurtigsjekk
Husk hvordan en vanlig JAR-fil får en modulidentitet.
Oppsummering
Dette har De lært om migreringsteknikker:
- Classpath-kode ligger i modulen uten navn; navngitte moduler kan ikke bruke
requirespå den - Vanlige JAR-filer på modulbanen blir automatiske moduler
- Angi
Automatic-Module-Namefor å få stabile navn - Vær oppmerksom på delte pakker og tilgang via refleksjon; bruk
jdepstil planlegging
Dette fullfører JPMS-kurset.
Lær deg Java med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 104
- Leksjoner
- 374
Ofte stilte spørsmål
Er leksjonen «Migrere til moduler» gratis?
Ja – hele teksten i «Migrere til moduler» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Java Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Java Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Migrere til moduler»?
Automatiske og navnløse moduler Du øver på Java Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Java Academy?
Ingen tidligere erfaring er nødvendig. Java Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Migrere til moduler»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Java Academy-leksjonen?
Ja. Alle Java Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- module-info.java
- requires og exports
- Tjenester med provides/uses
- Migrere til moduler