Nyheter i 3.2 (JDT)

Her finner du opplysninger om interessante og viktige endringer som er gjort i Java-utviklingsverktøyene i 3.2-utgaven av Eclipse. De er delt inn i følgende grupper:

Du finner mer informasjon om endringer i plattformen i dokumentet Eclipse-plattformen - Nyheter i 3.2.

Java-refaktorisering

Refaktoriseringen Innfør indireksjon

Innfør indireksjon er en ny refaktorisering som lar deg dirigere alle kallere av en metode til en ny metode. Den nye metoden kaller den opprinnelige metoden. Du kan erstatte standardimplemeneringen av den nye metoden med en hvilken som helst annen, hvis du ønsker det.

En slik indireksjon er nyttig når ny virkemåte må innføres i en metode, men:

  • Metoden kan ikke endres, fordi den er fra et bibliotek.
  • Metoden må ikke endres, fordi den er en API-metode.

Bruk indireksjonen for feilrettelser av den opprinnelige metoden eller som en rask metode for å legge til kode før eller etter alle kall til en metode.

Du utfører refaktoriseringen Innfør indireksjon ved å velge en metode, velge Refaktoriser > Innfør indireksjon..., oppgi et navn og deklarerende klasse for den nye metoden.

Dialogboksen Innfør indireksjon

Metoden blir lagt til den valgte deklarerende klassen.

Forhåndvisning av Innfør indireksjon med oppdatert referanse

Alle referanser er oppdatert for å kalle den nye metoden.

Resultat etter Innfør indireksjon

Refaktoriseringen Trekk ut superklasse

En ny refaktorisering, Trekk ut superklasse trekker ut en felles superklasse fra et sett med sideordnede typer. De valgte sideordnede typene blir direkte subklasser til den uttrukkede superklassen etter at refaktoriseringen tas i bruk. Trekk ut superklasse gjør deg også mulig å bruke den uttrukkede superklassen overalt i koden der det er mulig.

JavaEditorTests og PropertiesEditorTests er de sideordnede typene i det følgende eksempelet. Det første bildet viser typehierarkiet før refaktoriseringen.

Hierarkiet før EditorTests trekkes ut

Det neste bildet viser typehierarkiet etter uttrekking av EditorTests med refaktoriseringen Trekk ut superklasse.

Hierarki etter at EditorTests er trukket ut

Du aktiverer denne refaktoriseringen Refaktoriser > Trekk ut superklsase....

Oppryddingsveiviseren

Rydd opp kan aktiveres for en eller flere Java-kildefiler, pakker eller et helt Java-prosjekt. Med denne funksjonen kan du:

  • løse flere problemer på en gang
  • få kode til å bruke en foretrukket kodestil

Her er noen eksempler på hva som kan gjøres:

  • tvinge krøllparenteser (blokker) til å brukes for hver 'if'-, 'while'- eller 'for'-enhet
  • kvalifisere alle felttilganger med 'this'
  • bruke 'final' om mulig

For å oppdatere Java 1.4-kompatibel kode til 5.0, bruker du Rydd opp for å:

  • konvertere alle for-sløyfer til utvidede for-sløyfer der det er mulig
  • merke alle overstyrende metoder med @Override-annotasjoner

Oppryddingsveiviser

Velg prosjekt, pakke eller fil, og bruk Kilde > Rydd opp... for å starte denne veiviseren.

Refaktoriseringshistorikk

De fleste av refaktoriseringene som tilbys av JDT, spores nå i refaktoriseringshistorikken. Refaktoriseringsinfrastrukturen lagrer detaljert informasjon om refaktoriseringer som er utført på arbeidsområdet.

Du kan bla gjennom og redigere refaktoriseringshistorikken med Refaktoriser > Historikk...

Dialogboksen Refaktoriseringshistorikk

Opprette og bruke refaktoriseringsskript

Refaktoriseringer som er utført på ditt lokale arbeidsområde, kan nå eksporteres til et refaktoriseringsskript og utføres på et hvilket som helst arbeidsområde.

Slike refaktoriseringsskript kan brukes i forskjellige scenarioer, for eksempel automatisk fiksing av API-endringer mellom programvarelag, eller for å lage rettelser med semantikk på høyere nivå.

