Nyheter i 3.2 (JDT)

Här beskrivs en del av de mer intressanta och viktiga ändringar av Java-utvecklingsverktygen för Eclipse version 3.2. De är följande:

Se även dokumentet Nyheter i Eclipse-plattform 3.2 för ändringar i plattformen.

Java-omfaktorisering

Introducera indirigering, omfaktorisering

Introducera indirigering är en ny omfaktorisering med vilken du kan omdirigera alla anropare av en metod till en ny metod. Den nya metoden anropar den ursprungliga. Om du vill kan du ersätta standardimplementationen av den nya metoden med en annan.

En sådan indirigering är praktisk när ny funktionalitet behöver introduceras för en metod men:

  • Metoden kan inte ändras om den kommer från ett bibliotek.
  • Metoden får inte ändras om den är en API-metod.

Du kan använda indirigeringen för att rätta fel eller som ett snabbt sätt att lägga till kod före eller efter alla anrop till en metod.

Du kör omfaktoriseringen Introducera indirigering genom att välja en metod, anropa Omfaktorisera > Introducera indirigering... och ange namn och deklarationsklass för den nya metoden.

Dialogrutan Introducera indirigering

Metoden läggs till den markerade deklarationsklassen.

Förhandsgranskning av Introducera indirigering med uppdaterad referens

Alla referenser uppdateras att anropa den nya metoden.

Resultat efter Introducera indirigering

Extrahera superklass, omfaktoriseringar

En ny omfaktorisering som heter Extrahera superklass extraherar en vanlig superklass från en uppsättning syskontyper. Den markerade syskontypen blir direkt underordnad klass till den extraherade överordnade klassen efter omfaktoriseringen. Dessutom tillåter Extrahera superklass att du alltid kan använda extraherade superklasser i koden när så är möjligt.

JavaEditorTests och PropertiesEditorTests är syskontyper i följande exempel. Den första bilden visar typhierarkin för omfaktoriseringen.

Hierarki före extrahering av EditorTests

Nästa bild visar typhierarkin efter extraheringen av EditorTests med omfaktoriseringen Extrahera superklass.

Hierarki efter extrahering av EditorTests

Du anropar den här omfaktoriseringen med Omfaktorisering > Extrahera superklass....

Guiden Rensa

Rensa kan anropas från hur många Java-filer och paket som helst, och från ett helt Java-projekt. Den hjälper till med att:

  • genast korrigera flera problem
  • få kod att använda ett visst kodformat

Exempel på vad som kan göras:

  • få klammerparenteser (block) att användas för varje 'if', 'while' eller 'for'
  • ange all genererad fältaccess med 'this'
  • använda 'final' när det är möjligt

Så här får du Java 1.4-kompatibel kod för 5.0 att använda Rensa för att:

  • konvertera alla for-slingor till utökade for-slingor när så är möjligt
  • märka alla ersättande metoder med @Override-anteckningar

Guiden Rensa

Markera ett projekt, ett paket eller en fil och starta guiden med Källa > Rensa....

Omfaktoriseringshistorik

JDT:s flesta omfaktoriseringar spåras nu i en Omfaktoriseringshistorik. Omfaktoriseringsinfrastrukturen sparar nu detaljerad information om omfaktoriseringar som har utförts på arbetsytan.

Du kan bläddra och ändra i omfaktoriseringshistoriken genom att välja Omfaktorisering > Historik...

Dialogrutan Omfaktoriseringshistorik

Skapa och använda omfaktoriseringsskript

Omfaktoriseringar som utförs på din lokala arbetsyta kan exporteras till Omfaktoriseringsskript och spelas upp på en valfri arbetsyta.

Sådana omfaktoriseringsskript kan användas i olika scenarier, som automatisk rättning av brytande API-ändringar mellan programvarulager, eller för att tillhandahålla rättningar med omfattande semantik.

Du skapar ett omfaktoriseringsskript från omfaktoriseringshistoriken med Omfaktorisering > Skapa skript...

Åtgärden Skapa skript

Du använder det genererade omfaktoriseringsskriptet på en valfri arbetsytan med Omfaktorisering > Tillämpa skript...

En ny utökningspunkt gör att de som skriver insticksprogram kan bidra med stöd för omfaktoriseringsskript för nya eller redan befintliga omfaktoriseringar. Se utökningspunkt org.eclipse.ltk.core.refactoring.refactoringContributions för mer information.

Exportera JAR-fil med omfaktorisering

Guiden för export av JAR-filer har en funktion som infogar omfaktoriseringsinformation i JAR-filen.

