Nye funktioner i 3.2 (JDT)

Dette dokument indeholder beskrivelser af nogle af de mere interessante eller betydelige ændringer, der er foretaget af Java-udviklingsværktøjerne til version 3.2 af Eclipse. De er inddelt i:

Se også dokumentet Nye funktioner til Eclipse Platform i 3.2, der beskriver ændringer af Eclipse-platformen.

Java-refactoring

Refactoring-funktionen Introducér indirekte reference

Introducér indirekte reference er en ny refactoring-funktion, du kan bruge til at omdirigere alle kaldere af en metode til en ny metode. Den nye metode kalder den oprindelige metode. Du kan eventuelt erstatte standardimplementeringen af den nye metode med en anden.

Indirekte reference er nyttig, når der er brug for en ny funktionsmåde for en metode, og:

  • Metoden ikke kan ændres, fordi den kommer fra et bibliotek.
  • Metoden ikke må ændres, fordi det er en API-metode.

Brug indirekte reference til rettelser af programfejl i den oprindelige metode eller som en hurtig metode til at tilføje kode før eller efter alle kald af en metode.

For at bruge refactoring-funktionen Introducér indirekte reference skal du vælge en metode, vælge Refactor > Introducér indirekte reference... og angive et navn og en erklæringsklasse til den nye metode.

Dialogboksen Introducér indirekte reference

Metoden tilføjes til den valgte erklæringsklasse.

Eksempel på Introducér indirekte reference med opdateret reference

Alle referencer opdateres, så de kalder den nye metode.

Resultat efter Introducér indirekte reference

Refactoring-funktionen Udtræk superklasse

En ny refactoring-funktion ved navn Udtræk superklasse udtrækker en fælles superklasse fra et sæt sideordnede typer. De valgte sideordnede typer bliver direkte underklasser for den udtrukne superklasse, når refactoring-funktionen er anvendt. Udtræk superklasse giver også mulighed for at bruge den udtrukne superklasse, hvor det er muligt i koden.

JavaEditorTests og PropertiesEditorTests er de sideordnede typer i følgende eksempel. På det første billede vises typehierarkiet før refactoring-funktionen.

Hierarki før udtrækning af EditorTests

Det næste billede viser typehierarkiet efter udtrækning af EditorTests med refactoring-funktionen Udtræk superklasse.

Hierarki efter udtrækning af EditorTests

Vælg Refactor > Udtræk superklasse..., hvis du vil starte denne refactoring-funktion.

Guiden Ryd op

Ryd op kan startes for et antal Java-kildefiler, pakker eller for et helt Java-projekt. Den hjælper med at:

  • afhjælpe flere problemer på samme tid
  • ændre koden til en foretrukket kodetype

Her er nogle eksempler:

  • sørg for, at der bruges klammeparenteser til alt indhold i blokke af typen 'if', 'while' eller 'for'.
  • kvalificér al feltadgang med 'this'
  • brug 'final', hvor det er muligt

Du kan overføre Java 1.4-kompatibel kode til 5.0 ved at bruge Ryd op til at:

  • konvertere alle for-løkker til udvidede for-løkker hvor muligt
  • markere alle tilsidesættende metoder med @Override-annotationer

Guiden Ryd op

Vælg et projekt, en pakke eller en fil, og brug Kilde > Ryd op... til at starte guiden.

Refactoring-historik

De fleste af refactoring-funktionerne i JDT registreres nu i en Refactoring-historik. Refactoring-infrastrukturen gemmer detaljerede oplysninger om de refactoring-funktioner, der er udført i arbejdsområdet.

Du kan gennemse og redigere refactoring-historikken ved at vælge Refactor > Historik...

Dialogboksen Refactoring-historik

Opret og anvend refactoring-scripts

Refactoring-funktioner, der er udført i dit lokale arbejdsområde, kan nu eksporteres til et Refactoring-script og afspilles i andre arbejdsområder.

Disse refactoring-scripts kan bruge i forskellige situationer, f.eks. automatisk rettelse af API-brudændringer mellem softwarelag eller oprettelse af patch med omfattende semantik.

Opret et refactoring-script ud fra refactoring-historikken ved at vælge Refactor > Opret script...