Opprett et refaktoriseringsskript fra refaktoriseringshistorikken med Refaktoriser > Opprett skript...

Opprett skripthandling

Du tar i bruk det genererte refaktoriseringsskriptet på et arbeidsområde ved å bruke Refaktoriser > Bruk skript...

Et nytt utvidelsespunkt gjør at forfattere av plugin-moduler kan legge inn støtte for refaktorseringsskripting for nye eller allerede eksisterende refaktoriseringer. Du finner nærmere opplysninger under utvidelsespunktet org.eclipse.ltk.core.refactoring.refactoringContributions.

JAR-fileksport med refaktoriseringer

Når du eksporterer en JAR-fil fra arbeidsområdet, gir veiviseren JAR-eksport deg muligheten til å inkludere refaktoriseringsinformasjon i JAR-filen.

Bruk Fil > Eksporter... og velg JAR-fil. På den første siden av veiviseren JAR-eksport velger du Eksporter refaktoriseringer for sjekkede prosjekter. Klikk på linken for å velge hvilke refaktoriseringer som skal inkluderes.

JAR-eksport, valg av refaktorisering

Deretter kan klienter migrere en eldre versjon av JAR-filen til en ny versjon ved hjelp av Refaktoriser > Migrer JAR-fil. Eventuelt kan du også bruke Byggebane > Migrer JAR-fil... hvis en JAR-fil er valgt.

Handlingen Migrer JAR-fil

Denne refaktoriseringen oppdaterer automatisk all kode som er avhengig av den gamle versjonen av JAR-filen, til å bruke den nye versjonen av JAR-filen.

API-refaktoriseringer

Flere eksisterende refaktoriseringer er utvidet til å støtte API-kompatibilitet, ved å beholde det opprinnelige medlemmet som delegat for det refaktoriserte medlemmet:

  • Endre navn på metode
  • Endre navn på felt (bare for konstanter)
  • Flytt metode
  • Innfør parameter
  • Endre signatur

Avmerkingsboks for 'Behold opprinnelig medlem som delegat for refaktorisert medlem'

Genereringen av et delegatmedlem for å bevare API-kompatibilitet kan aktiveres ved å merke av Behold opprinnelig metode som delegat for metode med endret navn i refaktoriseringsdialogboksen.

Endre navn på type oppdaterer elementer med liknende navn

Refaktoriseringen Endre navn på type kan nå endre navn på variabler og metoder med navn som likner på type som har fått endret navn. Denne funksjonen hjelper til med å synkronisere metode- og variabelnavn med typenavn.

Oppdater liknende deklarasjoner UI

Du aktiverer denne refaktoriseringen ved å velge en type og bruke Refaktoiser > Endre navn...

Refaktoriseringen Endre navn på pakker endrer navn på underpakker

Refaktoriseringen Endre navn på pakke endrer nå også navnet på delpakker på forespørsel.

Dialogboksen Endre navn på pakke med ny avmerkingsboks

I dette eksempelet endres navnet junit.samples.money til junit.examples.money.

Du aktiverer denne refaktoriseringen ved å velge en pakke og bruke Refaktoriser > Endre navn...

Filtrer forhåndsvisningen av refaktoriseringen

Forhåndsvisningssiden for refaktorisering støtter nå filtrering av endringer. Dette er spesielt nyttig når oppdatering av tekstsamsvar i kommentarer og strenger er nødvendig i forbindelse med endring av navn på Java-elementer.

Filtrert forhåndsvisningsside for refaktorisering

Skjermbildet viser dialogboksen filtrert for tekstsamsvar, ved endring av klassen TestCase til TestCasee.

Nå kan du også filtrere endringer relatert til Java-elementenes synlighet.

Java-redigeringsprogram

Innholdshjelp som kan tilpasses

Hvis du aktiverer innholdshjelp flere ganger (Ctrl+mellomrom på de fleste plattformer), går systemet gjennom ulike forslagskategorier.

Du kan tilordne forskjellige hurtigtaster til dine mest brukte forslagskategorier og bruke preferansesiden Åpner preferansesiden Avansert innholdshjelp Java > Redigeringsprogram > Innholdshjelp > Avansert for å konfigurere hvilke kategorier som skal vises i standard innholdshjelp-popup.

