Nyheter i 3.3 (JDT)

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

Se även Nyheter i Eclipse-plattformen 3.3.


Omfaktoriserings- och källåtgärder för Java

Omfaktorisering utan att spara

Omfaktoriseringarna kräver inte lägre att alla redigerare behöver sparas. De fungerar även om ändringar i Java- eller textredigerarna inte har sparats. Om du inte vill ha osparade redigerare efter omfaktoriseringar kan du välja att spara ändrade resurser på sidan Öppnar Java-inställningssidan Java.

Ändra namn på en faktorisering i redigeraren

Namnbytet på faktoriseringen kan nu göras direkt i Java-redigeraren utan att en dialogruta visas.

När du väljer Omfaktorisering > Ändra namn (Alt+Skift+R) i Java-redigeraren visas redigeraren i länkat läge istället för att öppna en dialogruta. Ändringarna gäller lokalt tills du trycker på Enter då ändringen tillämpas i hela arbetsytan.

På plats-namnbyte

Om du vill se och konfigurera omfaktoriseringsalternativ trycker du på Alt+Skift+R igen eller klickar på menyknappen och väljer Ändra namn.

Om du föredrar den gamla dialogrutan kan du avaktivera Ändra namn i redigerare utan dialogruta på sidan Öppnar Java-inställningssidan Java.

Inför parameterobjekt-omfaktorisering

Inför parameterobjekt är en ny omfaktorisering som ersätter en uppsättning metodparametrar med ett nytt behållarobjekt. Alla anrop till metoden uppdateras så att den nya parameterobjektklassen skickas.

Användningsexempel:

  • för grupparametrar som logiskt hör ihop, t.ex. Date start, Date end, String newValue och String oldValue
  • för reducering av antalet parametrar
  • för standardvärden i parameterobjekt
  • för att skicka parametrar längs anropskedjan

Om du vill köra omfaktoriseringen Inför parameterobjekt markerar du en metod, väljer Omfaktorisering > Inför parameterobjekt, markerar parametrarna som ska användas som fält och skriver namnen.

Skärmbild som visar dialogrutan Inför parameterobjekt

Kodstycket

Metod före omfaktorisering

ändras till

Metod efter omfaktorisering

Sortera medlemmar för flera element

Åtgärden Sortera medlemmar kan nu sortera flera element på samma gång. Markera ett paket, ett projekt eller en uppsättning Java-element i paketutforskaren och välj Källa > Sortera medlemmar.

Skärmbild som visar åtgärden Sortera medlemmar

Rensningsprofiler

En inställningssida har ersatt guiden Källa > Rensa. Rensningsprofilen kan definieras på inställningssidan. En profil kan läggas till arbetsmiljön eller individuella projekt. Projektinställningarna kan delas av en grupp genom ett versionshanteringssystem. Det går också att exportera och importera varje profil.

Inställningssidan Rensa

Nya rensningar

Följande rensningar har implementerats:

  • Formatera källkod: Formateringsinställningarna kan konfigureras på inställningssidan Formatering.
  • Ta bort avslutande blanktecken: Du kan välja att ta bort avslutande blanktecken på alla rader och ignorera tomma rader.
  • Organisera importer: Importerna organiseras enligt projektet eller arbetsytans inställningar.
  • Sortera medlemmar: Du kan sortera alla medlemmar i en kompileringsenhet, ignorera fält, enum-konstanter och initierare (eftersom sortering av sådana medlemmar kan resultera i semantikändringar).
Java-redigerare

Rensa kod vid spara

Det går nu att automatiskt rensa kod när Java-redigeraren sparas. Funktionen kan aktiveras globalt på sidan Öppnar inställningssidan Spara-åtgärder Java > Redigerare > Spara-åtgärder. Spara-åtgärderna kan även konfigureras per projekt vilket gör det lätt att skapa en projektstandard genom att dela inställningarna inom gruppen:

Egenskaper för Spara-åtgärd

Innehållshjälp för statiska importer i Favoriter

Innehållshjälpen Ctrl+Mellanslag) kan nu föreslå kompletteringar för statiska medlemmar från en lista över favoritimporter som kan konfigureras på sidan Öppnar inställningssidan Favoriter Java > Redigerare > Innehållshjälp > Favoriter.