Funktionen Opret script

Brug Refactor > Anvend script... til at anvende det genererede refactoring-script til et andet arbejdsområde.

Et nyt udvidelsespunkt giver plugin-udviklere mulighed for at bidrage med refactoring-scriptfunktioner til nye eller eksisterende refactoring-funktioner. Der er flere oplysninger under udvidelsespunktet org.eclipse.ltk.core.refactoring.refactoringContributions.

Eksportér JAR-fil med refactoring-funktioner

Når en JAR-fil eksporteres fra arbejdsområdet, giver guiden JAR-eksport mulighed for at inkludere refactoring-oplysninger i JAR-filen.

Brug Fil > Eksportér..., og vælg JAR-fil. Vælg Eksportér refactoring-funktioner for markerede projekter på den første side i guiden JAR-eksport. Klik på linket for at vælge de refactoring-funktioner, der skal inkluderes.

Refactoring-valg ved JAR-eksport

Klienter kan derefter overføre en tidligere version af JAR-filen til en ny ved at bruge refactoring-funktionen Refactor > Overfør JAR-fil.... Hvis der er valgt en JAR-fil, kan du i stedet bruge Byggesti > Overfør JAR-fil....

Funktionen Overfør JAR-fil

Denne refactoring-funktion opdaterer automatisk al kode, som afhænger af den tidligere version af JAR-filen, så den bruger den nye version af JAR-filen.

API-kompatible refactoring-funktioner

Der er et antal eksisterende refactoring-funktioner, som er udvidet, så de understøttter API-kompatibilitet, ved at de bevarer det oprindelige medlem som delegeret for det medlem, der er udført refactoring af:

  • Omdøb metode
  • Omdøb felt (kun for konstanter)
  • Flyt metode
  • Introducér parameter
  • Revidér signatur

Afkrydsningsfeltet 'Bevar oprindelig metode som delegeret'

Ved at vælge afkrydsningsfeltet Bevar oprindelig metode som delegeret i refactoring-dialogboksen kan du få genereret et delegeret medlem og dermed bevare API-kompatibiliteten.

Omdøb type opdaterer elementer med lignende navne

Refactoring-funktionen Omdøb type kan nu omdøbe variabler og metoder, som har et navn, der ligner den omdøbte types. Funktionen gør det muligt at bevare synkroniseringen mellem typenavne og metode- og variabelnavne.

Opdatér lignende erklæringer

Du kan starte refactoring-funktionen ved at vælge en type og bruge Refactor > Omdøb...

Refactoring-funktionen Omdøb pakke omdøber underpakker

Refactoring-funktionen Omdøb pakke kan nu også omdøbe underpakker, hvis du ønsker det.

Dialogboksen Omdøb pakke med nyt afkrydsningsfelt

I dette eksempel omdøbes junit.samples.money til junit.examples.money.

Du kan starte refactoring-funktionen ved at vælge en pakke og bruge Refactor > Omdøb...

Filtrér refactoring-resultat

Du kan nu filtrere ændringer på siden med refactoring-resultater. Det er især nyttigt, når tekstmatcher i kommentarer og strenge opdateres samtidig med omdøbning af Java-elementer.

Filtreret refactoring-resultat

Skærmbilledet viser filtrerede tekstmatcher i dialogboksen Omdøb under omdøbning af klassen TestCase til TestCasee.

Du kan nu også filtrere ud fra Java-elementers synlighed.

Java-editor

Tilpas indholdsassistance

Hvis indholdsassistance aktiveres flere gange (Ctrl+Mellemrum på de fleste platforme), skiftes nu mellem forskellige forslagskategorier.

Du kan tildele særlige tastgenveje til foretrukne forslagskategorier og bruge indstillingssiden Åbner indstillingssiden Indholdsassistance - Udvidet Java > Editor > Indholdsassistance > Udvidet til at konfigurere, hvilke kategorier der skal vises i pop op-standardboksen med indholdsassistance.

Pop op-indholdsassistance med Java-forslag, gentaget aktivering viser skabelonforslag