Innholdshjelp-popup med Java-forslag, gjentatt aktivering henter frem malforslag

Med det nye utvidelsespunktet org.eclipse.jdt.ui.javaCompletionProposalComputer kan forfattere av plugin-moduler bidra med fullføringsforslag og -kategorier i innholdshjelpprosessen til Java-redigeringsprogrammet.

Støtte for CamelCase i kodefullføring

Kodefullføring støtter nå CamelCase-mønstre. Fullføring på NPE vil for eksempel foreslå NullPointerException. Du kan deaktivere denne støtten ved hjelp av preferansen Vis CamelCase-samsvar på preferansesiden Åpner preferansesiden Innholdshjelp Java > Redigeringsprogram > Innholdshjelp.

Java-redigeringsprogrammets fullføring på NPE

Hurtigmeny for å omgi kode

Med den nye Omgi med-hurtigmenyen kan du omgi et utvalg linjer med kode. Menyen kan utvides med tilpassede maler. Malene er nå oppmerksomme på variabler som må trekkes ut eller gjøres endelige.

Omgi med kjørbar kodetransformering

Velg Kilde > Omgi med eller trykk på Alt+skift+Z for å få frem menyen.

Nå kan du legge til tilpassede maler på preferansesiden Java > Redigeringsprogram > Maler. Alt malene trenger er variabelen ${line_selection}.

Nye hurtigrettelser

Det er lagt til flere nye hurtigrettelser, for eksempel:

  • rette ubehandlet tilgang

    Rettelsesforslag for ubehandlet tilgang

    Hurtigrettelsen bruker informasjon fra bruken i den samme filen. Hvis du ønsker en mer avansert analyse, kan du bruke refaktoriseringen Utled generiske typeargumenter.

  • legg til manglende annotasjonsattributt

    Hurtigrettelse for manglende annotasjonsattributt

  • legge til et nytt annotasjonsmedlem

    Hurtigrettelse for nytt annotasjonsmedlem

Kategoristøtte

Kategorier kan defineres i Javadoc-kommentarer for typer, metoder og felt ved hjelp av koden @category.

Kode som bruker kategorier

Kategorier blir vist i visningene Disposisjon og Medlemmer, og i hurtigdisposisjonen. Ved hjelp av Vis-menyen kan du velge hvilke kategorier som skal være synlige.

Disposisjon som viser kategorier og kategorifiltre

Alle medlemmer kan komprimeres

Når komprimering er aktivert, kan felt, initialiserere og deres kommentarer nå komprimeres på samme måte som metoder.

Komprimerte feltinitialiserere

Det er nye kommandoer for å komprimere alle kommentarer, medlemmer, og for å tilbakestille komprimeringsstrukturen. Disse kommandoen finnes på Java-redigeringsprogrammets Komprimering-hurtigmeny på den loddrette linjalen.

Støtte for linjal og disposisjon for Java-filer utenfor arbeidsområdet

Java-redigeringsprogrammet viser nå loddrette linjaler, og disposisjonssiden og hurtigdisposisjonen kan nå vise disposisjoner for eksterne Java-filer og Java-filer fra datalagre.

Støtte for linjal

Java-kompilator

Java SE 6.0-samsvar

Java SE 6.0-samsvar støttes nå fullt ut. StackMapTable-attributter (se JSR 202) blir nå generert i .class-filer med et 1.6-mål.

Angi 6.0-samsvar

Nullreferanseanalyse

Java-kompilatoren kan nå utføre grunnleggende nullreferanseanalyse for lokale variabler.

Denne valgfrie feilsøkingen kan aktiveres på preferansesiden Åpner preferansesiden Feil/advarsler Java > Kompilator > Feil/advarsler ved hjelp av preferansen Potensielle programmeringsproblemer > Nullreferanse.

Java-redigeringsprogram med nullreferanseadvarsel

Merk at analysen er temmelig konservativ, og gjør bruk av definitive tilordningsregler. Den vurderer bare tilfeller der det er noe mistenkelig (hvis det senere f.eks. blir utført en nullkontroll) i stedet for å rapportere om alle mulige tilfeller.

I 5.0-samsvarsmodus, kan nullreferanseadvarsler undertrykkes med @SuppressWarnings("null").