Om du till exempel har lagt till java.util.Arrays.* i listan kommer alla statiska metoder av den här typen som matchar kompletteringsprefixet att läggas i listan över förslag:

Förslag i innehållshjälpen

Importinställningarna på sidan Öppnar inställningssidan Innehållshjälp Java > Redigerare > Innehållshjälp används när du infogar ett förslag.

Innehållshjälp för variabler med olöst typ

Java-redigeraren innehåller nu funktioner för nya medlemsförslag med olösta typer. Beroende på inställningarna på sidan Öppnar inställningssidan Innehållshjälp Java > Redigerare > Innehållshjälp > Lägg till import istället för fullständigt kvalificerade namn läggs importer till automatiskt eller så kvalificeras typerna för sådana förslag.

Om du trycker på ; i följande scenario:

Skärmbild som visar innehållshjälp för variabler med olösta typer

blir resultatet:

Bildskärm som visar resultatet av ';'

Innehållshjälpen ger deklarationsförslag för odefinierade lokala variabler

Innehållshjälpen kan nu ge förslag på namnet på en deklarerad lokal variabel genom att upptäcka olösta namn i efterföljande kod enligt följande exempel:

Exempel på förslag på olösta namn

Fortsatt förbättring av innehållshjälpen

  • Innehållshjälpen Ctrl+mellanslag) inne i en try-catch-satsdel kan nu ge förslag på undantagstypsnamn baserat på undantag som inträffar i motsvarande try-block. De undantagen visas före andra möjliga undantag.
  • När en namnreferens kompletteras ger innehållshjälpen nu förslag på olösta namn som finns i andra delar av koden.
  • Kodkompletteringar i den tomma satsen innehåller nu lokala typer för aktuell kompileringsenhet i listan över förslag.
  • Kodkomplettering efter ett snabel-a "@" ger förslag på alla synliga anteckningstyper.
  • Komplettering i en anteckningsmedlem ger förslag på alla attribut som kan användas och som inte redan har angetts.

Snabbhjälp

Funktionerna som förut endast fanns på menyn Omfaktorisering finns nu även som snabbhjälp (Ctrl+1). Snabbhjälpen visar ingen dialogrutan utan öppnar länkläget där du kan ändra namn eller typer som har introducerats.

  • Extrahera till lokal variabel och Extrahera till konstant: välja ett uttryck i koden
  • Dra in lokal variabel: tillgängligt för variabelnamn
  • Konvertera lokal variabel till fält: tillgänglig för variabelnamn
    Skärmbild som visar snabbhjälpen Extrahera lokal
  • Konvertera anonym klass till lokal klass: tillgängligt för typnamnet på en anonym klass
    Exempel på Konvertera anonym klass till nästlad klass - före
    Efter tillämpning använder du Tabb för att navigera i koden och för att ändra det nya typnamnet och välja från föreslagna fält och parametrar.
    Exempel på Konvertera anonym klass till nästlad klass - efter

Snabbrättning för att skapa metod från @Override

När du lägger till en @Override-anteckning till en metod som ännu inte ersätter, kan du med snabbrättningen (Ctrl+1) skapa metoden i en av supertyperna.

Snabbrättning för att skapa och använda getter och setter

En ny snabbrättning finns för fält som inte visas på grund av begränsningar. Använd Ctrl+1 för snabbrättning i följande scenario:

Osynligt fält

Om det finns en getter-metod för fältet kan du välja att använda den.

Använd getter

Om det inte finns någon getter-metod för fältet kan du välja att skapa en.

Skapa getter

Mall för tillägg av JUnit 4-testmetoder

En ny Test-mall har lagts till så att det går snabbare att lägga till JUnit 4-testmetoder.

Syntaxfärger för hakparenteser

Hakparenteser kan nu ha egna färger som skiljer dem från operatorerna i Java-redigeraren. Inställningarna görs på sidan Öppnar inställningssidan Syntaxfärger Java > Redigerare > Syntaxfärger:

Skärmbild som visar elementen i Java-redigeraren med olika färger

Inga fler frågor till nyhetsgruppen om varför inte hela källan visas

Kommandogruppen som innehåller verktygsknappen Visa endast källkod för valt element Bild på verktygsknappen döljs nu som standard. Du kan aktivera inställningen på sidan Öppnar Java-redigerarens inställningssida Java > Redigerare > Visa endast valda Java-element.