Använd Fil > Exportera... och markera JAR-fil. På guidens första sida markerar du Exportera omfaktoriseringar för kontrollera projekt. Klicka på länken och markera de omfaktoriseringar som ska ingå.

Välja omfaktorisering för JAR-export

Klienter kan sedan migrera en äldre version av JAR-filen till en nyare med omfaktoriseringen Omfaktorisering > Migrera JAR-fil.... Är en JAR-fil redan vald, kan du använda Byggsökväg > Migrera JAR-fil....

Åtgärden Migrera JAR-fil

Omfaktoriseringen uppdaterar automatiskt all kod som är beroende av den äldre versionen och som ska användas i den nyare.

API-medvetna omfaktoriseringar

Det finns ett antal befintliga omfaktoriseringar som har utökats att stödja API-kompatibilitet, genom att den ursprungliga medlemmen behålls som en delegat till omfaktoriseringsmedlemmen.

  • Ändra namn på metod
  • Namnändra fält (endast för konstanter)
  • Flytta metod
  • Introducera parameter
  • Ändra signatur

Kryssruta för Behåll den ursprungliga medlemmen som delegat till omfaktoriseringsmedlemmen

Du aktiverar generering av en delegatmedlem att bibehålla API-kompatibilitet genom att markera kryssrutan Behåll den ursprungliga metoden som delegat till den namnändrade metoden i omfaktoriseringsdialogrutan.

Ändra namn på typ uppdaterar element med samma namn

Omfaktoriseringen Ända namn på typ kan nu ändra namn på variabler och metoder med samma namn som den namnändrade typen. Funktionen ser till att namn på metoder och variabler fortsätter att vara synkroniserade med typnamn.

Uppdatera liknande deklarationsanvändargränssnitt

Du anropar den här omfaktoriseringen genom att välja en typ och använda Omfaktorisering > Ändra namn...

Ändra namn på paket, omfaktorisering som ändrar namn på underpaket

Omfaktoriseringen Ändra namn på paket kan nu också ändra namn på underpaket.

Dialogrutan Ändra namn på paket med ny kryssruta

I följande exempel har junit.samples.money ändrat namn till junit.examples.money.

Du anropar den här omfaktoriseringen genom att välja ett paket och använda Omfaktorisering > Ändra namn...

Förhandsgranska filtrerad omfaktorisering

Omfaktoriseringens förhandsgranskningssida kan nu visa filtrerade ändringar. Detta är särskilt hjälpfullt när uppdatering av textmatchningar i kommentarer och strängar behövs när Java-elements namn ändras.

Förhandsgranskningssida för filtrerad omfaktorisering

Skärmbilden visar dialogrutan för namnändring filtrerad för textmatchningar vid namnändring av klassen TestCase till TestCasee.

Ändringar som gäller Java-elements synlighet kan nu också filtreras.

Java-redigerare

Anpassningsbar innehållshjälp

Anropar upprepade gånger innehållshjälpens (Ctrl+Blanktecken på de flesta plattformar) cykler via olika förslagskategorier.

Du kan tilldela särskilda kortkommandon till de förslagskategorier du föredrar på sidan Öppnar innehållshjälpens inställningssida Avancerat Java > Editor > Innehållshjälp > Avancerat där du kan konfigurera vilka kategorier som ska visas i standardinnehållshjälpbubblan.

Innehållshjälpbubbla med Java-förslag. Upprepat anrop visar mallförslag

Den nya utökningspunkten org.eclipse.jdt.ui.javaCompletionProposalComputer låter dem som skriver insticksprogram att bidra med kompletteringsförslag och kategorier till innehållshjälpsbearbetningar av Java-redigeraren.

Puckelordsstöd i kodkomplettering

Kodkomplettering stöder nu puckelordsmönster. Komplettering av NPE föreslår t.ex. NullPointerException. Funktionen kan avaktiveras med alternativet Visa matchningar med versaler i sammansatta ord (Camel Case) på sidan Öppnar innehållshjälpens inställningssida Java > Redigerare > Innehållshjälp.

Java-redigerare kompletterar NPE

Snabbmeny för omgivande kod

Den nya snabbmenyn Omge med gör att ett urval rader omges med kod. Menyn går att utöka med anpassade mallar. Mallarna beaktar nu variabler som behöver dras ut eller slutföras.

Omge med körbar kodomvandling

Använd Källa > Omge med eller tryck på Alt+Skift+Z för att direkt öppna menyn.

Du kan lägga till anpassade mallar på sidan Java > Redigerare > Mallar. Alla mallarna behöver en ${line_selection}-variabel.