Forbedret syntaksgjenoppretting

Den interne Java-analysatoren er nå langt mer motstandsdyktig mot syntaksfeil. I Eclipse 3.1 forhindret en syntaksfeil at etterfølgende feil ble vist. Analysatoren kan nå gjenopprette fra setninger med feil, og fortsette med ytterligere analyser.

I det følgende eksempelet oppdages den ugyldige referansen til metoden bar() til tross det manglende semikolonet i den foregående setningen.

Java-redigeringsprogram med syntaksgjenoppretting

Dette tillater for eksempel at refaktoriseringer som bare påvirker en enkelt fil, kan tolerere syntaksfeil. Nå er det for eksempel mulig å endre navn på eller trekke ut en lokal variabel øverst i en metode som ennå ikke er ferdigskrevet.

Trekk ut lokal variabel i ufullstendig metode

Behandle konfigurerbare feil som ikke-alvorlige

Alternativet Behandle konfigurerbare feil som alvorlige feil på preferansesiden Åpner preferansesiden Bygging Java > Kompilator > Bygging kontrollerer om en konfigurerbar feil skal være alvorlig eller ikke. Dette alternativet er aktivert som standard.

Hvis dette alternativet er deaktivert, kan den kompilerte koden utføres til tross for det faktum at det finnes feil i koden.

Oppdaging av unødvendige $NON-NLS$-koder

Unødvendige $NON-NLS$-koder blir nå oppdaget. Det blir rapportert et problem hvis en linjekommentar starter med //$NON-NLS-x$ og det ikke finnes noen tilsvarende streng på den samme linjen.

Rapporteringen kan slås av og på med samme innstilling som for oppdaging av ikke-eksternaliserte strenger. Dette gjøres på preferansesiden Åpner preferansesiden Feil/advarsler Java > Kompilator > Feil/advarsler ved hjelp av preferansen Kodestil > Ikke-eksternaliserte strenger (manglende/ubrukte $NON-NLS-koder).

Java-redigeringsprogram med unødvendig NLS-kode

Du fjerner de unødvendige kodene med Hurtigrettelse (Ctrl+1), eller Ctrl+1, Ctrl+Enter for å fjerne alle unødvendige koder i en kompileringsenhet.

Oppdaging av bruk av ubehandlet type

Bruk av ubehandlede typer blir nå oppdaget. En ubehandlet type er en referanse til en generisk type, uten noe typeargument (f.eks. List i stedet for List<Element>).

Denne valgfrie feilsøkingen kan aktiveres uavhengig av usjekkede typeoperasjoner på preferansesiden Åpner preferansesiden Feil/advarsler Java > Kompilator > Feil/advarsler ved hjelp av preferansen Generiske typer > Bruk av en ubehandlet type.

Java-redigeringsprogram med bruk av en ubehandlet type

Denne advarselen kan undertrykkes ved å legge til @SuppressWarnings("unchecked").

Det er også implementert en hurtigrettelse for å løse problemet med bruk av ubehandlede typer.

Oppdaging av metodeparametertilordninger

Tilordning til metodeparametere anses som dårlig praksis.

For å oppdage og rapportere slike tilordninger åpner du preferansesiden Åpner preferansesiden Feil/advarsler Java > Kompilator > Feil/advarsler og aktiverer preferansen Kodestil > Parametertildeling.

Java-redigeringsprogram med advarsel om parametertildeling

Oppdaging av ubrukte etiketter

Java-kompilatoren oppdager nå ubrukte setningsetiketter.

Denne valgfrie feilsøkingen kan aktiveres på preferansesiden Åpner preferansesiden Feil/advarsler Java > Kompilator > Feil/advarsler ved hjelp av preferansen Unødvendig kode > Ubrukt avbrudds-/fortsettelsesetikett.

Java-redigeringsprogram med bruk av en ubehandlet type

Oppdaging av switch case-gjennomfall (fall-through)

Java-kompilatoren kan nå oppdage om en case kan være nådd ved fall gjennom (fall-through) forrige case. Tomme switch case er tillatt.

Denne valgfrie feilsøkingen kan aktiveres på preferansesiden Åpner preferansesiden Feil/advarsler Java > Kompilator > Feil/advarsler ved hjelp av Potensielle programmeringsprogrammer > Switch case-gjennomfall (fall through) preference.