Det nye udvidelsespunkt, org.eclipse.jdt.ui.javaCompletionProposalComputer, giver plugin-udviklere mulighed for at bidrage med udførelsesforslag og -kategorier til indholdsassistanceprocessen i Java-editoren.

Camel case understøttes i kodeudførelse

Kodeudførelse understøtter nu camel case-mønstre. F.eks. vil kodeudførelse for NPE foreslå NullPointerException. Du kan deaktivere understøttelsen via indstillingen Vis camel case-matcher på indstillingssiden Åbner indstillingssiden Indholdsassistance Java > Editor > Indholdsassistance.

Udførelse af NPE i Java-editor

Hurtig menu til at omgive kode

Den nye hurtige menu, Omgiv med, gør det muligt at omgive valgte linjer med kode. Menuen kan udvides med tilpassede skabeloner. Skabelonerne kender nu til variabler, der skal trækkes ud eller fastlægges.

Transformeringen Omgiv med runnable-kode

Brug Kilde > Omgiv med eller tryk på Alt+Skift+Z for at få vist menuen direkte.

Du kan tilføje egne tilpassede skabeloner til indstillingssiden Java > Editor > Skabeloner. Det eneste krav til skabelonen er variablen ${line_selection}.

Nye hurtige rettelser

Der er tilføjet flere nye hurtige rettelser, f.eks.:

  • ret adgang til ubehandlede typer

    Rettelsesforslag til ubehandlet adgang

    Denne hurtige rettelse udleder oplysninger fra syntaksen i samme fil. Brug refactoring-funktionen Udled generiske typeargumenter, hvis analysen skal være mere avanceret.

  • tilføj manglende annotationsattribut

    Hurtig rettelse til manglende annotationsattribut

  • tilføj nyt annotationsmedlem

    Hurtig rettelse til nyt annotationsmedlem

Kategoriunderstøttelse

Vha. koden @category kan der defineres kategorier i Javadoc-kommentarer for typer, metoder og felter.

Kode, der bruger kategorier

Kategorier bruges i oversigterne Struktur og Medlemmer og i Hurtig struktur. De synlige kategorier kan vælges på menuen Vis.

Struktur, der viser kategorier og kategorifiltre

Alle medlemmer kan foldes

Når foldning er aktiveret, kan felter, initialiseringer og deres kommentarer nu foldes væk på samme måde som metoder.

Foldede feltinitialiseringer

Der er nye tekstfoldningsmetoder til at skjule alle kommentarer og medlemmer og nulstille foldningsstrukturen. Kommandoerne findes på kontekstmenuen Foldning på den lodrette lineal i Java-editoren.

Struktur for Java-filer uden for arbejdsområdet og lodret lineal

I Java-editoren vises nu lodrette linealer, og både siden Struktur og Hurtig struktur kan vise strukturen for eksterne Java-filer og Java-filer fra opbevaringssteder.

Ny lineal

Java-compiler

Java SE 6.0-overholdelse

Java SE 6.0 understøttes nu fuldt ud. Mere specifikt genereres nu StackMapTable-attributter (se JSR 202) i .class-filer med et 1.6-mål.

Angiv 6.0-overholdelse

Analyse af NULL-reference

Java-compileren kan nu udføre grundlæggende analyse af NULL-referencer for lokale variabler.

Analysen, der er valgfri, kan aktiveres på indstillingssiden Åbner indstillingssiden Fejl/Advarsler Java > Compiler > Fejl/Advarsler via indstillingen Potentielle programmeringsproblemer > NULL-reference.

NULL-referenceadvarsel i Java-editor

Bemærk, at analysen er ret forsigtig, da den er baseret på bestemte erklæringsregler. Den behandler kun tilfælde med mistænkeligt indhold (f.eks. hvis der senere udføres kontrol af en NULL-værdi) i stedet for at advare om alle tilfældene.

I 5.0-overholdelsestilstand kan advarsler om NULL-referencer undertrykkes vha. @SuppressWarnings("null").

Forbedret genoprettelse efter syntaksfejl

Den interne Java-parser er nu langt mere tolerant over for syntaksfejl. I Eclipse 3.1 ville en syntaksfejl forhindre efterfølgende fejl i at blive vist. Parseren kan nu overleve sætninger med fejl og fortsætte analysen.