Konfigurerbart Javadoc-teckensnitt

Teckensnittet för Javadoc kan nu ändras på sidan Öppnar inställningssidan Färger och teckensnitt Allmänt > Utseende > Färger och teckensnitt. Javadoc-visningsteckensnittet används Javadoc-visning och bubbelhjälp och för annan information som visas i innehållshjälpen.

Skärmbild på Javadoc-vyn med ett annat teckensnitt

Bakgrundsfärg för källbubbelhjälp

Bakgrundsfärgen för all bubbelhjälp som visar källan i Java-redigeraren kan nu ändras på sidan Öppnar Java-redigerarens inställningssida Java > Redigerare.

Skärmbild som visar en källbubbelhjälp med ändrad bakgrundsfärg

Klassfilsredigeraren visar disassemblerad kod

Java-klassfilsredigeraren visar nu disassemblerad bytekod när källkoden inte är tillgänglig.

Skärmbild som visar klassfilsredigeraren med disassemblerad kod

Java-kompilator

Förbättrad hantering av duplicerade lokala variabler och typer

JDT hanterar nu ogiltig kod med duplicerade lokala variabler och typer på ett bättre sätt. Framför allt minimeras sekundära fel. Java-verktygen fungerar i felaktig kod och erbjuder snabbrättningar.

  • Lokalt namnbyte (Ctrl+2,R) fungerar nu även i felande nästlade loopar så att du kan byta namn på en dubblettvariabel på alla ställen där den förekommer.

    Lokalt namnbyte med dubblettvariabel


  • Metodanrop och fältaccess via en dubblettvariabel refererar nu till den närmaste definitioner för den lokala variabeln och minskar därmed antalet sekundära fel.

    Metodanrop med dubblettvariabel

Förbättrad nullkontroll

Alternativet Nullreferens på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator> Fel/varningar har nu delats in i tre alternativ:

  • Null-pekaraccess (i potentiella programmeringsproblem)
    När det här alternativet är aktiverat utfärdar kompilatorn ett fel eller en varning när en variabel som är statiskt känd att innehålla ett null-värde används för att accessa ett fält eller en metod enligt följande exempel:

    Null-pekaraccess-exempel


  • Potentiell null-pekaraccess (i potentiella programmeringsproblem)
    När det här alternativet aktiveras utfärdar kompilatorn ett fel eller en varning när en variabel är statiskt känd att innehålla ett potentiellt nullvärde enligt följande exempel:

    Potentiell null-pekaraccess-exempel


  • Kontroll av redundanta null (i onödig kod)
    När det här alternativet är aktiverat utfärdar kompilatorn ett fel eller en varning när en variabel som är statiskt känd att innehålla ett nullvärde eller ett icke nullvärde testas mot null enligt följande exempel:

    Exempel på kontroll av redundant null (förekomst av alltid falsk)


    Exempel på kontroll av redundant null

Varning för råa typer aktiveras som standard

Den valfria kompileringsfelsökningen för att upptäcka användning av råa typer är nu som standard aktiverad.

Diagnosen kan konfigureras på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar med hjälp av Allmänna typer > Användning av rå typ.

Exempel på varning för rå typ

Förbättrad varning för oanvända parametrar

Varningen för oanvända parametrar har förbättrats med ett nytt alternativ som förhindrar falska positiva värden. Du kan tala om för kompilatorn att parametern egentligen används genom att kommentera den med märkordet @param.

Alternativet finns på sidan Öppnar inställningssidan Fel/varningar Java > Kompilator > Fel/varningar i delen Onödig kod.

Skärmbild som visar inställningssidan Fel/varningar

Java-vyer och dialogrutor

Färgade etiketter i Java-vyer

Om du vill använda färgade etiketter i Java-vyer öppnar du sidan Öppnar inställningssidan Utseende Java > Utseende och väljer Visa färgetiketter.

Skärmbild som visar paketutforskaren med färgade etiketter

Dekorationer för transienta och icke-permanenta fält

Transienta och icke-permanenta fält har nu motsvarande ikondekorationer:

Skärmbild som visar ett transient och ett icke-permanent fält