Nya snabbrättningar

Flera nya snabbrättningar har lagts till, t.ex. för att:

  • rätta access till rå typ

    Rättningsförslag av rå access

    Snabbrättningen samlar ihop information från användningen i samma fil. Mer avancerad analys fås med omfaktoriseringen Räkna fram generiska typargument.

  • lägga till saknade anteckningsattribut

    Snabbrättning för saknade anteckningsattribut

  • lägga till en ny anteckningsmedlem

    Snabbrättning för anteckningsmedlem

Kategoristöd

Kategorier kan definieras i Javadoc-kommentarer för typer, metoder och fält med märkordet @category.

Kod som använder kategorier

Kategorierna visas i vyerna Disposition och Medlemmar samt i Snabbdisposition. De synliga kategorierna kan väljas i vymenyn.

Disposition som visar kategorier och kategorifilter

Alla medlemmar kan be komprimeras

När komprimering är aktiv, kan fält, initierare och deras kommentarer att komprimeras på samma sätt som metoder.

Komprimerade fältinitierare

Det finns nya textkomprimeringskommandon för komprimering av alla kommentarer, komprimering av alla medlemmar och återställning av komprimeringsstrukturen. Kommandona finns i Java-redigerarens kontextmeny för Komprimering på den vertikala linjalen.

Linjalstöd och disposition för Java-filer utanför arbetsytan

Java-redigeraren visar nu vertikala linjaler, och dispositionssidan liksom snabbdispositionen kan nu visa dispositionen för externa Java-filer och Java-filer från lager.

Linjalstöd

Java-kompilator

Java SE 6.0-kompatibilitet

Nu är Java SE 6.0-kompatibiliteten fullständig Särskilt StackMapTable-attribut (se JSR 202) genereras nu i klassfiler med ett 1.6-mål.

Inställning för 6.0-kompatibilitet

Nullreferensanalys

Java-kompilatorn kan nu utföra grundläggande nullreferensanalys för lokala variabler.

Denna frivilliga diagnos aktiveras på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar med inställningen Möjliga programmeringsproblem> Nullreferens.

Java-redigerare med nullreferensvarning

Observera att analysen är rätt försiktig och justerad på bestämda tilldelningsregler. Den beaktar bara fall där det finns något misstänkt (t.ex. om en nullkontroll senare utförs) snarare än klagar över alla möjliga fall.

I 5.0-kompatibilitetsläge, kan nullreferensvarningar tystas med @SuppressWarnings("null").

Förbättrad syntaxåterhämtning

Den interna Java-analyseraren kan nu mycket bättre återhämta sig efter syntaxfel. I Eclipse 3.1 skulle ett syntaxfel förhindra att följande fel visades. Nu kan analyseraren återhämta från satser med fel och fortsätta att göra fler analyser.

I följande exempel upptäcks den ogiltiga referenser till metoden bar() trots att semikolon saknas i föregående sats.

Java-redigerare med syntaxåterhämtning

Det gör att t.ex. omfaktoriseringar som bara påverkar en enskild fil tolererar syntaxfel. Det är nu t.ex. möjligt att ändra namn på eller extrahera en lokal variabel överst i en metod som ännu inte har skrivits färdigt.

Extrahera lokal variabeln i ofullständig metod

Behandla konfigurerbara fel som ej allvarliga

Alternativet Behandla konfigurerbara fel som allvarliga fel på sidan Öppnar inställningssidan Bygga Java > Kompilator > Bygga styr om ett konfigurerbart fel ska anses vara allvarligt eller inte. Alternativet är som standard aktivt.

Om alternativet är avaktiverat, kan den kompilerade koden köras trots att det finns fel i koden.

Identifiering av onödiga $NON-NLS$-märkord

Onödiga $NON-NLS$-märkord upptäcks nu. Ett problem rapporteras om en radkommentar börjar med //$NON-NLS-x$ och ingen motsvarande sträng finns på samma rad.

Rapporteringen kan aktiveras/avaktiveras med samma inställning som den för identifiering av strängar som inte är externaliserade. Den kan anges på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar med inställningen Kodformat > Icke-externaliserade strängar (saknade/oanvända $NON-NLS$-märkord).

Java-redigerare med onödigt NLS-märkord

Du kan ta bort onödiga märkord i en kompileringsenhet med Snabbrättning (Ctrl+1), eller Ctrl+1, Ctrl+Enter.

Identifiering av användning av råa typer

Användningen av råa typer upptäcks nu. En rå typ är en referens till en genererad typ utan något typargument (t.ex. List på platsen för List<Element>).