Java-redigeringsprogram med fall-through-advarsel

Det er implementert en hurtigrettelse for å legge til en break-setning til foregående case.

Forbedret ytelse for store .jar-filer

Størrelsesgrensen for den interne Java-modell-hurtigbufferen er nå en funksjon av maksimal størrelse på minneområdet (-Xmx VM-argument på de fleste JVMer) gitt til JVM-maskinen (Java Virtual Machine) som kjører Eclipse IDE.

Heving av minneområdet gir merkbar ytelsesforbedring når det er store .jar-filer i klassebanen for bygging.

Gjenopprette endrede .class-filer

Java Builder kan nå gjenopprette endrede eller fjernede .class-filer i utdatamappen ved hjelp av originalkilden.

Dette kan styres på preferansesiden Åpner preferansesiden Bygging Java > Kompilator > Bygging med preferansen Utdatamappe > Gjenoppbygg klassefiler endret av andre.

Javadoc-visning og verktøytips fra tilknyttet Javadoc

Javadoc-visningen og Javadoc-pekehjelpen trekker nå ut informasjon fra tilknyttet Javadoc for biblioteker som ikke har kilde tilknyttet.

JUnit Tooling

JUnit 4-støtte

JUnit-støtten er oppdatert til å kjøre og skrive JUnit 4-tester. Du finner mer informasjon om JUnit 4 på www.junit.org.

  • Bruk veiviseren Nytt JUnit-testtilfelle for å generere en JUnit 4-testklasse:
    JUnit 4-støtte i veiviseren Nytt testtilfelle
  • legge det medfølgende JUnit-biblioteket til i byggebane n
    Legg til JUnit 4-bibliotek med hurtigrettelse
  • starte JUnit 4-tester som vanlig med Kjør som JUnit
  • ignorere tester ved å kode dem med @Ignore

JUnit-visningshistorikk

JUnit-visningen kan nå håndtere flere samtidige testkjøringer. Du kan veksle mellom aktive og tidligere testkjøringer ved hjelp av den nye historikken. Tester kan kjøres på nytt fra historikken uten at du stopper tester som allerede kjøres.

JUnit-historikk

Dette fungerer med både JUnit 3 og JUnit 4.

Java-feilsøker
Utføringsmiljøer

Et utføringsmiljø beskriver funksjonaliteten til et kjøremiljø - for eksempel J2SE 1.4. Du kan angi hvilke JREer som brukes for kjøring, feilsøking og bygging, basert på henvisning til et utføringsmiljø. Den nye preferansesiden Åpner preferansesiden Utføringsmiljø Java > Installerte JREer > Utføringsmiljøer viser JREene som er installert i arbeidsområdet, som er kompatible med hvert utføringsmiljø. JREer som oppfyller de nøyaktige kravene til et utføringsmiljø, vises som uthevet, og JREer som overstiger kravene til et miljø, vises i standardfonten. Når flere JREer er kompatible med et utføringsmiljø, kan du velge et standard JRE som skal brukes for dette miljøet, ved å merke det.

Preferansesiden Utføringsmiljø

En byggebane eller oppstartskonfigurasjon som refererer til et utføringsmiljø, er mer portabel enn en som refererer til en eksplisitt JRE, siden utføringsmiljøet til en JRE kan tolkes uavhengig av navnet. Bruk flippen JRE eller veiviseren Rediger bibliotek til å angi et utføringsmiljø for kjøring og bygging.

Flippen JRE i dialogboksen Oppstartskonfigurasjon

Systemegenskap for oppstartsvariabel

En ny oppstartsvariabel gjør det mulig å dynamisk angi systemegenskaper som Java-program- og VM-argumenter fra Eclipse-kjøretiden. Variabelen godtar et enkelt argument som er navnet på systemegenskapen som skal tolkes ved oppstart.

Systemegenskapen java.home blir for eksempel referert til med ${system_property:java.home}.

Flippen Argumenter i dialogboksen Oppstartskonfigurasjon

Evalueringsstøtte for matriser

Evaluering og innholdshjelp støttes nå for Java-matriser. Bruk this for å referere til den valgte matrisen.

Kodehjelp i visningen Variabler