Gruppering av JAR-filer och klassmappar i paketutforskaren

Paketutforskaren grupperar nu refererade bibliotek i en ny behållarnod.

Skärmbild på paketutforskaren med grupperade bibliotek

Fler Java-sökfunktioner

Java-sökdialogrutan har utökats med funktioner för finare sökning i källor, obligatoriska projekt, JRE-bibliotek och programbibliotek.

Skärmbild som visar sökdialogrutan med det nya alternativet Sök i

Sökfilter för referenser till ersätt metod

Java-sökmotorn har ett nytt filter för kategorisering av metodreferensmatchningar. Det kan åtskilja ett anrop via en typ eller en av undertyperna från ett anrop via en supertyp som vanligen är en "svagare" träff. Sökvyn innehåller nu ett filter för ytterligare begränsning av referenser för metodsökningen.

I följande exempel sökte användaren efter referenser till metoden A.toString() och fick tre träffar. Eftersom o.toString()anger ett anrop av en metod som ersätts av sökmålet A.toString() kan den filtreras ut från sökvyn genom att filtret "Referenser till åsidosatta" aktiveras enligt nedan:

Exempel på filtret Referenser till åsidosatta

Obs! Filtret "Referenser till åsidosatta" är inte aktiverat som standard.

Välja körningsmiljö när Java-projekt skapas

När du skapar ett nytt Java-projekt som du vill dela inom en grupp är det en bra idé att använda en körningsmiljö istället för en specifik JRE.

Körningsmiljöer är symboliska representationer av JREer med standardiserade poster, t.ex. "J2SE-1.4" och "J2SE-1.5". Det betyder att ingen filsystemsökväg ingår i byggsökvägen för delningen.

JREer kan tilldelas körningsmiljön på sidan Öppnar inställningssidan Körningsmiljöer Java > Installerade JRE > Körningsmiljöer.

Skärmbild som visar guiden Nytt Java-projekt

Lägga till ett nytt Java-projekt till en arbetsuppsättning

Guiden Nytt Java-projekt innehåller fler fält där du kan ange vilka arbetsuppsättningar som projektet ska läggas till i. Fälten initieras från aktuellt urval eller det aktiva arbetsuppsättningsfiltret i paketutforskaren.

Skärmbild som visar guiden Nytt Java-projekt

Tilldela arbetsuppsättningar

Det är nu enklare att omorganisera Java-element och resurser i arbetsuppsättningar. Om du vill tilldela ett element till en annan arbetsuppsättning markerar du elementet i paketutforskaren och väljer Tilldela arbetsuppsättningar på kontextmenyn.

Dialogrutan för tilldelning av arbetsuppsättningar

Klistra in typdeklarationer i nya projekt

Har du saknat funktionen att snabbt kunna testa ett kodstycke någon har skickat till dig? Kopiera kodstycket till Urklipp, gå till paketutforskaren, kontrollera att ingenting har markerats och välj Redigera > Klistra in (Ctrl+V).

Eclipse försöker tolka texten i Urklipp och om det ser ut som innehållet i en JAVA-fil skapas ett nytt Java-projekt och en ny .java-fil.

efter inklistring (*.java-filen har skapats och öppnats)

Du kan också, precis som i 3.2, markera ett befintligt projekt eller ett paket som mål för den nya filen.

Förbättrade inklistringsfunktioner i paketutforskaren

När du klistrar in Java-källtext med flera paketdeklarationer i paketutforskaren skapas nu automatiskt alla nödvändiga paket och kompileringsenheter. Strukturen till höger skapas när du klistrar in kodstycket till vänster i paketutforskaren när ingenting har markerats:

package a;
public class Target {
}

//--
package b;
import a.Target;
public class Test {
  void reference() {
    new Target();
  }
}
            
Paketutforskaren med projekt- och paketstrukturen

Ångra borttagning i Java-vyer

Redigera > Ångra är nu även tillgängligt för Java-element i Java-vyer. Om du av misstag t.ex. tar bort paket eller kompileringsenheter kan du lätt återställa dem genom att trycka på Ctrl+Z.

Dra och släpp för Java i projektutforskaren

Java-element som dras och släpps i projektutforskaren utlöser nu Java-omfaktoriseringar (på samma sätt som i paketutforskaren).