Denna frivilliga diagnos aktiveras oberoende av avmarkerade typoperationer på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar med inställningen Generiska typer > Användning av rå typ.

Java-redigerare med användning av rå typ

Varningen kan tystas genom att @SuppressWarnings("unchecked") läggs till.

En snabbrättning kan också implementeras för att hjälpa till att lösa problemet med användning av rå typ.

Identifiering av metodparametertilldelningar

Tilldelning till metodparametrar anses inte vara bra.

Du ser till att sådana tilldelningar identifieras och rapporteras på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar där du markerar inställningen Kodformat > Parametertilldelning.

Java-redigerare med varning för parametertilldelning

Identifiering av oanvända etiketter

Java-kompilatorn kan nu upptäcka oanvända satsetiketter.

Denna frivilliga diagnos aktiveras på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar med inställningen Onödig kod > Oanvänd bryt/fortsätt-etikett.

Java-redigerare med användning av rå typ

Identifiering av "switch case" (typomvandlingar) som inte fångar upp

Java-kompilatorn kan nu upptäcka om ett fall kan anges genom kopiering av föregående "case". Tomma "case" är tillåtna.

Denna frivilliga diagnos aktiveras på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar med inställningen Möjliga programmeringsproblem> 'switch'-fall som inte fångar upp.

Java-redigerare med varning för fall som inte fångar upp

Det går att implementera en snabbrättning som lägger till en break-sats till föregående fall (case).

Förbättrade prestanda för stora .jar-filer

Begränsningen av det interna cacheminnet för Java-modell har nu en funktion för den maximala stackstorleken (-Xmx VM-argument på de flesta JVM) som anges för JVM-datorer som kör Eclipse IDE.

Genom att öka stackstorleken har prestanda betydligt förbättrats när .jar-filerna i byggsökvägen är stora.

Återskapa ändrade klassfiler

Java-byggfunktionen kan återskapa ändrade eller borttagna klassfiler i den utdatamapp som använder den ursprungliga källan.

Du kontrollerar funktionen på sidan Öppnar inställningssidan Bygga Java > Kompilator > Bygga med inställningen Utdatamapp > Bygg om klassfiler som ändrats av andra.

Javadoc-vy och verktygstips från bifogad Javadoc

Javadoc-vyn och Javadoc-bubbelhjälpen extraherar informationen från den bifogade Javadoc för bibliotek som inte har någon bifogad källa.

JUnit-verktyg

JUnit 4-funktionalitet

JUnit-funktionaliteten har nu uppdaterats att köra och skriva JUnit 4-tester. Se www.junit.org för mer information om JUnit 4.

  • använd guiden Nytt JUnit-test för att generera en JUnit 4-testklass:
    JUnit 4-funktion i guiden Nytt testfall
  • lägg till det tillhandahållna JUnit-biblioteket i byggsökvägen
    Lägga till JUnit 4-bibliotek med snabbrättning
  • starta JUnit 4-tester som vanligt med Kör som JUnit
  • ignorera test genom att märka dem med @Ignore

JUnit-vyhistorik

JUnit-vyn kan nu hantera flera konkurrerande testkörningar. Med hjälp av den nya historiken kan du växla mellan de aktiva och de senaste testkörningarna. Test kan köras från historiken utan att tester som redan körs stoppas.

JUnit-historik

Detta fungerar både i JUnit 3 och JUnit 4.

Java-felsökning
Körningsmiljöer

En körningsmiljö beskriver funktionerna för en runtime-miljö - t.ex. J2SE-1.4. Du kan anger JRE:er som ska användas för körning, felsökning och bygge baserade på referenser till en körningsmiljö. På den nya sidan Öppnar inställningssidan Körningsmiljö Java > Installerade JRE > Körningsmiljöer visas de JRE som är installerade i din arbetsyta och som är kompatibla med varje körningsmiljö. De JRE som exakt uppfyller kraven för en körningsmiljö visas med fetstil och de JRE som överträffar kraven för en miljö visas med standardteckensnittet. När mer än en JRE är kompatibel med en körningsmiljö, kan du markera en standard-JRE som ska användas för miljön.

Inställningssidan för Körningsmiljö

En byggsökväg eller en startkonfiguration som refererar till en körningsmiljö är mer användbar än en som refererar till en viss JRE, eftersom en JRE:s körningsmiljö kan tolkas oberoende av dess namn. Du anger en körningsmiljö som ska köras eller byggas på fliken JRE eller med guiden Redigera bibliotek.