I følgende eksempel registreres den ugyldige reference til metoden bar() på trods af det manglende semikolon i den foregående sætning.

Java-editor med tolereret syntaksfejl

Det gør f.eks. refactoring-funktioner, som kun vedrører en enkelt fil, i stand til at tolerere syntaksfejl. For eksempel er det nu muligt at omdøbe eller udtrække en lokal variabel i starten af en metode, der endnu ikke er færdigskrevet.

Udtræk lokal variabel i ufuldstændig metode

Håndtér ikke konfigurationsrelaterede fejl som uoprettelige fejl

Indstillingen Håndtér konfigurationsrelaterede fejl som uoprettelige fejl på indstillingssiden Åbner indstillingssiden Bygning Java > Compiler > Bygning styrer, om en fejl, der kan konfigureres, skal betragtes som uoprettelig. Indstillingen er som standard aktiveret.

Hvis indstillingen deaktiveres, kan den kompilerede kode udføres på trods af fejl i koden.

Registrering af unødvendige $NON-NLS$-koder

Unødvendige $NON-NLS$-koder registreres nu. Der rapporteres et problem, hvis en linjekommentar begynder med //$NON-NLS-x$, og der ikke findes en tilsvarende streng på samme linje.

Rapporteringen kan aktiveres og deaktiveres via samme indstilling som til registrering af ikke-eksternaliserede strenge. Den kan indstilles på indstillingssiden Åbner indstillingssiden Fejl/Advarsler Java > Compiler > Fejl/Advarsler via indstillingen Kodetype > Ikke-eksternaliserede strenge (manglende/ubrugt $NON-NLS$-kode).

Java-editor med unødvendig NLS-kode

Du kan fjerne alle unødvendige koder i en kompileringsenhed vha. Hurtig rettelse (Ctrl+1) eller Ctrl+1, Ctrl+Enter.

Registrering af brug af ubehandlede typer

Brugen af ubehandlede typer (raw) registreres nu. En ubehandlet type er en reference til en generisk type uden noget typeargument (f.eks. List i stedet for List<Element>).

Analysen, der er valgfri, kan aktiveres uafhængigt af Ikke-kontrolleret generisk typefunktion på indstillingssiden Åbner indstillingssiden Fejl/Advarsler Java > Compiler > Fejl/Advarsler via indstillingen Generiske typer > Anvendelse af ubehandlet type.

Java-editor med anvendelse af ubehandlet type

Du kan undertrykke advarslen ved at tilføje @SuppressWarnings("unchecked").

Der er også implementeret en Hurtig rettelse til løsning af problemet med anvendelse af ubehandlede typer.

Registrering af metodeparametertildelinger

Tildeling til metodeparametre betragtes som en uhensigtsmæssig fremgangsmåde.

Du kan få registreret og rapporteret sådanne tildelinger ved at åbne indstillingssiden Åbner indstillingssiden Fejl/Advarsler Java > Compiler > Fejl/Advarsler og aktivere indstillingen Kodetype > Parametertildeling.

Java-editor med advarsel om parametertildeling

Registrering af brug af ubrugte etiketter

Java-compileren registrerer nu ubrugte sætningsetiketter.

Analysen, der er valgfri, kan aktiveres på indstillingssiden Åbner indstillingssiden Fejl/Advarsler Java > Compiler > Fejl/Advarsler via indstillingen Unødvendig kode > Ikke-benyttet break/continue-etiket.

Java-editor med anvendelse af ubehandlet type

Registrering af fallthrough for switch-case

Java-compileren kan nu registrere, om der gås ind i en case efter gennemløb af den foregående case (fallthrough). Tomme case-udtryk er tilladt.

Analysen, der er valgfri, kan aktiveres på indstillingssiden Åbner indstillingssiden Fejl/Advarsler Java > Compiler > Fejl/Advarsler via indstillingen Potentielle programmeringsproblemer > Fallthrough for 'switch'-case.

Java-editor med fallthrough-advarsel

Der er implementeret en Hurtig rettelse, der tilføjer en break-sætning til den forrige case.