Dra och släpp för Java

Exportera och importera JUnit-testkörningar

JUnit-testkörningar kan nu exporteras och importeras.

JUnit-vymenyn med åtgärderna Importera och Exportera

Eclipse kan läsa egna XML-filer från testkörningar samt XML-filer som skapas av Ant JUnit.

Öppna typ öppnar flera typer

Nu går det att öppna flera redigerare på samma gång i dialogrutan Öppna typ (Ctrl+Skift+T).

Dialogrutan Öppna typ med flerval

Mönstersökning för paket och omslutande typ

Mönster med jokertecknen '*' och '?' kan anges för paket om omslutande typer i dialogrutan Öppna typ.

Exempel i dialogrutan Öppna typ: java.*.ChangeHandler

Java-felsökning

Följa referenser (endast Java SE 6)

Du kan visa alla referenser till ett objekt (endast tillgängligt vid felsökning på en Java SE 6 VM). Objektreferenser kan visas i variabelvyerna genom att välja Visa referenser i menyn. Referenserna till varje objekt grupperas i en samling.

Visa referenser

Referenser kan även visas i en popup-dialogruta genom att markera ett objekt i variabelvyn och välja Alla referenser på kontextmenyn.

Alla referenser i kontextmenyn

Referenser visas i en popup-dialogruta.

Popup-dialogruta med referenser

Visa förekomster (endast Java SE 6)

Du kan visa alla förekomster av en Java-typ (endast tillgängligt vid felsökning på en Java SE 5 VM). Förekomsterna visas i en popup-dialogruta genom att markera en typ i redigeringsdispositionen, ett typnamn i Java-redigeraren eller en variabel i variabelvyn och välja Alla förekomster på kontextmenyn.

Alla förekomster i kontextmenyn

Förekomsterna visas sedan i en popup-dialogruta.

Popup-dialogruta med förekomster

Tvinga retur (endast Java SE 6)

Du kan tvinga en tidig retur från en metod (endast tillgängligt vid felsökning med Java SE 6 VM). Då returneras ett värde från aktuell stackram utan att fler instruktioner i metoden körs samt släpper alla lås för synkroniserade block. Ett returvärde skapas genom att välja ett uttryck och åtgärden Tvinga retur (Alt+Skift+F). Åtgärden finns på kontextmenyn i Java-redigeraren, den översta Kör-menyn, i visningsvyn och i informationsrutan i variabelvyn.

Om du tvingar en tidig retur från en icke void-metod krävs utvärdering av ett uttryck. Exempel: Om en metod returnerar "false" kan du returnera värdet "true" genom att markera ett uttryck i visningsvyn och välja Tvinga retur. I följande exempel är elementCount inte lika med noll vilket returnerar värdet "false" (se felsökningsförklaringen för elementCount).

Metod som returnerar false eftersom elementCount != 0

Använd åtgärden Tvinga retur i visningsvyn så att "true" returneras istället.

Välja uttryck och tvinga retur från kontextmenyn

Stega via hyperlänkar

Vid felsökning kan du använda hyperlänkar för att stega in i en metod. Använd Ctrl+Alt+Klick för att stega in i metoden (om du väljer Ctrl+Klick visas källkoden).

Stega in via hyperlänk (Ctrl+Alt+Klick)

Dubbelklickning och Ctrl+Skift+B för alla typer av brytpunkter

Om du dubbelklickar i den vertikala raden eller aktiverar/avaktiverar en brytpunkt (Ctrl+Skift+B) skapas en lämplig brytpunktstyp baserat på markörens placering - radbrytpunkt, bevakningspunkt, metodbrytpunkt eller brytpunkt för klassinläsning. Om du vill skapa en brytpunkt för klassinläsning dubbelklickar du på klassdeklarationsraden.

Brytpunkt för klassinläsning

Stega genom filter och Stega tillbaka

Du kan konfigurera stegfilter så att de alltid stegar tillbaka från en filtrerad plats eller stegar igenom till en ej filtrerad plats. Exempel: om java.util är en filtrerad plats kan stegning in i koden i HashMap resultera i call-back till programkoden för kontroll objektlikheten. Om du väljer Stega igenom filter avslutas steget i programkoden. Om alternativet Stega igenom filter är inaktivt ger steget in i HashMap samma resultat som "stega över".