JRE-flik i dialogruta för startkonfiguration

Startvariabel för systemegenskap

En ny startvariabel gör att det går att dynamiskt specificera systemegenskaper som Java-program och VM-argument för Eclipse-körningen. Variabeln accepterar ett enskilt argument som är namnet på den systemegenskap som ska tolkas vid start.

Systemegenskaper java.home ska t.ex. refereras med ${system_property:java.home}.

Argumentflik i starkonfigurations dialogruta

Utvärderingsfunktion för matriser

Utvärdering och innehållshjälp kan nu hantera Java-matriser. Använd this för att referera till den valda matrisen.

Kodhjälp i variabelvy

Java-trådgrupper

Nu kan du visa trådgrupper i felsökningsvyn med alternativet Visa trådgrupper i vyns meny.

Aktivera trådgrupper i felsökningsvyn

Exporterad poster från klassökväg för körning

En klassökväg för körning kan konfigureras så att den bara infogar exporterade poster från byggsökvägen. Som standard infogar en klassökväg för körning alla poster (både exporterade och inte exporterade).

Markera standardposten på fliken Klassökväg och konfigurera alternativet med knappen Redigera ....

Fliken Klassökväg i starkonfigurations dialogruta

Dialogrutan Redigera klassökväg för runtime-miljö

Stoppa tråd - Stoppa VM

Ett alternativ som lagts till på sidan Öppnar inställningssidan Felsök Java > Felsök styr om nyskapade brytpunkter stoppar en enskild tråd eller hela VM.

Inställningssidan Felsök

Övrigt

Java-typsindikator

Aktivera Java-typsindikatorn på sidan Öppnar inställningssidan Dekoratörer Allmänt > Utseende > Etikettdekorationer för att ta reda på vilken typ som är först i en kompileringsenhet eller i en klassfil. En utsmyckning visas för gränssnitt, anteckningar och enumerationer, medan en vanlig klass förblir odekorerad.

Etikettdekoratör för typindikator

Söka efter ogiltiga externaliserade strängar

En ny åtgärd kan nu söka efter ogiltiga externaliserade strängar. Sökningen rapporterar saknande, oanvända och duplicerade nycklar.

Sök efter ogiltiga externaliserade strängar

Du startar en sökning genom att markera en egenskapsfil, ett paket eller ett helt projekt och använder Källa > Sök efter ogiltiga externaliserade strängar

Förbättrad stöd för mekanismen för externalisering av strängar i Eclipse

Eclipse-mekanismen för externalisering av strängar har nu samma slags stöd som vanlig externalisering av strängar. Det associerade externaliserade värdet visas i en bubbeltext när du stannar till över en nyckel för en externaliserad sträng i Java-redigeraren.

NLS-bubbeltext

Håll ner tangenten Ctrl och klicka på nyckeln för att komma direkt till posten i motsvarande Java-egenskapsfil. I egenskapsfilens redigerare kan du hålla ner Ctrl och klicka för att ta reda på var nyckeln används i koden.

Skapa en typ från ett exempelkodstycke

Du kan klistra in ett kodstycke som innehåller en Java-typ direkt i ett paket eller en källmapp för att skapa en ny kompileringsenhet. Markera och kopiera t.ex. källkoden
package pack;
   public class HelloWorld {
      public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
och markera sedan källmappen i paketutforskaren med kortkommandot Ctrl+V (Redigera > Klistra in). Det kopierade innehållet skapar då automatiskt ett nytt paket och filen "HelloWorld.java".

Generera hashCode() och equals()

Du kan generera metoderna hashCode() och equals() med en ny funktion. Du kan välja de fält som implementeringen ska baseras på.

Guiden för att generera hash och equals

Du anropar åtgärden genom att markera en typ och använda Källa > Generera hashCode() och equals()...

Kodformaterare för kommandorad

Nu går det att formatera källkod utan att starta Eclipse användargränssnitt med den nya tillämpningen för konsollös formatering. Kommandoradsformateraren fungerar som en Eclipse-standardtillämpning.

Följande kommando formaterar källfilerna i mappen src med de inställningar som angivits i filen config.prefs:

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

Se Använda formateringstillämpningen för mer information.

Funktioner för Java-lika filtillägg

Filer med ett annat filtillägg än .java och som innehåller ren Java-kod kan nu hanteras. Ett Java-likt filtillägg kan läggas till på sidan Öppnar inställningssidan Innehållstyper Allmänt > Innehållstyper (Text > Java-källfil).

Paketutforskaren med 'Y.abc' som kompileringsenhet