Forbedret ydeevne for store JAR-filer

Den maksimale størrelse på den interne Java-modelcache indgår nu i den maksimale hobstørrelse (VM-argumentet -Xmx i de fleste JVM'er), der angives for den Java Virtual Machine, som kører Eclipse IDE.

Forøgelse af hobstørrelsen giver en mærkbar forbedring af ydeevnen, når der er store JAR-filer i bygge-classpath.

Opret ændrede .class-filer igen

Java-byggeprogrammet kan nu oprette ændrede eller fjernede .class-filer i outputfolderen igen ud fra den oprindelige kilde.

Det kan styres på indstillingssiden Åbner indstillingssiden Bygning Java > Compiler > Bygning via indstillingen Outputfolder > Byg klassefiler igen, som er ændret af andre.

Javadoc-oversigt og værktøjstip fra tilknyttet Javadoc

Javadoc-oversigten og Javadoc-pegefunktioner henter nu oplysninger fra den tilknyttede Javadoc for biblioteker, som ikke har en tilknyttet kilde.

JUnit-værktøjer

JUnit 4-understøttelse

JUnit-understøttelsen er opdateret, så JUnit 4-test kan udføres og skrives. Der er flere oplysninger om JUnit 4 på www.junit.org.

  • brug guiden Ny JUnit-testcase til at generere en JUnit 4-testklasse:
    JUnit 4-understøttelse i guiden Ny JUnit-testcase
  • tilføj det leverede JUnit-bibliotek til byggestien
    Tilføj JUnit 4-bibliotek med Hurtig rettelse
  • start JUnit 4-test som sædvanlig med Udfør som JUnit
  • ignorér test ved at kode dem med @Ignore

Historik for JUnit-oversigt

Oversigten JUnit kan nu håndtere flere samtidige testkørsler. Du kan skifte mellem de aktive og de seneste testkørsler vha. den nye historik. Du kan gentage test fra historikken uden at stoppe igangværende test.

JUnit-historik

Det fungerer både til JUnit 3 og JUnit 4.

Java-fejlfindingsfunktion
Udførelsesmiljøer

Et udførelsesmiljø beskriver faciliteterne i en runtime, f.eks. J2SE-1.4. Ved at referere til et udførelsesmiljø kan du angive JRE'er, der bruges til udførelse, fejlfinding og bygning. Den nye indstillingsside, Åbner indstillingssiden Udførelsesmiljøer Java > Installerede JRE'er > Udførelsesmiljøer, viser de JRE'er, der er installeret i arbejdsområdet, og som er kompatible med hvert udførelsesmiljø. JRE'er, der opfylder et udførelsesmiljøs præcise krav, vises med fed skrift, mens de JRE'er, der mere end opfylder et miljøs krav, vises med standardfonten. Når mere end én JRE er kompatibel med et udførelsesmiljø, kan du vælge en standard-JRE til det pågældende miljø ved at markere den.

Indstillingssiden Udførelsesmiljøer

En byggesti eller en startkonfiguration, der refererer til et udførelsesmiljø, er mere platformuafhængig end en, der referere til en bestemt JRE, da en JRE's udførelsesmiljø kan opløses uafhængigt at navnet. Brug skillebladet JRE eller guiden Redigér bibliotek til at angive et udførelsesmiljø til udførelse og bygning.

Skillebladet JRE i dialogboksen Startkonfigurationer

Startvariabel til systemegenskaber

En ny startvariabel gør det muligt at angive systemegenskaber som Java-program- og VM-argumenter fra Eclipse-runtime. Variablen kan modtage et enkelt argument, som er navnet på den systemegenskab, der skal opløses på starttidspunktet.

Systemegenskaben java.home kan f.eks. angives som ${system_property:java.home}.

Skillebladet Argumenter i dialogboksen Startkonfigurationer

Evalueringsunderstøttelse for arrays

Evaluering og indholdsassistance understøttes nu for Java-arrays. Brug this til at referere til det valgte array.

Kodeassistance i oversigten Variabler

Java-programdelsgrupper

Du kan nu få vist programdelsgrupper i oversigten Fejlfinding ved at aktivere Vis programdelsgrupper på menuen Vis.

Aktivering af programdelsgrupper i oversigten Fejlfinding

Eksporterede indgange i runtime-classpath

En runtime-classpath kan konfigureres, så den kun inkluderer eksporterede indgange fra byggestien. Standardværdien er, at en runtime-classpath inkluderer alle indgange (eksporterede såvel som ikke-eksporterede).

Vælg standardindgangen på skillebladet Classpath, og brug knappen Redigér... til at konfigurere indstillingen.

Skillebladet Classpath i dialogboksen Startkonfigurationer

Dialogboksen Redigér runtime-classpath

Afbryd programdel midlertidigt eller Afbryd VM midlertidigt

Der er tilføjet en indstilling til indstillingssiden Åbner indstillingssiden Fejlfinding Java > Fejlfinding, der styrer, om nye breakpoints skal afbryde en enkelt programdel eller hele VM midlertidigt.

Indstillingssiden Fejlfinding

Diverse

Java-typeindikator

Du kan aktivere Java-typeindikator på indstillingssiden Åbner indstillingssiden Etiketdekorationer Generelt > Udseende > Etiketdekorationer, hvis du vil finde ud af, hvad den første type i en kompileringsenhed eller klassefil er. Der vises en dekoration for grænseflader, annotationer og enums, mens almindelige klasser ikke dekoreres.

Etiketdekoration, der angiver type

Find brudte eksternaliserede strenge

En ny funktion kan bruges til at søge efter brudte eksternaliserede strenge. Søgningen rapporterer manglende, ubrugte og sammenfaldende nøgler.

Funktionen Find brudte eksternaliserede strenge

Vælg en egenskabsfil, en pakke eller et helt projekt, og brug Kilde > Find brudte eksternaliserede strenge til at starte søgningen.

Forbedret understøttelse af strengeksternaliseringsfunktionen i Eclipse

Funktionen i Eclipse til eksternalisering af strenge har nu samme slags understøttelse som traditionel strengeksternalisering. Den tilknyttede eksternaliserede værdi vises som pop op-tekst, når du placerer markøren på en nøgle til en eksternaliseret streng i Java-editoren.

NLS-pop op

Ctrl+Klik på nøglen for at gå direkte til indgangen i den tilhørende egenskabsfil. I egenskabsfileditoren kan du bruge Ctrl+Klik til at finde ud af, hvor nøglen bruges i koden.

Opret en type fra et eksempelkodestykke

Du kan klistre et kodestykke med en Java-type direkte ind i en pakke eller en kildefolder for at oprette en ny kompileringsenhed. Du kan f.eks. vælge og kopiere følgende kildekode
package pack;
   public class HelloWorld {
      public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
vælge en kildefolder i Package Explorer og bruge Ctrl+V (eller Redigér > Klistre). Pakken 'pack' og filen 'HelloWorld.java' oprettes automatisk med det kopierede indhold.

Generér hashCode() og equals()

En ny funktion kan bruges til at generere metoderne hashCode() og equals(). Du kan vælge de felter, som implementeringen skal baseres på.

Guiden Generér hash og equals

Du kan starte funktionen ved at vælge en type og bruge Kilde > Generér hashCode() og equals()...

Kodeformatering fra kommandolinje

Det er nu muligt at formatere kildekode uden at starte Eclipse-brugergrænsefladen ved at bruge det nye hovedløse formateringsprogram. Det kommandolinjebaserede formateringsprogram fungerer som et Eclipse-standardprogram.

Følgende kommando vil formatere kildefilerne i folderen src med de indstillinger, der er angivet i filen config.prefs:

eclipse -application org.eclipse.jdt.core.JavaCodeFormatter -config d:/config.prefs c:/src

Der er flere oplysninger i Brug af formateringsprogrammet.

Understøttelse af Java-lignende udvidelser

Nu understøttes filer med en anden filtype end .java, som indeholder ren Java-kode. Du kan tilføje en Java-lignende udvidelse på indstillingssiden Åbner indstillingssiden Indholdstyper Generelt > Indholdstyper (vælg Tekst > Java-kildefil).

Package Explorer med 'Y.abc' som kompileringsenhed