Använd Stega igenom filter på sidan Öppnar inställningssidan Stegfiltrering Java > Felsöka > Stegfiltrering när du vill aktivera eller avaktivera funktionen.

Automatiskt formatera stackspårningar

Stackspårningar kan formateras automatiskt när du klistrar in dem i Java-stackspårningskonsolen. Välj Automatiskt format i konsolverktygsfältet.

Knappen Automatiskt format i stackspårningskonsolens verktygsfält

Exportera logiska strukturer

Du kan nu exportera och importera inställningar för logiska Java-strukturer separat från andra inställningar för arbetsytan. Logiska Java-strukturer definieras på sidan Öppnar inställningssidan Logiska strukturer Java > Felsöka > Logiska strukturer. Logiska strukturer används för att definiera alternativa presentationer för komplexa datastrukturer och visas när objekten granskas i variabelvyn. Om du t.ex. visar en java.util.Collection som en matris istället för att visa den interna datastrukturen som implementerar samlingen.

Exportera logiska strukturer

Övrigt

Nya kodformateringsalternativ

Nya alternativ har lagts till på sidan Öppnar inställningssidan Formateringsfunktion Java > Kodformat > Formateringsfunktion:

  • Kommentarformatering kan nu aktiveras och avaktiveras för varje kommentartyp individuellt (Javadoc-, block-, single line-, och header-kommentarer). Block- och line-kommentarer i första kolumnen kan undantas från indragning.

    Skärmbild som visar formateringsinställningarna


  • Antalet tomma rader som Organisera importer (Ctrl+Skift+O) infogar mellan importgrupper kan konfigureras på fliken Tomma rader. Vid formatering gäller den här inställningen före det antal tomma rader som ska behållas.

    Skärmbild på formateringsfunktionen för tomma rader mellan importgrupper


  • Binära uttryck kan nu radbrytas före eller efter operatorn.

    Skärmbild som visar dialogrutan för ändring av formateringsinställningar


  • För retursatser kan du nu lägga till eller ta bort blanktecken före uttrycket inom parentes. Alternativet finns på fliken Blanktecken.

    Skärmbild som visar formateringsinställningen för blanktecken för uttryck

Accessregler för körningsmiljöer

Accessregler tilldelas nu varje körningsmiljö baserat på profilen. Exempel: regler som förhindrar access till com.sun.*-paket som inte säkert finns vid körningen. Reglerna gäller endast projekt som är bundna till körningsmiljöer. Projekt som är bundna till en viss JRE har fortfarande access till alla bibliotek.

Accessregler för systembibliotek

Utkommenterade och ej ändringsbara klassökvägsvariabler

Systemdefinierade klassökvägsvariabler kan nu utkommenteras och/eller deklareras skrivskyddade via utökningspunkten org.eclipse.jdt.core.classpathVariableInitializer.

Användare bör ersätta utkommenterade klassökvägsvariabler med en bättre mekanism, t.ex. bibliotek.

Dialogrutan Java-byggsökväg med utkommenterade variabler

För vissa variabler (t.ex. JUNIT_HOME), finns även snabbrättningar för att migrera befintliga projekt i problemvyn.

Relativa sökvägar till arbetsytor för Javadoc-platser

Relativa sökvägar till arbetsytor kan ny användas som Javadoc-platser för arkiv och klassmappar:

Skärmbild på dialogrutan för Javadoc-platskonfiguration

Runtime-miljötyper

Java 5-anteckningsbearbetning (APT) infördes i Eclipse 3.2, men tills nu har nya typer endast kunna skapas genom ett bygge. Java 5-anteckningsprocessorerna kan nu skapa nya typer under tiden du redigerar anteckningarna. Den här funktionen är av prestandaskäl som standard avaktiverad. För att aktivera den ska processorn ha "enableTypeGenerationInEditor" i den uppsättning strängar som returneras från AnnotationProcessorFactory.supportedOptions().

Java 6-anteckningsbearbetning

Eclipse 3.3 har fullständiga funktioner för Java 6-anteckningsbearbetning i Eclipse Java-batchkompilatorn. Java 6-anteckningsbearbetning stöds också till viss del i IDE men utökat stöd kommer i framtiden.