Java-trådgrupper

Nå kan du vise trådgrupper i feilsøkingsvisningen ved å aktivere/deaktivere Vis trådgrupper på Vis-menyen.

Aktivere trådgrupper i feilsøkingsvisningen

Kjøretidsklassebane med eksporterte forekomster

Det kan konfigureres en kjøretidsklassebane for å inkludere bare eksporterte forekomster fra byggebanen. Som standard omfatter en kjøretidsklassebane alle forekomster (eksporterte og ikke-eksporterte).

Fra flippen Klassebane velger du standardoppføringen og bruker knappen Rediger... for å konfigurere alternativet.

Flippen Klassebane i dialogboksen Oppstartskonfigurasjon

Dialogboksen Rediger kjøretidsklassebane

Deaktiver tråd / Deaktiver VM

Det er lagt til et nytt alternativ på preferansesiden Åpner preferansesiden Feilsøking Java > Feilsøking for å kontrollere om nyopprettede avbruddspunkter skal deaktivere en enkelt tråd eller hele VM.

Preferansesiden Feilsøking

Diverse

Java-typeindikator

Aktiver Java-typeindikator på preferansesiden Åpner preferansesiden Dekoratører Generelt > Utseende > Etikettdekorasjon for å finne ut hva som er den første typen i en kompileringsenhet eller klassefil. Det blir vist en utsmykning for grensesnitt, annotasjoner og enumerasjonsobjekter, mens en vanlig klasse vises uten utsmykning.

Etikettdekoratør for Java-typeindikator

Søk etter brutte eksternaliserte strenger

En ny handling kan søke etter brutte eksternaliserte strenger. Søket rapporterer manglende, ubrukte og dupliserte nøkler.

Søk etter brutte eksternaliserte strenger

Du starter søket ved å velge en egenskapsfil, en pakke eller et helt prosjekt, og velger Kilde > Søk etter brutte eksternaliserte strenger

Forbedret støtte for Eclipses strengeksternaliseringsmekanisme

Strengeksternaliseringsmekanismen i Eclipse har nå samme støtte som tradisjonell strengeksternalisering. Den tilknyttede eksternaliserte verdien vises i en pekehjelp, når du holder musepekeren over en eksternalisert streng i Java-redigeringsprogrammet.

NLS-pekehjelp

Hold Ctrl-tasten nede og klikk på den for å navigere direkte til oppføringen i tilsvarende egenskapsfil. I egenskapsfilens redigeringsprogram kan du holde Ctrl-tasten nede og klikke for å finne ut hvor den brukes i koden.

Opprette en type fra en eksempelsnutt

Du kan lime inn en kodesnutt som inneholder en Java-type direkte i en pakke eller kildemappe for å opprette en ny kompileringsenhet. Du kan for eksempel velge og kopiere denne kildekoden:
package pack;
   public class HelloWorld {
      public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
Deretter velger du en kildemappe i Pakkeutforsker og bruker Ctrl+V (Rediger > Lim inn). Dette oppretter automatisk en ny pakke 'pack' og fil 'HelloWorld.java' med det kopierte innholdet.

Generere hashCode() og equals()

En ny handling kan brukes for å generere metodene hashCode() og equals(). Du kan velge hvilke felt implementeringen skal baseres på.

Veiviseren Generer hashCode og equals

Du aktiverer denne handlingen ved å velge en type og bruke Kilde > Generer hashCode() og equals()...

Kommandolinje-kodeformaterer

Nå er det mulig å formatere kildekode uten å starte Eclipse UI med den nye formateringsapplikasjonen med kommandogrensesnitt. Kommandolinjeformatereren fungerer som en standard Eclipse-applikasjon.

Følgende kommando formaterer kildefilene i mappen src med alternativene som er oppgitt i filen config.prefs file:

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

Du finner mer informasjon under Bruke formateringsprogrammet.

Støtte for Java-liknende filtyper

Filer som har en annen filtype enn .java og som inneholder ren Java-kode, støttes nå. Du kan legge til en Java-liknende filtype ved hjelp av preferansesiden Åpner preferansesiden Innholdstype Generelt > Innholdstyper (type Tekst > Java-kildefil).

Pakkeutforsker med 'Y.abc' som kompileringsenhet